史興強(qiáng),劉夢(mèng)影
(中科芯集成電路股份有限公司,江蘇無(wú)錫214072)
基于A(yíng)HB總線(xiàn)的快速并行CRC算法設(shè)計(jì)與實(shí)現(xiàn)
史興強(qiáng),劉夢(mèng)影
(中科芯集成電路股份有限公司,江蘇無(wú)錫214072)
循環(huán)冗余校驗(yàn)(CRC,Cyclic Redundancy Check)以其簡(jiǎn)單的算法、強(qiáng)大的檢錯(cuò)能力和抗干擾能力,廣泛應(yīng)用于通信領(lǐng)域,以提高數(shù)據(jù)傳輸?shù)目煽啃浴闈M(mǎn)足高頻率的數(shù)據(jù)傳輸要求,基于CRC基本原理,介紹了一種快速并行CRC算法,然后采用該算法基于高級(jí)高性能(AHB,Advanced High Performance Bus)總線(xiàn),運(yùn)用硬件描述語(yǔ)言Verilog HDL設(shè)計(jì)并實(shí)現(xiàn)了CRC計(jì)算模塊。仿真結(jié)果表明,該算法能夠在確保數(shù)據(jù)可靠性的同時(shí)提高CRC的計(jì)算速度。
CRC;快速;并行;AHB總線(xiàn)
在數(shù)據(jù)通信過(guò)程中,由于通信傳輸特性不理想,且存在噪聲和信道之間串?dāng)_等其他因素的干擾,因此接收端的信息可能發(fā)生錯(cuò)誤決斷[1]。為降低通信誤碼率,提高數(shù)據(jù)通信有效性,采用信道編碼進(jìn)行檢錯(cuò)和糾錯(cuò)是必要的。
目前,常用的差錯(cuò)校驗(yàn)方法包括奇偶校驗(yàn)法、bcc異或校驗(yàn)法、md5校驗(yàn)法以及CRC法等[2]。奇偶校驗(yàn)法根據(jù)數(shù)據(jù)中“1”的個(gè)數(shù)為奇數(shù)或?yàn)榕紨?shù)進(jìn)行校驗(yàn),該方法能夠檢測(cè)出信息傳輸過(guò)程中的部分誤碼,雖不能夠糾錯(cuò),但由于其實(shí)現(xiàn)簡(jiǎn)單,因而得到廣泛使用;bcc異或校驗(yàn)法則通過(guò)將數(shù)據(jù)與指定初始值進(jìn)行異或運(yùn)算進(jìn)而生成校驗(yàn)結(jié)果,該方法適用于大多數(shù)要求不高的數(shù)據(jù)通訊;md5校驗(yàn)法則對(duì)接收數(shù)據(jù)執(zhí)行散列運(yùn)算以檢查數(shù)據(jù)的正確性,該方法是一種不可逆算法,通常用于檢驗(yàn)文件的完整性和正確性;CRC是由分組線(xiàn)性碼的分支而來(lái)[3],其編碼簡(jiǎn)單易實(shí)現(xiàn),具有強(qiáng)大的檢錯(cuò)能力和優(yōu)異的抗干擾性能,是一種高效可靠的差錯(cuò)校驗(yàn)法。因此,CRC在數(shù)字通信中應(yīng)用最為廣泛。
隨著通信和存儲(chǔ)技術(shù)的快速發(fā)展,信息傳輸速率急劇提升[4],高頻率的數(shù)據(jù)傳輸要求通信總線(xiàn)和設(shè)備能夠高速處理多種數(shù)據(jù)流。因此,新一代AMBA總線(xiàn)——AHB總線(xiàn)應(yīng)運(yùn)而生,該總線(xiàn)可滿(mǎn)足高性能可綜合設(shè)計(jì)要求,并用于高性能和高時(shí)鐘工作頻率模塊。此外,為同時(shí)保證通信數(shù)據(jù)系統(tǒng)的快速性和可靠性,同樣需要改進(jìn)數(shù)據(jù)差錯(cuò)校驗(yàn)方法[5~6]。傳統(tǒng)的串行CRC方法每個(gè)時(shí)鐘周期僅能處理1 bit數(shù)據(jù)[7],校驗(yàn)時(shí)間長(zhǎng)且速度慢,已不能滿(mǎn)足高速通信領(lǐng)域的要求。不僅如此,由于需要高速串行移位時(shí)鐘及相應(yīng)的高速設(shè)備,極大地增加了實(shí)現(xiàn)的難度[8]。
本文首先詳細(xì)介紹了CRC基本原理及串行算法,隨后針對(duì)如何提高CRC碼計(jì)算速度推導(dǎo)出并行算法,接著采用該算法基于A(yíng)HB總線(xiàn)設(shè)計(jì)了CRC計(jì)算模塊,并運(yùn)用硬件描述語(yǔ)言Verilog HDL完成建模與實(shí)現(xiàn),最后通過(guò)時(shí)序和功能仿真驗(yàn)證了該算法能夠保證數(shù)據(jù)的有效性,并大幅度提高CRC碼的計(jì)算速度。
CRC碼屬于分組碼中一類(lèi)重要的線(xiàn)性碼,其主要應(yīng)用是二元碼字。CRC的原理是利用線(xiàn)性編碼理論,在發(fā)送端根據(jù)待發(fā)送的位二進(jìn)制信息碼序列,以一定的規(guī)則生成一個(gè)位用于校驗(yàn)的監(jiān)督碼,通常將該監(jiān)督碼稱(chēng)為CRC碼[9],且附于信息碼后(如圖1所示),從而構(gòu)成一個(gè)共位的新二進(jìn)制碼序列,最終發(fā)送該新序列。隨后接受端根據(jù)信息碼和監(jiān)督碼之間所遵循的規(guī)則進(jìn)行檢驗(yàn),以確定數(shù)據(jù)通信過(guò)程中是否出錯(cuò)[2~10]。
圖1 CRC碼結(jié)構(gòu)
2.1 CRC基本原理
CRC的本質(zhì)是模-2除法求余數(shù)。假設(shè)待發(fā)送的k位二進(jìn)制信息碼M=(mk-1,…,mk-2,m1,m0),信息碼的比特序列作為多項(xiàng)式M(x)的系數(shù),則:
然后根據(jù)CRC碼的長(zhǎng)度,發(fā)送端和接收端規(guī)定一個(gè)(n-k)階生成多項(xiàng)式G(x):
目前,具有通用標(biāo)準(zhǔn)的生成多項(xiàng)式包括CRC-4、CRC-12、CRC-16、CRC-ITU、CRC-32和CRC-32c(如表1所示)。本文規(guī)定的生成多項(xiàng)式為CRC-32。
表1 通用標(biāo)準(zhǔn)的生成多項(xiàng)式
接著,將信息碼M=(mk-1,mk-2,…,m1,m0)左移(n-k)位,得到相應(yīng)多項(xiàng)式xn-kM(x),以此作為被除數(shù),G(x)作為除數(shù),進(jìn)行模-2多項(xiàng)式除法,那么:
其中Q(x)表示商多項(xiàng)式,r(x)為余數(shù)多項(xiàng)式。假設(shè)r(x)可表示為:
將式(1)和式(4)帶入式(3),得:
通常定義發(fā)送碼多項(xiàng)式C(x)=Q(x)G(x),因此發(fā)送碼序列則為C=(mk-1,mk-2,…,m1,m0,rn-k-1,rn-k-2,…,r0),其中(rn-k-1,rn-k-2,…,r0)為CRC碼。
如果接收端接收到的信息不存在誤碼,那么接收碼多項(xiàng)式能夠被生成多項(xiàng)式模-2整除。反之亦然。
2.2 CRC串行算法
由于CRC編碼采用模-2多項(xiàng)式除法,每一位進(jìn)行除法或減法運(yùn)算的結(jié)果均不影響其他位,即不向上借位或進(jìn)位,故邏輯上與異或運(yùn)算等效。因此CRC串行算法可通過(guò)一系列移位寄存器和異或門(mén)組合實(shí)現(xiàn),其典型電路結(jié)構(gòu)如圖2所示。
圖2 CRC串行實(shí)現(xiàn)的典型電路結(jié)構(gòu)[11]
圖2中rj(i)表示第j個(gè)觸發(fā)器在i時(shí)刻的狀態(tài),根據(jù)該實(shí)現(xiàn)電路的結(jié)構(gòu)可推導(dǎo)得出CRC碼的關(guān)系式為:
式中,“·”表示位于運(yùn)算,“⊕”表示異或運(yùn)算。
根據(jù)圖2可知,k位信息碼序列M從高位至低位依次從串行輸入端輸入,當(dāng)M全部輸入后,寄存器的輸出值即為所求CRC碼。因此經(jīng)過(guò)k個(gè)時(shí)鐘周期即可算出CRC碼。該串行算法編碼簡(jiǎn)單易實(shí)現(xiàn),具有修改靈活和可移植性好等特點(diǎn),然而逐位計(jì)算導(dǎo)致處理過(guò)程復(fù)雜冗余,尤其在高頻率數(shù)據(jù)傳輸過(guò)程中,大量計(jì)算導(dǎo)致過(guò)長(zhǎng)時(shí)間的占用處理器,甚至?xí)虺瑫r(shí)而導(dǎo)致通信部分失敗[12]。
2.3 CRC并行算法
由于串行CRC算法存在一定的局限性,因此為加快數(shù)據(jù)校驗(yàn)速度需要采用多位并行計(jì)算的方法[13],在并行計(jì)算的過(guò)程中,每次計(jì)算的位數(shù)可以選擇固定的8位[14]或16位[15]等,也可以是變化的值[16]。
當(dāng)進(jìn)行串行運(yùn)算時(shí),當(dāng)前CRC碼僅與當(dāng)前信息碼輸入值和前一時(shí)刻CRC碼有關(guān)。如果并行計(jì)算CRC碼(如8位并行運(yùn)算),8位信息碼同時(shí)輸入并行運(yùn)算電路所得的CRC碼與8位信息碼連續(xù)相繼輸入串行運(yùn)算電路所產(chǎn)生的CRC碼相同,那么該兩種電路等效。由此可以推導(dǎo)出CRC并行算法。
本文設(shè)計(jì)的并行CRC算法,規(guī)定生成多項(xiàng)式為CRC-32,如式(8)所示:
且每次并行計(jì)算8位信息碼,生成32位CRC碼,因此,取p=8,n-k=31。
根據(jù)式(8)可知,當(dāng)j=0,1,2,4,5,7,8,10,11,12,16,22,23,26時(shí),gj=1,則式(7)可化簡(jiǎn)為:
若將計(jì)算結(jié)果表示為r7=[r731,r730,…,r70],根據(jù)式(9)迭代推導(dǎo)r7表達(dá)式為:
由式(10)可知,運(yùn)用本文介紹的并行算法計(jì)算8位信息碼序列的32位CRC碼,僅需1個(gè)時(shí)鐘周期即可計(jì)算得到CRC碼。該算法邏輯簡(jiǎn)單易實(shí)現(xiàn),快速的處理過(guò)程極大縮短了CPU占用時(shí)間,其與CRC串行算法計(jì)算周期對(duì)比如表2所示。
表2 CRC碼計(jì)算周期對(duì)比
AHB總線(xiàn)是為滿(mǎn)足高性能且可綜合設(shè)計(jì)要求而提出的新一代AMBA總線(xiàn),該總線(xiàn)用于高性能和快時(shí)鐘工作頻率模塊,可連接CPU、高帶寬片上RAM、高帶寬外部存儲(chǔ)器接口、DMA和其他擁有AHB接口的控制器等,以構(gòu)成一個(gè)獨(dú)立并完整的系統(tǒng)級(jí)芯片(SoC, System on Chip)系統(tǒng)。不僅如此,其還可通過(guò)AHB-APB橋以連接APB總線(xiàn)系統(tǒng)。目前,AHB總線(xiàn)系統(tǒng)已被廣泛使用于SoC設(shè)計(jì)中。
基于A(yíng)HB總線(xiàn)所設(shè)計(jì)的CRC計(jì)算模塊,不僅需要具備高工作頻率的特點(diǎn),而且能夠計(jì)算多種數(shù)據(jù)流的CRC碼,傳統(tǒng)的串行算法并不能夠滿(mǎn)足該要求,因而運(yùn)用并行算法是必要的。
3.1 AHB總線(xiàn)協(xié)議概述
作為高性能SoC系統(tǒng)總線(xiàn),AHB總線(xiàn)支持多總線(xiàn)主機(jī)和高帶寬的操作,具有包括單個(gè)時(shí)鐘邊沿觸發(fā)、非三態(tài)實(shí)現(xiàn)方法、允許突發(fā)傳輸且支持傳輸字節(jié)、半字和全字等特征。一個(gè)典型的AHB系統(tǒng)包括主設(shè)備(Master)、從設(shè)備(Slave)以及基礎(chǔ)結(jié)構(gòu)。其中,基礎(chǔ)結(jié)構(gòu)包含一個(gè)決定總線(xiàn)控制權(quán)的仲裁器以及一個(gè)根據(jù)地址片選Slave的譯碼器。
通常情況下,Master發(fā)出傳輸請(qǐng)求,Slave負(fù)責(zé)響應(yīng)。當(dāng)AHB總線(xiàn)系統(tǒng)工作時(shí),Master向仲裁器發(fā)起一個(gè)請(qǐng)求,然后仲裁器指示Master何時(shí)能夠使用總線(xiàn),接著被授權(quán)的Master向Slave提供地址信號(hào)和控制信號(hào)等信息以發(fā)送讀操作請(qǐng)求或?qū)懖僮髡?qǐng)求,其中控制信號(hào)包含了傳輸方向、傳輸數(shù)據(jù)大小和傳輸類(lèi)型等信息,譯碼器根據(jù)地址信息選中需響應(yīng)Master的Slave。
AHB總線(xiàn)操作主要包括寫(xiě)操作和讀操作。如圖3所示,將AHB總線(xiàn)細(xì)分為寫(xiě)數(shù)據(jù)總線(xiàn)(hwdata),讀數(shù)據(jù)總線(xiàn)(hrdata)和地址控制信號(hào)(address&control)。當(dāng)Master發(fā)送寫(xiě)操作請(qǐng)求時(shí),hwdata將數(shù)據(jù)從Master傳輸至Slave,反之,hrdata將數(shù)據(jù)從Slave傳輸至Master以完成讀操作。圖3中,hclk和hresetn為全局信號(hào),表示總線(xiàn)時(shí)鐘和復(fù)位,hsel則為譯碼器傳輸至Slave的片選信號(hào)。
圖3 AHB總線(xiàn)基本結(jié)構(gòu)圖
完成一次讀操作或?qū)懖僮靼▋蓚€(gè)階段:僅一個(gè)有效周期的地址階段以及一個(gè)或者多個(gè)有效周期的數(shù)據(jù)階段。因此,Slave須在地址階段采樣有效地址,在數(shù)據(jù)階段可通過(guò)控制hreadyout信號(hào)插入等待狀態(tài),以確保其有足夠的時(shí)間提供或采樣有效數(shù)據(jù)。
圖4和圖5簡(jiǎn)單地描述了未插入等待狀態(tài)的讀操作和插入等待狀態(tài)的寫(xiě)操作,haddr為地址總線(xiàn),hwrite表示傳輸方向。由此可見(jiàn),拉低hreadyout可在數(shù)據(jù)階段插入相應(yīng)的等待周期。
圖4 簡(jiǎn)單AHB讀操作
3.2 基于A(yíng)HB總線(xiàn)的CRC算法實(shí)現(xiàn)
本文運(yùn)用并行算法設(shè)計(jì)一個(gè)CRC計(jì)算模塊,作為AHB總線(xiàn)系統(tǒng)的Slave,模塊結(jié)構(gòu)如圖6所示,主要由CRC控制單元(AHB_CRC)和CRC計(jì)算單元(CRC_ calculation)兩部分組成。AHB系統(tǒng)Master通過(guò)AHB總線(xiàn)配置CRC相關(guān)控制寄存器并寫(xiě)入所需計(jì)算數(shù)據(jù)流至寄存器crc_wdr,CRC控制單元每個(gè)時(shí)鐘向CRC計(jì)算單元輸入8位信息碼序列,該計(jì)算單位采用如式(10)所示的公式立即計(jì)算32位CRC碼,每個(gè)時(shí)鐘計(jì)算得到的結(jié)果均為下個(gè)時(shí)鐘計(jì)算的初始值。
圖5 等待狀態(tài)的AHB寫(xiě)操作
圖6 CRC模塊結(jié)構(gòu)
為改進(jìn)CRC碼計(jì)算速度,同時(shí)提高總線(xiàn)利用率,當(dāng)Master向hwdata寫(xiě)入數(shù)據(jù)時(shí)或前一數(shù)據(jù)CRC碼計(jì)算完成時(shí),CRC控制單元立刻取相應(yīng)的8位數(shù)據(jù)(crc_cal_byte)輸入至CRC計(jì)算單元。由于A(yíng)HB總線(xiàn)允許傳輸8位、16位和32位數(shù)據(jù),因此CRC計(jì)算單元分別需要1、2和4個(gè)時(shí)鐘周期計(jì)算得到32位CRC碼,并將計(jì)算結(jié)果(crc_result)輸出至寄存器crc_rdr以供Master讀取。
假設(shè)Master先向CRC模塊寫(xiě)入第1個(gè)32位數(shù)據(jù)Data1,間隔一個(gè)hclk后寫(xiě)入第2個(gè)8位數(shù)據(jù)Data2,實(shí)現(xiàn)過(guò)程時(shí)序如圖7所示。
該實(shí)現(xiàn)步驟大致如下:
(1)T0~T1:Master發(fā)送寫(xiě)操作請(qǐng)求;
(2)T1~T2:Master向hwdata寫(xiě)入32位數(shù)據(jù)Data1,同時(shí)CRC控制單元向CRC計(jì)算單元輸入Byte0_1(其值為Data1[7:0])進(jìn)行CRC碼計(jì)算,得到結(jié)果result0_1;
(3)T2~T3:CRC控制單元采樣hwdata數(shù)據(jù)寫(xiě)入crc_wdr,并向CRC計(jì)算單元輸入Byte1_1(即Data1 [15:8]),CRC計(jì)算單元以result0_1為初值與Byte1_1計(jì)算得到result1_1,同時(shí)Master發(fā)送第2個(gè)數(shù)據(jù)的寫(xiě)操作請(qǐng)求;
圖7 CRC計(jì)算時(shí)序圖
(4)T3~T4:CRC控制單元向CRC計(jì)算單元輸入Byte2_1(即Data1[23:16]),得到CRC碼result2_1,同時(shí)Master寫(xiě)入總線(xiàn)8位數(shù)據(jù)Data2,因?yàn)镈ata1的計(jì)算未結(jié)束,Data2還不能寫(xiě)入crc_wdr,因此置hready=0以插入一個(gè)hclk的等待狀態(tài);
(5)T4~T5:CRC控制單元向CRC計(jì)算單元輸入Byte3_1(即Data1[31:24]),得到result1為Data1的CRC碼,此時(shí)拉高h(yuǎn)ready使Slave能夠在下個(gè)時(shí)鐘采樣hwdata;
(6)T5~T6:采樣數(shù)據(jù)Data2寫(xiě)入crc_wdr,同時(shí)以result1為初值計(jì)算Byte0_2(即Data2)的CRC碼,得到Data1和Data2的CRC碼(result2),CRC計(jì)算單元向控制單元輸出result1存入crc_rdr;
(7)T6~T7:將result2存入crc_rdr,Master可通過(guò)讀取crc_rdr以獲取該數(shù)據(jù)流(Data1和Data2)的CRC碼。
本文采用HDL verilog硬件描述語(yǔ)言設(shè)計(jì)電路,并對(duì)程序進(jìn)行時(shí)序和功能仿真。由于Master向CRC模塊寫(xiě)入數(shù)據(jù)的隨機(jī)性,給出如圖8和圖9所示兩種情況下的仿真結(jié)果。
定義總線(xiàn)時(shí)鐘頻率為36 MHz,如果Master連續(xù)發(fā)出向crc_wdr寫(xiě)入待計(jì)算數(shù)據(jù)的請(qǐng)求,則該情況下CRC碼的計(jì)算過(guò)程時(shí)序如圖8所示。Master依次連續(xù)地向hwdata寫(xiě)32’h1122_5566、16’h7788和8’h99,從圖中清晰地看到,當(dāng)hwdata出現(xiàn)新數(shù)據(jù)時(shí)而CRC模塊對(duì)crc_wdr中數(shù)據(jù)的計(jì)算還未結(jié)束,hready變?yōu)?,為CRC模塊提供足夠的計(jì)算時(shí)間。
第1個(gè)數(shù)據(jù)32’h1122_5566經(jīng)過(guò)4個(gè)hclk計(jì)算得到CRC碼32’ha516_f9f3,然后以該數(shù)值為初值與第2個(gè)數(shù)據(jù)16’h7788經(jīng)過(guò)2個(gè)hclk計(jì)算得到CRC碼32’hb252_7259,接著與第3個(gè)數(shù)據(jù)僅需1個(gè)hclk則得到結(jié)果為32’he118_3481。
圖8連續(xù)寫(xiě)入數(shù)據(jù)以計(jì)算CRC碼
圖9 的仿真波形則描述了當(dāng)Master不連續(xù)地寫(xiě)入數(shù)據(jù)時(shí),CRC模塊生成校驗(yàn)結(jié)果的時(shí)序過(guò)程。AHB控制信號(hào)的波形說(shuō)明Master每次間隔1個(gè)hclk發(fā)出向crc_wdr寫(xiě)入數(shù)據(jù)的請(qǐng)求。當(dāng)?shù)?個(gè)數(shù)據(jù)8’h99寫(xiě)入總線(xiàn)時(shí),16’h7788的計(jì)算已完成,CRC模塊不需要插入等待狀態(tài),因此hready一直維持為1。
圖9 非連續(xù)寫(xiě)入數(shù)據(jù)以計(jì)算CRC碼
仿真結(jié)果表明,本文基于A(yíng)HB總線(xiàn)所設(shè)計(jì)的CRC計(jì)算模塊,運(yùn)用的并行算法加快了CRC碼的計(jì)算速度。此外,該模塊不受輸入數(shù)據(jù)流結(jié)構(gòu)的限制,能夠計(jì)算連續(xù)或非連續(xù)輸入的任意長(zhǎng)度數(shù)據(jù)的32位CRC碼。
本文基于CRC原理,詳細(xì)介紹了一種CRC并行算法。運(yùn)用該算法基于A(yíng)HB總線(xiàn),采用硬件描述語(yǔ)言Verilog HDL設(shè)計(jì)并實(shí)現(xiàn)CRC計(jì)算模塊。通過(guò)仿真,驗(yàn)證了該算法能夠在高頻率的數(shù)據(jù)傳輸過(guò)程中計(jì)算任意數(shù)據(jù)流的CRC碼,且編碼簡(jiǎn)單易實(shí)現(xiàn)。此外,相較于傳統(tǒng)CRC串行算法每個(gè)時(shí)鐘周期僅能處理1位數(shù)據(jù),該CRC并行算法每個(gè)時(shí)鐘周期能夠處理8位數(shù)據(jù),極大地提高了計(jì)算效率,彌補(bǔ)了傳統(tǒng)CRC串行算法的不足。
[1]黃維超,劉橋,黃初華.基于Verilog的CRC并行實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2009,25(30):112-113.
[2]任宇,陳欣,呂迅竣.適用于串行通信數(shù)據(jù)流的循環(huán)冗余校驗(yàn)方法[J].工業(yè)控制計(jì)算機(jī),2006,19(12):5-6.
[3]王蕾,平靜,馬世霞.數(shù)據(jù)通信中CRC方法的原理與實(shí)現(xiàn)[J].河南機(jī)電高等專(zhuān)科學(xué)校學(xué)報(bào),2006,14(3):28-29.
[4]常天海,胡鑒.基于FPGA的CRC并行算法研究與實(shí)現(xiàn)[J].微處理機(jī),2010,2:45-48.
[5]建輝.10G以太網(wǎng)接I:I并行CRC校驗(yàn)的一種簡(jiǎn)化算法[J].微計(jì)算機(jī)信息,2006,20:213-215.
[6]Renuka H K,Jayashree C N.Design and Computation of CyclicRedundancy Code for Ethernet Application:an implementationUsing FPGA[J].World Journal of Science and Technology,2011,1(8):68-73.
[7]Kounavis M E,Berry F L.Novel Table Lookup Based Algorithms for High Performance CRC Generation[J].IEEE Transon Computer Society,2008,57(11):1550-1560.
[8]金巍,肖立權(quán).一種并行CRC計(jì)算原理及FPGA實(shí)現(xiàn)[C].計(jì)算機(jī)工程與工藝全國(guó)學(xué)術(shù)年會(huì),2003:125-129.
[9]廖海紅.通信系統(tǒng)中的CRC算法的研究和工程實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2006.
[10]趙鴻,彭碧玉,王宏卓.基于VHDL的CRC校驗(yàn)及其在測(cè)控通信中的應(yīng)用[J].通信技術(shù),2010,2(43):29-34.
[11]Giuseppe Campobello,Giuseppe Patane,Marco Russo. Parallel CRC realization[C].IEEE Transactions on Computers,2003,52(10):1312-1319.
[12]王月琴,楊恒.新CRC碼串并行結(jié)合算法的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014,24(6):103-106.
[13]蔣安平.循環(huán)冗余校驗(yàn)(CRC)的硬件并行實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2007,24(2):107-112.
[14]Sadiq M Sait,Wasif Hasan.Hardware design and VLSI implementation of a byte-wise CRC generation chip[J]. IEEE Transactions on Consumer Electronics,1995,41(1): 195-200.
[15]程軍,陳貴燦,姜飛.USB數(shù)據(jù)傳輸中CRC校驗(yàn)碼的并行算法實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2003,20(3):77-80.
[16]Ji H M,Killian E.Fast parallel CRC algorithm and implementation on a configurable processor[C].IEEE International Conference on Communications,2002,3: 1813-1817.
Design and Implementation of AHB-Based Fast Parallel CRC Algorithm
SHI Xingqiang,LIU Mengying
(China Key System Co.,Ltd.,Wuxi 214072,China)
On account of simple algorithm and extraordinary error-detecting and anti-jamming capabilities, Cyclic Redundancy Check(CRC)is widely used in data communications in purpose of enhancing data reliability.On the basisofCRCfundamental,a fastparallelCRCalgorithm isintroduced in the paper to meet the requirements of high-speed data transmission.The algorithm is then used to design a CRC calculation module based on AHB bus system using Verilog HDL.The simulation results indicate that the fast parallel CRC algorithm dramatically improvescalculation speed while ensuring the data reliability.
CRC;fast;parallel;AHBbus
TN402
A
1681-1070(2017)07-0011-06
史興強(qiáng)(1976—),男,江蘇宜興人,1999年畢業(yè)于南京理工大學(xué)電子工程專(zhuān)業(yè),現(xiàn)從事SoC數(shù)字設(shè)計(jì)及低功耗技術(shù)研究。
2017-4-21