如何在时钟上升沿显示内存文件中的数据?
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
我有一个包含十六进制数据的文本文件。我只想在时钟的上升沿显示数据,从而控制数据的频率。我写了下面的代码:
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