並行CRC算法VerilogHDL代碼自動生成器及其方法
2023-05-28 21:57:16 3
專利名稱:並行CRC算法Verilog HDL代碼自動生成器及其方法
技術領域:
本發明涉及一種代碼自動生成器及其方法,具體涉及一種並行CRC算法Verilog HDL代碼自動生成器及其方法。
背景技術:
由於在速度方面優於串行CRC算法,並行CRC算法被廣泛地應用在數據傳輸、存 儲、通信、加密和解密等領域中,在用專用集成電路和FPGA實現其算法時,先要得到CRC算 法Verilog HDL代碼,由此代碼進一步通過綜合工具得到CRC算法網表,從而得到CRC算法 的硬體拓撲結構。串行CRC電路結構簡單,運算速度慢;並行CRC電路結構複雜,運算速度快;在串行CRC電路中,如果確定了 G(X)的表達式公式1和電路的初值INT,就可以確 定其電路結構,具體電路用CRCN_A_INT表示;G(X) 二 J] (其中 4 = O 或 1)(0 S 免 S Λ0 (其中 Ak = O 或 1) (O≤k≤ N)(公並行電路中,如果確定了 G(X)的表達式和電路的初值INT和並行數據寬度M,就可 以確定並行CRC電路結構,具體電路用CRCN_DM_A_INT就可以表示,並行CRC電路的核心是 邏輯電路,邏輯電路可以用公式2表示,formula see original document page 4( 公式 2)formula see original document page 4公式中的核心部分是表達式中各項的係數Qj [i], 在現有技術中,如果要得到並行CRC算法Verilog HDL代碼,需要技術人員熟悉並 行CRC算法,並能推導出並行CRC算法的一般表達式,進而人工將表達式轉化為並行CRC算 法Verilog HDL代碼。此方法的缺點如下1)需要技術人員完全理解並行CRC算法;2)需要技術人員會推導並行CRC算法一般表達式;3)需要技術人員人工將並行CRC —般表達式轉化為並行CRC算法VerilogHDL代 碼;4)需要技術人員輸入CRC代碼,輸入時由於相似項繁多,手動輸入費時費力,容易 出錯。
發明內容
本發明的目的在於提供一種並行CRC算法Verilog HDL代碼自動生成器及其方法,其解決了背景技術中並行CRC算法Verilog HDL代碼生成複雜的技術問題。本發明的技術解決方案是一種並行CRC算法Verilog HDL代碼自動生成器,其特殊之處在於提供係數產生 電路拓撲結構,其包括基於modelsim仿真平臺上係數產生電路代碼原型,所述係數產生電 路代碼CG. ν在modelsim仿真平臺上運行產生的係數文件C. txt,所述Verilog代碼產生文 件VG. ν在modelsim仿真平臺上再運行,並自動調用CG. ν生成的係數文件C. txt產生得到 並行CRC電路Verilog代碼文件F. txt。上述係數產生電路包括產生代表輸入數據的二進位代碼D[2N_1:0]的2N-1位移 位寄存器組(DFFS),產生時鐘(elk)、復位(reset)以及M個elk時鐘長度的使能信號(en_ Μ)的控制信號發生器(CSG)和產生並行CRC計算公式的係數的係數產生模塊(CGB)。上述係數產生模塊(CGB)包括反饋環路(FL),串行模塊(SB)和產生復位時Q端的 初值的復位值(RV)電路。一種並行CRC算法Verilog HDL代碼自動生成方法,其特殊之處在於,該方法包 括1)提取設計參數N,M,A,INT,得到並行CRC算法係數產生電路的一般表達式CRCN_ DM_A_INT ;所述並行CRC算法係數產生電路的一般表達式CRCN_DM_A_INT的邏輯電路用公 式2表不,formula see original document page 5formula see original document page 52)把設計參數N,Μ, A, INT按照係數產生電路設計步驟得到並行CRC算法係數產 生電路;3)將係數產生電路用verilog代碼表示為CG. ν ;4)在modelsim上運行CG. ν得到係數文件C. txt ;5)在modelsim上運行VG. ν得到並行CRC電路Verilog代碼F. txt。上述設計參數提取方法為1)根據串行CRC電路結構得到公式一
k^NG(X) = J^(AkXk)(其中 Ak = O或 1) (O < k<N)(公式 1)和 CRCN—A—INT,
fc=02) N的值等於k的最大值,即N ;3) A為N+1位二進位數,Ak為一位二進位數,取值只能為O或1,在verilogHDL代 碼中可以表示為 Α[Ν:0] = {An,An_i; . . . , A0};4) INT為串行CRC電路中觸發器DFFtl至DFF1^1中Q端的初值,DFFi (O彡i彡N-1) 的值可以用Ci (O彡i彡N-1)來表示,此Ci就是公式2中的Ci, Ci為一位二進位數,取值只 能為 O 或 1 ;在 verilog HDL 代碼中可以表示為 INT[N_1:0] = IC1^1,CN_2,. . .,C。}。上述設計參數提取方法還可為若並行CRC的數據輸入端D的位寬為M,在verilogHDL代碼中可以表示為 D[M-1:0] = {DN_i,Dn_2,...,Dq} ;Df(0 ^ f ^M-I)為串行 CRC 運算中第 f 次輸入的數據,此0〃就是公式2中的Df。上述按照係數產生電路設計步驟包括1)提供一個產生代表輸入數據的二進位代碼D[2N_1:0]的2N_1位移位寄存器組 (DFFS);2)提供一個產生時鐘(elk)、復位(reset)以及M個elk時鐘長度的使能信號(en_ Μ)的控制信號發生器(CSG)
3)提供一個產生並行CRC計算公式的係數的係數產生模塊(CGB)。上述係數產生模塊(CGB)中的串行模塊(SB)由N-I個模塊組成,其中任意一個模 塊j (1 <= j <=n-l)對應的電路結構都是反饋異或電路(FXOR)或無反饋電路(NF)中 的一種。上述A的二進位表示為An. · .A1Atl, Al到AN表示為A [1:N_1];當^為0時,(1彡j彡N-1)模塊j對應的電路結構為反饋異或電路(FXOR)。當Aj為1時,(1彡j彡N-1)模塊j對應的電路結構為無反饋電路(NF)。本發明的優點在於並行CRC算法Verilog HDL代碼生成迅速,且直接可以使用。
圖1為本發明設計流程示意圖;圖2為CRCN_DM_A_INT並行算法係數產生電路;圖3為係數產生模塊(CGB);圖4為反饋環路(FL);圖5為串行模塊(SB);圖6為反饋異或電路(FXOR);圖7為無反饋電路(NF)。
具體實施例方式本發明是將串行CRC電路轉化為並行CRC電路,即根據串行CRC電路的結構或者 表達式(公式一),得到並行CRC電路。並行CRC電路可以用Verilog代碼(F.txt)表示; 其一般形式用公式2表示,具體的代碼將會產生在文件F. txt中;公式2中的核心問題是各項的係數Qj[i],具體的係數會產生在文件C. txt中;文件C. txt可以在modelsim中運行CG. ν產生;CG. ν是並行CRC係數產生電路CRCN_DM_A_INT的veriIogHDL代碼表示方法;CRC 係數產生電路是本專利保護的核心,其設計方式由係數產生電路設計步驟(附件三)給 出;設計步驟要用到的參數為N,M,A,INT參數N,A,INT可由公式1得到,具體方法見設計參數提取方法一(附件一);參數M為並行CRC數據data的寬度,具體方法見設計參數提取方法二(附件二);因此本發明的設計流程概要為見圖11 按附件一,二提取設計參數 N,M,A,INT,得到 CRCN_DM_A_INT ;2 把設計參數N,M,A,INT按照附件二中所提供的係數產生電路設計步驟得到圖--;3 將圖二用verilog代碼表示為CG. ν ;4 在modelsim上運行CG. ν得到係數文件C. txt ;5 在 modelsim 上運行 VG. ν 得到並行 CRC 電路 Verilog 代碼(F. txt)附件一設計參數提取方法一1 根據串行CRC電路結構得到公式一
k-NG(X) = Yu (AkXk)(其中 Ak = O 或 1) (O 彡 k 彡 N)(公式 1)和 CRCN_A_INT,2 =N的值等於k的最大值,即N ;3 =A為N+1位二進位數,Ak為一位二進位數,取值只能為0或1,在verilogHDL代 碼中可以表示為 Α[Ν:0] = {An,An_i; . . . , A0};4 :INT為串行CRC電路中觸發器DFFtl至DFF1^1中Q端的初值,DFFi (0彡i彡N-1) 的值可以用Ci (0彡i彡N-1)來表示,此Ci就是公式2中的Ci, Ci為一位二進位數,取值只 能為 0 或 1 ;在 verilogHDL 代碼中可以表示為 INT[N_1:0] = (Cn^1 , CN_2,· · ·,Cj ;附件二 設計參數提取方法二1 若並行CRC的數據輸入端D的位寬為M,在verilogHDL代碼中可以表示為 D[M-1:0] = {DN_i,Dn_2,...,Dq} ;Df(0 ^ f ^M-I)為串行 CRC 運算中第 f 此輸入的數據,此 0〃就是公式2中的Df。附件三係數產生電路設計步驟電路結構由圖(2-7)和步驟(1-9)來闡述步驟1 :CRCN_DM_A_INT並行算法係數產生電路(圖2)主要由三個部分組成2N_1 位移位寄存器組(DFFS)、控制信號發生器(CSG)、係數產生模塊(CGB)(圖3);步驟2 =DFFS的作用是產生代表輸入數據的二進位代碼D [2N-1 0];步驟3 =CSG的作用是產生時鐘(elk)、復位(reset)、M個elk時鐘長度的使能信 號(en_M);步驟4 =CGB的作用是產生並行CRC計算公式的係數,其由反饋環路(FL)(圖4), 串行模塊(SB)(圖5)和復位值(RV)電路組成;步驟5 :SB由N-I個模塊組成,其中任意一個模塊j (1 < = j < = n-1)對應的電 路結構都是反饋異或電路(FXOR)或無反饋電路(NF)中的一種,具體對應方式由7、8說明;步驟6:A的二進位表示為AN…A1A(1,Al到AN表示為A[l:N-l];步驟7 ^.為0時,(l^j ^N-I)模塊j對應的電路結構為反饋異或電路(FX0R(圖 6);步驟8 -.Aj為1時,(1彡j彡N-1)模塊j對應的電路結構為無反饋電路(NF)(圖 7);步驟9 復位值(RV)電路是產生復位時Q端的初值。
權利要求
一種並行CRC算法Verilog HDL代碼自動生成器,其特徵在於包括基於modelsim仿真平臺上係數產生電路,所述係數產生電路在modelsim仿真平臺上運行產生的係數文件C.txt,所述係數產生電路在modelsim仿真平臺上再運行,並自動調用用verilog代碼表示為CG.v的係數文件C.txt產生得到並行CRC電路Verilog代碼文件F.txt。
2.根據權利要求1所述並行CRC算法VerilogHDL代碼自動生成器,其特徵在於所 述係數產生電路包括產生代表輸入數據的二進位代碼D[2N-1:0]的2N-1位移位寄存器組 (DFFS),產生時鐘(elk)、復位(reset)以及M個elk時鐘長度的使能信號(en_M)的控制信 號發生器(CSG)和產生並行CRC計算公式的係數的係數產生模塊(CGB)。
3.根據權利要求2所述並行CRC算法VerilogHDL代碼自動生成器,其特徵在於所 述係數產生模塊(CGB)包括反饋環路(FL),串行模塊(SB)和產生復位時Q端的初值的復位 值(RV)電路。
4.一種並行CRC算法Verilog HDL代碼自動生成方法,其特徵在於,該方法包括1)提取設計參數N,M,A,INT,得到並行CRC算法係數產生電路的一般表達式CRCN_DM_ A_INT ;所述並行CRC算法係數產生電路的一般表達式CRCN_DM_A_INT的邏輯電路用公式2 表不,formula see original document page 22)把設計參數N,Μ,A, INT按照係數產生電路設計步驟得到並行CRC算法係數產生電路;3)將係數文件C.txt用verilog代碼表示為CG. ν ;4)在modelsim上運行CG.ν得到係數文件C. txt ;5)在modelsim上運行VG.ν得到並行CRC電路Verilog代碼F. txt。
5.根據權利要求4所述並行CRC算法VerilogHDL代碼自動生成方法,其特徵在於 所述設計參數提取方法為1)根據串行CRC電路結構得到公式一formula see original document page 22)N的值等於k的最大值,即N;3)A為N+1位二進位數,Ak為一位二進位數,取值只能為O或1,在verilogHDL代碼中 可以表示為 Α[Ν:0] = {An,An_1 · · ·,AJ ;4)INT為串行CRC電路中觸發器DFFtl至DFF1^1中Q端的初值,DFFi (O彡i彡N-1)的值 可以用Ci(C)彡i彡N-1)來表示,此Ci就是公式2中的CpCi為一位二進位數,取值只能為 O 或 1 ;在 verilog HDL 代碼中可以表示為 INT[N_1:0] = (Cn^1 , CN_2,· · ·,C0}。
6.根據權利要求4所述並行CRC算法VerilogHDL代碼自動生成方法,其特徵在於 所述設計參數提取方法還可為若並行CRC的數據輸入端D的位寬為M,在verilogHDL代碼 中可以表示為D[M-1:0] = {Dn_1 Dn_2, ... , D0} ;Df(0^ f ^M-D為串行CRC運算中第f此 輸入的數據,此Df就是公式2中的Df。
7.根據權利要求4 6所述並行CRC算法VerilogHDL代碼自動生成方法,其特徵在 於所述按照係數產生電路設計步驟包括1)提供一個產生代表輸入數據的二進位代碼D[2N-1:0]的2N-1位移位寄存器組 (DFFS);2)提供一個產生時鐘(elk)、復位(reset)以及M個elk時鐘長度的使能信號(en_M) 的控制信號發生器(CSG);3)提供一個產生並行CRC計算公式的係數的係數產生模塊(CGB)。
8.根據權利要求7所述並行CRC算法VerilogHDL代碼自動生成方法,其特徵在於所 述係數產生模塊(CGB)中的串行模塊(SB)由N-I個模塊組成,其中任意一個模塊j(l < = j <= n-1)對應的電路結構都是反饋異或電路(FXOR)或無反饋電路(NF)中的一種。
9.根據權利要求8所述並行CRC算法VerilogHDL代碼自動生成方法,其特徵在於 所述A的二進位表示為AN. .. A1Atl, Al到AN表示為A [1: N-1];當^為O時,(1≤j≤N-1)模塊j對應的電路結構為反饋異或電路(FXOR)。
10.根據權利要求8所述並行CRC算法VerilogHDL代碼自動生成方法,其特徵在於 所述A的二進位表示為AN. .. A1Atl, Al到AN表示為A [1: N-1];當Aj為1時,(1≤j≤N-1)模塊j對應的電路結構為無反饋電路(NF)。
全文摘要
一種並行CRC算法Verilog HDL代碼自動生成器及其方法,其生成器包括基於modelsim仿真平臺上係數產生電路,係數產生電路代碼CG.v運行產生的係數文件C.txt,Verilog代碼產生文件VG.v再運行,產生得到Verilog代碼文件F.txt;其方法包括1)提取設計參數N,M,A,INT;2)把設計參數N,M,A,INT按照係數產生電路設計步驟得到係數產生電路;3)將係數產生電路用verilog代碼表示為CG.v;4)運行CG.v得到係數文件C.txt;5)運行VG.v得到並行CRC電路Verilog代碼F.txt。本發明將並行CRC算法Verilog HDL代碼生成簡單化。
文檔編號G06F9/44GK101826011SQ20091021935
公開日2010年9月8日 申請日期2009年12月7日 優先權日2009年12月7日
發明者黨君禮, 劉升 申請人:西安奇維測控科技有限公司