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

上传人:scccc 文档编号:12554139 上传时间:2021-12-04 格式:DOC 页数:17 大小:379.50KB
返回 下载 相关 举报
蔡觉平老师西电Verilog-HDL上机大作业硬件描述语言-微电子学院.doc_第1页
第1页 / 共17页
蔡觉平老师西电Verilog-HDL上机大作业硬件描述语言-微电子学院.doc_第2页
第2页 / 共17页
蔡觉平老师西电Verilog-HDL上机大作业硬件描述语言-微电子学院.doc_第3页
第3页 / 共17页
蔡觉平老师西电Verilog-HDL上机大作业硬件描述语言-微电子学院.doc_第4页
第4页 / 共17页
蔡觉平老师西电Verilog-HDL上机大作业硬件描述语言-微电子学院.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《蔡觉平老师西电Verilog-HDL上机大作业硬件描述语言-微电子学院.doc》由会员分享,可在线阅读,更多相关《蔡觉平老师西电Verilog-HDL上机大作业硬件描述语言-微电子学院.doc(17页珍藏版)》请在三一文库上搜索。

1、*Verilog HDL数字集成电路设计原理与应用上机作业班级学号姓名题目1:数字集成电路的verilog HDL描述与仿真要求:(1)学习使用Modelsim设计和仿真软件;(2)练习教材7.2.1中的例子;(3)掌握设计代码和测试代码的编写;(4)掌握测试仿真流程;(5)掌握Modelsim软件的波形验证方式。解答:-J /l:i-3fcEncli_dnillr?gli.-* iai"12丄11J代刪ten由可Itr手土1J1Dnnn 口 口 n nr, ninr n_rH I ooa !j 6icrLTLTLn一1厂厂厂rlntberidi_d-rillregii.min* 1

2、1&:o* 12&:o51QSHOo* AeEtbsndhEiftrE* Afr3tbeniT_sniHTejs._ a As3tbehi±_g*iHTeg3._ J AestbenctLF ilb egk Ii_r.noF 览 EQZBl n. EMJTI_-Unjtlj题目2:简述begin-end语句块和fork-join 语句块的区别,并写出下面信号 对应的程序代码解答:(1) begin-end语句块和fork-join语句块的区别:1、 执行顺序:begin-end语句块按照语句顺序执行,fork-join语句块所 有语句均在同一时刻执行;2、 语句前面延

3、迟时间的意义:beg in-e nd语句块为相对于前一条语句执行 结束的时间,fork-joi n语句块为相对于并行语句块启动的时间;3、 起始时间:begin-end语句块为首句开始执行的时间,fork-join语句 块为转入并行语句块的时间;4、 结束时间:begin-end语句块为最后一条语句执行结束的时间,forkjoin 语句块为执行时间最长的那条语句执行结束的时间;5、行为描述的意义:begin-end语句块为电路中的数据在时钟及控制信号的作用下,沿数据通道中各级寄存器之间的传送过程。fork-join 语句块为电路上电后,各电路模块同时开始工作的过程。(2) 程序代码:Beg i

4、n-end 语句:module in itial_tb1 ;reg A,B; in itial beg inA=0;B=1;#10 A=1;B=0;#10 B=1;#10 A=0;#10 B=0;#10 A=1;B=1;end en dmoduleFrk-joi n 语句:module wave_tb2;reg A,B;parameter T=10;in itial forkA=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 n en dmodule题目3.分别用阻塞和非阻塞赋值语句描述如下图所示移位寄存

5、器的电路图outOoutlout2解答:(1)阻塞赋值语句module block2(di n,clk,out0,out1,out2,out3); in put din ,clk;output out0,out1,out2,out3;reg out0,out1,out2,out3;always(posedge clk)beginout0=di n;out 1= out0;out2=out1;out3=out2;enden dmodule(2 )非阻塞赋值语句module non_block1 (di n,clk,out0,out1,out2,out3); in put din ,clk;out

6、put out0,out1,out2,out3;reg out0,out1,out2,out3;always(posedge clk)beginout0<=di n;out1<=out0;out2<=out1;out3<=out2;enden dmodule题目4:设计16位同步计数器 要求:(1)分析16位同步计数器结构和电路特点;(2) 用硬件描述语言进行设计;(3) 编写测试仿真并进行仿真。解答:(1) 电路特点:同步计数器的时间信号是同步的;每当到达最高计数后就会重新计数。(2) 程序代码:module comp_16 (co unt, elk, rst );o

7、utput 15:0 count;in put clk,rst;reg 15:0 cou nt;always (posedge clk)if (rst) count<=16'b00000;elseif (coun t=16'b1111111111111111)cou nt<=16'b00000;elsecoun t<=co un t+1;en dmodule(3) 仿真代码:module comp_16_tb;wire 15:0 count;reg clk,rst;comp_16 U1 (count, clk, rst );always #1 clk=

8、clk;in itialbeginclk=0;rst=0;#1 rst=1;#10 rst=0;#10 rst=1;#10 rst=0;#99999 $finish;enden dmodule题目5试用Verilog HDL门级描述方式描述如下图所示的电路。D3T3解答:module zy(D0,D1,D2,D3,S1,S2,T0,T1,T2,T3,Z); output Z;in put 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),U

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

10、)3'b000:SUM<=0;3'bOOO:COUT<=O;3'b001:SUM<=1;3'bOO1:COUT<=O;3'b010:SUM<=1;3'bO1O:COUT<=O;3'b011:SUM<=0;3'b011:COUT<=1;3'b100:SUM<=1;3'b100:COUT<=0;3'b101:SUM<=0;3'b101:COUT<=1;3'b110:SUM<=0;3'b110:COUT<=

11、1;3'b111:SUM<=1;3'b111: COUT<=1;endcaseen dmodule题目7:设计16位同步加法器和乘法器要求:(1)分析16位同步加法器和乘法器结构和电路特点;(2)用硬件描述语言进行设计;(3)编写测试仿真并进行仿真。解答:(1) 16 位同步加法器和乘法器结构和电路特点:加法器的进位只用考虑一位,但是乘法器 的进位要考虑到 32 位才行。(2) 程序代码:16 位同步加法器:module adder(a,b,c,sum,cout);output 15:0sum;output cout;input 15:0a,b;input c;as

12、sign 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 位同步加法器:module adder_tb;reg 15:0a,b;reg c;wire 15:0sum;wire cout;initialbegin a=8;b=8;c=1;endinitialbegin#10 a=16'b1111111111111111;#10 b=1;endadder U2(.a (a),.b (b),

13、.c(c),.cout(cout),.sum(sum);endmodule16 位同步乘法器:module multiplier_tb;reg 15:0a,b;wire 31:0mul;initialbegina=3;b=8; end in itial begin #10 a=100; #15 b=100;endmultiplier U1(.a(a),.b(b),.mul(mul); en dmodule仿真截图:加法器:H 阳"-defaiit/adder_tb/a /adder_tb/b /addei_tb/cD丿/addef_tb/sum/addei_tb?ccul11I111

14、1111111111111QQOOOOOOOOOO. 11111111111111T11000000X00000001lOOOOOOQOOODOIQbo1:oooooocooooaootn11i110000300000000001000000000000.:OuOOOOCornocio 叩 isnm乘法器:加训和时血3 /nulji?r_tb/bwave - def auk1(330000(0(3 OCjboco3coD(m jo一I.Q30CDD(OJ0CO1 DCIQlOCODKWOOIJOCIIICtacoocosoc JDOCC. IOrnjnnMO?OroorOJ-OOl1l 30C

15、1D0000000000001100100 OOmCOODOIKMKX) ooo(x)oooooa»i题目8.将下面的状态转移图用Verilog HDL描述。在图中,状态机的输入只与状态的跳转有关,与状态机的输出无关,因此该状态机为摩尔型状态机。下面为三段式描述方式。start=0clr=1StateOout=001step3=1start=1step3=0State3out=111step2=1step2=0State1 out=010State2out=100解答: 程序代码: module homework8(clk,out,step,clr);output 2:0out;in

16、put step,clk,clr;reg 2:0out;reg 1:0state,next_state;always (posedge clk)state<=next_state;always (state or clr)if(clr) next_state<=0;else case(state) 2'b00: case(step)1'b0:begin next_state<=2'b00;out<=3'b001;end1'b1:begin next_state<=2'b01;out<=3'b001;en

17、d endcase2'b01:begin out<=3'b010; next_state<=2'b10;end2'b10:case(step)1'b0:begin next_state<=2'b00;out<=3'b100;end1'b1:begin next_state<=2'b11;out<=3'b100;end endcase2'b11:case(step)1'b0:begin next_state<=2'b11;out<=3'b

18、111;end1'b1:begin next_state<=2'b00;out<=3'b111;end endcase endcaseendmodule仿真代码:module homework8_tb;reg clk,step,clr;wire 3:0out;always#5 clk=clk;in itialbegi n clk=0;clr=1;step=1;endin itialbegin#5clr=0;#10 step=0;#10step=1;endhomework8 U1(clk,out,step,clr);en dmodule仿真截图:/homewo

19、ik8_l:b/ck /hamewofk9_tb/step /homeworkS.tb/clr /horneock8_tb/QtJt0汕z010 z1Q0 z11l zOOl zOIQ z100题目9.如下图所示电路,若其延迟时间设定如表所示,试写Verilog HDL程序设计该电路。路径最小值(min)典型值(type)最大值(max)a_sa_y101214s_sO_sa_y151719s_sb_y111315b_sb_y101214解答:程序代码:module a(a,s,b,y,sO);in put a,b,s,sO;output y;assig n y=(s&&b)|

20、(sO&&a);specify(a=>y)=(io,i2,14);(b=>y)=(10,12,14);(s=>y)=(11,13,15); (s0=>y)=(11,13,15);en dspecify en dmodule module b(a,s,b,y);input s,a,s,b;output y;wire s0;not# U1(s0,s);delay_door U2(a,s,b,y,s0);en dmodule题目10.设计一个8位数字显示的简易频率计。要求: 能够测试10Hz10MHz方波信号; 电路输入的基准时钟为1Hz,要求测量值以8421

21、BCD码形式输出; 系统有复位键; 采用分层次分模块的方法,用Verilog HDL进行设计。解答:程序代码:module x;reg sta ndard_clk;reg test_clk;wire 7:0out;reg reset;in itial beg in reset=0; test_clk=0; sta ndard_clk=0; endinitial #15 reset=1;always #1 test_clk=test_clk;always #10 sta ndard_clk=sta ndard_clk;a U1(.reset(reset),.test_clk(test_clk),

22、.sta ndard_clk(sta ndard_clk),.ratio_fi nal(out); en dmodulemodule a(reset,test_clk,sta ndard_clk,ratio_fi nal);in put reset,test_clk,sta ndard_clk;output 7:0ratio_fi nal;wire mul_clk;wire reset_comp;wire 7:0ratio_start;and UO(reset_comp,reset,sta ndard_clk);t U1(.ai n(test_clk),.di n(sta ndard_clk)

23、,.mul(mul_clk);w U2(.clk(mul_clk),.co un t(ratio_start),.reset(reset_comp);c U3(.ratio_start(ratio_start),.ratio_fi nal(ratio_fi nal);en dmodulemodule w(clk,co un t,reset);in put clk,reset;output count;parameter bit=8;reg bit-1:0cou nt;always (posedge clk or n egedge reset)if(!reset)cou nt<=8'

24、;b00000000;elsecoun t<=co un t+1;en dmodulemodule t(ai n,d in ,mul);parameter width=1;in put width-1:0ai n,di n;output width*2-1:0mul;assig n mul=a in *di n;en dmodulemodule c(ratio_start,ratio_fi nal);in put 7:0ratio_start;output 7:0ratio_fi nal;assig n ratio_fi nal=2*ratio_start;en dmodule题目11.

25、用Verilog HDL设计一个4位LED显示器的动态扫描译码电路。要求: 4 个七段显示器共用一个译码驱动电路; 显示的数码管清晰明亮,无闪烁现象发生。解答: module a(out,in);output out;input in;reg6:0out;wire3:0in;always(in)begincase(in)4'd0:out=7'b1111110;4'd1:out=7'b0110000;4'd2:out=7'b1101101;4'd3:out=7'b1111001;4'd4:out=7'b0110011

26、;4'd5:out=7'b1011011;4'd6:out=7'b1011111;4'd7:out=7'b1110000;4'd8:out=7'b1111111;4'd9:out=7'b1111011;endcaseendendmodulemodule 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

27、,out4;a U1(.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;initialbeginin1=4'b0010;in2=4'b0100;in3=4'b1000;in4=4'b0000;endinitialbegin#5 in4=4'b0111;in3=4'b0110;in2=4'b0100;in1=4'b0000;endw U1(in1,in2,in3,in4,out1,out2,out3,out4);endmodule

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1