ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:72.87KB ,
资源ID:24759828      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24759828.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(蔡觉平老师西电Verilog HDL上机大作业硬件描述语言微电子学院.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

蔡觉平老师西电Verilog HDL上机大作业硬件描述语言微电子学院.docx

1、蔡觉平老师西电Verilog HDL上机大作业硬件描述语言微电子学院Verilog HDL数字集成电路设计原理与应用上机作业班级:*学号:*姓名:*题目1:数字集成电路的verilog HDL描述与仿真。要求:(1)学习使用Modelsim设计和仿真软件; (2)练习教材7.2.1中的例子; (3)掌握设计代码和测试代码的编写; (4)掌握测试仿真流程; (5)掌握Modelsim软件的波形验证方式。解答: 题目2: 简述begin-end语句块和fork-join语句块的区别,并写出下面信号对应的程序代码解答:(1)begin-end语句块和fork-join语句块的区别:1、执行顺序:be

2、gin-end语句块按照语句顺序执行,fork-join语句块所有语句均在同一时刻执行;2、语句前面延迟时间的意义:begin-end语句块为相对于前一条语句执行结束的时间,fork-join语句块为相对于并行语句块启动的时间;3、起始时间:begin-end语句块为首句开始执行的时间,fork-join语句块为转入并行语句块的时间;4、结束时间:begin-end语句块为最后一条语句执行结束的时间,fork-join语句块为执行时间最长的那条语句执行结束的时间;5、行为描述的意义:begin-end语句块为电路中的数据在时钟及控制信号的作用下,沿数据通道中各级寄存器之间的传送过程。fork-

3、join语句块为电路上电后,各电路模块同时开始工作的过程。(2)程序代码:Begin-end语句:module initial_tb1;reg A,B;initialbegin A=0;B=1; #10 A=1;B=0; #10 B=1; #10 A=0; #10 B=0; #10 A=1;B=1; endendmoduleFrk-join语句:module wave_tb2;reg A,B;parameter T=10;initialfork A=0;B=1; #T A=1;B=0; #(2*T) B=1; #(3*T) A=0; #(4*T) B=0; #(5*T) A=1;B=1;joi

4、nendmodule 题目3. 分别用阻塞和非阻塞赋值语句描述如下图所示移位寄存器的电路图。解答:(1)阻塞赋值语句module block2(din,clk,out0,out1,out2,out3);input din,clk;output out0,out1,out2,out3;reg out0,out1,out2,out3;always(posedge clk)begin out0=din; out1=out0; out2=out1; out3=out2;endendmodule(2)非阻塞赋值语句module non_block1 (din,clk,out0,out1,out2,out

5、3);input din,clk;output out0,out1,out2,out3;reg out0,out1,out2,out3;always(posedge clk) begin out0=din; out1=out0; out2=out1; out3=out2; endendmodule 题目4:设计16位同步计数器要求:(1)分析16位同步计数器结构和电路特点; (2)用硬件描述语言进行设计; (3)编写测试仿真并进行仿真。解答:(1)电路特点:同步计数器的时间信号是同步的;每当到达最高计数后就会重新计数。(2)程序代码:module comp_16 (count, clk, rs

6、t );output 15:0 count;input clk,rst; reg 15:0 count;always (posedge clk) if (rst) count=16b0000000000000000; else if (count=16b1111111111111111) count=16b0000000000000000; else count=count+1;endmodule(3)仿真代码:module comp_16_tb;wire 15:0 count;reg clk,rst; comp_16 U1 (count, clk, rst );always #1 clk=c

7、lk;initialbeginclk=0;rst=0;#1 rst=1;#10 rst=0;#10 rst=1;#10 rst=0;#99999 $finish;endendmodule 题目5. 试用Verilog HDL门级描述方式描述如下图所示的电路。解答:module zy(D0,D1,D2,D3,S1,S2,T0,T1,T2,T3,Z);output Z;input D0,D1,D2,D3,S1,S2;wire T0,T1,T2,T3,wire1,wire2;not U1(wire1,S1), U2(wire2,S2);and U3(T0,D0,wire2,wire1), U4(T1

8、,D1,S1,wire1), U5(T2,D2,S1,wire2), U6(T3,D3,S1,S2);or U7(Z,T0,T1,T2,T3,);endmodule 题目6. 试用查找真值表的方式实现真值表中的加法器,写出Verilog HDL代码:CinainbinsumCout0000000110010100110110010101011100111111解答:module homework6(SUM,COUT,A,B,CIN);output SUM,COUT;input A,B,CIN;reg SUM,COUT;always(A or B or CIN)case(A,B,CIN) 3b0

9、00:SUM=0; 3b000:COUT=0; 3b001:SUM=1; 3b001:COUT=0; 3b010:SUM=1; 3b010:COUT=0; 3b011:SUM=0; 3b011:COUT=1; 3b100:SUM=1; 3b100:COUT=0; 3b101:SUM=0; 3b101:COUT=1; 3b110:SUM=0; 3b110:COUT=1; 3b111:SUM=1; 3b111: COUT=1; endcase endmodule 题目7:设计16位同步加法器和乘法器要求:(1)分析16位同步加法器和乘法器结构和电路特点; (2)用硬件描述语言进行设计; (3)编写

10、测试仿真并进行仿真。解答:(1)16位同步加法器和乘法器结构和电路特点:加法器的进位只用考虑一位,但是乘法器的进位要考虑到32位才行。(2)程序代码:16位同步加法器:module adder(a,b,c,sum,cout); output 15:0sum; output cout; input 15:0a,b; input c; assign cout,sum=a+b+c;endmodule16位同步乘法器:module multiplier(a,b,mul); input 15:0a,b; output 31:0mul; assign mul=a*b;endmodule(3)仿真代码:16

11、位同步加法器:module adder_tb;reg 15:0a,b; reg c; wire 15:0sum; wire cout; initial begin a=8;b=8;c=1; end initial begin #10 a=16b1111111111111111;#10 b=1; end adder U2(.a (a),.b (b),.c(c),.cout(cout),.sum(sum);endmodule16位同步乘法器:module multiplier_tb; reg 15:0a,b; wire 31:0mul; initial begin a=3;b=8; end ini

12、tial begin #10 a=100; #15 b=100; end multiplier U1(.a(a),.b(b),.mul(mul);endmodule仿真截图:加法器:乘法器: 题目8. 将下面的状态转移图用Verilog HDL描述。在图中,状态机的输入只与状态的跳转有关,与状态机的输出无关,因此该状态机为摩尔型状态机。下面为三段式描述方式。解答:程序代码:module homework8(clk,out,step,clr); output 2:0out; input step,clk,clr; reg 2:0out; reg 1:0state,next_state; alwa

13、ys (posedge clk) state=next_state; always (state or clr) if(clr) next_state=0; else case(state) 2b00: case(step) 1b0:begin next_state=2b00;out=3b001;end 1b1:begin next_state=2b01;out=3b001;end endcase 2b01: begin out=3b010; next_state=2b10; end 2b10: case(step) 1b0:begin next_state=2b00;out=3b100;en

14、d 1b1:begin next_state=2b11;out=3b100;end endcase 2b11: case(step) 1b0:begin next_state=2b11;out=3b111;end 1b1:begin next_state=2b00;outy)=(10,12,14); (b=y)=(10,12,14); (s=y)=(11,13,15); (s0=y)=(11,13,15); endspecifyendmodulemodule b(a,s,b,y); input s,a,s,b; output y; wire s0; not #(4)U1(s0,s); dela

15、y_door U2(a,s,b,y,s0);endmodule 题目10.设计一个8位数字显示的简易频率计。要求:能够测试10Hz10MHz方波信号;电路输入的基准时钟为1Hz,要求测量值以8421BCD码形式输出;系统有复位键;采用分层次分模块的方法,用Verilog HDL进行设计。解答:程序代码:module x; reg standard_clk; reg test_clk; wire 7:0out; reg reset; initial begin reset=0; test_clk=0; standard_clk=0; end initial #15 reset=1; always

16、 #1 test_clk=test_clk; always #10 standard_clk=standard_clk; a U1(.reset(reset),.test_clk(test_clk),.standard_clk(standard_clk),.ratio_final(out);endmodulemodule a(reset,test_clk,standard_clk,ratio_final); input reset,test_clk,standard_clk; output 7:0ratio_final; wire mul_clk; wire reset_comp; wire

17、7:0ratio_start; and U0(reset_comp,reset,standard_clk); t U1(.ain(test_clk),.din(standard_clk),.mul(mul_clk); w U2(.clk(mul_clk),.count(ratio_start),.reset(reset_comp); c U3(.ratio_start(ratio_start),.ratio_final(ratio_final);endmodule module w(clk,count,reset); input clk,reset; output count; paramet

18、er bit=8; reg bit-1:0count; always (posedge clk or negedge reset) if(!reset) count=8b00000000; else count=count+1; endmodulemodule t(ain,din,mul); parameter width=1; input width-1:0ain,din; output width*2-1:0mul; assign mul=ain*din;endmodulemodule c(ratio_start,ratio_final); input 7:0ratio_start; ou

19、tput 7:0ratio_final; assign ratio_final=2*ratio_start;endmodule 题目11. 用Verilog HDL设计一个4位LED显示器的动态扫描译码电路。要求:4个七段显示器共用一个译码驱动电路;显示的数码管清晰明亮,无闪烁现象发生。解答:module a(out,in); output out; input in; reg6:0out; wire3:0in; always(in) begin case(in) 4d0:out=7b1111110; 4d1:out=7b0110000; 4d2:out=7b1101101; 4d3:out=

20、7b1111001; 4d4:out=7b0110011; 4d5:out=7b1011011; 4d6:out=7b1011111; 4d7:out=7b1110000; 4d8:out=7b1111111; 4d9:out=7b1111011; endcase endendmodulemodule w(in1,in2,in3,in4,out1,out2,out3,out4); output out1,out2,out3,out4; input in1,in2,in3,in4; wire 3:0in1,in2,in3,in4; wire6:0out1,out2,out3,out4; a U1

21、(.in(in1),.out(out1); a U2(.in(in2),.out(out2); a U3(.in(in3),.out(out3); a U4(.in(in4),.out(out4);endmodulemodule c; reg 3:0in1,in2,in3,in4; wire6:0out1,out2,out3,out4; initial begin in1=4b0010; in2=4b0100; in3=4b1000; in4=4b0000; end initial begin #5 in4=4b0111; in3=4b0110; in2=4b0100; in1=4b0000; end w U1(in1,in2,in3,in4,out1,out2,out3,out4); endmodule

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1