我们知道 Verilog 语言可以从四个不同的抽象层次来描述硬件电路,这里 我们将讨论如何在低级抽象层次(即门级)上进行设计,当前的数字电路设计会绝大多数都是建立在门级或更高的抽象层次上的 在门级抽象层次上.电路是用表示门的术语来描述的, 如用 and (与门)、nand( 与非门)等来描述,这种设计方法对于具有数宇逻辑设计基础知识的用户来说是很直观的, 在 Verilog 描述和电路的逻辑图之间存在着一一对应的关系。
类型
调用这些门级原语和调用自己定义的模块相同。就是按照数电的知识用这些原语来代替门电路。我们在调用的时候可以不指定具体实例的名称。
实例调用
缓冲器和非门
与 and/or 门相反令buf/not 门具有一 个标抵输入和多个标量输出。端口列表中的最后一个终
连接至输入端口.其他终端连接至输出端口。在这里.我们只讨论具有一个输入和一个输出
buf/not 门 , 对于具有多个输出端的 buf/not 门 , 所有输出端的值都是相同的。原语为buf、not,他们的特点就是智能有一个输入口,可以有多个输出口。放在实例端口列表的最后一个。
特殊的带控制端:
应用:在控制信号有效的情况下,这些门才能传递信号 在某些情况下令例如当一个信号由多个驱动源驱动时.我们可以这样来设计驱动源:让它们的控制信号的有效时间互相错开,从而避免一 条信号线同时被两个源驱动这时就需要使用这些带有控制端的缓冲器/非门来搭建电路。
实例数组
在许多情况下,我们需要对某种类型的门进行多次调用(实例引用),这些门实例之间的区别仅仅在于它们分别连接在不同的向呈信号位上。举例:
相当于
PS :一定记住输入都在后面。对应好类型是线网还是寄存器。尤其是在testbench中。
门延迟
迄今为止.我们所描述的电路都是无延迟的(即零延迟)勺然而,在实际的电路中,任何一 个逻辑门都具有延迟。Verilog 允许用户通过门延迟来说 逻辑电路中的延迟 ; 此外用 户还可以指定端到端的延迟。
- 上升延迟:0、x、z变化为1的时间
- 下降延迟:1、x、z变化为0的时间
- 关断延迟:变为z的时间
另外,如果值变化到不确定值x ,则所需的时间可以看成是以上三种延迟值中最小的那个
在 Verilog 中气用 户可以使用二种不同的方法来说明门的延迟 m 如果用户只指定了一个延迟值 ,那么对所有类剧的延迟都使用这个延迟值;如果用户指定了两个延迟值,则它们分别代表上升延 迟和下降廷迟,两者中的小者为关断延迟;如果用户指定了三个延迟值,则它们分别代表上升延迟、下降延迟和关断延迟。如果未指定延迟值,那么默认延迟值为 0。下面给出了延迟值说明的例子
在 Veri l og 中,用 户除可以指定上面所述的三种类型的延迟以外,对每种类型的延迟还可以
定其最小值 , 最大值和典型值。 用户可以在仿真一开始时就决定具体选择使用哪一种延迟值( 最小值/最大值I典型值},在建立器件 行为模型时要用到延迟的最小值/最大值/典型值。
• 最小值设计者预期逻辑门所具有的最小廷迟。
• 典型值设计者预期逻辑门所具有的典型延迟。
• 最大值设计者预期逻辑门所具有的最大延迟。
而我们使用的是modelsim。