Verilog 编程:基础 - Verilog 值集和仿真行为
eda吧
全部回复
仅看楼主
level 3
lilizhang167 楼主
Verilog 编程:基础 - Verilog 值集和仿真行为
在Verilog中,我们有四种基本值:0、1、z和x。0代表逻辑零,意味着低电平或假。1代表逻辑一,意味着高电平或真。z代表高阻抗状态,表示信号断开或悬浮。最后,x代表未知的逻辑值。
当仿真开始时,大多数网络初始状态为高阻抗状态。然而,用于电容连接的三态网络将开始于未知值。一旦仿真开始,仿真器将把网络驱动器的值应用到网络上。如果一个网络没有驱动器,它将保持其初始值,这通常是用户错误的指示。
大多数变量初始化为未知值。唯一例外是real类型变量,它们从0值开始,因为它们不能存储高阻抗或未知值。没有被赋值的变量将保持其初始状态,就像网(nets)一样,这通常表示用户错误。
在仿真过程中,如果一个网络上出现高阻抗值,很可能是由于其驱动器已关闭。在实际硬件中,这不会持续太久,因为总线保持器会将网络拉到确定的状态,要么是高电平,要么是低电平。
在一个网络上通常未知的值通常是由于驱动器冲突引起的。如果不同的信号试图用不同的值驱动网络,就会发生这种情况。在硬件中,这种情况通常非常短暂或不存在。
如果在仿真期间变量出现高阻值,可能是因为该值直接分配给了该变量,无论是有意还是通过将高阻网络分配给它。同样,变量上的未知值可能来自模拟器无法解析的复杂表达式,或者来自将具有未知值的网络分配给它的操作。在实际硬件中,这些变量最终会取值为0或1。
https://www.eda-academy.com/sell-verilog-fundamentals
2025年06月16日 08点06分 1
level 7
3
2025年06月17日 16点06分 2
1