第6章 Verilog HDL设计进阶习题

合集下载

veriloghdl答案

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设计进阶习题

第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技术实用教程-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技术实用教程-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数字设计与综合(第二版) 第六章课后习题答案

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 习题答案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卷

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中,使用________关键字可以定义一个端口映射。

VerilogHDL练习题目

VerilogHDL练习题目

练习一.简单的组合逻辑设计目的: 掌握基本组合逻辑电路的实现方法。

这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。

在Verilog HDL中,描述组合逻辑时常使用assign 结构。

注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。

模块源代码://--------------- compare.v -----------------module compare(equal,a,b);input a,b;output equal;assign equal=(a==b)?1:0; //a等于b时,equal输出为1;a不等于b时,//equal输出为0。

endmodule测试模块用于检测模块设计得正确与否,它给出模块的输入信号,观察模块的内部信号和输出信号,如果发现结果与预期的有所偏差,则要对设计模块进行修改。

测试模块源代码:`timescale 1ns/1ns //定义时间单位。

`include "./compare.v" //包含模块文件。

在有的仿真调试环境中并不需要此语句。

//而需要从调试环境的菜单中键入有关模块文件的路径和名称module comparetest;reg a,b;wire equal;initial //initial常用于仿真时信号的给出。

begina=0;b=0;#100 a=0; b=1;#100 a=1; b=1;#100 a=1; b=0;#100 $stop; //系统任务,暂停仿真以便观察仿真波形。

endcompare compare1(.equal(equal),.a(a),.b(b)); //调用模块。

endmodule仿真波形(部分):266练习:设计一个字节(8位)比较器。

要求:比较两个字节的大小,如a[7:0]大于 b[7:0]输出高电平,否则输出低电平,改写测试模型,使其能进行比较全面的测试。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15
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
15 11 12 13 14
7 9 10 11 ~G C B A D7 D6 D5 D4 D3 D2 D1 D0
XSC1
Ext T rig + _ A + _ + B _

F 1
序列
4 9
2 5 11 6 12
1
2
1
0
0
0
0
1
1
0
0
1
3
4
0
1
1
0
0
1
1
1
1/0
0
5
6
0
1
1
1
1
0
0
0
0
1
7
1
0
1

10
0


74194N
01001011001
VDD 5V U4
11 1 CLK ~CLR S1 S0 SR SL D C B A 4 1 16 1J
2 ~1PR 1Q
U2A
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


如图(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-6 从不完整的条件语句产生时序模块的原理看,例6-9和例6-10从表面上看都包含 不完整条件语句,试说明,为什么例6-9的综合结果含锁存器,二例6-10却没有。 答:参见书P137
6-8 Verilog HDL设计一个比较电路,当输入的8421BCD码大于5时输出1,否则输出0。
设计一个四舍五入判别电路,其输入为8421BCD码,要求当输入大于或等于 5时,判别电路输出为1,反之为0。
原理图


序列信号是指在同步脉冲作用下循环地产生一串周期性的二进制信号,能产 生这种信号的逻辑器件就称为序列信号发生器,根据结构不同,它可分为反馈移 位型和计数型两种。

repeat循环语句
6-3 用不同循环语句分别设计一个逻辑电路模块,用以统计一8位二进制数中含1的 数量。
6-3 用不同循环语句分别设计一个逻辑电路模块,用以统计一8位二进制 数中含1的数量。
while循环语句

6-4

用循环语句设计一个7人投票表决器。


6-5 Verilog设计一个4位4输入最大数值检测电路。


6-6 从不完整的条件语句产生时序模块的原理看,例6-9和例6-10从表面上看都包含 不完整条件语句,试说明,为什么例6-9的综合结果含锁存器,二例6-10却没有。 答:参见书P137
事实上,例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章 Verilog HDL设计进阶
习 题 实验与设计


6-1 在Verilog设计中,给时序电路清零(复位)有两种不同方法,它们是什么,如 何实现? 答:同步清零、异步清零,在过程语句敏感信号表中的逻辑表述posedge CLK用于指明 正向跳变,或negedge用于指明负向跳变实现

for循环语句



//程序1 module BCD_Compare(a,b); output b; input[3:0]a; wire c,d; and(c,a[1],a[2]); and(d,a[0],a[2]); or(b,d,c,a[3]); endmodule

//程序2 module BCD_Compare(a,b); output b; input [3:0] a; assign b=(a>=5)?1:0; endmodule
相关文档
最新文档