有做过RS编码的吗?有个问题请教

2019-07-15 23:26发布

最近我在弄一个RS编码   然后根据线性移位反馈寄存器的推导写了代码  ,但在第三次移位的时候,与计算出来的值对不上,计算出来的值应该是1010,而我仿真出来是0110,
file:///D:DocumentsTencent Files1210438173ImageC2CFT6BT_F1]41T2V5SJ9RGS~F.png这是仿真图 FT6BT_F1]41T2V5SJ9RGS~F.png ,这是书上的计算值, 6DAF4B86444974F04A82D1539EB9AFC5.jpg ,他们对不上。。

代码如下:

module frs(clk,rst_n,x,y
    );
         input    clk;
         
         input    rst_n;
         
         input   [3:0] x;
         
         output    [3:0] y;
         

parameter         idle=2'b00;
parameter              second=2'b01;
parameter         third=2'b10;
parameter                   forth=2'b11;
         
reg [1:0] state;

reg  [3:0] D1;
  // reg  [3:0]  x_in;
//reg [3:0] cnt;

always@(posedge clk  or negedge rst_n)
                                       begin
if(!rst_n)
begin
cnt<=4'b0000;
D1<=4'b1101;
state<=idle;
end
      else


case(state)

idle:
begin
D1[0]<=x[3]^D1[3];
D1[1]<=D1[0];
D1[2]<=D1[1]^x[3];
D1[3]<=D1[2]^x[3];
state<=second;
end



second:

begin
D1[0]<=x[2]^D1[3];
D1[1]<=D1[0];
D1[2]<=D1[1]^x[2];
D1[3]<=D1[2]^x[2];
state<=third;
end



third:
begin
D1[0]<=x[1]^D1[3];
D1[1]<=D1[0];
D1[2]<=D1[1]^x[1];
D1[3]<=D1[2]^x[1];
state<=forth;
end


forth:
begin
D1[0]<=x[0]^D1[3];
D1[1]<=D1[0];
D1[2]<=D1[1]^x[0];
D1[3]<=D1[2]^x[0];
end
default:state<=idle;





endcase


                                       end

         
        assign y=D1;
         
         


endmodule  




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。