为什么rom核寻址有时候会出来错的结果啊,求助

2019-07-15 20:42发布

总是出来后几个地址的结果。。。如图,图一是ise仿真结果,addr为242时的结果为-1400(ip核有时延),但在matlab里看rom的内容242对应的是-1408(图二),-1400是后面3位的。之后的结果也是这样,大部分出来的结果是延后的,新人求帮助,是不是我操作有不规范的地方。
  1. always @(posedge clk)
  2.   begin
  3.   if(data>1200||data<-1200)
  4.   begin
  5.       c<=3'd1;
  6.   end
  7.   else
  8.       if(data>600||data<-600)
  9.                 begin
  10.                     c<=3'd2;
  11.            end
  12.            else
  13.                     if(data>300||data<-300)
  14.                          begin
  15.                              c<=3'd3;
  16.                          end
  17.                          else
  18.                          begin
  19.                              addr<=data+300;
  20.                                   c<=3'd4;
  21.                          end

  22.   end
  23.   
  24.           arc_ip p2(  //rom
  25.           .clka(clk),
  26.           .rsta(rst_n),
  27.           .addra(addr),
  28.           .douta(ip_out)
  29.           );
  30.           
  31.         always @(*)
  32.         begin
  33.           case (c)
  34.      3'd1: k<=1570;
  35.           3'd2: k<=1553;
  36.           3'd3: k<=1535;
  37.           3'd4: k<=ip_out;
  38.           default: $display("No related phase info");
  39.    endcase
  40.    end
  41.        
  42.    assign result=k;
复制代码
2.png
1.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。