打印

[verilog] vivado进行simulation时停在一个时刻点

[仿制链接]
151|2
跳转到指定楼层
楼主
本帖最终由 yq327115059 于 2019-6-17 09:49 修改

    我在运用vivado完结RO电路时,选用的是一个与非门和四个非门结构,直接对LUT单元原语操作,给了与非门的使能端(我随意选的一个端口作为使能端)一个先低后高的触发信号,可是在使能端信号变高的时刻点,simulation的时序图无法持续进行了,可是输出(也便是最终一个非门接到与非门的另一端的信号)会在0 1 之间改变。下面附上我的代码和成果截图,请会的大神点拨!!!感激不尽
  我的代码:
   
  1. `timescale 1ns / 1ns
  2. module RO(
  3.      input Enable,
  4.      output Output
  5.      );
  6.      (*KEEP="TRUE"*)
  7.      wire[4:0] Signal;
  8.      LUT1 #(.INIT(2'b01)) Inv1 ( .O(Signal [1]), .I0(Signal [0]) );
  9.      LUT1 #(.INIT(2'b01)) Inv2 ( .O(Signal [2]), .I0(Signal [1]) );
  10.      LUT1 #(.INIT(2'b01)) Inv3 ( .O(Signal [3]), .I0(Signal [2]) );
  11.      LUT1 #(.INIT(2'b01)) Inv4 ( .O(Signal [4]), .I0(Signal [3]) );
  12.      LUT2 #(.INIT(4'b0111)) NAND ( .O(Signal [0]), .I0(Signal [4]), .I1(Enable) );
  13.      assign Output = Signal [4];
  14. endmodule
仿制代码



仿真的代码:
  1. module RO_tb(

  2.     );
  3.     (*KEEP = "TRUE"*)
  4.     reg a;
  5.     wire y;
  6.     initial
  7.     begin
  8.         a=0;
  9.         #1 a=1;   //10ns后进行翻转,作为鼓励信号
  10.     end
  11.    
  12.     RO U1(
  13.     .Enable(a),
  14.     .Output(y)
  15.     );
  16. endmodule
仿制代码

仿真到10ns就无法持续了:
C:\Users\YQ\Desktop、1



C:\Users\YQ\Desktop\2

从两张图能够看出输出y值在改变,可是时序图停在一个点!!!

还有一个Verilog的小问题
reg Ena;
if(Ena == 1)   //此刻会报错,‘Ena’ is not a constant

感觉这个报错看不懂,知道原因的朋友帮个忙吧!!!

沙发
| 2019-6-17 22:35 | 只看该作者
这个reg Ena;
if(Ena == 1)
在根本的逻辑中是不会报错的
板凳
 楼主 | 2019-6-18 07:48 | 只看该作者
zhangmangui 宣布于 2019-6-17 22:35
这个reg Ena;
if(Ena == 1)
在根本的逻辑中是不会报错的

后来我把if放到always里就没有报错了,如同if不能直接模块下
扫描二维码,随时随地手机跟帖
您需求登录后才能够回帖 登录 | 注册

本版积分规矩

我要发帖 投诉主张 创立版块 请求版主

快速回复

您需求登录后才能够回帖
登录 | 注册
高档形式

论坛热帖

封闭

抢手引荐上一条 /6 下一条

在线客服 快速回复 回来顶部 回来列表