赞
踩
1 值的种类
四值电平逻辑
值的级别 | 硬件电路中的条件 |
0 | 逻辑0,条件为假 |
1 | 逻辑1,条件为真 |
X | 逻辑值不确定 |
Z | 高阻,浮动状态 |
除了逻辑值外,Verilog还是用强度值来解决数字电路中不同强度的驱动源之间的赋值冲突。
强度等级 | 类型 | 程度 |
Supply | 驱动 | 最强 |
Strong | 驱动 |
|
Pull | 驱动 |
|
Large | 存储 |
|
Weak | 驱动 |
|
Medium | 存储 |
|
Small | 存储 |
|
Highz | 高阻 | 最弱 |
如果两个具有不同强度的信号驱动同一个线网,则竞争结果值为高强度信号的值。
如果两个强度相同的信号之间发生竞争,则结果为不确定值。
2 线网
线网(net)表示硬件单元之间的连接。线网一般使用关键字wire进行声明。如果没有显式的说明为向量,则默认线网的位宽为1。线网的默认值为Z,(trireg类型线网例外,其默认值为X)。其值由驱动源确定,如果没有驱动源则线网的值为Z
Net并不是一个关键字,它代表了一组数据类型,包括wire,wand,wor,tri,triand,trior以及trireg等。
3 寄存器
寄存器用来表示存储元件,它保持原有的数值,直到被改写。注意:不要将这里的寄存器和实际电路中由边沿触发器构成的硬件寄存器混淆。在Verilog中,术语register仅意味着一个保持数值的变量。与线网不同,寄存器不需要驱动源,而且也不像硬件寄存器那样需要时钟信号。在仿真过程中的任意时刻,寄存器的值都可以通过赋值来改变。
寄存器的数据类型通过关键字reg来声明,默认值为X。
4 向量
线网和寄存器类型的数据均可声明为向量(位宽大于1)。如果在声明中没有指定位宽,则默认为标量(1位)
wire a; //标量线网变量,默认
wire [7:0] bus; //8位的总线
reg clock ; //标量寄存器,默认
reg [0:40] virtual_addr; //向量寄存器,41位宽的虚拟地址
向量通过[high#:low#]进行说明,方括号中左边的数总是代表向量的最高有效位。
向量域选择
对于上面例子中声明的向量,我们可以指定它的某一位或者若干个相邻位。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。