日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]針對(duì)CAN協(xié)議中提出的串行CRC檢驗(yàn)原理,給出其硬件實(shí)現(xiàn)方法及具體實(shí)現(xiàn)時(shí)應(yīng)需注意的技術(shù)問題,給出了RTL級(jí)的VHDL代碼。

摘要  針對(duì)CAN協(xié)議中提出的串行CRC檢驗(yàn)原理,給出其硬件實(shí)現(xiàn)方法及具體實(shí)現(xiàn)時(shí)應(yīng)需注意的技術(shù)問題,給出了RTL級(jí)的VHDL代碼。為了提高CRC編碼的生成速度和CRC檢驗(yàn)的效率,介紹了CRC檢驗(yàn)的并行原理,并針對(duì)CAN協(xié)議中CRC編碼的生成多項(xiàng)式推導(dǎo)出了8位并行CRC編碼的邏輯關(guān)系式。最后對(duì)串行和并行兩種實(shí)現(xiàn)方式進(jìn)行了性能對(duì)比,并給出了為滿足CAN協(xié)議而進(jìn)行CRC編碼時(shí)應(yīng)注意的問題。
關(guān)鍵詞 CAN協(xié)議;CRC檢驗(yàn);串行;并行
   
引言
     通信系統(tǒng)總線在傳輸信息時(shí),不可避免要受到各種干擾的影響,使得傳輸信息出錯(cuò)。CAN協(xié)議中,為了保證幀傳輸?shù)目煽啃院洼^高的檢錯(cuò)效率,其采用了以下幾種檢錯(cuò)方式:位錯(cuò)誤、填充錯(cuò)誤、CRC錯(cuò)誤、格式錯(cuò)誤及應(yīng)答錯(cuò)誤檢測。通過以上檢錯(cuò)方式,它對(duì)于受損報(bào)文檢測不到其受損的概率為:報(bào)文受損率*4.7*10-11,因而CAN總線極高的檢錯(cuò)率使得它目前被廣泛應(yīng)用到工業(yè)控制、通信、汽車甚至軍事等多個(gè)領(lǐng)域。CRC檢驗(yàn)作為CAN協(xié)議中一種重要的且行之有效的檢錯(cuò)方式,它的生成多項(xiàng)式可以檢驗(yàn)7級(jí),具有編碼簡單且誤判率低的優(yōu)點(diǎn)。
 
2  CRC檢驗(yàn)原理
     CAN協(xié)議中規(guī)定,需要對(duì)幀起始、仲裁場、控制場和數(shù)據(jù)場(若存在的話)組成的未經(jīng)填充的位流進(jìn)行CRC編碼。具體實(shí)現(xiàn)方法為:被除多項(xiàng)式的系數(shù)由幀起始、仲裁場、控制場、數(shù)據(jù)場(若存在的話)及15位(最低系數(shù))0組成的未經(jīng)填充的位流給定,而生成多項(xiàng)式為X15+X14+X10+X8+X7+X4+X3+1,被除多項(xiàng)式被生成多項(xiàng)式除(系數(shù)按模-2計(jì)算),余數(shù)即為將要發(fā)至總線的CRC序列。發(fā)送節(jié)點(diǎn)和接收接點(diǎn)的CAN控制器均采用相同的方法生成CRC檢驗(yàn)碼,并與發(fā)送節(jié)點(diǎn)送出的CRC檢驗(yàn)碼進(jìn)行比較,以判斷報(bào)文是否出錯(cuò),若出錯(cuò),CAN控制器會(huì)依據(jù)總線仲裁原則及受損報(bào)文優(yōu)先發(fā)送原則對(duì)已損壞報(bào)文自動(dòng)進(jìn)行重發(fā)。
 
3  CRC檢驗(yàn)碼電路的硬件實(shí)現(xiàn)
      CRC檢驗(yàn)碼硬件上的實(shí)現(xiàn),可以采用串行和并行兩種實(shí)現(xiàn)方式。在串行方式中,需編碼的位流按位逐位輸入,位流輸入完成后生成檢驗(yàn)碼,檢驗(yàn)碼緊隨需檢驗(yàn)的位流發(fā)出或接收到。并行方式中需檢驗(yàn)的位流每k位輸入到檢驗(yàn)碼生成電路中,因而檢驗(yàn)碼的生成效率大大高于串行方式。以下針對(duì)CAN 協(xié)議中CRC檢驗(yàn)的生成多項(xiàng)式進(jìn)行闡述。
3.1 CRC檢驗(yàn)碼的串行實(shí)現(xiàn)
       CAN協(xié)議中CRC碼為15位,需要15位的移位寄存器來實(shí)現(xiàn),移位寄存器c0c1c2……c12c13c14在CRC檢驗(yàn)碼生成過程中寄存CRC檢驗(yàn)碼的中間值,計(jì)算完成后其值即為最終的CRC檢驗(yàn)碼。設(shè)c(t)=[c0c1c2……c12c13c14]為t時(shí)刻移位寄存器的狀態(tài),復(fù)位時(shí)初始狀態(tài)時(shí)c(0)=[ 000……000]。移位寄存器的狀態(tài)轉(zhuǎn)換方程為:
c(t+1)= [c0c1c2……c12c13]*[0|I14]⊕(c14⊕dst)*g
                     = [c0c1c2……c12c13]*[0|I14]⊕c14*g⊕dst*g
                     = [c0c1c2……c12c13 c14]*A⊕dst*g
                    = c(t) *A⊕dst*g
      上式中,I14為14階單位陣,dst為串行輸入數(shù)據(jù),⊕表示異或,g=[g0g1……g13g14]為生成多項(xiàng)式的系數(shù)行矩陣,而A為n階方陣。
      依據(jù)以上的CRC檢驗(yàn)碼的狀態(tài)轉(zhuǎn)換方程實(shí)現(xiàn)的RTL級(jí)的VHDL代碼如下:
c<=ds xor c(14);
if(rst='0')then
c<=(others=>'0');
elsif(rising_edge(clk))then
  if(en_transmit='0')then
    c<=(others=>'0');
elsif(en_crc_code='1' and f_ds='1' and f_ds_sync='0')then
if(c ='1')then
  c(14 downto 1)<=c(13 downto 0) xor "10001011001100";
  c(0)<='1';
else
c(14 downto 1)<=c(13 downto 0);
  c(0)<='0';
end if;
end if;
end if;
      在以上代碼中,rst 為外部復(fù)位信號(hào),en_transmit 為幀發(fā)送使能信號(hào),en_crc_code 為CRC代碼編碼使能信號(hào),ds為輸入的串行數(shù)據(jù),f_ds與ds同時(shí)有效,f_ds='1' and f_ds_sync='0'代表f_ds的上升沿,c為15位移位寄存器,用于寄存CRC檢驗(yàn)碼的中間結(jié)果并輸出其最終結(jié)果。
       需注意的是:信號(hào)en_crc_code在發(fā)送支路中和接收支路中應(yīng)包含需編碼位流的填充和解除填充信息(即填充位不進(jìn)行編碼)。
 
3.2 CRC檢驗(yàn)碼的并行實(shí)現(xiàn)
       CRC檢驗(yàn)碼的并行實(shí)現(xiàn)方式,CAN協(xié)議中未給出,但并行實(shí)現(xiàn)方式具有很高的檢驗(yàn)碼生成效率,很有必要采用,以下給出其實(shí)現(xiàn)方法。其狀態(tài)轉(zhuǎn)移方程可表示為:
 
式中,c為15位移位寄存器,復(fù)位時(shí)各位均為0,在檢驗(yàn)碼生成過程中,寄存CRC檢驗(yàn)碼的中間值,其值每輸入k位數(shù)據(jù)變化一次,編碼完成后輸出最終的檢驗(yàn)碼,c(t)和c(t+k)分別為c在t時(shí)刻及t+k時(shí)刻的狀態(tài),實(shí)際應(yīng)用中c(t+k)表示緊隨c(t)狀態(tài)的并行k位數(shù)據(jù)輸入后的狀態(tài),k 為并行寬度,此處取8,dp為k位并行輸入數(shù)據(jù),A即為3.1節(jié)所述方陣,
,其中的G亦為3.1節(jié)所述的生成多項(xiàng)式的系數(shù)行矩陣。矩陣運(yùn)算過程中,  需注意的是:矩陣乘積的結(jié)果需進(jìn)行模2處理,即奇數(shù)用1代替,偶數(shù)以0代替。由此得到基于CAN協(xié)議中生成多項(xiàng)式的8位并行CRC檢驗(yàn)碼邏輯表,如表1所示。寄存器每位的表示如c6= c9⊕c13⊕dp2⊕dp6。在實(shí)際編碼中,需添加一些控制信號(hào),如異步復(fù)位信號(hào)、編碼同步清零信號(hào)、編碼同步使能信號(hào)等。
表1  8位并行CRC檢驗(yàn)碼邏輯表
c(t+k)
c(t)、dp
c0
c7 c8 c9 c10 c11 c13 c14 dp 0 dp1 dp2 dp3 dp4 dp6 dp7
c1
c8 c9 c10 c11 c12 c14 dp1 dp2 dp3 dp4 dp5 dp7
c2
c9 c10 c11 c12 c13 dp2 dp3 dp4 dp5 dp6
c3
c7 c8 c9 c12 dp0 dp1 dp2 dp4
c4
c7 c11 c14 dp4 dp7 dp10
c5
c8 c12 dp1 dp5
c6
c9 c13 dp2 dp6
c7
c7 c8 c9 c11 c13 dp0 dp1 dp2 dp4 dp5
c8
c0 c7 c11 c12 c13 dp0 dp4 dp5 dp6
c9
c1 c8 c12 c13 c14 dp1 dp5 dp6 dp7
c10
c2 c7 c8 c10 c11 dp0 dp1 dp3 dp4
c11
c3 c8 c9 c11 c12 dp1 dp2 dp4 dp5
c12
c4 c9 c10 c12 c13 dp6 dp2 dp3 dp5
c13
c5 c10 c11 c13 c14 dp3 dp4 dp6 dp7
c14
c6 c7 c8 c9 c10 c12 c13 dp0 dp1 dp2 dp3 dp5 dp7
3.3 性能對(duì)比
       用VHDL語言對(duì)兩種CRC檢驗(yàn)碼生成方法實(shí)現(xiàn)編碼后,利用Model Technology公司的仿真軟件ModelSim SE PLUS 5.6a進(jìn)行了功能仿真以驗(yàn)證原理及編碼的正確性。又利用Exemplar Logic公司的綜合工具LeonardoSpectrum對(duì)兩種代碼分別進(jìn)行了綜合,綜合過程中FPGA芯片選取Xinlinx公司的 2s200pq208,速度等級(jí)為5級(jí),優(yōu)化采取自動(dòng)優(yōu)化方式,結(jié)果如表2所示:
表2  串行和并行CRC編碼性能對(duì)比
 
Area (LUTs)
Delay (ns)
DFFs
Clock (MHz)
并行方式
35
8
15
119.6
串行方式
8
6
15
160.9
      由上表可以計(jì)算出,兩種實(shí)現(xiàn)方式的速度比為119.6*k/160.9=119.6*8/160.9=5.95,消耗硬件資源比為4.375,時(shí)間延遲比為1.33,因而二者性能有很大的差異。
 
結(jié)論
      由以上討論可以看出:采用串行實(shí)現(xiàn)方法、原理和電路結(jié)構(gòu)簡單,消耗硬件資源少,可以工作在較高的時(shí)鐘頻率下;采用并行實(shí)現(xiàn)方法、原理和實(shí)現(xiàn)電路復(fù)雜,消耗硬件資源多,工作頻率雖然低于串行方式,但生成CRC檢驗(yàn)碼的速度(指效率)大大高于串行方式。因而,串行實(shí)現(xiàn)方法適合于硬件資源緊缺,檢驗(yàn)碼生成速度要求不高的場合;而并行實(shí)現(xiàn)方法適用于硬件資源豐富,檢驗(yàn)碼生成速度要求較高的場合。
       在實(shí)際設(shè)計(jì)中,采用哪一種CRC檢驗(yàn)方式,還需要考慮收發(fā)幀的需填充位流的結(jié)構(gòu)。為了滿足CAN協(xié)議的規(guī)定要求(即需檢驗(yàn)幀起始位,仲裁場、控制場和數(shù)據(jù)場(若存在的話)組成的未經(jīng)填充的位流,位流總長度為整數(shù)字節(jié)多一位),發(fā)送支路采用串行方式,可完全按照協(xié)議要求生成CRC檢驗(yàn)碼,接收支路由于多了 15位CRC檢驗(yàn)碼(外加幀起始位恰好為2個(gè)字節(jié)),可采用8位并行方式實(shí)現(xiàn)CRC檢驗(yàn)。
 
參考文獻(xiàn):
1  BOSCH CAN Specification version 2.0
2  賈麗媛,戴光明. ATM協(xié)議處理中CRC的并行實(shí)現(xiàn). 湖南城市學(xué)院學(xué)報(bào),(自然科學(xué)版)
    第13卷,第4期 2004年12月:68~69
3 侯伯亨, 顧新 .VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì). 西安電子科技大學(xué)出版社
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

(全球TMT2022年9月23日訊)近日,浪潮城市信息模型(CIM)基礎(chǔ)平臺(tái)V1.0正式發(fā)布。該產(chǎn)品綜合應(yīng)用數(shù)字孿生、物聯(lián)網(wǎng)、5G、區(qū)塊鏈、大數(shù)據(jù)等技術(shù),實(shí)現(xiàn)城市治理各環(huán)節(jié)全程管控、智能協(xié)同,強(qiáng)化城市全生命周期管理,助...

關(guān)鍵字: 模型 編碼 大數(shù)據(jù) 區(qū)塊鏈

(全球TMT2022年8月30日訊)近日,浪潮M6服務(wù)器的帶外管理模塊固件BMC獲得了由中國網(wǎng)絡(luò)安全審查技術(shù)與認(rèn)證中心發(fā)布的IT產(chǎn)品信息安全認(rèn)證EAL4證書,這表明浪潮M6系列服務(wù)器在產(chǎn)品及信息安全保障方面均獲得頂級(jí)認(rèn)...

關(guān)鍵字: 信息安全 網(wǎng)絡(luò)安全 ASSURANCE CRC

加速小分子新藥的早期研發(fā)進(jìn)程 上海2022年8月8日 /美通社/ -- 保諾-桑迪亞,一家由安宏資本投資的、業(yè)內(nèi)領(lǐng)先的藥物發(fā)現(xiàn)、開發(fā)和商業(yè)服務(wù)CRDMO公司,和小分子藥物研發(fā)DEL技術(shù)先驅(qū)X-Chem公司共同...

關(guān)鍵字: DNA 編碼 DM BSP

摘要:傳統(tǒng)的備件倉儲(chǔ)管理模式存在備件到貨后備件計(jì)劃員未及時(shí)領(lǐng)用、備件實(shí)物查找效率低下、備件庫存信息更新不及時(shí)等問題,為此研發(fā)了一個(gè)備件倉儲(chǔ)管理輔助系統(tǒng)。該系統(tǒng)充分利用了互聯(lián)網(wǎng)技術(shù),提出了"互聯(lián)網(wǎng)+"倉儲(chǔ)管理模式,在備件到...

關(guān)鍵字: 倉儲(chǔ)管理 微信 編碼

首個(gè)中國科技公司代表 國際電信聯(lián)盟任命阿里云葉琰為編碼組副主席

關(guān)鍵字: 阿里云 編碼 視頻

對(duì)語音進(jìn)行編碼的目的是為了將語音數(shù)字化并利用人的發(fā)聲過程中存在的冗余度和人的聽覺特性來降低編碼率。

關(guān)鍵字: 語音 編碼 數(shù)字化

在之前的內(nèi)容里,我們介紹了很多通信協(xié)議,不過僅講解了數(shù)據(jù)的收發(fā)方法,而在實(shí)際的通信系統(tǒng)中,除了要實(shí)現(xiàn)收發(fā)外,還要盡量保證數(shù)據(jù)盡量不出差錯(cuò)。為盡量提高接收方收到數(shù)據(jù)的正確率,在接收數(shù)據(jù)時(shí)要對(duì)數(shù)據(jù)進(jìn)行差錯(cuò)檢測,檢測的方式有很...

關(guān)鍵字: CRC MCU ST

差錯(cuò)控制在數(shù)字通信中利用編碼方法對(duì)傳輸中產(chǎn)生的差錯(cuò)進(jìn)行控制,以提高傳輸正確性和有效性的技術(shù)。

關(guān)鍵字: 差錯(cuò)控制 編碼 ARQ

解碼(Decoding)是指受傳者將接受到的符號(hào)或代碼還原為信息的過程,與編碼過程相對(duì)應(yīng)。解碼活動(dòng)要受到受眾的社會(huì)地位和文化背景的影響,體現(xiàn)社會(huì)的多樣性,受眾的解碼還具有同向性、對(duì)抗性、妥協(xié)性三種形態(tài)。編碼和解碼的連通過...

關(guān)鍵字: 解碼 編碼 DTMF

在實(shí)際應(yīng)用中,比特差錯(cuò)經(jīng)常成串發(fā)生,這是由于持續(xù)時(shí)間較長的衰落谷點(diǎn)會(huì)影響到幾個(gè)連續(xù)的比特,而信道編碼僅在檢測和校正單個(gè)差錯(cuò)和不太長的差錯(cuò)串時(shí)才最有效(如RS只能糾正8個(gè)字節(jié)的錯(cuò)誤)。

關(guān)鍵字: RS FEC 編碼

通信技術(shù)

120783 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉