3453|4

24

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

crc(x^5 + x^4 + x^2 + 1)用verilog串行实现调出不了,请高手来帮我! [复制链接]


在modesim里仿真的,下面是测试程序与crc写在一起的.v文件。

输入数据是12'b101011010101,生成多项式为x^5 + x^4 + x^2 + 1

手动算出来是01101,想用串行的方法,结果没做出来,请帮忙看看问题在哪

module crc;
reg [11:0] data_in;
reg [3:0]i;
reg clk;
reg rstn;
reg calc_finish;
reg crcfb;
reg [4:0]CRC_Reg;

always #50 clk = ~clk;

initial begin
  data_in = 12'b101011010101;
  rstn = 0;
  clk = 0;
  CRC_Reg = 0;
  crcfb = 0;
  #100;
  rstn = 1;
  #5000 $stop;
end

always @ (posedge clk or negedge rstn)
  if(!rstn) begin
   i <= 11;
   calc_finish <= 1;
   CRC_Reg <= 0;
  end
  else begin

   if(i != 0)
    i <= i - 1;
   else
    calc_finish <= 0;

   if(calc_finish) //    x^5 + x^4 + x^2 + 1
   begin
    crcfb     <=CRC_Reg[4];
      CRC_Reg[4]<=CRC_Reg[3]^crcfb;   
      CRC_Reg[3]<=CRC_Reg[2];         
      CRC_Reg[2]<=CRC_Reg[1]^crcfb;         
      CRC_Reg[1]<=CRC_Reg[0];   
      CRC_Reg[0]<=data_in^crcfb;
   end  

  end

endmodule
此帖出自FPGA/CPLD论坛

最新回复

网上很多例子,串行移位异或  详情 回复 发表于 2013-5-28 21:58
点赞 关注(1)
 

回复
举报

6419

帖子

16

TA的资源

版主

沙发
 
module crc(crc_reg,crc,d,calc,init,d_valid,clk,reset);
output[15:0] crc_reg;
output[7:0] crc;
input[7:0] d;
input calc;
input init;
input d_valid;
input clk;
input reset;
reg[15:0] crc_reg;
reg[7:0] crc;
wire[15:0] next_crc;
always @(posedge clk or posedge reset)
begin
if (reset)
begin
crc_reg <= 16'h0000;
crc <= 8'h00;
end
else if (init)
begin
crc_reg <= 16'h0000;
crc <= 8'h00;
end
else if (calc & d_valid)
begin
crc_reg <= next_crc;
crc <= ~{next_crc[8], next_crc[9], next_crc[10], next_crc[11],
next_crc[12], next_crc[13], next_crc[14], next_crc[15]};
end
else if (~calc & d_valid)
begin
crc_reg <= {crc_reg[7:0], 8'h00};
crc <= ~{crc_reg[0], crc_reg[1], crc_reg[2], crc_reg[3],
crc_reg[4], crc_reg[5], crc_reg[6], crc_reg[7]};
end
end
assign next_crc[0] = crc_reg[12] ^ d[7] ^ crc_reg[8] ^ d[3];
assign next_crc[1] = crc_reg[13] ^ d[6] ^ d[2] ^ crc_reg[9];
assign next_crc[2] = d[5] ^ crc_reg[14] ^ d[1] ^ crc_reg[10];
assign next_crc[3] = d[4] ^ crc_reg[15] ^ d[0] ^ crc_reg[11];
assign next_crc[4] = crc_reg[12] ^ d[3];
assign next_crc[5]=crc_reg[12]^crc_reg[13]^d[7]^crc_reg[8]^d[2]^d[3];
assign next_crc[6] = crc_reg[13] ^ d[6] ^ crc_reg[14] ^ d[1] ^ d[2] ^
crc_reg[9];
assign next_crc[7] = d[5] ^ crc_reg[14] ^ crc_reg[15] ^ d[0] ^ d[1] ^
crc_reg[10];
assign next_crc[8] = d[4] ^ crc_reg[15] ^ d[0] ^ crc_reg[0] ^ crc_reg[11];
assign next_crc[9] = crc_reg[12] ^ crc_reg[1] ^ d[3];
assign next_crc[10] = crc_reg[13] ^ d[2] ^ crc_reg[2];
assign next_crc[11] = crc_reg[3] ^ crc_reg[14] ^ d[1];
assign next_crc[12] = crc_reg[12] ^ crc_reg[4] ^ d[7] ^ crc_reg[15]
^ d[0] ^ crc_reg[8] ^ d[3];
assign next_crc[13] = crc_reg[13] ^ d[6] ^ crc_reg[5] ^ d[2] ^ crc_reg[9];
assign next_crc[14] = d[5] ^ crc_reg[14] ^ crc_reg[6] ^ d[1] ^ crc_reg[10];
assign next_crc[15] = d[4] ^ crc_reg[15] ^ d[0] ^ crc_reg[7] ^ crc_reg[11];
endmodule
此帖出自FPGA/CPLD论坛

点评

这是王金明老师教材上的一个例子  详情 回复 发表于 2013-5-22 18:35
 
 

回复

6419

帖子

16

TA的资源

版主

板凳
 

回复 沙发 白丁 的帖子

这是王金明老师教材上的一个例子
此帖出自FPGA/CPLD论坛
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(中级)

4
 
谢谢,我再仔细看看
此帖出自FPGA/CPLD论坛
 
 
 

回复

6892

帖子

0

TA的资源

五彩晶圆(高级)

5
 
网上很多例子,串行移位异或
此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
直播时间:3月12日(周三)上午10:00
直播奖励:多功能榨汁机、蓝牙音箱、手机支架

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表