为什么不只使用布尔值

时间:2014-03-20 08:35:42

标签: vhdl

使用std_logicstd_ulogic代替boolean的原因是什么?

std_logic可以包含除'1''0'之外的其他值,但在FPGA中,所有内容都会解析为'1''0'。这不会使模拟更不现实吗?

2 个答案:

答案 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'应该不按设计进行。

Reference to the std_logic_1164

答案 1 :(得分:0)

如果你想做得很好,你只能在FPGA引脚上使用std_logic。你说得对,一旦FPGA中的信号,它们都被分解为0或1或者1。我已经看到它在某些FPGA设计上完成了。只有顶级实体具有std_logic类型。每个其他较低级别的组件都使用bitbit_vector类型。它使您的代码尽可能真实。但是,当尝试使用其他任何人的模块时,它确实会引起一些麻烦,因为很少有人不使用std_logic作为其接口。

正如另一个人已经说过的那样,std_logic可以解析为' X' H' H' Z'等等,但这些是只在FPGA接口上见过。