Vhdl 为什么不只用布尔值呢

Vhdl 为什么不只用布尔值呢,vhdl,Vhdl,使用std_logic或std_ulogic而不是boolean的原因是什么 std\u逻辑可以具有除'1'和'0'以外的其他值,但在FPGA中,所有值都解析为'1'或'0'。这难道不会使模拟变得更不现实吗?Astd\u逻辑类型可以采用以下值: • 'U': uninitialized. This signal hasn't been set yet. • 'X': unknown. Impossible to determine this value/result. • '0': logi

使用
std_logic
std_ulogic
而不是
boolean
的原因是什么


std\u逻辑
可以具有除
'1'
'0'
以外的其他值,但在FPGA中,所有值都解析为
'1'
'0'
。这难道不会使模拟变得更不现实吗?

A
std\u逻辑类型可以采用以下值:

• '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”或“1”更多,这不符合设计要求


如果你想做得很好,你只能在你的FPGA引脚上使用std_逻辑。您是对的,一旦FPGA中的信号被解析为0或1。我已经在一些FPGA设计上看到了它。只有顶级实体具有
std_逻辑
类型。每个其他较低级别组件使用
位向量
类型。它使您的代码尽可能真实。然而,当试图使用其他人的模块时,它确实会引起一些麻烦,因为很少有人不使用
std_逻辑
作为他们的接口


正如另一个人已经说过的,
std_逻辑
可以解析为“X”、“H”、“Z”等,但这些只能在FPGA接口上看到。

答案不错。你能提供一个指向此信息的URL吗?谢谢你指出我忘记了什么。我添加了对std_logic_1164库防御的参考。还请注意,
std_logic
使模拟更真实,而不是更少。现实世界中的电路可能有三态驱动程序(
'Z'
),上拉(
'H'
),等等。
布尔值(和
位)不允许对这些东西建模。