第6章 Verilog HDL设计进阶习题
veriloghdl答案

verilog-hdl答案第1章简介1.Verilog HDL是在哪一年首次被IEEE标准化的?Verilog HDL是在1995年首次被IEEE标准化的。
2.Verilog HDL支持哪三种基本描述方式Verilog HDL可采用三种不同方式或混合方式对设计建模。
这些方式包括:行为描述方式—使用过程化结构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述建模3.可以使用Verilog HDL描述一个设计的时序吗?Verilog HDL可以清晰的建立时序模型,故可以使用Verilog HDL描述一个设计的时序。
4.语言中的什么特性能够用于描述参数化设计?在行为级描述中, Verilog HDL不仅能够在RT L级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述,而且能够使用门和模块实例化语句在结构级进行结构描述,这种特性可用于描述参数化设计。
5.能够使用Verilog HDL编写测试验证程序吗?能,可以编写testbench来对编写的程序进行验证。
6.Verilog HDL是由哪个公司最先开发的?Verilog HDL是由Gateway Design Automation公司最先开发的7.Verilog HDL中的两类主要数据类型是什么?线网数据类型和寄存器数据类型。
线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。
8.UDP代表什么?UDP代表用户定义原语9.写出两个开关级基本门的名称。
pmos nmos10.写出两个基本逻辑门的名称。
and or第2章 HDL指南1. 在数据流描述方式中使用什么语句描述一个设计?设计的数据流行为使用连续赋值语句进行描述2. 使用` t i m e s c a l e 编译器指令的目的是什么?举出一个实例。
使用编译指令将时间单位与物理时间相关联。
例如` timescale 1ns /100ps 此语句说明时延时间单位为1ns并且时间精度为100ps (时间精度是指所有的时延必须被限定在0.1ns内)3. 在过程赋值语句中可以定义哪两种时延?请举例详细说明。
第6章 Verilog HDL设计进阶习题

1CLK7476N 1K ~1Q ~1CLR 14
U3A 7400N
3
V1 100 Hz 5V J1
10 9 2 7 6 5 4 3
74194N
9 QD QC QB QA 12 13 14 15 11 13 14 15 16 17 18 19 20 21 22 23 1 2 3 4 5 6 7 8 G D C B A
//Verilog设计一个4位4输入最大数值检测电路 module Maximum_value_detection(Mostlarge,a,b,c,d);//4位 4输入最大数值检测电路 output [3:0] Mostlarge; input [3:0] a,b,c,d; wire[3:0]sum1,sum2,sum3;
习
CP 1 2 3 4 5 6 QD(A2) QC(D4、~D5) 0 0 0 1 1 1 1 1 1 0 ~0 0 QB(A1) 0 1 1 0 0 1
题
QA(A0、D7) 1 0 1 0 1 0 D D1 D2 D3 D4 D5 D6 F 0 1 0 0 1 0
7
8 9 10 11
1
1 1 1 1
U1
74150N
Key = Space
XSC1
Ext Trig + _ A + _ + B _
U5A 7404N
E15 E14 E13 E12 E11 E10 E9 E8 E7 E6 E5 E4 E3 E2 E1 E0
0
1 ~1 1 1
1
0 0 1 1
1
0 1 0 1
D7
D4 D5 D6 D7
1
1 0 0 1
VDD 5V U2 U1A 74S04D
第6章_Verilog_HDL设计进阶习题

0
习
题
6-9 用原理图或Verilog输入方式分别设计一个周期性产生二进制序列01001011001 的序列发生器,用移位寄存器或用同步时序电路实现,并用时序仿真器验证其功能。
习
CP 1 2 3 4 5 6 QD(A2) QC(D4、~D5) 0 0 0 1 1 1 1 1 1 0 ~0 0 QB(A1) 0 1 1 0 0 1
题
QA(A0、D7) 1 0 1 0 D D1 D2 D3 D4 F 0 1 0 0 1 0
6-9 用原理图或Verilog输入方式分别设计一个周期性产生二进制序列01001011001 的序列发生器,用移位寄存器或用同步时序电路实现,并用时序仿真器验证其功能。
6-3 用不同循环语句分别设计一个逻辑电路模块,用以统计一8位二进制数中含1的 数量。
6-3 用不同循环语句分别设计一个逻辑电路模块,用以统计一8位二进制 数中含1的数量。
while循环语句
module Statistics8(sum,A); parameter S=8; output[3:0]sum; input[7:0] A; reg[S:1] AT; reg[3:0] sum; reg[S:0] CT; always @(A) begin AT={{S{1'b0}},A}; sum=0; CT=S; while(CT>0) begin if(AT[1])sum=sum+1;else sum=sum; begin CT= CT-1; AT=AT>>1; end end end endmodule
事实上,例6-9中,T在过程中出现了3次非阻塞赋值操作,即有3个赋值源对 同一信号T进行赋值--T<=0、T<=T+1和T<=T+2。但根据以上的讨论,对于非阻塞 式赋值,前两个语句中的赋值目标信号T都不可能得到任何数值,只有最后的 T<=T+2语句中的T的值能得到更新。然而,由于赋值符号右边的T始终未得到任何 确定的初始值,即语句T<=0并未完成赋值,所以最后的T始终是个未知值。结果 只能被综合成随S1和S0随机变动的时序电路,导致T成为一个不确定的信号。结 果在过程最后的case语句中,无法通过判断T的值来确定选通输入,即对OUT的赋 值。 例6-10就不一样了。程序首先执行了阻塞式赋值语句T=0,T即刻被更新,从 而使两个if语句中的T都能得到确定的初值。另一方面,当if语句不满足条件时, 即当S0或S1不等于1时,由于T已经在第一条赋值语句中被更新为确定的值0了, 所以尽管两个if语句从表面上看都属于不完整的条件语句,也不可能被综合成时 序电路了。显然也就有了图6-4所示正确的波形输出。
eda技术实用教程-veriloghdl答案

eda技术实用教程-veriloghdl答案【篇一:eda技术与vhdl程序开发基础教程课后答案】eda的英文全称是electronic design automation2.eda系统设计自动化eda阶段三个发展阶段3. eda技术的应用可概括为4.目前比较流行的主流厂家的eda软件有、5.常用的设计输入方式有原理图输入、文本输入、状态机输入6.常用的硬件描述语言有7.逻辑综合后生成的网表文件为 edif8.布局布线主要完成9.10.常用的第三方eda工具软件有synplify/synplify pro、leonardo spectrum1.8.2选择1.eda技术发展历程的正确描述为(a)a cad-cae-edab eda-cad-caec eda-cae-cadd cae-cad-eda2.altera的第四代eda集成开发环境为(c)a modelsimb mux+plus iic quartus iid ise3.下列eda工具中,支持状态图输入方式的是(b)a quartus iib isec ispdesignexpertd syplify pro4.下列几种仿真中考虑了物理模型参数的仿真是(a)a 时序仿真b 功能仿真c 行为仿真d 逻辑仿真5.下列描述eda工程设计流程正确的是(c)a输入-综合-布线-下载-仿真b布线-仿真-下载-输入-综合c输入-综合-布线-仿真-下载d输入-仿真-综合-布线-下载6.下列编程语言中不属于硬件描述语言的是(d)a vhdlb verilogc abeld php1.8.3问答1.结合本章学习的知识,简述什么是eda技术?谈谈自己对eda技术的认识?答:eda(electronic design automation)工程是现代电子信息工程领域中一门发展迅速的新技术。
2.简要介绍eda技术的发展历程?答:现代eda技术是20世纪90年代初从计算机辅助设计、辅助制造和辅助测试等工程概念发展而来的。
eda技术实用教程-veriloghdl答案

eda技术实用教程-veriloghdl答案【篇一:eda技术与vhdl程序开发基础教程课后答案】eda的英文全称是electronic design automation2.eda系统设计自动化eda阶段三个发展阶段3. eda技术的应用可概括为4.目前比较流行的主流厂家的eda软件有、5.常用的设计输入方式有原理图输入、文本输入、状态机输入6.常用的硬件描述语言有7.逻辑综合后生成的网表文件为 edif8.布局布线主要完成9.10.常用的第三方eda工具软件有synplify/synplify pro、leonardo spectrum1.8.2选择1.eda技术发展历程的正确描述为(a)a cad-cae-edab eda-cad-caec eda-cae-cadd cae-cad-eda2.altera的第四代eda集成开发环境为(c)a modelsimb mux+plus iic quartus iid ise3.下列eda工具中,支持状态图输入方式的是(b)a quartus iib isec ispdesignexpertd syplify pro4.下列几种仿真中考虑了物理模型参数的仿真是(a)a 时序仿真b 功能仿真c 行为仿真d 逻辑仿真5.下列描述eda工程设计流程正确的是(c)a输入-综合-布线-下载-仿真b布线-仿真-下载-输入-综合c输入-综合-布线-仿真-下载d输入-仿真-综合-布线-下载6.下列编程语言中不属于硬件描述语言的是(d)a vhdlb verilogc abeld php1.8.3问答1.结合本章学习的知识,简述什么是eda技术?谈谈自己对eda技术的认识?答:eda(electronic design automation)工程是现代电子信息工程领域中一门发展迅速的新技术。
2.简要介绍eda技术的发展历程?答:现代eda技术是20世纪90年代初从计算机辅助设计、辅助制造和辅助测试等工程概念发展而来的。
Verilog HDL数字设计与综合(第二版) 第六章课后习题答案

1.一个全减器具有三个一位输入:x,y和z(前面的借位),两个一位输出D(差)和B(借位)。
计算D和B的逻辑等式如下所示:D = x’⋅ y’⋅ z’ + x’⋅ y ⋅ z’ + x ⋅ y’⋅ z’ + x ⋅ y ⋅ zB = x’⋅ y + x’⋅ z + y ⋅ z根据上面的定义写出Verilog描述,包括I/O端口(注意:逻辑等式中的+对应于数据流建模中的逻辑或(| |)操作符)。
编写激励块,在模块中实例引用全减器。
对x,y和z这三个输入的8种组合及其对应的输出进行测试。
x y z B D0 0 0 0 00 0 1 1 10 1 0 1 10 1 1 1 01 0 0 0 11 0 1 0 01 1 0 0 01 1 1 1 1答:代码及测试激励如下:(D 应该= x’⋅y’⋅z + x’⋅ y ⋅z’ + x ⋅y’⋅z’ + x ⋅ y ⋅ z)`timescale 1ns/1nsmodule full_sub(x,y,z,D,B);input x,y,z;output D,B;assign D=((!x)&(!y)&(z))||((!x)&y&(!z))||(x&(!y)&(!z))||(x&y&z);assign B=((!x)&y)||((!x)&z)||(y&z);endmodulemodule test61;reg x,y,z;wire D,B;Verilog HDL数字设计与综合(第二版)58initialbeginx<=0;y<=0;z<=0;#10 x<=0;y<=0;z<=1;#10 x<=0;y<=1;z<=0;#10 x<=0;y<=1;z<=1;#10 x<=1;y<=0;z<=0;#10 x<=1;y<=0;z<=1;#10 x<=1;y<=1;z<=0;#10 x<=1;y<=1;z<=1;#10 $stop;endfull_sub fsubtracter(x,y,z,D,B);initial$monitor($time,"x= %b,y= %b,z= %b,B= %b,D= %b",x,y,z,B,D);endmodule最终输出观测结果:# 0x= 0,y= 0,z= 0,B= 0,D= 0# 10x= 0,y= 0,z= 1,B= 1,D= 1# 20x= 0,y= 1,z= 0,B= 1,D= 1# 30x= 0,y= 1,z= 1,B= 1,D= 0# 40x= 1,y= 0,z= 0,B= 0,D= 1# 50x= 1,y= 0,z= 1,B= 0,D= 0# 60x= 1,y= 1,z= 0,B= 0,D= 0# 70x= 1,y= 1,z= 1,B= 1,D= 1第6章数据流建模592.大小比较器的功能是比较两个数之间的关系:大于、小于或等于。
verilog hdl 习题答案

verilog hdl 习题答案Verilog HDL 习题答案Verilog HDL(Hardware Description Language)是一种硬件描述语言,用于设计和仿真数字电路。
它是一种高级语言,可以用于描述电路的结构和行为,并且可以进行逻辑仿真和综合。
在学习Verilog HDL的过程中,习题是不可或缺的一部分。
下面将提供一些常见Verilog HDL习题的答案,帮助你更好地理解和掌握这门语言。
1. 设计一个4位全加器module full_adder(input a, b, cin, output sum, cout);assign sum = a ^ b ^ cin;assign cout = (a & b) | (a & cin) | (b & cin);endmodule2. 设计一个4位加法器module four_bit_adder(input [3:0] a, b, output [3:0] sum, output carry_out);wire [3:0] carry;assign sum = a + b;assign carry = a + b + 1'b0;assign carry_out = carry[3];endmodule3. 设计一个2输入4输出的多路选择器module mux_2to4(input [1:0] sel, input [3:0] in, output [3:0] out);assign out[0] = (sel[1] & sel[0]) ? in[0] : 1'bz;assign out[1] = (sel[1] & ~sel[0]) ? in[1] : 1'bz;assign out[2] = (~sel[1] & sel[0]) ? in[2] : 1'bz;assign out[3] = (~sel[1] & ~sel[0]) ? in[3] : 1'bz;endmodule4. 设计一个4位移位寄存器module shift_register(input [3:0] in, input clk, input reset, output [3:0] out);reg [3:0] reg_out;always @(posedge clk or posedge reset) beginif (reset)reg_out <= 4'b0000;elsereg_out <= {reg_out[2:0], in[0]};endassign out = reg_out;endmodule这些习题的答案提供了基本的Verilog HDL设计和实现方法。
veriloghdl考试题及答案A卷

veriloghdl考试题及答案A卷一、选择题(每题2分,共20分)1. 在Verilog中,以下哪个关键字用于定义模块?A. moduleB. functionC. defineD. task答案:A2. 在Verilog中,以下哪个操作符用于按位与操作?A. &B. &&C. |D. ||答案:A3. 在Verilog中,以下哪个关键字用于定义输入端口?A. inputB. outputC. inD. out答案:A4. 在Verilog中,以下哪个关键字用于定义输出端口?A. inputB. outputC. inD. out答案:B5. 在Verilog中,以下哪个关键字用于定义组合逻辑?A. alwaysB. initialC. always_combD. always_seq答案:C6. 在Verilog中,以下哪个关键字用于定义时序逻辑?A. alwaysB. initialC. always_combD. always_seq答案:A7. 在Verilog中,以下哪个关键字用于定义一个过程块?A. alwaysB. initialC. processD. begin答案:A8. 在Verilog中,以下哪个关键字用于定义一个初始块?A. alwaysB. initialC. processD. begin答案:B9. 在Verilog中,以下哪个关键字用于定义一个函数?A. functionB. taskC. moduleD. begin答案:A10. 在Verilog中,以下哪个关键字用于定义一个任务?A. functionB. taskC. moduleD. begin答案:B二、填空题(每题3分,共15分)1. 在Verilog中,使用________关键字可以定义一个参数化的模块。
答案:parameter2. 在Verilog中,使用________关键字可以定义一个端口映射。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XSC1
Ext T rig + _ A + _ + B _
U1B 74S04D
U4
~CLR ~LOAD CLK
12 13 14 15 1 2 3 4
74151N
~W Y
6 5
RCO ENT ENP 10 7 2 1 9
74163N
D C B A 6 5 4 3
V1 100 Hz 5V
QD QC QB QA
事实上,例6-9中,T在过程中出现了3次非阻塞赋值操作,即有3个赋值源对 同一信号T进行赋值--T<=0、T<=T+1和T<=T+2。但根据以上的讨论,对于非阻塞 式赋值,前两个语句中的赋值目标信号T都不可能得到任何数值,只有最后的 T<=T+2语句中的T的值能得到更新。然而,由于赋值符号右边的T始终未得到任何 确定的初始值,即语句T<=0并未完成赋值,所以最后的T始终是个未知值。结果 只能被综合成随S1和S0随机变动的时序电路,导致T成为一个不确定的信号。结 果在过程最后的case语句中,无法通过判断T的值来确定选通输入,即对OUT的赋 值。 例6-10就不一样了。程序首先执行了阻塞式赋值语句T=0,T即刻被更新,从 而使两个if语句中的T都能得到确定的初值。另一方面,当if语句不满足条件时, 即当S0或S1不等于1时,由于T已经在第一条赋值语句中被更新为确定的值0了, 所以尽管两个if语句从表面上看都属于不完整的条件语句,也不可能被综合成时 序电路了。显然也就有了图6-4所示正确的波形输出。
习
题
6-4 用循环语句设计一个7人投票表决器。 module voter7(pass,vote); output pass; input[6:0] vote; reg[2:0] sum; integer i; reg pass; always @(vote) begin sum=0; for(i=0;i<=6;i=i+1) //for 语句 if(vote[i]) sum=sum+1; if(sum[2]) pass=1; //若超过4 人赞成,则pass=1 else pass=0; end endmodule
1101000101
1 0
D5 D6
7
8 9 10 11
1
1 1 1 1
0
1 ~1 1 1
1
0 0 1 1 D7
1
1 0 0 1
VDD 5V U2 U1A 74S04D
15 11 12 13 14
7 9 10 11 ~G C B A D7 D6 D5 D4 D3 D2 D1 D0
二进制序列01001011001
习
二、移位型序列信号发生器 1.移位型序列信号发生器的组成
题
6-9 用原理图或Verilog输入方式分别设计一个周期性产生二进制序列01001011001 的序列发生器,用移位寄存器或用同步时序电路实现,并用时序仿真器验证其功能。
移位型序列信号发生器是由移位寄存器和组合电路两部分构成,组合电路的 输出,作为移位寄存器的串行输入。由n位移位寄存器构成的序列信号发生器所 产生的序列信号的最大长度为:P=2n
题
repeat循环语句
module Statistics8(sum,A); parameter S=4; output[3:0]sum; input[7:0] A; reg[3:0] sum; reg[2*S:1]TA; integer i; always @(A) begin TA=A; sum=0; repeat(2*S) begin if(TA[1])sum=sum+1; TA=TA>>1; end end endmodule
第6章 Verilog HDL设计进阶
习 题 实验与设计
习
题
6-1 在Verilog设计中,给时序电路清零(复位)有两种不同方法,它们是什么,如 何实现? 答:同步清零、异步清零,在过程语句敏感信号表中的逻辑表述posedge CLK用于指明 正向跳变,或negedge用于指明负向跳变实现 6-2 哪一种复位方法必须将复位信号放在敏感信号表中?给出这两种电路的Verilog 描述。 答:异步复位必须将复位信号放在敏感信号表中。 同步清零: always @(posedge CLK) //CLK上升沿启动 Q<=D; 异步清零: always @(posedge CLK or negedge RST) begin //块开始 //当CLK有升沿时D被锁入Q
6-3 用不同循环语句分别设计一个逻辑电路模块,用以统计一8位二进制数中含1的 数量。
6-3 用不同循环语句分别设计一个逻辑电路模块,用以统计一8位二进制 数中含1的数量。
while循环语句
module Statistics8(sum,A); parameter S=8; output[3:0]sum; input[7:0] A; reg[S:1] AT; reg[3:0] sum; reg[S:0] CT; always @(A) begin AT={{S{1'b0}},A}; sum=0; CT=S; while(CT>0) begin if(AT[1])sum=sum+1;else sum=sum; begin CT= CT-1; AT=AT>>1; end end end endmodule
题
【例6-10】阻塞赋初值正确
module mux4_1(DO,D1, D2,D3,S1, SO, OUT); output OUT ; input DO,D1, D2,D3,S1, SO; reg [2:0] T ; reg OUT; always @(D0, D1,D2,D3, S1,S0) begin T = 0; if (SO==1) T = T+1 if (S1==1) T = T+2 ; case (T) 0 : OUT = D0; 1 : OUT= D1; 2 : OUT =D2 ; 3 : OUT= D3; default : OUT D0; endcase end endmodule
if(!RST)Q<=0; //如果RST=0条件成立,Q被清0
else if(EN) Q<=D; end //在CLK上升沿处,EN=1,则执行赋值语句 //块结束
习
for循环语句
module Statistics8(sum,A); output[3:0]sum; input[7:0] A; reg[3:0] sum; integer i; always @(A) begin sum=0; for(i=0;i<=8;i=i+1) //for 语句 if(A[i]) sum=sum+1; else sum=sum; end endmodule
6-8 Verilog HDL设计一个比较电路,当输入的8421BCD码大于5时输出1,否则输出0。
设计一个四舍五入判别电路,其输入为8421BCD码,要求当输入大于或等于 5时,判别电路输出为1,反之为0。
原理图
习
题
6-9 用原理图或Verilog输入方式分别设计一个周期性产生二进制序列01001011001 的序列发生器,用移位寄存器或用同步时序电路实现,并用时序仿真器验证其功能。
习
题
6-5 Verilog设计一个4位4输入最大数值检测电路。
//Verilog设计一个4位4输入最大数值检测电路 module Maximum_value_detection(Mostlarge,a,b,c,d);//4位 4输入最大数值检测电路 output [3:0] Mostlarge; input [3:0] a,b,c,d; wire[3:0]sum1,sum2,sum3;
习
CP 1 2 3 4 5 6 QD(A2) QC(D4、~D5) 0 0 0 1 1 1 1 1 1 0 ~0 0 QB(A1) 0 1 1 0 0 1
题
QA(A0、D7) 1 0 1 0 D D1 D2 D3 D4 F 0 1 0 0 1 0
6-9 用原理图或Verilog输入方式分别设计一个周期性产生二进制序列01001011001 的序列发生器,用移位寄存器或用同步时序电路实现,并用时序仿真器验证其功能。
6-6 从不完整的条件语句产生时序模块的原理看,例6-9和例6-10从表面上看都包含 不完整条件语句,试说明,为什么例6-9的综合结果含锁存器,二例6-10却没有。 答:参见书P137
习
题
6-6 从不完整的条件语句产生时序模块的原理看,例6-9和例6-10从表面上看都包含 不完整条件语句,试说明,为什么例6-9的综合结果含锁存器,二例6-10却没有。 答:参见书P137
2.移位型序列信号发生器的设计(我们通过例题来说明)
例1.试设计一个01001011001序列信号发生器 首先确定移位寄存器的位数,并画出编码状态图,并找出迁移关系. P=11,因此只需要74194N中的四位,按序列信号四位一组去划分(有十中状 态),它的转换关系是:如图(1)
如图(1)
习
CP 0 QD 0 QC 1 QB 0 QA 0
assign sum1=(a>b)?a:b;
assign sum2=(c>d)?c:d; assign Mostlarge=(sum1>sum2)?sum1:sum2; endmodule
习
【例6-9】非阻塞赋初值导致错误
module mux4_1(D0,D1,D2,D3,S1,S0,OUT); output OUT ; input D0,D1, D2,D3,S1, SO; reg [2:0] T ; reg OUT; always @(D0, D1,D2,D3, S1,S0) begin T <= 0; if (SO==1) T <= T+1 if (S1==1) T <= T+2 ; case (T) 0 : OUT = D0; 1 : OUT = D1; 2 : OUT = D2 ; 3 : OUT= D3; default : OUT D0; endcase end endmodule