VerilogHDL数字设计与综合(第二版)第五章课后习题答案.docx

上传人:PIYPING 文档编号:14864747 上传时间:2022-02-22 格式:DOCX 页数:8 大小:101.62KB
返回 下载 相关 举报
VerilogHDL数字设计与综合(第二版)第五章课后习题答案.docx_第1页
第1页 / 共8页
VerilogHDL数字设计与综合(第二版)第五章课后习题答案.docx_第2页
第2页 / 共8页
VerilogHDL数字设计与综合(第二版)第五章课后习题答案.docx_第3页
第3页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《VerilogHDL数字设计与综合(第二版)第五章课后习题答案.docx》由会员分享,可在线阅读,更多相关《VerilogHDL数字设计与综合(第二版)第五章课后习题答案.docx(8页珍藏版)》请在三一文库上搜索。

1、1. 利用双输入端的nand 门,用 Verilog 编写自己的双输入端的与门、或门和非门,把它们分别命名为 my_or , my_and 和 my_not ,并通过激励模块验证这些门的功能。答: timescale 1ns/1ns/* my_and */ module my_and(in1,in2,out); input in1,in2;output out; wire out1;nand a1(out,out1,out1); nand a2(out1,in1,in2);endmodule/* my_or */ module my_or(in1,in2,out); input in1,in2

2、;output out; wire out1,out2;nand o1(out,out1,out2); nand o2(out1,in1,in1); nand o3(out2,in2,in2);endmodule/* my_not */module my_not(in,out); input in;output out;nand n1(out,in,in);endmodule/* test */module test; reg a,b;wire and_c,or_c,not_c;initial begina=0;b=0;#10 a=0;b=1;#10 a=1;b=0;#10 a=1;b=1;#

3、10 $stop; endmy_and myand1(a,b,and_c); my_or myor1(a,b,or_c); my_not mynot1(a,not_c);endmodule2. 使用上题中完成的my_or ,my_and 和 my_not 门构造一个双输入端的xor 门,其功能是计算z第 5 章门 级 建 模41= xy + x y,其中 x 和 y 为输入, z 为输出;编写激励模块对x 和 y 的四种输入组合进行测试仿真。答: 在上题代码的基础上,添加如下代码:(注意, xor 在仿真器中已自备,这里用my_xor )/* my_xor * z=xy+xy */ modul

4、e my_xor(in1,in2,out); input in1,in2;output out;wire not_in1,not_in2,out_a1,out_a2;my_not mynot1(in1,not_in1); my_not mynot2(in2,not_in2);my_and myand1(in1,not_in2,out_a1);my_and myand2(in2,not_in1,out_a2); my_ormyor1(out_a1,out_a2,out);endmodulemodule test52; reg x,y;wire z;initial beginx=0;y=0;#10

5、x=0;y=1;#10x=1;y=0;#10x=1;y=1;#10$stop; endmy_xor myxor(x,y,z);endmodule42Verilog HDL数字设计与综合(第二版)3. 本章中的一位全加器使用乘积项之和的形式可以表示为: sum = abc_in + a bc_in+ a bc_in + ab c_in c_out = ab + bc_in + ac_in其中 a, b 和 c_in 为输入, sum 和 c_out 为输出;只使用与门、或门、非门实现一个一位全加器,写出其 Verilog 描述,限制是每个门最多只能有四个输入端。编写激励模块对其功能进行检查,并对

6、全部的输入组合进行测试。答: 在前面的课程中已经学习过一位全加器的相关知识,一位全加器的电路如下所示:按此电路图,采用门级描述代码如下:timescale 1ns/1nsmodule full_add(a,b,c_in,sum,c_out); input a,b,c_in;output sum,c_out;wire s1,s2,s3,s4,s5,s6,s7;nand (s1,a,b);nand (s2,a,s1);nand (s3,b,s1);nand (s4,s2,s3); nand (s5,s4,c_in); nand (s6,s4,s5); nand (s7,s5,c_in); nand

7、 (sum,s6,s7); nand (c_out,s5,s1);endmodulemodule test53; reg a,b,c_in; wire sum,c_out; 上面两个习题中原书作者用“”表示取反操作,用“”表示与操作。 译者注第 5 章门 级 建 模43initial begina=0;b=0;c_in=0;#10a=0;b=0;c_in=1;#10a=0;b=1;c_in=0;#10a=0;b=1;c_in=1;#10a=1;b=0;c_in=0;#10a=1;b=0;c_in=1;#10a=1;b=1;c_in=0;#10a=1;b=1;c_in=1;#10 $stop;

8、endinitial$monitor($time,a=%b,b=%b,c_in=%b,sum= %b,c_out= %b,a,b,c_in,sum,c_out);full_add fadd(a,b,c_in,sum,c_out);endmodule输出的数据和波形:#0a= 0,b= 0,c_in= 0,sum= 0,c_out= 0#10a= 0,b= 0,c_in= 1,sum= 1,c_out= 0#20a= 0,b= 1,c_in= 0,sum= 1,c_out= 0#30a= 0,b= 1,c_in= 1,sum= 0,c_out= 1#40a= 1,b= 0,c_in= 0,sum

9、= 1,c_out= 0#50a= 1,b= 0,c_in= 1,sum= 0,c_out= 1#60a= 1,b= 1,c_in= 0,sum= 0,c_out= 1#70a= 1,b= 1,c_in= 1,sum= 1,c_out= 14. 带有延迟的RS 锁存器如下图所示,写出其带有延迟的Verilog 门级描述。编写其激励模块, 根据下面的输入- 输出关系表对其功能进行验证。reset#1qset#1qbar(reset)set 0011reset 0101qn+1 qn 01?41第 5 章门 级 建 模答:代码如下timescale 1ns/1nsmodule my_rs(rese

10、t,set,q,qbar); input reset,set;output q,qbar;nor #(1) nand1(q,reset,qbar);nor #(1) nand2(qbar,set,q);endmodulemodule test54; reg set,reset; wire q,qbar;initial beginset=0;reset=1; #10 set=0;reset=0;第 5 章门 级 建 模41#10 set=1;reset=0;#10 set=1;reset=1; endmy_rs rs1(reset,set,q,qbar);initial$monitor($tim

11、e,set= %b,reset= %b,q= %b,qbar= %b,set,reset,q,qbar);endmodule测试输出文件#0set= 0,reset= 1,q= x,qbar= x#1set= 0,reset= 1,q= 0,qbar= x#2set= 0,reset= 1,q= 0,qbar= 1#10set= 0,reset= 0,q= 0,qbar= 1#20set= 1,reset= 0,q= 0,qbar= 1#21set= 1,reset= 0,q= 0,qbar= 0#22set= 1,reset= 0,q= 1,qbar= 0#30set= 1,reset= 1

12、,q= 1,qbar= 0#31set= 1,reset= 1,q= 0,qbar= 05. 使用 bufif0 和 bufif1 设计一个二选一多路选择器,如下图所示:bufif1in1b2soutin0b1bufif0门 b1 和 b2 的延迟说明如下所示:最 小 值典 型 值最 大 值上升延迟下降延迟123345关断延迟56741第 5 章门 级 建 模在设计完成后,写出激励模块对其进行仿真。答:代码如下timescale 1ns/1nsmodule mux21(out,in0,in1,s); input in0,in1;input s; output out;bufif0 #(1:2:

13、3,3:4:5,5:6:7) b1(out,in0,s);bufif1 #(1:2:3,3:4:5,5:6:7) b2(out,in1,s);endmodulemodule test55; reg in0,in1; reg s;wire out;initial beginin0=0;in1=1;s=1;#100in0=0;in1=1;s=0;#100in0=1;in1=0;s=1;#100in0=1;in1=0;s=0;#100$stop; endmux21 my_mux(out,in0,in1,s);initial$monitor($time,in0= %b,in1= %b,s= %b,ou

14、t= %b,in0,in1,s,out);endmodule输出波形和数据# # # # # # # #0in0= 0,in1= 1,s= 1,out= x 6in0= 0,in1= 1,s= 1,out= 1 100in0= 0,in1= 1,s= 0,out= 1 104in0= 0,in1= 1,s= 0,out= x 106in0= 0,in1= 1,s= 0,out= 0 200in0= 1,in1= 0,s= 1,out= 0 300in0= 1,in1= 0,s= 0,out= 0 302in0= 1,in1= 0,s= 0,out= x306in0= 1,in1= 0,s= 0,out= 1Verilog HDL数字设计与综合(第二版)42

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1