如何在时钟上升沿显示内存文件中的数据?

How to display data from memory file at the positive edge of the clock?

我有一个包含十六进制数据的文本文件。我只想在时钟的上升沿显示数据,从而控制数据的频率。我写了下面的代码:

module testbench;
    reg [15:0] in[0:5];
    reg clk;
    integer i;
    initial
     clk=1'b0;
     always
      #5 clk = ~clk;
    
    initial
      $readmemh("Input_rsvd.dat",in);
      always @ (posedge clk)
      begin
       for(i=0;i<5;i=i+1)
        $display( "result = %h",in);
      end
endmodule

显然,代码有一些我无法弄清楚的问题。有人可以帮我解决这个问题吗?

当我尝试 运行 您的代码时,我在多个模拟器上遇到编译错误。您不能像那样将内存变量传递给 $display 。我认为您打算一次打印一个值。要修复它,请更改:

    $display( "result = %h",in);

至:

    $display( "result = %h",in[i]);

此外,如果您想打印所有 6 个值,请更改:

   for(i=0;i<5;i=i+1)

至:

   for(i=0;i<6;i=i+1)

这是新代码,使用了更一致的布局:

module testbench;
    reg [15:0] in [0:5];
    reg clk;
    integer i;

    initial clk = 1'b0;

    always #5 clk = ~clk;
    
    initial $readmemh("Input_rsvd.dat", in);

    always @(posedge clk) begin
       for (i=0; i<6; i=i+1) $display("result = %h", in[i]);
    end
endmodule