Verilog-教程(第三版)夏闻宇-第三部分练习题答案(共11页).docx

上传人:飞****2 文档编号:14474725 上传时间:2022-05-04 格式:DOCX 页数:11 大小:184.87KB
返回 下载 相关 举报
Verilog-教程(第三版)夏闻宇-第三部分练习题答案(共11页).docx_第1页
第1页 / 共11页
Verilog-教程(第三版)夏闻宇-第三部分练习题答案(共11页).docx_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《Verilog-教程(第三版)夏闻宇-第三部分练习题答案(共11页).docx》由会员分享,可在线阅读,更多相关《Verilog-教程(第三版)夏闻宇-第三部分练习题答案(共11页).docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上Verilog-教程(第三版)夏闻宇-第三部分练习题答案专心-专注-专业1 设计一个字节(8位)的比较器,要求:比较两个字节的大小,如a7:0大于b7:0,则输出高电平,否则输出低电平;并改写测试模型,使其能进行比较全面的测试。模块源代码: 测试模块的源代码:timescale 1ns / 1psmodule t;reg 7:0 a;reg 7:0 b; reg clock;wire out;initial begina = 0;b = 0; clock=0;endalways #50 clock=clock;always (posedge clock) begina

2、=$random%256;b=$random%256; endinitial begin #1000 $stop;end compare uut (.out(out), .a(a), .b(b); endmodulemodule compare(out,a,b);input 7:0 a,b;output out;reg out;always (a or b) beginif(ab) out=1;else out=0;endendmodule仿真结果: 由图有:当a=8,b=8(即ab时),输出out为高电平;当a=8,b=8(即ab时),输出out为低电平,故满足要求。2.依然作clk_in的

3、2分频clk_out,要求输出时钟的相位与上面的1/2分频器的输出正好相反。编写测试模块,给出仿真波形。书上1/2分频器时序波形模块源代码: 测试模块源代码:timescale 1ns / 100psmodule top;reg clk;reg reset;wire clk_out; always #50 clk=clk;initial beginclk = 0;reset = 1;#10 reset=0;#110 reset=1;# $stop;endhalf_clk uut (.clk_in(clk), .reset(reset), .clk_out(clk_out);endmodulem

4、odule half_clk(clk_in,reset,clk_out);input clk_in,reset;output clk_out;reg clk_out;always (posedge clk_in)begin if(!reset) clk_out=1;else clk_out=clk_out;endendmodule 仿真波形:由上图可知clk_out的输出波形相位与前面输出波形相反。3. 利用10 MHZ的时钟,设计一个单周期形状的周期波形。分析:时钟信号f=10MHZ,分频1/20,f1=500KHZ时,j从0计到9(10个数)跳转完成半个周期,T0/2 =0.1us;图中可

5、把T分为三段即T1=T3=20us=200*0.1us(所以在T1阶段j要计200个数),而T2=10us可用延迟10000ns翻转达到。图中T=50us之后不显示,所以测试时到达50000ns时停止。故其模块源代码和测试模块源代码如下:模块源代码: 测试模块源代码:module fdivision(reset,F10M,F500K);input reset,F10M;output F500K;reg F500K;reg 7:0 j;always (posedge F10M) begin if(!reset) begin F500K=0; j=0; end else if(j=199) beg

6、in j=0;F500K=F500K;#10000 F500K=F500K; endelsej=j+1;endendmoduletimescale 1ns / 100psdefine clk_cycle 50module fdivision_Top;reg reset;reg F10M_clk;wire F500K_clk;always #clk_cycle F10M_clk=F10M_clk;initial beginreset = 1;F10M_clk = 0;#100 reset=0;#100 reset=1; #49800 $stop;/因为前面已经延迟了200个单位时间,再延迟498

7、00个单位时间到达50000ns。endfdivision uut (.reset(reset), .F10M(F10M_clk), .F500K(F500K_clk); endmodule仿真波形:4.在blocking模块中按如下两种写法,仿真与综合的结果会有什么样的变化?作出仿真波形,分析综合结果。always (posedge clk) begin c=b; b=a; endAlways (posedge clk) b=a;Always (posedge clk) c=b; module blocking_2(clk,a,b,c);input 3:0 a;input clk;outpu

8、t 3:0 b,c;reg 3:0 b,c;always (posedge clk) b=a;always (posedge clk) c=b;endmodulemodule blocking_1(clk,a,b,c);input 3:0 a;input clk;output 3:0 b,c;reg 3:0 b,c;always (posedge clk) begin c=b;b=a; endendmodule模块源代码: 模块源代码: 综合结果 综合结果由以上图形可知,其综合结果一样。其仿真图形如下所示:分析:当时钟上升沿来临,b1、b2的值一样都等于时钟上升沿到来前a的值,两种写法的区别在

9、于c值的不同。第一种写法c1的值等于前一个b1的值;第二种写法c2的值等于b2的值即c1比c2慢一个时钟信号周期。5.运用always块设计一个8路数据选择器。要求:每路输入数据与输出数据均为4位2进制数,当选择开关(至少3位)或输入数据发生变化时,输出数据也相应变化。模块源代码: 测试模块源代码:timescale 1ns / 1psmodule m;wire 3:0 out;reg 3:0 i0;reg 3:0 i1;reg 3:0 i2;reg 3:0 i3;reg 3:0 i4;reg 3:0 i5;reg 3:0 i6;reg 3:0 i7;reg 2:0 s;initial beg

10、ins=0;repeat(20)begin#100 i0=$random%15;i1=$random%15;i2=$random%15;i3=$random%15;i4=$random%15;i5=$random%15;i6=$random%15; i7=$random%15;s=s+1; end#100 $stop;endselect8_to_1 uut (i0,i1,i2,i3,i4,i5,i6,i7,s,out);endmodulemodule select8_to_1(i0,i1,i2,i3,i4,i5,i6,i7,s,out);input 3:0 i0,i1,i2,i3,i4,i5,i6,i7;input 2:0 s;output 3:0 out;reg 3:0 out;always (i0,i1,i2,i3,i4,i5,i6,i7,s)begin case(s)3b000: out=i0;3b001: out=i1;3b010: out=i2;3b011: out=i3;3b100: out=i4;3b101: out=i5;3b110: out=i6;3b111: out=i7;endcaseendendmodule仿真波形如下:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁