EDA技术与Verilog HDL(潘松)第四章课后习题答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
阻塞式赋值的特点是,一旦执行完当前的赋值语句,赋值目标变量y即刻 获得来自等号右侧表达式的计算值。如果在一个块语句中含有多条阻塞式赋值 语句,则当执行到其中某条赋值语句时,其他语句将禁止执行,即如同被阻塞 了一样。
非阻塞式赋值的特点是必须在块语句执行结束时才整体完成赋值操作。非 阻塞的含义可以理解为在执行当前语句时,对于块中的其他语句的执行情况一 律不加限制,不加阻塞。这也可以理解为,在begin_end块中的所有赋值语句都 可以并行运行。
G3=%b,Y= %d\n",A, G1, G2, G3, Y); end
initial begin
G1=1 ;G2=1 ;G3=1;A=0; #10 G2=0;G1=0; #10 G2=0;G1=1;
#10 G2=1;G1=0;G3=0; #10 G1=0;G1=1;G3=1; #10 G1=0;G1=0;G3=0; #10 G1=1;G2=0;G3=0; #50 A= 0; #50 A= 1; #50 A= 2; #50 A= 3; #50 A= 4; #50 A= 5; #50 A= 6; #50 A= 7;
#50 $finish; end endmodule
习题
4-6 图4-26所示的是双2选1多路选择器构成的电路MUXK。对于其中MUX21A,当s=0 和s=1时,分别有y=a和y=b。试在一个模块结构中用两个过程来表达此电路。 答:参考实验1
module MUXK (a1, a2, a3, s0, s1, outy); input a1, a2, a3, s0, s1; output outy; wire outy; wire tmp; mux21a u1 (.a(a2),.b(a3),.s(s0),.y(tmp)); 图4-26 含2选1多路选择器的模块 mux21a u2 (.a (a1),.b (tmp),.s(s1),.y(outy));
4-5 用Verilog设计一个3-8译码器,要求分别用case语句和if_else语句。比 较这两种方式。
4-5 用Verilog设计一个3-8译码器,要求分别用case语句和if_else语句。比较这两 种方式。
4-5 用Verilog设计一个3-8译码器,要求分别用case语句和if_else语句。比较这两 种方式。
图4-27 1位全减器
习题
//一个二进制半减器设计进行了阐述
module h_suber(x,y,diff,s_out); input x,y; output diff, s_out; assign diff=x^y; assign s_out=(~x)&y;
endmodule
x y diff s_out
//测试文件,??部分请根据被测试的文件修改 module stimulus;
reg [2:0]A ; wire[7:0]Y ; reg G1 ,G2 ,G3; decoder3_8 DUT ( G1 ,Y ,G2 ,A ,G3 ); initial begin $monitor($time,"A=%d,G1=%b,G2=%b,
endmodule
习题
4-8 给出一个4选1多路选择器的Verilog描述。此器件与图4-1类似,但选通控制端有4 个输入:S0、S1、S2、S3。当且仅当S0=0时:Y=A;S1=0时:Y=B;S2=0时:Y=C; S3=0时:Y=D。
4-9 把例4-21改成一异步清0,同步时钟使能和异步数据加载型8位二进制加 法计数器。
00
0
0
01
1
1
10
1Βιβλιοθήκη Baidu
0
11
0
0
x为被减数, x y sub_in diffr sub_out
y为减数, 0 0
0
0
0
sub_in为
00
1
1
1
低位的借
01
0
1
1
位, diff r为差,su
01
1
0
1
b_out为向 1 0
0
1
0
高位的借
10
1
0
0
位。
11
0
0
0
11
1
1
1
module f_suber(x,y,sub_in,diffr,sub_out);
习题
4-10 分频方法有多种,最简单的是二分频和偶数分频甚至奇数 分频,这用触发器或指定计数模的计数器即可办到。但对于现场实 现指定分频比或小数分频率的分频电路的设计就不是很简单了。
试对习题4-9的设计稍作修改,将其进位输出COUT与异步加载控 制LOAD连在一起,构成一个自动加载型16位二进制数计数器,也即 一个16位可控的分频器,给出其Verilog表述,并说明工作原理。 设输入频率fi=4MHz,输出频率fo=516.5±1Hz(允许误差 ±0.1Hz),16位加载数值=?。(7744)
endmodule
习题
4-7 给出1位全减器的VHDL描述。要求: (1)首先设计1位半减器,然后用例化语句将它们连接起来,图4-28中h_suber 是半减器,diff是输出差,s_out是借位输出,sub_in是借位输入。 (2)根据图4-27设计1位全减器。 (3)以1位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语句来 完成此项设计。
//一个二进制全减器顶层设计进行了阐述
output diffr,sub_out;
input x,y,sub_in;
wire e,d,f;
h_suber u1(x,y,e,d);
//
h_suber u2(.x(e),.diff(diffr),.y(sub_in),.s_out(f));//
or2a u3(.a(d),.b(f),.c(sub_out));
第4章 Verilog HDL设计初步
习题
4-1 举例说明,Verilog HDL的操作符中,哪些操作符的运算结果总是一位的。 答: P74/74/80/92
习题
4-3 阻塞赋值和非阻塞赋值有何区别? 答:Verilog中,用普通等号“=”作为阻塞式赋值语句的赋值符号,如y=b。 Verilog中,用普通等号“<=”作为非阻塞式赋值语句的赋值符号,如y<=b。
4-11 用Verilog设计一个功能类似74LS160的计数器。
同步十进制计数器74LS160
功能表:
管脚图:
说明:H-高电平 L-低电平
X-任意
非阻塞式赋值的特点是必须在块语句执行结束时才整体完成赋值操作。非 阻塞的含义可以理解为在执行当前语句时,对于块中的其他语句的执行情况一 律不加限制,不加阻塞。这也可以理解为,在begin_end块中的所有赋值语句都 可以并行运行。
G3=%b,Y= %d\n",A, G1, G2, G3, Y); end
initial begin
G1=1 ;G2=1 ;G3=1;A=0; #10 G2=0;G1=0; #10 G2=0;G1=1;
#10 G2=1;G1=0;G3=0; #10 G1=0;G1=1;G3=1; #10 G1=0;G1=0;G3=0; #10 G1=1;G2=0;G3=0; #50 A= 0; #50 A= 1; #50 A= 2; #50 A= 3; #50 A= 4; #50 A= 5; #50 A= 6; #50 A= 7;
#50 $finish; end endmodule
习题
4-6 图4-26所示的是双2选1多路选择器构成的电路MUXK。对于其中MUX21A,当s=0 和s=1时,分别有y=a和y=b。试在一个模块结构中用两个过程来表达此电路。 答:参考实验1
module MUXK (a1, a2, a3, s0, s1, outy); input a1, a2, a3, s0, s1; output outy; wire outy; wire tmp; mux21a u1 (.a(a2),.b(a3),.s(s0),.y(tmp)); 图4-26 含2选1多路选择器的模块 mux21a u2 (.a (a1),.b (tmp),.s(s1),.y(outy));
4-5 用Verilog设计一个3-8译码器,要求分别用case语句和if_else语句。比 较这两种方式。
4-5 用Verilog设计一个3-8译码器,要求分别用case语句和if_else语句。比较这两 种方式。
4-5 用Verilog设计一个3-8译码器,要求分别用case语句和if_else语句。比较这两 种方式。
图4-27 1位全减器
习题
//一个二进制半减器设计进行了阐述
module h_suber(x,y,diff,s_out); input x,y; output diff, s_out; assign diff=x^y; assign s_out=(~x)&y;
endmodule
x y diff s_out
//测试文件,??部分请根据被测试的文件修改 module stimulus;
reg [2:0]A ; wire[7:0]Y ; reg G1 ,G2 ,G3; decoder3_8 DUT ( G1 ,Y ,G2 ,A ,G3 ); initial begin $monitor($time,"A=%d,G1=%b,G2=%b,
endmodule
习题
4-8 给出一个4选1多路选择器的Verilog描述。此器件与图4-1类似,但选通控制端有4 个输入:S0、S1、S2、S3。当且仅当S0=0时:Y=A;S1=0时:Y=B;S2=0时:Y=C; S3=0时:Y=D。
4-9 把例4-21改成一异步清0,同步时钟使能和异步数据加载型8位二进制加 法计数器。
00
0
0
01
1
1
10
1Βιβλιοθήκη Baidu
0
11
0
0
x为被减数, x y sub_in diffr sub_out
y为减数, 0 0
0
0
0
sub_in为
00
1
1
1
低位的借
01
0
1
1
位, diff r为差,su
01
1
0
1
b_out为向 1 0
0
1
0
高位的借
10
1
0
0
位。
11
0
0
0
11
1
1
1
module f_suber(x,y,sub_in,diffr,sub_out);
习题
4-10 分频方法有多种,最简单的是二分频和偶数分频甚至奇数 分频,这用触发器或指定计数模的计数器即可办到。但对于现场实 现指定分频比或小数分频率的分频电路的设计就不是很简单了。
试对习题4-9的设计稍作修改,将其进位输出COUT与异步加载控 制LOAD连在一起,构成一个自动加载型16位二进制数计数器,也即 一个16位可控的分频器,给出其Verilog表述,并说明工作原理。 设输入频率fi=4MHz,输出频率fo=516.5±1Hz(允许误差 ±0.1Hz),16位加载数值=?。(7744)
endmodule
习题
4-7 给出1位全减器的VHDL描述。要求: (1)首先设计1位半减器,然后用例化语句将它们连接起来,图4-28中h_suber 是半减器,diff是输出差,s_out是借位输出,sub_in是借位输入。 (2)根据图4-27设计1位全减器。 (3)以1位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语句来 完成此项设计。
//一个二进制全减器顶层设计进行了阐述
output diffr,sub_out;
input x,y,sub_in;
wire e,d,f;
h_suber u1(x,y,e,d);
//
h_suber u2(.x(e),.diff(diffr),.y(sub_in),.s_out(f));//
or2a u3(.a(d),.b(f),.c(sub_out));
第4章 Verilog HDL设计初步
习题
4-1 举例说明,Verilog HDL的操作符中,哪些操作符的运算结果总是一位的。 答: P74/74/80/92
习题
4-3 阻塞赋值和非阻塞赋值有何区别? 答:Verilog中,用普通等号“=”作为阻塞式赋值语句的赋值符号,如y=b。 Verilog中,用普通等号“<=”作为非阻塞式赋值语句的赋值符号,如y<=b。
4-11 用Verilog设计一个功能类似74LS160的计数器。
同步十进制计数器74LS160
功能表:
管脚图:
说明:H-高电平 L-低电平
X-任意