微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 为何将modelsim中的memory型存入txt中,第一个存入值为0

为何将modelsim中的memory型存入txt中,第一个存入值为0

时间:10-02 整理:3721RD 点击:
top端口定义有data_out,finish,done。data_out为数据输出端口,finish为是否开始存入txt的使能端口,done为全部存入的结束使能端口。
data_out初始为0,mem【】内已存入值

  1. always @ (posedge clk)
  2. ...(初始化)
  3. else
  4. begin
  5.     if(finish)//开始传数据
  6.       begin
  7.                   data_out <= mem[cnt];
  8.            if(cnt == 17'd76799)//数据完全导出
  9.            begin
  10.                  done <= 1'b1;
  11.             end
  12.             else
  13.                cnt <= cnt + 1'b1;
  14.        endend

复制代码


在testbench中

  1.         integer w_file;
  2.         initial
  3.         begin
  4.                 w_file = $fopen("result.txt");
  5.         end
  6.        
  7.         always @(posedge clk)
  8.         begin
  9.                 if(finish)
  10.                         $fdisplay(w_file,"%d",data_out);
  11.                 if(done)
  12.                         $stop;
  13.         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



    明白了,谢谢了啊

上一篇:dc 时序报告
下一篇:请帮忙IEEE帐号密码

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

网站地图

Top