当前位置:网站首页>门级建模—课后习题
门级建模—课后习题
2022-07-01 23:21:00 【江南小作坊】
习题
利用双输入端的nand门,用Verilog编写自己的与或非门,并用激励模块验证这些门的功能。
与门,verilog实现,用三个与非门
module my_add( output out, input a, input b ); wire w1,w2; nand na1(w1,a,b); nand na2(w2,a,b); nand na3(out,w1,w2); endmoduleRTL视图

仿真实现

仿真结果满足与门逻辑。

与门(第二种方式),Verilog实现,两个与非门
module my_and( output out, input a, input b ); wire w1; nand na1(w1,a,b); nand na2(out,w1,w1); endmoduleRTL视图

仿真结果

或门,verilog实现
//构建或门 module my_or( output out, input a, input b ); //输入短接 wire w1,w2; nand (w1,a,a); nand (w2,b,b); nand (out,w1,w2); endmodule仿真验证

非门,就很简单啦,把与非门输入短接就行啦,就不一一验证了。本来不想写my_not的,结果第二题要用到,贴上其代码。

利用上题所定义的my_and,my_or,my_not,来构建一个异或门(xor),功能计算 z = x ˉ y + x y ˉ z=\bar{x}y+x\bar{y} z=xˉy+xyˉ,编写仿真信号对其测试。
verilog实现
//综合my_and,my_or,my_not module my_xor( output out, input a, input b ); //声明内部线网 wire w1,w2,w3,w4; my_not my_not_1(w1,a); my_not my_not_2(w2,b); my_and my_and_1(w3,w1,b); my_and my_and_2(w4,w2,a); my_or my_or_1(out,w3,w4); endmoduleRTL视图

仿真设计
// 仿真定义 module my_xor_tb(); reg x,y; wire z; my_xor my_xor_inst(z,x,y); initial begin x=1'b0; y=1'b1; #10 x=1'b0; y=1'b0; #1 $display("x=%b,y=%b,z=%b\n",x,y,z); #10 x=1'b0; y=1'b1; #1 $display("x=%b,y=%b,z=%b\n",x,y,z); #10 x=1'b1; y=1'b0; #1 $display("x=%b,y=%b,z=%b\n",x,y,z); #10 x=1'b1; y=1'b1; #1 $display("x=%b,y=%b,z=%b\n",x,y,z); end endmodule仿真结果,满足异或门逻辑

懒得打字拉,题目如下

Verilog实现
module my_fulladder( output sum, output c_out, input a, input b, input c_in ); wire a_1, b_1, c_in_1; wire s1, s2, s3, s4; wire c1, c2, c3; // 先实现等式中的非门,且用上面定义的线网连接 not (a_1, a); not (b_1, b); not (c_in_1, c_in); // 实现等式中的sum and (s1,a,b,c_in); and (s2,a_1,b,c_in_1); and (s3,a_1,b_1,c_in); and (s4,a,b_1,c_in_1); or (sum,s1,s2,s3,s4); // 实现等式中的c_out and (c1,a,b); and (c2,b,c_in); and (c3,a,c_in); or (c_out,c1,c2,c3); endmoduleRTL视图

仿真实现
module my_fulladder_tb(); reg A,B,C_IN; wire C_OUT,SUM; my_fulladder my_fulladder_inst(SUM, C_OUT, A, B, C_IN); initial begin A = 1'b0; B = 1'b0; C_IN = 1'b0; #10 A = 1'b0; B = 1'b0; C_IN = 1'b1; #1 $display("A=%b,B=%b,C_IN=%b,SUM=%b,C_OUT=%b\n", A, B, C_IN, SUM, C_OUT); #10 A = 1'b0; B = 1'b1; C_IN = 1'b0; #1 $display("A=%b,B=%b,C_IN=%b,SUM=%b,C_OUT=%b\n", A, B, C_IN, SUM, C_OUT); #10 A = 1'b0; B = 1'b1; C_IN = 1'b1; #1 $display("A=%b,B=%b,C_IN=%b,SUM=%b,C_OUT=%b\n", A, B, C_IN, SUM, C_OUT); #10 A = 1'b1; B = 1'b0; C_IN = 1'b0; #1 $display("A=%b,B=%b,C_IN=%b,SUM=%b,C_OUT=%b\n", A, B, C_IN, SUM, C_OUT); #10 A = 1'b1; B = 1'b0; C_IN = 1'b1; #1 $display("A=%b,B=%b,C_IN=%b,SUM=%b,C_OUT=%b\n", A, B, C_IN, SUM, C_OUT); #10 A = 1'b1; B = 1'b1; C_IN = 1'b0; #1 $display("A=%b,B=%b,C_IN=%b,SUM=%b,C_OUT=%b\n", A, B, C_IN, SUM, C_OUT); #10 A = 1'b1; B = 1'b1; C_IN = 1'b1; #1 $display("A=%b,B=%b,C_IN=%b,SUM=%b,C_OUT=%b\n", A, B, C_IN, SUM, C_OUT); #10 A = 1'b0; B = 1'b0; C_IN = 1'b0; #1 $display("A=%b,B=%b,C_IN=%b,SUM=%b,C_OUT=%b\n", A, B, C_IN, SUM, C_OUT); end endmodule仿真结果,满足设计要求

直接上图

verilog实现
module my_rs_latch( output q, output qbar, input set, input reset ); nor #(1) (q,reset,qbar); nor #(1) (qbar,q,set); endmodule仿真
module my_rs_latch_tb(); reg SET,RESET; wire Q,QBAR; my_rs_latch my_rs_latch_inst(Q,QBAR,SET,RESET); initial begin SET=1'b0; RESET = 1'b0; #10 SET=1'b0; RESET = 1'b1; #10 SET=1'b1; RESET = 1'b0; #10 SET=1'b1; RESET = 1'b1; end endmodule仿真结果,经过两个时间单位(2 ps),q发生改变

上图


此多路选择器,当s为1的时候,输出in1;s为0的时候,输出in2。
verilog实现
module my_mux2_to_1( output out, input in1,in2, input s ); bufif1 #(1:3:5,2:4:6,3:5:7) buf1(out,in1,s); bufif0 #(1:3:5,2:4:6,3:5:7) buf0(out,in2,s); endmodule仿真结果
- 当s为0时,输出in2,当in2为1时,延时了3个时间单位后,in2为1

- 当s为0时,输出in2,当in2为0时,延时了4个时间单位后,in2为0

- 当s为1时,同理。
- 当s为0时,输出in2,当in2为1时,延时了3个时间单位后,in2为1
边栏推荐
- PostgreSQL source code (58) tuple splicing heap_ form_ Tuple analysis
- 硅谷产品实战学习感触
- Know --matplotlib
- 每日三题 6.28
- Why is PHP called hypertext preprocessor
- What professional classification does the application of Internet of things technology belong to
- Postgresql源码(57)HOT更新为什么性能差距那么大?
- [micro service sentinel] sentinel integrates openfeign
- 物联网技术应用属于什么专业分类
- STM32F030F4驱动TIM1637数码管芯片
猜你喜欢

PostgreSQL source code (57) why is the performance gap so large in hot update?

flutter Unable to load asset: assets/images/888. png

from pip._ internal. cli. main import main ModuleNotFoundError: No module named ‘pip‘

Is there a piece of code that makes you convinced by human wisdom

【微服务|Sentinel】sentinel整合openfeign

物联网技术应用属于什么专业分类

Three development trends of enterprise application from the perspective of the third technological revolution

从第三次技术革命看企业应用三大开发趋势

Notblank and notempty

2022 examination questions and online simulation examination for safety management personnel of hazardous chemical business units
随机推荐
软件架构的本质
Notes on problems - /usr/bin/perl is needed by mysql-server-5.1.73-1 glibc23.x86_ sixty-four
SWT/ANR问题--SWT 导致 kernel fuse deadlock
Glass mosaic
Postgresql随手记(10)动态执行EXECUTING语法解析过程
Zhongang Mining: it has inherent advantages to develop the characteristic chemical industry dominated by fluorine chemical industry
VIM color the catalogue
2022年起重机司机(限桥式起重机)考试试题及模拟考试
notBlank 和 notEmpty
Yoga27 multidimensional all-in-one computer with excellent appearance and high-end configuration
plain framework的实际应用和扩展
云信小课堂 | IM及音视频中常见的认知误区
Material Design组件 - 使用BottomSheet展现扩展内容(一)
Redis master-slave synchronization
Istio, ebpf and rsocket Broker: in depth study of service grid
What is the difference between memory leak and memory overflow?
De PIP. Interne. CLI. Main Import main modulenotfounderror: No module named 'PIP'
2021 RoboCom 世界机器人开发者大赛-本科组初赛
【必会】BM41 输出二叉树的右视图【中等+】
CADD课程学习(3)-- 靶点药物相互作用