- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个大型仿真测试平台,它正在执行两个 Kintex Ultrascale FPGA 之间的接口(interface)。我遇到了最奇怪的问题:我无法触发rising_edge(CLK) 语句。
在设计中有多个这样的例子:我将追踪一条逻辑路径,并最终发现一个没有触发的上升沿(随便)。
这是踢球者:用 CLK'EVENT 和 CLK='1' 替换rising_edge 会导致逻辑正确触发,但我无法通过一千个源文件全部替换它们,然后将其推送到团队仓库- 那太荒谬了(加上代码是有效的,并且已被多次使用,因此进行这样的更改将浪费大量时间)。
上升沿也等同于 CLK'LAST='0' 和 CLK'EVENT 和 CLK='1' - 此语句也不会触发。所以肯定是不满足CLK'LAST='0'吧? (如果 CLK'EVENT 和 CLK='1' 触发,并且添加 CLK'LAST='0' 没有触发,那么它一定是导致问题的最后一项)。
但是,我查看增量 View ,看不到介于 0 和 1 之间的中间值 - 没有中间高阻状态,没有未定义的信号,什么也没有。它看起来很完美。
我已经用几个不同的 Modelsim 版本对此进行了测试,结果相同(只是为了确保它不是工具回归)。
到底是什么导致了这种情况?
我能想到的唯一不标准的事情是,我使用外部名称将时钟/数据驱动到层次结构的上几层,但它们正在将预期值更新到波形窗口。
使用外部名称来强制值是否会以某种方式导致边缘丢失,即使信号看起来正确(甚至下降到增量?)还是会导致某种波形窗口差异?是什么导致 CLK'LAST 有效丢失?
谢谢大家!
最佳答案
如果CLK
的类型不是bit
,例如如果是 std_ulogic
或 std_logic
则不是,rising_edge(CLK)
不等价于:
CLK'EVENT and CLK='1'
或:
CLK'LAST='0' and CLK'EVENT and CLK='1'
rising_edge(CLK)
还涉及到'L'
和'H'
;对于从 '0'
或 'L'
到 '1'
或 'H'
的任何转换,它都会返回 true .也就是说,任何一个:
'L' -> 'H'
'L' -> '1'
'0' -> 'H'
'0' -> '1'
而 CLK'EVENT and CLK='1'
对以下任何一项的评估结果为真:
'U' -> '1'
'X' -> '1'
'0' -> '1'
'Z' -> '1'
'W' -> '1'
'L' -> '1'
'H' -> '1'
'-' -> '1'
因此,例如,从 'H'
到 '1'
的转换不是 rising_edge(CLK)
的上升沿,而是它是 CLK'EVENT 和 CLK='1'
之一。而且,相反,从 '0'
到 'H'
的转换是 rising_edge(CLK)
的上升沿,但对于 不是CLK'EVENT 和 CLK='1'
.
此问题的另一个潜在原因不太可能:您使用的是 rising_edge
函数的自定义版本...
关于vhdl - 奇怪的 VHDL 问题 : rising_edge(CLK) not firing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53610031/
我正在为莱迪思 FPGA 学习和编程 VHDL,以模仿 74HCT245 的功能。以下是我的代码。 我不断收到语句不可合成,因为它在 NOT(时钟边沿)条件下不保持其值。 VHDL-1242 错误,
所以我遇到了一些我必须复制的旧代码,但它无法使用新的 Xilinx 编译器进行编译,所以我需要弄清楚它到底做了什么。我有这样的事情: if rising_edge(clk) then —do s
我有一个大型仿真测试平台,它正在执行两个 Kintex Ultrascale FPGA 之间的接口(interface)。我遇到了最奇怪的问题:我无法触发rising_edge(CLK) 语句。 在设
我对 VHDL(以及一般的数字电路)还很陌生,我正在尝试使用 BCD 样式 block 实现两位数的计数器。该电路的外部有一些按钮,按下这些按钮时,会将感兴趣的数字加一(很像闹钟)。这是一个异步操作,
我是一名优秀的程序员,十分优秀!