(完整版)VerilogHDL数字设计与综合(第二版)第七章课后习题答案_第1页
(完整版)VerilogHDL数字设计与综合(第二版)第七章课后习题答案_第2页
(完整版)VerilogHDL数字设计与综合(第二版)第七章课后习题答案_第3页
(完整版)VerilogHDL数字设计与综合(第二版)第七章课后习题答案_第4页
(完整版)VerilogHDL数字设计与综合(第二版)第七章课后习题答案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 .声明一个名为osci11ate的寄存器变量并将它初始化为0。使其每30个时间单位进行一次取反操作。不要使用always语句。提示:使用 forever循环。答:代码如下:reg oscillate;initialbeginosci11ate<=0;forever #30 osci11ate<=oscillate;end2 .设计一个周期为 40个时间单位的时钟信号,其占空比为 25%。使用always和initial块进行 设计。将其在仿真 0时刻的值初始化为0。答:代码如下:reg clock;initialc1ock<=0;always begin#30 c1ock

2、<=1;#10 c1ock<=0;end3 .给定下面含有阻塞过程赋值语句的initial块。每条语句在什么仿真时刻开始执行?a, b, c和d在仿真过程中的中间值和仿真结束时的值是什么?initialbegina = lhbO;b = #1。 l'bi;C = #51出口;d - #20 bt c; end答:仿真输出结果:* /c.hapterr_O/a /tlhaptei 7_0/b 7_0/c/chapter010 eno111Nuh00nsi i lipi iluiiiligii 1 i i in20|1 111 II | p 11 1 U 111 |I 1304

3、04 .在第3题中,如果initial块中包括的是非阻塞过程赋值语句,那么各个问题的答案是什么?答:#Verilog HDL数字设计与综合(第二版)最终d没有输出,因为d<= #20 a,b,c;语句执行的是先将 a, b, c取值存储,在20个时间单位后将存储的值赋给 d,因为b, c在初始时刻没有值,所以 d值也是不确定的5 .指出在下面的 Verilog代码中各条语句的执行顺序。其中是否含有不确定的执行顺序?a, b,c和d的最终值是什么?initialbegina - lhb0; NO c - b;endinitial beginb > lhbl;#0 d > a;e

4、nd答:先执行a=1' b0,b=1 '蜘执行#0 c=b,#0 d=a,执行顺序不确定,最终输出结果 a=0,b=1,c=1,d=0.6.在下面的低J子中,d的最终值是什么?initialbeginb = l*bl; c = IbO;#io b = 1 initial begind - M25 (b | c);end答:仿真输出波形如下,最终输出结果 d=1 o 0时刻b|c的值是1,在25个时间刻度后赋给 d7 .使用带有同步清零端的 D触发器(清零端高电平有效,在时钟下降沿执行清零操作)设计一个下降沿触发的 D触发器,只能使用行为语句。提示:D触发器的输出q应当声明为寄存

5、器变量。使用设计出的D触发器输出一个周期为10个时间单位的时钟信号。答:第七题和第八题参见chapter7.v8 .使用带有异步清零端的 D触发器设计第7题中要求的D触发器(在清零端变为高电平后立即 执行清零操作,无需等待下一个时钟下降沿),并对这个D触发器进行测试。答:第七题和第八题参见chapter7.v9 .使用wait语句设计一个电平敏感的锁存器,该锁存器的输入信号为d和clock,输出为q。其功能是当clock 1时q = d。答:代码及输出波形如下:module my_latch(d,clock,q);input d,clock;output q;reg q;alwayswait(

6、clock)begin# 1q<=d;/注意,这里的赋值语句前必须要加上#延迟,否则无法仿真。endendmodule module test79;reg d,clock;wire q;initialclock<=0;always# 10 clock<=clock;initialbegind<=1'b0;# 15 d<=1'b1;# 50 d<=1'b0;# 20 $stop;endmy_latch my_latch1(d,clock,q); endmodule10 .使用条件语句设计例 7.19中的四选一多路选择器。外部端口必须保持

7、不变。 答:代码如下(标注行可以去掉)#Verilog HDL数字设计与综合(第二版)module mux_41(out,i0,i1,i2,i3,s1,s0);input i0,i1,i2,i3;input s0,s1;output out;reg out;always (*)if(s1=0 && s0=0)out<=i0;else if (s1=0 && s0=1)out<=i1;else if (s1=1 && s0=0)out<=i2;else if (s1=1 && s0=1)out<=i3;els

8、e $display("Invalid control signals"); / 可去endmodule11 .使用条件语句对本章中的交通信号灯控制器进行重新设计。答:部分代码如下,其余代码与书中相同。always (state)beginhwy=GREEN;cntry=RED;if(state=S1)hwy =YELLOW;else if (state=S2)hwy =RED;else if (state=S3)beginhwy=RED;cntry=GREEN;endelse if (state=S4)beginhwy=RED;cntry=YELLOW;else begi

9、n hwy=GREEN; cntry=RED;endendalways (state or X)beginif(state=S0)beginif (X)next_state=S1;elsenext_state=S0;endelse if(state=S1)beginrepeat('Y2RDELAY) (posedge clock); next_state=S2;endelse if(state=S2)beginrepeat('R2GDELAY) (posedge clock); next_state=S3;endelse if(state=S3)beginif(X)next_s

10、tate=S3;elsenext_state=S4;endelse if(state=S4)beginrepeat('Y2RDELAY) (posedge clock); next_state=S0;endelse第7章行为级建模83next_state=S0;end12 .使用case语句设计八功能的算术运算单元( ALU ),其输入信号a和b均为4位,功能选择 信号select为3位,输出信号out为5位。算术运算单元ALU所执行的操作与 select信号有关,具体关系见下表。忽略输出结果中的上溢和下溢的位。select信号功能3 'b 000out = a3 'b

11、 001out = a + b3 'b 010out = a b3 'b 011out = a / b3 'b 100out = a % b (余数)3 'b 101out = a << 13 'b 110out = a >> 13 '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)3

12、'b000: out=a;3'b001: out=a+b;3'b010: out=a-b;3'b011: out=a/b;3'b100: out=a%b;3'b101: out=a<<1;3'b110: out=a>>1;3'b111: out=a>b;default: out=5'b00000;endcase endmodule输出波形3-J2门加1010Man I1 I111II IDO17bk&oookThr Did 1Terr;in nojOLDDDI-TCIWO忡T-TiMf

13、iri iI r i1#Verilog HDL数字设计与综合(第二版)13 .使用while循环设计一个时钟信号发生器。时钟信号的初值为0,周期为10个时间单位。答:代码如下module s13;reg clock;initialbeginclock<=0;while #5 clock<=clock;#1000 $stop;endendmodule14 .使用for循环对一个长度为1024 (地址从0到1023)、位宽为4的寄存器类型数组 cache_ var进行初始化,把所有单元都设置为0。答:简单的for语句module s14;reg 3:0 cache_var 0:1023

14、;integer count;initialfor(count=0;count<1024;count=count+1)cache_varcount=0;endmodule15 .使用forever循环设计一个时钟彳t号,周期为 10,占空比为40%,初值为0答:module s15;reg clock;initialbeginclock<=0;foreverbegin#6 clock<=1;#4 clock<=0;endendendmodule第7章行为级建模8516 .使用repeat将语句a = a + 1延迟20个时钟上升沿之后再执行。答:initialbegin

15、repeat (delay) (posedge clock) i<=i+1;a<=a+1;end17 .下面是一个内嵌顺序块和并行块的块语句。该块的执行结束时间是多少?事件的执行顺序是 怎样的?每条语句的仿真结束时间是多少?initial beginx = 1#5 y I'bl; fork# 20 ® " X;# 15 b y; join M4Q x = I1bl;fork# 10 p - x; begin#10 a - y;#30 b > x; end#5 in y; join end答:仿真器输出如下,作为参考#0 x= 0,y= x,a= x

16、,b= x,p= x,m= x/x=1 'b0#5 x= 0,y= 1,a= x,b= x,p= x,m= x/y=1 'b1#20 x= 0,y= 1,a= x,b= 1,p= x,m= x/b=y#25 x= 0,y= 1,a= 0,b= 1,p= x,m= x/a=x#65 x= 1,y= 1,a= 0,b= 1,p= x,m= x/x=1 'b1#70 x= 1,y= 1,a= 0,b= 1,p= x,m= 1/m=y#75 x= 1,y= 1,a= 1,b= 1,p= 1,m= 1/p=x在时间75之后,还有#10 a=y; #30 b=x;语句,由于ab原有值是11,没有变化,故仿真器没有记录。在#85执行a=y,在#105执行b=x。全部结束的时间为 #10518 .用forever循环语句、命名块和禁用命名块来设计一个八位计数器。这个计数器从count = 5开始计数,到count = 67结束计数。每个时钟正跳变沿计数器加1。时钟的周期为10。计数disable 语句)器的计数只用了一次循环,然后就被禁用了(提示:使用 答:参考代码如下。module s18;reg clock;re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论