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

?

CAN總線控制器CRC校驗(yàn)碼的設(shè)計(jì)原理及實(shí)現(xiàn)

2019-06-27 09:53
微處理機(jī) 2019年3期
關(guān)鍵詞:接收端校驗(yàn)報(bào)文

王 爽

(中國電子科技集團(tuán)公司第四十七研究所,沈陽110032)

1 引 言

在對以CAN 總線作為現(xiàn)場總線進(jìn)行設(shè)備互聯(lián)的電路系統(tǒng)的設(shè)計(jì)中,為保證設(shè)備間數(shù)據(jù)傳輸?shù)恼_性,需要對CAN 網(wǎng)絡(luò)設(shè)備間通信過程傳輸?shù)膱?bào)文數(shù)據(jù)進(jìn)行差錯控制。為此,要在CAN 總線控制器的設(shè)計(jì)中加入了CRC(循環(huán)冗余)校驗(yàn)邏輯設(shè)計(jì)。對于報(bào)文傳輸出現(xiàn)錯誤的情況,CAN 總線控制器采用的處理措施是反饋錯誤信息給發(fā)送端進(jìn)行報(bào)文重發(fā),即一旦收到接收端發(fā)出的出錯信息,發(fā)送端便自動重發(fā)。循環(huán)冗余校驗(yàn)碼的工作原理簡單,誤判率較低,在CAN 總線通信系統(tǒng)中獲得了廣泛的應(yīng)用。故此對CAN 總線控制器中循環(huán)冗余校驗(yàn)碼的設(shè)計(jì)原理和實(shí)現(xiàn)過程展開介紹。

2 CRC碼檢錯工作原理

在對CAN 總線控制器的設(shè)計(jì)中,CRC 校驗(yàn)碼所起的作用是將發(fā)送端檢測到的報(bào)文二進(jìn)制序列作為一個二進(jìn)制多項(xiàng)式A(x)的系數(shù),將接收端檢測到的報(bào)文二進(jìn)制序列作為另一個二進(jìn)制多項(xiàng)式B(x)的系數(shù),若能夠正確接收,A(x)與B(x)應(yīng)完全相同。用該系數(shù)除以發(fā)送端和接收端共同使用的生成多項(xiàng)式g(x)后,將得到的余數(shù)p(x)作為CRC 校驗(yàn)碼。隨后CAN 總線控制器的發(fā)送端將得到的CRC 校驗(yàn)碼附加到報(bào)文中,一并發(fā)送給接收方。接收方再用同樣的g(x)去除收到的報(bào)文B(x),如果余數(shù)等于p(x),則傳輸正確(即A(x)和B(x)相同),否則判定傳輸過程中出錯,接收端發(fā)送出錯信息通知發(fā)送端重發(fā)報(bào)文,并重新開始CRC 校驗(yàn),直到傳輸報(bào)文正確為止。

在對CAN 總線控制器CRC 校驗(yàn)邏輯的設(shè)計(jì)過程中,需要注意以下三個方面:

① CRC 校驗(yàn)的計(jì)算采用的是模2(mod 2)運(yùn)算法,不進(jìn)位亦不借位,實(shí)際上是被除的二進(jìn)制多項(xiàng)式與生成多項(xiàng)式兩個操作數(shù)的邏輯異或運(yùn)算;

②將待處理報(bào)文組成的被除多項(xiàng)式A(x)左移n 位,即乘以 xn,n 為生成多項(xiàng)式 g(x)的最高冪值,空出的n 位用來存放CRC 計(jì)算的余數(shù)p(x),因此CAN總線控制器實(shí)際計(jì)算出的帶有CRC 校驗(yàn)碼的報(bào)文序列為 A(x)·xn+p(x);

③生成多項(xiàng)式g(x)的首位和末位的系數(shù)必須為1。

CRC 校驗(yàn)的工作原理如圖1所示。

圖1 CRC 碼檢錯工作原理圖

3 循環(huán)冗余校驗(yàn)碼的工作原則

CAN 總線協(xié)議中規(guī)定了數(shù)據(jù)幀和遠(yuǎn)程幀兩種幀格式,其傳輸報(bào)文都會攜帶CRC 校驗(yàn)數(shù)據(jù)隨同發(fā)送和校驗(yàn)。數(shù)據(jù)幀由7 個不同的位域組成:幀起始、仲裁域、控制域、數(shù)據(jù)域、CRC 域、應(yīng)答確認(rèn)域、幀結(jié)尾[1]。遠(yuǎn)程幀比數(shù)據(jù)幀減少了數(shù)據(jù)域,相當(dāng)于數(shù)據(jù)長度為0。圖2 為CAN 總線數(shù)據(jù)幀/遠(yuǎn)程幀格式。

圖2 數(shù)據(jù)幀/遠(yuǎn)程幀格式

在數(shù)據(jù)收發(fā)的過程中,對由幀起始、仲裁場、控制場、數(shù)據(jù)場(遠(yuǎn)程幀無數(shù)據(jù)場)組成的位流進(jìn)行CRC 循環(huán)冗余校驗(yàn)。CAN 協(xié)議規(guī)定,當(dāng)CAN 總線上連續(xù)出現(xiàn)5 個以上相同極性的數(shù)據(jù)時,在第5 位數(shù)據(jù)發(fā)送后,CAN 總線控制器自動填充一位相反極性的數(shù)據(jù)發(fā)送出去。該位即為填充位,用以避免CAN總線上長時間保持同一數(shù)據(jù)極性,確保區(qū)分錯誤幀和過載幀。在CAN 總線控制器的檢錯邏輯設(shè)計(jì)中,為進(jìn)行 CRC 計(jì)算,被除的多項(xiàng)式(A(x)、B(x))系數(shù)由幀起始、仲裁場、控制場、數(shù)據(jù)場(遠(yuǎn)程幀無數(shù)據(jù)場)部分的無填充位流給定。

CAN 總線協(xié)議中規(guī)定,CAN 總線控制器檢錯設(shè)計(jì)所采用的CRC 算法生成多項(xiàng)式[2]為g(x)=x15+x14+x10+x8+x7+x4+x3+1。CAN 總線控制器中采用的CRC 校驗(yàn)多項(xiàng)式能夠校驗(yàn)七級,它的檢錯能力很強(qiáng),誤判率極低,成為提高CAN 總線設(shè)備間數(shù)據(jù)傳輸正確性的有效保證手段。

被除的多項(xiàng)式(A(x)、B(x))被 g(x)多項(xiàng)式除(其系數(shù)以2 為模),得到此多項(xiàng)式除法的余數(shù)即為發(fā)送到CAN 總線上的CRC 序列。

4 CRC校驗(yàn)代碼的設(shè)計(jì)實(shí)現(xiàn)

CRC 校驗(yàn)碼的RTL 代碼設(shè)計(jì)便于實(shí)現(xiàn),此處給出 CAN 總線控制器 CRC 碼的 verilogHDL 的 RTL級實(shí)現(xiàn)[3]。CAN 總線控制器的CRC 邏輯設(shè)計(jì)采用被除多項(xiàng)式由幀起始、仲裁場、控制場、數(shù)據(jù)場(假如有)部分的無填充位流構(gòu)成,生成多項(xiàng)式由第三節(jié)的g(x)給出,除法得到的余數(shù)就是發(fā)送到CAN 總線上的CRC 序列。這個多項(xiàng)式除法遵循模2 運(yùn)算法則,不考慮進(jìn)位、借位,實(shí)際上是按位異或運(yùn)算。為實(shí)現(xiàn)此功能,在CAN 總線控制器的CRC 邏輯設(shè)計(jì)中使用了15 位的移寄存器crc[14:0][4-6]。如果用datain 存放指示位流的下一位數(shù)據(jù),它從幀的起始到數(shù)據(jù)場末尾皆由無填充的位序列給定[7]。CAN 總線控制器CRC 檢錯邏輯的RTL 設(shè)計(jì)實(shí)現(xiàn)代碼如下:

5 功能仿真

CAN 總線控制器的CRC 檢錯邏輯設(shè)計(jì)完成后,將其與CAN 總線控制器的其他模塊設(shè)計(jì)進(jìn)行系統(tǒng)整合,并將其掛接到以Cortex-M3 為核心處理器的一款MCU 設(shè)計(jì)中,搭建仿真驗(yàn)證平臺進(jìn)行功能仿真驗(yàn)證[8-9]。圖3 為所設(shè)計(jì)的仿真驗(yàn)證平臺,其中包括處理器內(nèi)核ARM Cortex-M3、flash 存儲器(用于存放測例程序)、CAN 總線控制器設(shè)計(jì)(其中包括被測單元CRC 檢錯設(shè)計(jì))以及平臺激勵信號。

圖3 CRC 仿真驗(yàn)證平臺

圖4 為CAN 總線控制器CRC 檢錯設(shè)計(jì)仿真波形圖。該例程發(fā)送的是一個標(biāo)準(zhǔn)格式的數(shù)據(jù)幀,標(biāo)識符id 序列為00111100010,發(fā)送數(shù)據(jù)字節(jié)長度為0100,發(fā)送數(shù)據(jù)為 0x12、0x34、0x56、0x78,通過 CRC檢錯單元計(jì)算得出的CRC 校驗(yàn)碼為0x3a1c。通過仿真可以看出,發(fā)送方與接收方的CRC 計(jì)算結(jié)果相同,最后接收方成功接收到了正確的數(shù)據(jù)并通過校驗(yàn)。圖中光標(biāo)所示的右側(cè)為開始發(fā)送CRC 序列,到go_rx_crc_lim 標(biāo)志結(jié)束。

圖4 CRC 仿真波形圖

6 結(jié)束語

通過對設(shè)計(jì)的研究與分析,完成CAN 總線控制器的CRC 檢錯邏輯設(shè)計(jì),并將其集成在CAN 總線控制器中,驗(yàn)證功能正確。由于CRC 校驗(yàn)碼的檢錯能力強(qiáng),設(shè)計(jì)實(shí)現(xiàn)簡單,可廣泛應(yīng)用于各類電路的數(shù)據(jù)校驗(yàn)設(shè)計(jì)中,用于提高數(shù)據(jù)傳輸可靠性。所提出的設(shè)計(jì)方法可直接應(yīng)用于其他串行數(shù)據(jù)的CRC檢錯邏輯設(shè)計(jì)中,具有一定的通用性。

猜你喜歡
接收端校驗(yàn)報(bào)文
基于J1939 協(xié)議多包報(bào)文的時序研究及應(yīng)用
以太網(wǎng)QoS技術(shù)研究及實(shí)踐
使用Excel朗讀功能校驗(yàn)工作表中的數(shù)據(jù)
基于擾動觀察法的光通信接收端優(yōu)化策略
電能表在線不停電校驗(yàn)技術(shù)
純多播BC 信道并存單播MAC 信道的天線效率研究
手機(jī)無線充電收發(fā)設(shè)計(jì)
淺析反駁類報(bào)文要點(diǎn)
精通文件校驗(yàn)的“門道”
基于FPGA的CRC32校驗(yàn)查找表算法的設(shè)計(jì)
吐鲁番市| 洞口县| 方正县| 松溪县| 娱乐| 保靖县| 大同县| 长葛市| 罗定市| 特克斯县| 长宁区| 枣阳市| 蒙自县| 乃东县| 隆林| 武川县| 五峰| 迁西县| 贡山| 晋宁县| 宝鸡市| 涪陵区| 南乐县| 武平县| 大丰市| 北辰区| 麻城市| 龙井市| 阿拉善左旗| 沁源县| 常宁市| 维西| 枣庄市| 马尔康县| 岢岚县| 鲁山县| 东兴市| 东港市| 颍上县| 舒兰市| 宁德市|