搜索
bottom↓
回复: 7

发个以太网4-bit MAC层的并行CRC32 verilog代码,项目已验证

[复制链接]

出0入0汤圆

发表于 2015-11-17 08:59:24 | 显示全部楼层 |阅读模式
可用于需要FPGA硬件处理以太网MAC层包,比如打时间戳等等。
//4-bit parallal crc generation block for ethernet package
//resource utilization: 45LEs

module CRC(
        clk,     //clock input
        reset_n, //reset synced at rising edge of clk
        en_i,    //crc block enable signal. en_i will be checked on rising edge
    in_i,    //4-bit input data. change on falling edge of clk.
    crc32_o  //32-bit crc result. change on rising edge of clk
);
input clk;
input reset_n;
input en_i;

input [3:0]in_i;
output [31:0]crc32_o;

reg [31:0]crc_o;
wire [31:0]crc_in;
wire P0;
wire P1;
wire P2;
wire P3;

assign crc32_o[0]=~crc_o[31];
assign crc32_o[1]=~crc_o[30];
assign crc32_o[2]=~crc_o[29];
assign crc32_o[3]=~crc_o[28];

assign crc32_o[4]=~crc_o[27];
assign crc32_o[5]=~crc_o[26];
assign crc32_o[6]=~crc_o[25];
assign crc32_o[7]=~crc_o[24];

assign crc32_o[8]=~crc_o[23];
assign crc32_o[9]=~crc_o[22];
assign crc32_o[10]=~crc_o[21];
assign crc32_o[11]=~crc_o[20];

assign crc32_o[12]=~crc_o[19];
assign crc32_o[13]=~crc_o[18];
assign crc32_o[14]=~crc_o[17];
assign crc32_o[15]=~crc_o[16];

assign crc32_o[16]=~crc_o[15];
assign crc32_o[17]=~crc_o[14];
assign crc32_o[18]=~crc_o[13];
assign crc32_o[19]=~crc_o[12];

assign crc32_o[20]=~crc_o[11];
assign crc32_o[21]=~crc_o[10];
assign crc32_o[22]=~crc_o[9];
assign crc32_o[23]=~crc_o[8];

assign crc32_o[24]=~crc_o[7];
assign crc32_o[25]=~crc_o[6];
assign crc32_o[26]=~crc_o[5];
assign crc32_o[27]=~crc_o[4];

assign crc32_o[28]=~crc_o[3];
assign crc32_o[29]=~crc_o[2];
assign crc32_o[30]=~crc_o[1];
assign crc32_o[31]=~crc_o[0];


assign P0=crc_o[31]^in_i[0];
assign P1=crc_o[30]^in_i[1];
assign P2=crc_o[29]^in_i[2];
assign P3=crc_o[28]^in_i[3];

assign crc_in[0]=P3;
assign crc_in[1]=P2^P3;
assign crc_in[2]=P1^P2^P3;
assign crc_in[3]=P0^P1^P2;

assign crc_in[4]=crc_o[0]^P0^P1^P3;
assign crc_in[5]=crc_o[1]^P0^P2^P3;
assign crc_in[6]=crc_o[2]^P1^P2;
assign crc_in[7]=crc_o[3]^P0^P1^P3;

assign crc_in[8]=crc_o[4]^P0^P2^P3;
assign crc_in[9]=crc_o[5]^P1^P2;
assign crc_in[10]=crc_o[6]^P0^P1^P3;
assign crc_in[11]=crc_o[7]^P0^P2^P3;

assign crc_in[12]=crc_o[8]^P1^P2^P3;
assign crc_in[13]=crc_o[9]^P0^P1^P2;
assign crc_in[14]=crc_o[10]^P0^P1;
assign crc_in[15]=crc_o[11]^P0;

assign crc_in[16]=crc_o[12]^P3;
assign crc_in[17]=crc_o[13]^P2;
assign crc_in[18]=crc_o[14]^P1;
assign crc_in[19]=crc_o[15]^P0;

assign crc_in[20]=crc_o[16];
assign crc_in[21]=crc_o[17];
assign crc_in[22]=crc_o[18]^P3;
assign crc_in[23]=crc_o[19]^P2^P3;

assign crc_in[24]=crc_o[20]^P1^P2;
assign crc_in[25]=crc_o[21]^P0^P1;
assign crc_in[26]=crc_o[22]^P0^P3;
assign crc_in[27]=crc_o[23]^P2;

assign crc_in[28]=crc_o[24]^P1;
assign crc_in[29]=crc_o[25]^P0;
assign crc_in[30]=crc_o[26];
assign crc_in[31]=crc_o[27];

always@(posedge clk)begin
        if(!reset_n)
                crc_o[31:0]<=32'b11111111111111111111111111111111;
        else if(en_i)begin
                crc_o[31:0]<=crc_in[31:0];
        end
end

endmodule

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2015-11-17 09:05:57 | 显示全部楼层
ganxiefenxiang 感谢分享~~~~目前还没进入fpga

出0入0汤圆

发表于 2015-11-17 21:50:58 | 显示全部楼层
CRC32的硬件实现

出0入0汤圆

 楼主| 发表于 2015-11-17 22:52:03 来自手机 | 显示全部楼层
tjuspring001 发表于 2015-11-17 21:50
CRC32的硬件实现

网上有很多都是1-bit那种的,我花了两天时间推导出来这个每次4-bit的并行crc32。

出20入0汤圆

发表于 2015-11-17 23:07:57 | 显示全部楼层
  谢谢分享,以后可能会玩玩fpga。

出0入0汤圆

发表于 2015-11-18 10:50:00 | 显示全部楼层
能不能把算法的数学原理分享一下,处理速度需要参考设计需求,1bit比较常用

出0入0汤圆

发表于 2015-11-19 15:47:37 | 显示全部楼层
MARK!!!!!!

出0入4汤圆

发表于 2016-10-26 23:31:31 | 显示全部楼层
非常有实用价值
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 23:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表