文档详情

Verilog HDL项目式教程 课件 项目3--5 结构化建模;行为建模;状态机建模.pptx

发布:2025-04-24约4.38万字共10页下载文档
文本预览下载声明

项目3结构化建模

任务3.1门级原语

任务3.2层次建模

项目3结构化建模

任务3.1门级原语

任务3.1门级原语

项目3结构化建模

项目3结构化建模

简单的逻辑电路可以使用逻辑门来设计实现。

基本的逻辑门分为两类:与/或门类、缓冲/非门类。

(1)与/或门类。

与/或门类包括与门(and)、或门(or)、与非门(nand)、或非门(nor)、异或门(xor)、同或门

(xnor)。与/或门类都具有一个标量输出端和多个标量输入端,门的端口列表中的第一个端口必定

是输出端口,其他均为输入端口。当任意一个输入端口的值发生变化时,输出端口的值立即重新计算。

例如:

wireOUT,IN1,IN2,IN3;

andand2(OUT,IN1,IN2);//基本门的实例引用

nandnand3(OUT,IN1,IN2,IN3);/输入端超过两个,三输入与非门

and(OUT,IN1,IN2,IN3);//合法的门实例引用,不给实例命名

项目3结构化建模

(2)缓冲/非门类。

缓冲/非门类包括缓冲器(buf)、非门(not)、带控制端的缓冲器/非门(bufif1、bufif0、notif1、notifO)。缓

冲/非门类具有一个标量输入端和多个标量输出端,门的端口列表中的最后一个端口必定是输入端口,其他均为输出端口。

例如:

wireOUT1,OUT2,OUT3,IN,ctrl;

bufb1(OUT1,IN);

notn1(OUT1,IN);

bufb2(OUT1,OUT2,OUT3,IN);

not(OUT1,OUT2,IN);

bufifl(OUT1,IN,ctrl);

notif0(OUT1,IN,ctrl);

//基本门的实例引用

//基本门的实例引用

//输出端超过两个,三输出缓冲门

//合法的门实例引用,不给实例命名//ctrl为1时,OUT1=IN

//ctrl为01时,OUT1=~IN

项目3结构化建模

【例3-1】利用双输入端的nand门,编写自己的双输

入端的与门(my_and)、或门(my_or)、非门(my_not)、异或门(my_xor)。

上述电路设计涉及的知识点有门级原语例化和多输出

处理。

下面对这些知识点进行说明。

modulemy_gate(a,b,y);

inputa,b;

output[3:0]y;

//与门用两个nand门实现wirenandab;

nand(nandab,a,b),

(y[0].nandabnandab);//或门用三个nand门实现wirenandaa,nandbb;

nand(nandaa,a,a),

(nandbb,b,b),

(y[1].nandaa,nandbb);/非门用一个nand门实现nand(y[2],a,a);

1异或门用四个nand门实现wireandab,c,d;

nand(andab,a,b),

(c,andab,a),

(d,andab,b),

(y[3],c,d);

endmodule

项目3结构化建模

(1)门级原语例化。

在门级原语实例引用的时候,可以不指定具体的实例名,这一点给需要实例引用几百个甚至更多

门的模块提供了方便。但对于初学者,建议在调用门级原语时给出实例名。在以上示例中,调用门级原语时均没有给出实例名。

在实际应用中,与非门和或非门更为普遍,这是因为由这两种门生成其他逻辑门容易实现。本例

给出了使用与非门来设计其他基本逻辑门的方法。

(2)多输出处理。

例3-1中有4个输出y[0]~y[3],分别对应着与门、或门、非门、异或门。这4个输出均是独立的,

在代码中分别进行了单独处理。在实践中,建议针对每个输出单独进行分析设计,这样做对于正确地实现电路逻辑是非常有效的。

例3-1的测试代码如例3-2所示。

图3-1门电路仿真波形

根据图3-1可以看出,y对应的四路输出均实现了相应门电路的功能,设计正确。

逻辑门是最基本的电路单元,任何复杂的数字逻辑电路均可由逻辑门实现。但复杂电路的设计如果从逻辑门开始搭建,显然是不现实的,这时必须采用其他建模方式,层次建模就是一种有效的方法。

项目3结构化建模

【例3-2】门电路测试代码。

modulemy_gate_tb;

regaa

wire[3:0]yx

my_gateU

显示全部
相似文档