使用std_logic
或std_ulogic
代替boolean
的原因是什么?
std_logic
可以包含除'1'
和'0'
之外的其他值,但在FPGA中,所有内容都会解析为'1'
或'0'
。这不会使模拟更不现实吗?
答案 0 :(得分:5)
std_logic
类型可以采用以下值:
• 'U': uninitialized. This signal hasn't been set yet.
• 'X': unknown. Impossible to determine this value/result.
• '0': logic 0
• '1': logic 1
• 'Z': High Impedance
• 'W': Weak signal, can't tell if it should be 0 or 1.
• 'L': Weak signal that should probably go to 0
• 'H': Weak signal that should probably go to 1
• '-': Don't care.
远远超过bool
,它不会告诉你信号太弱或者它可能是什么"应该。所以回答你的问题的原因是,在使用信号输入时,你希望得到更多的信息,而不仅仅是' 0' 0或者' 1'应该不按设计进行。
答案 1 :(得分:0)
如果你想做得很好,你只能在FPGA引脚上使用std_logic。你说得对,一旦FPGA中的信号,它们都被分解为0或1或者1。我已经看到它在某些FPGA设计上完成了。只有顶级实体具有std_logic
类型。每个其他较低级别的组件都使用bit
和bit_vector
类型。它使您的代码尽可能真实。但是,当尝试使用其他任何人的模块时,它确实会引起一些麻烦,因为很少有人不使用std_logic
作为其接口。
正如另一个人已经说过的那样,std_logic
可以解析为' X' H' H' Z'等等,但这些是只在FPGA接口上见过。