微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog 存储器赋初值和输出

verilog 存储器赋初值和输出

时间:10-02 整理:3721RD 点击:
各位大神,小弟写了一个存储器的小程序,但仿真结果却不对,不知为何,请指教
`timescale 1 ns/100 ps
module test_memory(clk,rst,out);
parameter LENGTH=20;
input clk,rst;
output [3:0] out;
reg [3:0] IX1 [0ENGTH-1];
integer i,j;
always @(posedge clk)
  if(!rst)  
  begin
j<=0;
    for(i=0;i<LENGTH;i=i+1)
      IX1[i]<=i+1;
  end
  else
  begin
      IX1[j]<=IX1[j]^4'b0010;
      j<=j+1;
  end
  assign out=IX1[j-1];
  endmodule


谢谢你的回答,但我觉得那不是根本问题  问题可能出在输出方式上 但我现在还没搞明白  
程序改过以后可以输出正常结果了
`timescale 1 ns/100 ps
module test_memory(clk,rst,out);
parameter LENGTH=20;
input clk,rst;
output reg [3:0] out;
reg [3:0] IX1 [0ENGTH-1];
reg [4:0] i,j;
always @(posedge clk)
  if(!rst)  
  begin
j<=1'b0;
    for(i=1'b0;i<LENGTH;i=i+1'b1)
      IX1<=i+1'b1;
  end
  else
  begin
      out<=IX1[j]^4'b0010;
      j<=j+1'b1;
  end
  endmodule
这时前仿结果
[attach]499351[/attach]
这时后仿结果
[attach]499352[/attach]
   但感觉后仿延迟好大

前仿


后仿




    后面对了应该是因为j的变量类型改为了reg,当j为整型时,out=IX[j-1]可能会有问题(j=0时,j-1为负数,超出IX的范围);后仿的话如果是读数据,应该存储器后面会接大的组合逻辑,所以都会有比较大的延迟,应该是正常现象

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top