Verilog-HDL-数字设计与综合[夏宇闻]课后习题答案-(2-10章)

上传人:101****457 文档编号:61954843 上传时间:2018-12-15 格式:PDF 页数:43 大小:2.15MB
返回 下载 相关 举报
Verilog-HDL-数字设计与综合[夏宇闻]课后习题答案-(2-10章)_第1页
第1页 / 共43页
Verilog-HDL-数字设计与综合[夏宇闻]课后习题答案-(2-10章)_第2页
第2页 / 共43页
Verilog-HDL-数字设计与综合[夏宇闻]课后习题答案-(2-10章)_第3页
第3页 / 共43页
Verilog-HDL-数字设计与综合[夏宇闻]课后习题答案-(2-10章)_第4页
第4页 / 共43页
Verilog-HDL-数字设计与综合[夏宇闻]课后习题答案-(2-10章)_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《Verilog-HDL-数字设计与综合[夏宇闻]课后习题答案-(2-10章)》由会员分享,可在线阅读,更多相关《Verilog-HDL-数字设计与综合[夏宇闻]课后习题答案-(2-10章)(43页珍藏版)》请在金锄头文库上搜索。

1、1互连开关(互连开关(IS)由以下元件组成:一个共享存储器()由以下元件组成:一个共享存储器(MEM) ,一个系统控制器(,一个系统控制器(SC)和一个)和一个 数据交换开关(数据交换开关(Xbar) 。 a使用关键字module和endmodule定义模块 MEM,SC 和 Xbar。不需要定义模块的内容, 并且假设模块没有端口列表。 b使用关键字module和endmodule定义模块 IS。在 IS 中调用(实例引用)MEM,SC 和 Xbar 模块,并把它们分别命名为 mem1,sc1 和 xbar1。不需要定义模块的内容,并且假设 模块没有端口列表。 c使用关键字module和end

2、module定义激励块(Top) 。在 Top 模块中调用 IS 模块,将其 命名(或称实例化、具体化)为 is1。 答:答:module MEM; endmodule module SC; endmodule module Xbar; endmodule module IS; MEM mem1; SC sc1; Xbar xbar1; endmodule module TOP; IS is1; endmodule 2一个四位脉动进位加法器由一个四位脉动进位加法器由 4 个一位全加器组成。个一位全加器组成。 a定义模块 FA。不需要定义模块内容和端口列表。 b定义模块 Ripple_Add,不

3、需要定义模块内容和端口列表。在模块中调用 4 个 FA 类型的全 加器,把它们分别命名为 fa0,fa1,fa2 和 fa3。 答:答:module FA; endmodule module Ripple_Add; FAfa0; FAfa1; FAfa2; 第 5 章 门 级 建 模41 FAfa3; Endmodule 1试写出以下数字试写出以下数字: a将十进制数 123 用 8 位二进制数表示出来,使用“_”增加可读性; b未知的 16 位十六进制数,各位均为 x; c将十进制数2 使用 4 位二进制数表示出来,并写出结果的 2 的补码形式; d一个无位宽说明的十六进制数 1234。 答

4、答:a.8b0111_1011 b.16hx c.-4b0010,补码 4b1110 d.h1234 2下面的各个字符串是否合法?如果非法,请写出正确答案。下面的各个字符串是否合法?如果非法,请写出正确答案。 a“This is a string displaying the % sign” b“out =in1 +in2 ” c“Please ring a bell 007” d“This is a backslash charactern” 答答: a是错误的,应改为“This is a string displaying the % %sign”,编译后输出: # This is a s

5、tring displaying the % sign (注意,输出结果前#符号是仿真器输出每行前自带的标志符,在本习题解答中不予去除,下同) b# out =in1 +in2 c# Please ring a bell d# This is a backslash character # 应改为双斜线,如“This is a backslash charactern” (主要考察的是特殊字符的输出, 比如 a 中的输出%需要%操作。 C 中的007 在编译器中输出为 空,复制到 word 中输出是一个 ,有兴趣的同学可以自己试验一下,比如006 输出是 ,004 输出是 ,等等。d 中的ch

6、aracter 在 转义操作符后跟的单词无语法意义,故在输出 character,而n 表示换行,仿真后的输出也是如此 显示的。 ) 3下面的各个标识符是否合法?下面的各个标识符是否合法? asystem1 b1reg c$latch dexec$ Verilog HDL 数字设计与综合(第二版)42 答答:a 是合法的;b、c 不能以 1 和$开头;d 是合法的。 4声明下面的声明下面的 Verilog 变量:变量: a一个名为 a_in 的 8 位向量线网; b一个名为 address 的 32 位寄存器,第 31 位为最高有效位;将此寄存器的值设置为十进制 数 3; c一个名为 coun

7、t 的整数; d一个名为 snap_shot 的时间变量; e一个名为 delays 的数组,该数组中包含 20 个 integer 类型的元素; f含有 256 个字的存储器 MEM,每个字的字长为 64 位; g一个值为 512 的参数 cache_size。 答:答:定义如下: a. wire 7:0 a_in; b. reg 31:0 address=d3; c. integer count; d. time snap_shot; e. integer delays0:19; f. reg 63:0 MEM 0:255; g. parameter cache_size=512; 5下面

8、各条语句的输出结果是什么?下面各条语句的输出结果是什么? alatch = 4d12 ; $display (“The current value of latch = %bn”, latch) ; bin_reg = 3d2 ; $monitor ($time, “In register value = %bn”, in_reg2:0) ; cdefine MEM_SIZE 1024 $display (“The maximum memory size is %h”, MEM_SIZE) ; 答:答:仿真输出结果如下: a# The current value of latch = 1100

9、 # b#0In register value = 010 # c# The maximum memory size is 00000400 注意: 1.本题中的变量默认为长度正好相符,比如 latch=4d12 就相当于 reg 3:0 latch。 2. b 中的$time 代表时间, 根据给 in_reg 这个寄存器赋值时间而变化, 比如在第 5 秒对 in_reg 进行 赋值,就会显示:#5In register value = 010 第 5 章 门 级 建 模43 答:答:模块代码如下 module stimulus(); reg CLOCK; reg 3:0 REG_IN; wi

10、re 3:0 REG_OUT; /*connect by name* shift_reg sr1(.clock(CLOCK),.reg_in(REG_IN),.reg_out(REG_OUT); endmodule 6写出写出 REG_IN,CLK 和和 REG_OUT 的层次名。的层次名。 答:答:分别是:stimulus.REG_IN stimulus.CLK stimulus.REG_OUT 7写出模块实例写出模块实例 sr1 及其端口及其端口 clock 和和 reg_in 的层次名。的层次名。 答:答:分别是:stimulus.sr1 stimulus.sr1.clock stimu

11、lus.sr1.reg_in stimulus.sr1.reg_out 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

12、,out1,out1); 第 5 章 门 级 建 模41 nand a2(out1,in1,in2); endmodule /* * my_or * */ module my_or(in1,in2,out); input in1,in2; 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(ou

13、t,in,in); endmodule /* * test * */ module test; reg a,b; wire and_c,or_c,not_c; initial begin a 1 3 b 111out = a b(大小幅值比较) 答:代码如下 module my_ALU(a,b,select,out); input 3:0 a,b; input 2:0 select; output 4:0 out; reg 4:0 out; always (*) case(select) 3b000: out=a; 3b001: out=a+b; 3b010: out=a-b; 3b011:

14、out=a/b; 3b100: out=a%b; 3b101: out=a1; 3b111: out=ab; default: out=5b00000; Verilog HDL 数字设计与综合(第二版)54 endcase endmodule 输出波形 13使用 while 循环设计一个时钟信号发生器。时钟信号的初值为 0,周期为 10 个时间单位。 答:代码如下 module s13; reg clock; initial begin clock0;i=i-1) begin factorial=i*factorial; end end endfunction reg 31:0 data_ou

15、t; reg 3:0 data_in; initial begin data_in=4d3; #100 data_out=factorial(data_in); #100 data_out=factorial(4d10); #100 $stop; end 2定义一个输出为 8 位的函数,功能是将两个 4 位数相乘。设计激励模块对这个函数进行调用, 并且检查功能的正确性。 答:代码、测试激励和仿真输出如下 function 7:0 mul; input 3:0 data1,data2; begin mul=data1; mul=mul*data2; Verilog HDL 数字设计与综合(第二版)58 end endfunction reg 3:0data1,data2; reg 31:0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号