【发布时间】:2015-05-09 18:49:39
【问题描述】:
我正在编写一个顺序计数器,它由一系列使用 D 触发器组件的单计数器组件组成。在单计数器中,我需要从 '0' 的初始值开始 q,但我在初始化时遇到了问题。
q 是一个STD_LOGIC 信号,我尝试将其初始化如下:
signal q : STD_LOGIC := '0';
但是,当我使用 ModelSim 运行程序时,它显示的值是 U,就好像它没有被分配一样。如果我在 ModelSim 中运行时强制将 '0' 的信号冻结为 q,那么它可以工作。
完成此操作的唯一方法是检查行为描述开头的值并将其设置为'0'(如果未分配)吗?
如果我使用BIT 而不是STD_LOGIC,则一切正常。
我会发布我的代码,但我不想冒违反学术诚信的风险,因为这是针对学校项目的。
【问题讨论】:
-
还有什么驱动 Q 吗?请注意,如果初始值为
0并且有驱动程序驱动“U”,则这两个值解析为“U”。 (如果你不明白这一点,请阅读解析函数)。 -
好吧,我将输出
q从 D 触发器组件映射到问题中指定的q。这是你的意思吗? -
是的,这是你的问题。您需要清除触发器中的“U”,方法是重置它,或者输入“0”或“1”。