并行CRC算法VerilogHDL代码自动生成器及其方法

文档序号:6583494阅读:495来源:国知局
专利名称:并行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>formula see original document page 4</formula>( 公式 2)<formula>formula see original document page 4</formula>公式中的核心部分是表达式中各项的系数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>formula see original document page 5</formula><formula>formula see original document page 5</formula>2)把设计参数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>formula see original document page 2</formula>2)把设计参数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>formula see original document page 2</formula>2)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日
发明者党君礼, 刘升 申请人:西安奇维测控科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1