为何将modelsim中的memory型存入txt中,第一个存入值为0
时间:10-02
整理:3721RD
点击:
top端口定义有data_out,finish,done。data_out为数据输出端口,finish为是否开始存入txt的使能端口,done为全部存入的结束使能端口。
data_out初始为0,mem【】内已存入值
在testbench中
为何存入的第一个值一直是0
data_out初始为0,mem【】内已存入值
- always @ (posedge clk)
- ...(初始化)
- else
- begin
- if(finish)//开始传数据
- begin
- data_out <= mem[cnt];
- if(cnt == 17'd76799)//数据完全导出
- begin
- done <= 1'b1;
- end
- else
- cnt <= cnt + 1'b1;
- endend
在testbench中
- integer w_file;
- initial
- begin
- w_file = $fopen("result.txt");
- end
-
- always @(posedge clk)
- begin
- if(finish)
- $fdisplay(w_file,"%d",data_out);
- if(done)
- $stop;
- end
为何存入的第一个值一直是0
因为第一个clk上升沿的时候data_out是0
可是怎么修改呢?
data_out<=mem 跟$display都是第一个posedge clk,难道存在不同步
在某个上升沿,if(finish) data_out <= mem[cnt];同时$fdisplay(w_file,"%d",data_out),但此时输出的是上一个时钟周期时的data_out,正确输出应该延迟一个周期输出
always @(posedge clk)
begin
finish_d1<=finish;
if(fiish_d1)
$fdisplay(w_file,"%d",data_out);
end
明白了,谢谢了啊
