verilog数字系统设计教程 夏宇闻编著 课后习题答案 考试重点
- 格式:docx
- 大小:91.41 KB
- 文档页数:3
verilog 数字系统设计教程习题答案第二章HDL 既是一种行为描述语言,也是一种结构描述语言。
如果按照一定的规则和风格编写代码,就可以将功能行为模块通过工具自动转化为门级互联的结构模块。
这意味着利用Verilog 语言所提供的功能,就可以构造一个模块间的清晰结构来描述复杂的大型设计,并对所需的逻辑电路进行严格的设计。
2.模块的基本结构由关键词module和endmodule构成。
3.一个复杂电路系统的完整Verilog HDL 模型是由若干个VerilogHDL模块构成的,每一个模块又可以由若干个子模块构成。
其中有些模块需要综合成具体电路,而有些模块只是与用户所设计的模块交互的现存电路或激励信号源。
利用Verilog HDL语言结构所提供的这种功能就可以构造一个模块间的清晰层次结构来描述极其复杂的大型设计,并对所作设计的逻辑电路进行严格的验证。
HDL和VHDL乍为描述硬件电路设计的语言,其共同的特点在于:能形式化地抽象表示电路的结构和行为、支持逻辑设计中层次与领域的描述、可借用高级语言的精巧结构来简化电路的描述、具有电路仿真与验证机制以保证设计的正确性、支持电路描述由高层到低层的综合转换、硬件描述与实现工艺无关(有关工艺参数可通过语言提供的属性包括进去)、便于文档管理、易于理解和设计重用。
5.不是6.将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。
7.综合工具可以把HDL变成门级网表。
这方面Synopsys工具占有较大的优势,它的Design Compile 是作为一个综合的工业标准,它还有另外一个产品叫Behavior Compiler ,可以提供更高级的综合。
另外最近美国又出了一个软件叫Ambit ,据说比Synopsys 的软件更有效,可以综合50万门的电路,速度更快。
今年初Ambit 被Cadence 公司收购,为此Cade nee放弃了它原来的综合软件Syn ergy。
数字系统设计与veriloghdl课后答案【篇一:数字逻辑与数字系统设计习题参考答案】>第1章习题解答1.3 (1)86(2)219(3)106.25(4)0.6875 (4)0.1011.4 (1)101111(2)1001000(3)100001l.111.5 (1)(117)10=(165)8=(1110101)2=(75)16(2)(3452)10=(6574)8=(110101111100)2=(d7c)16(3)(23768.6875)10=(56330.54)8=(101110011011000.1011)2=(5cd 8.b)16 (4)(0.625)10=(0.5)8=(0.101)2=(0.a)16 1.6(1)(117)8=(1001111)2=(79)10(2)(7456)8=(111100101110)2=(3886)10(3)(23765.64)8=(10 0111 1111 0101.1101)2=(10229.8125)10(4)(0.746)8=(0.11111)2=(0.96875)10 1.7 (1)(9a)16=(10011010)2=(154)10(2) (3cf6)16=(11110011110110)2=(15606)10(3) (7ffe.6)16=(111111*********.011)2=(32766.375)10 (4)(0.c4)16=(0.110001)2=(0.765625)10 1-8(1)(125)10=(000100100101)8421bcd(2)(7342)10=(0111001101000010)8421bcd(3)(2018.49)10=(0010000000011000.01001001)8421bcd(4)(0.785)10=(0.011110000101)8421bcd1.9(1)(106)10=(1101010)2 原码=反码=补码=01101010 (2)(-98)10=(-1100010)2原码=11100010反码=10011101 补码=11100011(3)(-123)10=(-1111011)2 原码=11111011反码=10000101 补码=11111011(4)(-0.8125)10=(-0.1101)2 原码=1.1101000反码=1.0010111 补码=1.00110001.10(1)(104)10=(1101000)2 [1101000]补=01101000(-97)10=(-1100001)2 [-1100001]补=1001111101101000 + 10011111 0000011110000011 + 01001111 11010010[104-97]补=01101000+10011111=00000111, 104-97=(00000111)2=7 (2) (-125)10=(-1111101)2(79)10=(01001111)2[-1111101]补=10000011 [01001111]补=0100111101111000 [-125+79]补=10000011+01001111=11010010,-125+79=(-0101110)2=-46 (3) (120)10=(1111000)2[01111000]补=01111000(-67)10=(-1000011)2[-1000011]补=10111101[120-67]补=10000011+01001111=00110101,-125+79=(00110101)2=53 (4) (-87)10=(-1010111)2[-1010111]补=10101001(12)10=(1100)2[1100]补=00001100[-87+12]补=10101001+00001100=10110101,-125+79=(-1001011)2=-75+ 10111101 0011010110101001+ 00001100 10110101第2章习题解答2.3 解:根据逻辑图可直接写出逻辑表达式:(a) f=ab?bc;(b)f=abbcac解:设3个输入变量分别为a、b、c,输出为f,按题意,其中有奇数个为1,则输出f=1,因此可写出其逻辑表达式为f=abc?abc?abc?abc。
verilog数字系统设计教程习题答案第二章1.Verilog HDL 既是一种行为描述语言,也是一种结构描述语言。
如果按照一定的规则和风格编写代码,就可以将功能行为模块通过工具自动转化为门级互联的结构模块。
这意味着利用Verilog语言所提供的功能,就可以构造一个模块间的清晰结构来描述复杂的大型设计,并对所需的逻辑电路进行严格的设计。
2.模块的基本结构由关键词module和endmodule构成。
3.一个复杂电路系统的完整Verilog HDL模型是由若干个Verilog HDL模块构成的,每一个模块又可以由若干个子模块构成。
其中有些模块需要综合成具体电路,而有些模块只是与用户所设计的模块交互的现存电路或激励信号源。
利用Verilog HDL语言结构所提供的这种功能就可以构造一个模块间的清晰层次结构来描述极其复杂的大型设计,并对所作设计的逻辑电路进行严格的验证。
4.Verilog HDL和VHDL作为描述硬件电路设计的语言,其共同的特点在于:能形式化地抽象表示电路的结构和行为、支持逻辑设计中层次与领域的描述、可借用高级语言的精巧结构来简化电路的描述、具有电路仿真与验证机制以保证设计的正确性、支持电路描述由高层到低层的综合转换、硬件描述与实现工艺无关(有关工艺参数可通过语言提供的属性包括进去)、便于文档管理、易于理解和设计重用。
5.不是6.将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。
7.综合工具可以把HDL变成门级网表。
这方面Synopsys工具占有较大的优势,它的Design Compile是作为一个综合的工业标准,它还有另外一个产品叫Behavior Compiler,可以提供更高级的综合。
另外最近美国又出了一个软件叫Ambit,据说比Synopsys的软件更有效,可以综合50万门的电路,速度更快。
今年初Ambit被Cadence公司收购,为此Cadence 放弃了它原来的综合软件Synergy。
【最新整理,下载后即可编辑】1.设计一个字节(8位)的比较器,要求:比较两个字节的大小,如a[7:0]大于b[7:0],则输出高电平,否则输出低电平;并改写测试模型,使其能进行比较全面的测试。
模块源代码:测试模块的源代码:仿真结果:由图有:当a=8'01100101,b=8'00010010(即a>b 时),输出out 为高电平;当a=8'00000001,b=8'00001101(即a<b 时),输出out 为低电平,故满足要求。
2.依然作clk_in 的2分频clk_out ,要求输出时钟的相位与上面的1/2分频器的输出正好相反。
编写测试模块,给出仿真波形。
书上1/2分频器时序波形模块源代码: 测试模块源代码:仿真波形:由上图可知clk_out 的输出波形相位与前面输出波形相反。
3. 利用10 MHZ 的时钟,设计一个单周期形状的周期波形。
分析:时钟信号f=10MHZ ,分频1/20,f1=500KHZ时,j 从0计到9(10个数)跳转完成半个周期,T0/2 =0.1us ;图中可把T 分为三段即T1=T3=20us=200*0.1us(所以在T1阶段j 要计200个数),而T2=10us 可用延迟10000ns 翻转达到。
图中T=50us 之后不显示,所以测试时到达50000ns 时停止。
故其模块源代码和测试模块源代码如下:模块源代码: 测试模块源代码:仿真波形:4.在blocking模块中按如下两种写法,仿真与综合的结果会有什么样的变化?作出仿真波形,分析综合结果。
⑴综合结果 ⑵综合结果由以上图形可知,其综合结果一样。
其仿真图形如下所示:分析:当时钟上升沿来临,b1、b2的值一样都等于时钟上升沿到来前a的值,两种写法的区别在于c值的不同。
第一种写法c1的值等于前一个b1的值;第二种写法c2的值等于b2的值即c1比c2慢一个时钟信号周期。
5.运用always块设计一个8路数据选择器。
《Verilog数字系统设计教程》夏宇闻第四版思考题答案(第2章)1.Verilog语⾔有什么作⽤?可描述顺序执⾏和并⾏执⾏的程序结构;⽤延迟表达式或事件表达式来明确的控制过程的启动时间;通过命名的事件来触发其它过程⾥的激活⾏为或停⽌⾏为;提供了条件如if-else,case等循环程序结构;提供了可带参数且⾮零延续时间的任务程序结构;提供了可定义新的操作符的函数结构;提供了⽤于建⽴表达式的算术运算符,逻辑运算符,位运算符;Verilog HDL语⾔作为⼀种结构化的语⾔⾮常适⽤于门级和开关级的模型设计;提供了⼀套完整的表⽰组合逻辑的基本元件的原话;提供了双向通路和电阻器件的原话;可建⽴MOS器件的电荷分享和电荷衰减动态模型;Verilog HDL的构造性语句可以精确地建⽴信号的模型;2.构成模块的关键词是什么?module,endmodule。
3.为什么说可以⽤Verilog构成⾮常复杂的电路结构?因为Verilog可描述顺序执⾏和并⾏执⾏的程序结构;⽤延迟表达式或事件表达式来明确的控制过程的启动时间;通过命名的事件来触发其它过程⾥的激活⾏为或停⽌⾏为;提供了条件如if-else,case等循环程序结构;提供了可带参数且⾮零延续时间的任务程序结构;提供了可定义新的操作符的函数结构;提供了⽤于建⽴表达式的算术运算符,逻辑运算符,位运算符;Verilog HDL语⾔作为⼀种结构化的语⾔⾮常适⽤于门级和开关级的模型设计;提供了⼀套完整的表⽰组合逻辑的基本元件的原话;提供了双向通路和电阻器件的原话;可建⽴MOS器件的电荷分享和电荷衰减动态模型Verilog HDL的构造性语句可以精确地建⽴信号的模型;4.为什么可以⽤⽐较抽象的描述来设计具体的电路结构?因为有可以⽤⽐较抽象描述设计电路结构的语⾔,⽽这种语⾔是适合数字系统设计的语⾔。
5.是否任意抽象的符合语法的Verilog模块都可以通过综合⼯具转变为电路结构?不能。
绪论1.什么是信号处理电路?它通常由哪两大部分组成?信号处理电路是进行一些复杂的数字运算和数据处理,并且又有实时响应要求的电路。
它通常有高速数据通道接口和高速算法电路两大部分组成。
2.为什么要设计专用的信号处理电路?因为有的数字信号处理对时间的要求非常苛刻,以至于用高速的通用处理器也无法在规定的时间内完成必要的运算。
通用微处理器芯片是为一般目的而设计的,运算的步骤必须通过程序编译后生成的机器码指令加载到存储器中,然后在微处理器芯片控制下,按时钟的节拍,逐条取出指令分析指令和执行指令,直到程序的结束。
微处理器芯片中的内部总线和运算部件也是为通用目的而设计,即使是专为信号处理而设计的通用微处理器,因为它的通用性也不可能为某一特殊的算法来设计一系列的专用的运算电路而且其内部总线的宽度也不能随便的改变,只有通过改变程序,才能实现这个特殊的算法,因而其算法速度也受到限制所以要设计专用的信号处理电路。
3.什么是实时处理系统?实时处理系统是具有实时响应的处理系统。
4.为什么要用硬件描述语言来设计复杂的算法逻辑电路?因为现代复杂数字逻辑系统的设计都是借助于EDA工具完成的,无论电路系统的仿真和综合都需要掌握硬件描述语言。
5.能不能完全用C语言来代替硬件描述语言进行算法逻辑电路的设计?不能,因为基础算法的描述和验证通常用C语言来做。
如果要设计一个专用的电路来进行这种对速度有要求的实时数据处理,除了以上C语言外,还须编写硬件描述语言程序进行仿真以便从电路结构上保证算法能在规定的时间内完成,并能通过与前端和后端的设备接口正确无误地交换数据。
6.为什么在算法逻辑电路的设计中需要用C语言和硬件描述语言配合使用来提高设计效率?首先C语言很灵活,查错功能强,还可以通过PLI编写自己的系统任务,并直接与硬件仿真器结合使用。
C语言是目前世界上应用最为广泛的一种编程语言,因而C程序的设计环境比Verilog HDL更完整,此外,C语言有可靠地编译环境,语法完备,缺陷缺少,应用于许多的领域。
设计示范和上机习题练习一.简单的组合逻辑设计11(方法一):// ------------- 文件名compare.v ----------------------- module compare(equal,a,b);in put a,b;output equal;assig n equal = (a==b)? 1 : 0;//a等于b时,equal输出为1 ;a不等于b时,equal输出为0en dmodule//(方法二):module compare(equal,a,b);in put a,b;output equal;reg equal;always @(a or b)if(a==b) //a 等于 b 时,equal 输出为 1 ;equal =1;else //a不等于b时,equal输出为0。
equal = 0; //思考:如果不写else部分会产生什么逻辑?en dmodule// -------------------------------------------------// ------- 测试模块源代码(方法之一):'timescale 1ns/1 ns // 定义时间单位//包含模块文件。
在有的仿真调试环境中并不需要此语句in clude "./compare.v"〃而需要从调试环境的菜单中键入有关模块文件的路径和名称module t;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 a=0; b=0;#100 $stop; //系统任务,暂停仿真以便观察仿真波形。
endcompare m(.equal(equal),.a(a),.b(b)); //调用被测试模块 t.men dmodule// ------- 测试模块源代码(方法之二): ----------------------- 'timescale 1ns/1 ns// 定义时间单位。
设计示范和上机习题练习一.简单的组合逻辑设计//(方法一)://---------------文件名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//(方法二):module compare(equal,a,b);input a,b;output equal;reg equal;always @(a or b)if(a==b) //a等于b时,equal输出为1;equal =1;else //a不等于b时,equal输出为0。
equal = 0; //思考:如果不写else 部分会产生什么逻辑?endmodule//-------------------------------------------------------------//----------测试模块源代码(方法之一):`timescale 1ns/1ns // 定义时间单位。
`include "./compare.v" //包含模块文件。
在有的仿真调试环境中并不需要此语句。
//而需要从调试环境的菜单中键入有关模块文件的路径和名称module t;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 a=0; b=0;#100 $stop; //系统任务,暂停仿真以便观察仿真波形。
endcompare m(.equal(equal),.a(a),.b(b)); //调用被测试模块t.mendmodule//---------- 测试模块源代码(方法之二):-------------------------`timescale 1ns/1ns // 定义时间单位。
夏宇闻-第三章-verilogHDL基本语法习题难理解的习题:7)请根据以下两条语句,从选项中找出正确答案。
7.1) reg [7:0] A;A=2'hFF;1) 8'b0000_0011 2) 8'h03 3) 8'b1111_1111 4) 8'b11111111标准答案:1)7.2) reg [7:0] B;B=8'bZ0;1) 8'0000_00Z0 2) 8'bZZZZ_00003) 8'b0000_ZZZ0 4) 8'bZZZZ_ZZZ0标准答案:4)8)请指出下⾯⼏条语句中变量的类型。
8.1) assign A=B;8.2) always #1Count=C+1;标准答案:A(wire) B(wire/reg) Count(reg) C(wire/reg)9)指出下⾯模块中Cin,Cout,C3,C5,的类型。
module FADD(A,B,Cin,Sum,Cout);input A, B, Cin;output Sum, Cout;....endmodulemodule Test;...FADDM(C1,C2,C3,C4,C5);...endmodule标准答案:Cin(wire) Cout(wire/reg) C3(wire/reg) C5(wire)10〕在下⼀个程序段中,当ADDRESS的值等于5'b0X000时,问casex执⾏完后A和B的值是多少。
A=0;B=0;casex(ADDRESS)5'b00: A=1;5'b10?00,5'b11?00:beginA=1;B=1;endendcase标准答案: A=1 and B=0; casex的⽤法9)指出下⾯模块中Cin,Cout,C3,C5,的类型。
module FADD(A,B,Cin,Sum,Cout);input A, B, Cin;output Sum, Cout;....endmodulemodule Test;...FADDM(C1,C2,C3,C4,C5);...endmodule标准答案:Cin(wire) Cout(wire/reg) C3(wire/reg) C5(wire)10〕在下⼀个程序段中,当ADDRESS的值等于5'b0X000时,问casex执⾏完后A和B的值是多少。
数字系统设计夏语闻第十五章例题摘要:一、引言二、数字系统设计概述三、夏语闻第十五章例题解析1.题目一2.题目二3.题目三四、例题解答过程1.题目一1.问题分析2.解答步骤3.答案2.题目二1.问题分析2.解答步骤3.答案3.题目三1.问题分析2.解答步骤3.答案五、总结正文:一、引言数字系统设计是计算机科学与技术领域中的一个重要分支,夏语闻所著的《数字系统设计》一书,以其深入浅出的讲解和丰富的例题,受到了广大读者的欢迎。
本文将对夏语闻第十五章的例题进行解析,以帮助读者更好地理解和掌握数字系统设计的相关知识。
二、数字系统设计概述数字系统设计主要研究数字电路的原理、设计和应用,包括组合逻辑电路、时序逻辑电路、存储器和微处理器等方面的内容。
数字系统设计在计算机科学、通信、控制等领域具有广泛的应用。
三、夏语闻第十五章例题解析本章共包括三道例题,分别为题目一、题目二和题目三。
1.题目一假设有一个4 位全加器,输入为A、B、C、D,求输出。
2.题目二设计一个4 位并行加法器,输入为A、B、C、D,输出为S。
3.题目三设计一个4 位并行乘法器,输入为A、B,输出为P。
四、例题解答过程1.题目一问题分析:题目要求求解4 位全加器的输出。
解答步骤:1) 根据全加器的真值表,列出输入与输出的对应关系;2) 代入题目给定的输入值,计算输出;3) 输出结果为S0、S1、S2、S3。
答案:S0、S1、S2、S3。
2.题目二问题分析:题目要求设计一个4 位并行加法器。
解答步骤:1) 根据加法器的原理,分析输入与输出的关系;2) 设计逻辑电路,实现输入到输出的映射;3) 给出加法器的真值表。
答案:根据设计原理和真值表,可得出加法器的输出。
3.题目三问题分析:题目要求设计一个4 位并行乘法器。
解答步骤:1) 根据乘法器的原理,分析输入与输出的关系;2) 设计逻辑电路,实现输入到输出的映射;3) 给出乘法器的真值表。
答案:根据设计原理和真值表,可得出乘法器的输出。