国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

CAN總線和1553B總線通信的FPGA設(shè)計(jì)與實(shí)現(xiàn)

2021-06-10 03:35:38李宏偉
關(guān)鍵詞:接收數(shù)據(jù)發(fā)送數(shù)據(jù)報(bào)文

■李宏偉

(太原城市職業(yè)技術(shù)學(xué)院,山西 太原 030027)

在時(shí)代的推動(dòng)下,各類飛行設(shè)備承擔(dān)的任務(wù)更加紛繁復(fù)雜。為能夠提高數(shù)據(jù)可靠性,系統(tǒng)內(nèi)部往往需要針對不同的工作設(shè)備選擇合適的總線通訊方式。在發(fā)揮各類總線通信的最大優(yōu)勢的同時(shí),總線之間的轉(zhuǎn)換傳輸也受到越來越多的關(guān)注。CAN總線與1553B總線均以數(shù)據(jù)傳輸可靠性高、傳輸速度快等優(yōu)點(diǎn),廣泛應(yīng)用于飛行設(shè)備中[1]。對于兩總線之間的數(shù)據(jù)交互,傳統(tǒng)的解決辦法一般是采用FPGA+ARM雙處理器實(shí)現(xiàn),但國產(chǎn)ARM芯片價(jià)格高,制板時(shí)周期相對較長[2]。系統(tǒng)采用單芯片F(xiàn)PGA實(shí)現(xiàn)CAN總線與1553B總線之間的通信,利用FPGA能夠并行處理數(shù)據(jù)的架構(gòu)以及具有編程靈活的優(yōu)勢,編寫總線底層傳輸協(xié)議,用軟件的方式實(shí)現(xiàn)數(shù)據(jù)的快速轉(zhuǎn)換與傳輸[3]。

一、系統(tǒng)總體設(shè)計(jì)

CAN總線與1553B總線之間通訊的系統(tǒng)總體設(shè)計(jì)框圖如圖1所示。系統(tǒng)數(shù)據(jù)流由FPGA控制,參與實(shí)現(xiàn)CAN總線與1553B總線之間通信的模塊主要包括CAN控制器模塊、數(shù)據(jù)轉(zhuǎn)換模塊、1553B協(xié)議模塊和RS422發(fā)送模塊。

圖1 系統(tǒng)總體設(shè)計(jì)框圖

CAN總線與1553B總線之間的通信是雙向的,以從1553B總線發(fā)送數(shù)據(jù)至CAN總線為例,該數(shù)據(jù)流的工作流程為:上電初始化所有模塊,F(xiàn)PGA通過編寫1553B底層協(xié)議模塊實(shí)現(xiàn)與1553B總線的數(shù)據(jù)交互,1553B底層協(xié)議模塊作為終端,接收總線發(fā)送來的數(shù)據(jù)并根據(jù)1553B協(xié)議對數(shù)據(jù)進(jìn)行解析及格式轉(zhuǎn)換,然后通過CAN總線控制器模塊將轉(zhuǎn)換后的數(shù)據(jù)發(fā)送至CAN控制器SJA1000,最后驅(qū)動(dòng)收發(fā)器完成數(shù)據(jù)的上傳,完成單向數(shù)據(jù)流的傳輸。為驗(yàn)證總線間的傳輸無誤,采用RS422發(fā)送模塊將CAN控制器模塊接收到的數(shù)據(jù)發(fā)送至上位機(jī)進(jìn)行顯示,對比1553B總線上發(fā)送的數(shù)據(jù)與上位機(jī)接收到的數(shù)據(jù),判斷數(shù)據(jù)傳輸?shù)目煽颗c否。從CAN總線發(fā)送數(shù)據(jù)至1553B總線的數(shù)據(jù)傳輸流程與上述類似。

二、系統(tǒng)模塊化設(shè)計(jì)

(一)CAN模塊設(shè)計(jì)

系統(tǒng)CAN模塊主要由CAN控制器及CAN收發(fā)器組成[4],其中CAN控制器通過SPI接口與FPGA進(jìn)行信息交互,然后控制器與收發(fā)器串行相連,CAN收發(fā)器將控制器中的數(shù)據(jù)按照物理層的數(shù)據(jù)協(xié)議進(jìn)行轉(zhuǎn)換并實(shí)現(xiàn)與CAN總線的通信,CAN收發(fā)器與CAN總線通信即實(shí)現(xiàn)單端信號與差分信號的相互轉(zhuǎn)換[5]。系統(tǒng)選用NXP公司生產(chǎn)的CAN控制器SJA1000,符合CAN2.0協(xié)議規(guī)范,支持高速數(shù)據(jù)傳輸,速率高達(dá)1Mbps[6]。CAN收發(fā)器選用PCA82C250,它實(shí)現(xiàn)的是數(shù)據(jù)協(xié)議層的轉(zhuǎn)換傳輸,其傳輸速率與CAN控制器一致,最高為1Mbps[7]。系統(tǒng)主頻為80 Mbps,通過分頻模塊后提供給CAN控制器芯片的時(shí)鐘頻率為16 MHz。由于FPGA的I/O口電平為3.3 V,而CAN控制器芯片的工作電壓為5 V[8],因此為實(shí)現(xiàn)兩芯片間的正常通訊,在數(shù)據(jù)進(jìn)行傳輸時(shí),需對其進(jìn)行電平轉(zhuǎn)換。該模塊的工作原理圖如圖2所示,終端管腳INTE需上拉至3.3 V[9]。

圖2 CAN模塊工作原理

(二)數(shù)據(jù)轉(zhuǎn)換模塊設(shè)計(jì)

數(shù)據(jù)轉(zhuǎn)換模塊主要實(shí)現(xiàn)的是兩種總線協(xié)議下的數(shù)據(jù)位寬的轉(zhuǎn)變。由于1553B總線與CAN總線的數(shù)據(jù)傳輸速率不一致,為避免數(shù)據(jù)在總線交互過程中出現(xiàn)幀丟失或幀錯(cuò)誤的現(xiàn)象,需對兩總線間的速率進(jìn)行平衡。設(shè)計(jì)采用雙口RAM來解決速率匹配的問題[10],根據(jù)協(xié)議要求,CAN模塊的數(shù)據(jù)輸入輸出寬度均為1 Byte,而1553B協(xié)議模塊的數(shù)據(jù)輸入輸出寬度均為2 Byte。因此,針對兩個(gè)方向的數(shù)據(jù)流采用2個(gè)RAM來對數(shù)據(jù)分別進(jìn)行緩存。數(shù)據(jù)由CAN總線傳輸?shù)?553B總線上的雙口RAM緩存設(shè)計(jì)如圖3所示。

圖3 雙口RAM緩存設(shè)計(jì)

三、系統(tǒng)軟件設(shè)計(jì)

(一)CAN模塊設(shè)計(jì)實(shí)現(xiàn)

1.CAN控制器模塊初始化

系統(tǒng)加電后,CAN控制器默認(rèn)為復(fù)位狀態(tài)。FPGA需要對該控制器中的相關(guān)寄存器進(jìn)行初始化配置,實(shí)現(xiàn)對其內(nèi)部寄存器的配置,為其進(jìn)入正常工作模式做準(zhǔn)備[11]。初始化完成后,配置CAN控制器進(jìn)入工作模式。CAN控制器模塊初始化過程如圖4所示。

圖4 CAN控制器模塊初始化過程

2.CAN控制器模塊接收設(shè)計(jì)

CAN控制器模塊中的接收模塊主要實(shí)現(xiàn)了CAN總線報(bào)文的接收。CAN控制器SJA1000接收CAN總線報(bào)文后產(chǎn)生中斷信號并使能接收模塊,通過該模塊調(diào)用SPI接口進(jìn)行CAN報(bào)文接收,一幀報(bào)文接收完成后,將接收到的報(bào)文傳遞到接收報(bào)文分類模塊中,傳遞完成后通過處理器清除CAN控制器SJA1000芯片中斷使能信號[12],為下次中斷做準(zhǔn)備。接收報(bào)文分類模塊實(shí)現(xiàn)了對接收到CAN報(bào)文進(jìn)一步判斷與緩存功能。若接收到的報(bào)文ID符合判斷條件時(shí)即與CAN控制器在初始化配置時(shí)所要求的一致,則對報(bào)文進(jìn)行緩存并傳輸至數(shù)據(jù)格式轉(zhuǎn)換模塊。CAN控制器接收報(bào)文的過程如圖5所示。

圖5 CAN模塊接收報(bào)文時(shí)的流程圖

(二)1553B協(xié)議模塊設(shè)計(jì)實(shí)現(xiàn)

1.1553B協(xié)議模塊設(shè)計(jì)

系統(tǒng)中1553B協(xié)議模塊作為終端(RT),主要實(shí)現(xiàn)對1553B總線(BC)上數(shù)據(jù)的收發(fā)與解析。RT端向BC端數(shù)據(jù)傳輸時(shí),1553B協(xié)議模塊首先需要檢測同步字,同步字中包含的信息用于區(qū)分字的類型[13]。RT端發(fā)送的數(shù)據(jù)信息經(jīng)過了曼徹斯特編碼,因此在對接收數(shù)據(jù)進(jìn)行解析前需要對其進(jìn)行譯碼。譯碼后通過數(shù)據(jù)信息中的同步字判斷該條信息的字類型,若字類型為命令字,需對同步字之后的相關(guān)數(shù)據(jù)進(jìn)行解析,BC端依照該條命令字執(zhí)行相應(yīng)的操作;若字類型為接收數(shù)據(jù)字命令字,BC端需對后續(xù)RT端發(fā)送的數(shù)據(jù)字進(jìn)行緩存,并發(fā)送狀態(tài)字至RT端;若字類型為發(fā)送數(shù)據(jù)字命令字,BC端需讀取緩存的數(shù)據(jù)至RT端。1553B協(xié)議模塊設(shè)計(jì)框圖如圖6所示。

圖6 CAN1553B協(xié)議模塊設(shè)計(jì)框圖

2.1553B協(xié)議字格式

依照1553B傳輸協(xié)議,數(shù)據(jù)在總線上傳輸時(shí)其允許最大長度為32個(gè)字,每個(gè)字包含20 bit[14]。數(shù)據(jù)幀按照不同的類型劃分可以分為命令、狀態(tài)、數(shù)據(jù)。不同類型的字格式見圖7所示。

圖7 不同類型的字格式

3.1553B協(xié)議數(shù)據(jù)字收發(fā)

1553B總線控制器(BC端)與1553B協(xié)議模塊(RT端)通訊時(shí),BC端占有絕對控制權(quán)。因此,不論RT端接收還是發(fā)送數(shù)據(jù),均由BC端控制。當(dāng)RT端收到接收數(shù)據(jù)的命令字時(shí),根據(jù)該命令字中的信息獲取數(shù)據(jù)字的個(gè)數(shù)情況,判斷RAM接收到的經(jīng)過譯碼后的數(shù)據(jù)字的個(gè)數(shù)是否正確,發(fā)送相應(yīng)的狀態(tài)字給BC端。接收數(shù)據(jù)字流程如圖8所示。

圖8 1553B協(xié)議模塊接收數(shù)據(jù)字流程

當(dāng)RT端收到發(fā)送數(shù)據(jù)的命令字時(shí),根據(jù)該命令字中的信息讀取RAM中的指定字節(jié)個(gè)數(shù)的數(shù)據(jù)字,并對其進(jìn)行曼徹斯特編碼后發(fā)送至BC端。

四、系統(tǒng)仿真與測試

(一)CAN模塊收發(fā)數(shù)據(jù)仿真

為驗(yàn)證CAN模塊收發(fā)數(shù)據(jù)的正確性,對收發(fā)模塊均進(jìn)行仿真測試。當(dāng)CAN總線收發(fā)器檢測到CAN總線上有數(shù)據(jù)時(shí),產(chǎn)生中斷信號給CAN控制器,然后將數(shù)據(jù)寫入CAN控制器的接收緩存區(qū)中。接收完數(shù)據(jù)之后,清除中斷標(biāo)志。CAN口接收數(shù)據(jù)仿真圖如圖9所示。

圖9 CAN口接收數(shù)據(jù)仿真圖

向CAN總線上傳輸數(shù)據(jù)時(shí),按照CAN協(xié)議幀格式,將數(shù)據(jù)首先發(fā)送至CAN總線控制器的發(fā)送緩存區(qū)中,然后驅(qū)動(dòng)通過SPI接口發(fā)送數(shù)據(jù)至CAN總線上。CAN口發(fā)送報(bào)文仿真圖如圖10所示。

圖10 CAN口發(fā)送數(shù)據(jù)仿真圖

(二)1553B協(xié)議模塊仿真

為驗(yàn)證1553B協(xié)議模塊數(shù)據(jù)收發(fā)的正確性,編寫測試文件,模擬BC端發(fā)送數(shù)據(jù)給RT端,其中RT端的地址為5'b00111。首先RT端發(fā)送命令字16'h3943,然后發(fā)送3個(gè)數(shù)據(jù)字16'hCA1C,16'hED9B,16'h8C93。BC端通過對接收到的命令字進(jìn)行解析可知,BC端需要執(zhí)行的操作是接收3個(gè)數(shù)據(jù)字。BC端將接收到的數(shù)據(jù)進(jìn)行緩存之后發(fā)送狀態(tài)字給RT端。RT端通過解析接收到的狀態(tài)字可判斷出數(shù)據(jù)是否被接收。1553B協(xié)議模塊接收數(shù)據(jù)時(shí)的仿真圖如圖11所示。

圖11 1553B協(xié)議模塊接收數(shù)據(jù)仿真圖

(三)系統(tǒng)測試

為驗(yàn)證系統(tǒng)中兩總線之間的通信正確,分兩部分進(jìn)行測試。

1.由1553B總線發(fā)送數(shù)據(jù)字,經(jīng)過1553B協(xié)議模塊、數(shù)據(jù)格式轉(zhuǎn)換模塊,最后通過CAN模塊將數(shù)據(jù)發(fā)送至CAN總線上。1553B總線上發(fā)送命令字16'h3D43,然后發(fā)送 3個(gè)數(shù)據(jù)字16'hC1C3,16'hE1CB,16'hE9D3。采用在線邏輯分析儀SignalTap對數(shù)據(jù)格式轉(zhuǎn)換模塊的輸入信號進(jìn)行抓取,如圖12所示。

圖12 數(shù)據(jù)格式轉(zhuǎn)換模塊的輸入信號波形

為可以直觀地觀察到數(shù)據(jù)傳輸?shù)恼_與否,將CAN控制器中緩存的數(shù)據(jù)經(jīng)由RS422發(fā)送模塊發(fā)送至上位機(jī)進(jìn)行顯示,如圖13所示。對比圖12中的數(shù)據(jù)與串口助手收到的數(shù)據(jù),驗(yàn)證了該數(shù)據(jù)流向的正確性。

圖13 RS422發(fā)送的CAN總線數(shù)據(jù)

2.從CAN總線至1553B總線的傳輸驗(yàn)證與(1)相反。采用串口助手發(fā)送數(shù)據(jù)至CAN控制器接收緩存器中,然后通過數(shù)據(jù)格式轉(zhuǎn)換模塊,最后通過1553B協(xié)議模塊將數(shù)據(jù)上發(fā)至1553B總線上。串口助手發(fā)送的數(shù)據(jù)為8'hCA,8'h9A,8'h8A,8'hC1,8'hC2,8'hE 2,8'hF1,8'h22。同樣地,采用 SignalTap對輸入到1553B協(xié)議模塊的信號進(jìn)行采集,如圖14所示。對比串口發(fā)送的數(shù)據(jù)與圖14中的波形,可知該數(shù)據(jù)流向正確。

圖14 輸入到1553B協(xié)議模塊的信號采集

五、結(jié)論

系統(tǒng)采用FPGA實(shí)現(xiàn)CAN總線與1553B總線之間的通信,充分發(fā)揮FPGA并行處理的優(yōu)勢,代替了ARM處理器實(shí)現(xiàn)1553B的通信,一方面縮減了產(chǎn)品的制造費(fèi)用,另一方面使得產(chǎn)品的研發(fā)時(shí)間變短。經(jīng)系統(tǒng)驗(yàn)證,該設(shè)計(jì)能夠?qū)崿F(xiàn)CAN總線與1553B總線之間的正確通信,滿足了設(shè)計(jì)需求,對其他總線間的通訊提供了可靠的參考價(jià)值。

猜你喜歡
接收數(shù)據(jù)發(fā)送數(shù)據(jù)報(bào)文
移動(dòng)自組網(wǎng)中MAC層協(xié)議研究
基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
汽車電器(2022年9期)2022-11-07 02:16:24
沖激噪聲背景下基于幅度預(yù)處理的測向新方法*
CTCS-2級報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
淺析反駁類報(bào)文要點(diǎn)
中國外匯(2019年11期)2019-08-27 02:06:30
低復(fù)雜度多輸入多輸出雷達(dá)目標(biāo)角度估計(jì)方法
基于馬爾科夫鏈的LoRaWAN網(wǎng)絡(luò)節(jié)點(diǎn)性能分析
帶標(biāo)記方式的CRDSA++協(xié)議性能分析*
使用IPSec安全傳輸數(shù)據(jù)
單片機(jī)模擬串口數(shù)據(jù)接收程序的實(shí)現(xiàn)及優(yōu)化
河西区| 汾西县| 社旗县| 清水县| 台东市| 东乌| 许昌县| 乌海市| 轮台县| 淮安市| 普安县| 衡水市| 汕尾市| 清苑县| 祁东县| 衡南县| 西昌市| 托克托县| 郯城县| 凤山县| 澄城县| 兴海县| 东城区| 和政县| 泸州市| 叶城县| 龙陵县| 信阳市| 宁河县| 玉龙| 九龙县| 政和县| 芷江| 内乡县| 娱乐| 鄂尔多斯市| 山丹县| 偏关县| 金华市| 遂平县| 岳阳市|