在最近的一个问题(Difference in initializing a state machine between a simulator and synthesizer)中,我发现模拟器和合成器并不总是以完全相同的方式处理VHDL代码。例如,当使用枚举类型初始化状态机时,模拟器默认为枚举器的左手值;但是,对于合成器默认的值,它看起来并不那么清晰。
对于VHDL和FPGA来说相对较新,它让我想知道两者之间是否存在其他有用的差异。有谁知道他们会分享的任何这些差异?甚至链接到解释这些差异的其他地方也很有用。
谢谢
答案 0 :(得分:-1)
我来自Verilog,但适用相同的规则。
1 /不要使用任何初始化,使用重置
2 /不要使用敏感度列表。始终使用@(*)或always_comb
我不知道这个的VHDL等价物,但我想有人会很快在评论中指出它; - )
3 /永远不要假设,总是知道将生成什么样的逻辑。如果您不确定,请使用其他语言结构或找出答案
4 /要挑剔,细致,精确,过于有序,最好的描述是:肛门!
顺便说一句,我按照上面提到的帖子,有点惊呆了。老实说:我不喜欢VHDL,原因很多,并且认为它的一个优点就是错误,因为类型错误而且不可能。矢量长度检查。显然不是,所以使用VHDL的唯一剩余原因就是我的窗口。