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

2019-03-25 08:26发布


在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 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。