当前位置:网站首页>第十一章 开关级建模
第十一章 开关级建模
2022-08-05 00:46:00 【江南小作坊】
基本概念
- 在少数情况下,可能会选择用晶体管作为设计的底层模块,即叶级模块(leaf-level)。Verilog语言具有对MOS晶体管级进行设计的能力。
- 由于电路复杂性的增加,及各种更加先进的CAD工具,开关级为基础的设计慢慢少了。
- Verilog HDL仅提供用逻辑值0,1,x,z和它们相关的驱动强度进行数字设计的能力(MOS管用于开关应用),无法用于模拟设计。
- 学习流程图

建模元件
- 最基本的电路模型元件
MOS开关
- 关键字:
nmos,pmos - nmos与pmos开关符号

- 调用实例
// 调用nmos和pmos开关
nmos n1(out, data, control);
pmos p1(out, data, control);
// 调用nmos和pmos开关,可以无实例名称
nmos (out, data, control);
pmos (out, data, control);
- 上例中,out的值由data和control控制,逻辑值如下

CMOS开关
- 关键字:
cmos - cmos开关符号

- 实例引用
// 有实例名调用和无实例名调用
cmos c1(out, data, ncontrol, pcontrol);
cmos (out, data, ncontrol, pcontrol);
- 可以使用nmos和pmos器件来建立cmos器件的模型
nmos (out, data, ncontrol);
pmos (out, data, pcontrol);
- 逻辑值可以由pmos和nmos的逻辑值推导而来,这里不再赘述。
双向开关
- 关键字:
tran,tranif0,tranif1 - 开关符号

- 引用实例
tran t1(inout1, inout2);
tranf0 (inout1, inout2, control);
tranf1 (inout1, inout2, control);
- 逻辑如下:
- tran开关作为两个信号inout1和inout2之间的缓存。inout1和inout2都可以是驱动信号。
- control为0,tranf0 开关连接inout1和inout2。
- control为1,tranf0没有驱动源的信号取高阻态z,有驱动源信号仍从驱动源取值。
- control为0,tranf1 开关导通。
- 双向开关经常用来在总线或信号之间提供隔离。
电源和地
- 源极(Vdd,逻辑1),漏极(Vss,逻辑0)。关键字:
supply1,supply0 supply1等于电路中Vdd,并将逻辑1放在网表中。supply0等于电路中Vss或地,并将逻辑0放在网表中。- 使用如下
supply1 vdd;
supply0 gnd;
assign a = vdd; //a连接到电源电压vdd
assign b = gnd; // b连接到gnd
阻抗开关
- 阻抗开关具有更高的源极到漏极的阻抗,用以减小信号强度。
- 在一般开关关键字前加带
r前缀,即可声明阻抗开关。
rnmos rpmos //阻抗性nmos和pmos
rcmos // 阻抗性CMOS开关
rtran rtranf0 rtranf1 // 阻抗性双向开关
- 阻抗开关的强度如下

延迟说明
- 可以为通过开关级元件的信号指定延迟,延迟是可选项,紧跟在开关的关键字之后。
- MOS和CMOS开关延迟说明

- 双向传输开关

- specify块的延迟完全可以用于该模型的建模。
举例说明
CMOS或非门(nor)
- 电路图

- Verilog代码
module my_nor(
output out,
input a,b
);
// 定义内部连线
wire c;
// 定义地和电源线
supply0 gnd;
supply1 pwr;
// 引用PMOS
pmos (c, pwr, b);
pmos (out, c, a);
// 引用nmos
nmos (out, gnd, a);
nmos (out, gnd, b);
endmodule
- 可惜我的quartus并不能综合MOS开关门,运行报错如下:
Error (10014): Verilog HDL unsupported feature error at file "my_nor.v" (line 14): cannot synthesize MOS switch gate primitive - 可见这么使用,确实是很少用,做了解即可。
- 仿真代码如图:

二选一多路选择器
用cmos开关来定义二选一多路选择器
电路图

Verilog描述如下

CMOS锁存器
- 定义一个可以存储值的存储元件,电路图如下

- 逻辑:clk=1,则C1开关关闭;clk=0,则C2开关关闭,clk的相反值送给C2的ncontrol输入端。
- 用MOS开关定义CMOS反相器

- 反相器Verilog描述

- CMOS锁存器描述

边栏推荐
- Software Testing Interview Questions: What is Software Testing?The purpose and principle of software testing?
- 阶段性测试完成后,你进行缺陷分析了么?
- 2022牛客多校第三场 J题 Journey
- 2022牛客多校第三场 A Ancestor
- tiup telemetry
- JVM类加载简介
- 2022多校第二场 K题 Link with Bracket Sequence I
- Raw and scan of gorm
- QSunSync Qiniu cloud file synchronization tool, batch upload
- ORA-00604 ORA-02429
猜你喜欢

OPENWIFI实践1:下载并编译SDRPi的HDL源码

LiveVideoStackCon 2022 Shanghai Station opens tomorrow!

Inter-process communication and inter-thread communication

JVM类加载简介
![[idea] idea configures sql formatting](/img/89/98cd23aff3e2f15ecb489f8b3c50e9.png)
[idea] idea configures sql formatting

4. PCIe 接口时序

ora-01105 ora-03175

执掌图表

After the staged testing is complete, have you performed defect analysis?

软件基础的理论
随机推荐
MBps与Mbps区别
深度学习训练前快速批量修改数据集中的图片名
【FreeRTOS】FreeRTOS与stm32内置堆栈的占用情况
PCIe 核配置
配置类总结
ORA-00257
tiup status
Software testing interview questions: What are the three modules of LoadRunner?
Software Testing Interview Questions: What do test cases usually include?
Getting Started with Kubernetes Networking
Software testing interview questions: What are the seven-layer network protocols?
2022 The Third J Question Journey
3. pcie.v 文件
2022杭电多校第三场 K题 Taxi
could not build server_names_hash, you should increase server_names_hash_bucket_size: 32
阶段性测试完成后,你进行缺陷分析了么?
More than 2022 cattle school training topic Link with the second L Level Editor I
MongoDB搭建及基础操作
软件测试面试题:BIOS, Fat, IDE, Sata, SCSI, Ntfs windows NT?
tiup status