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

上传人:b****4 文档编号:16037116 上传时间:2022-11-17 格式:DOCX 页数:17 大小:72.88KB
下载 相关 举报
蔡觉平老师西电VerilogHDL上机大作业硬件描述语言微电子学院Word格式.docx_第1页
第1页 / 共17页
蔡觉平老师西电VerilogHDL上机大作业硬件描述语言微电子学院Word格式.docx_第2页
第2页 / 共17页
蔡觉平老师西电VerilogHDL上机大作业硬件描述语言微电子学院Word格式.docx_第3页
第3页 / 共17页
蔡觉平老师西电VerilogHDL上机大作业硬件描述语言微电子学院Word格式.docx_第4页
第4页 / 共17页
蔡觉平老师西电VerilogHDL上机大作业硬件描述语言微电子学院Word格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

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

《蔡觉平老师西电VerilogHDL上机大作业硬件描述语言微电子学院Word格式.docx》由会员分享,可在线阅读,更多相关《蔡觉平老师西电VerilogHDL上机大作业硬件描述语言微电子学院Word格式.docx(17页珍藏版)》请在冰豆网上搜索。

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

3、起始时间:

begin-end语句块为首句开始执行的时间,fork-join语句块为转入并行语句块的时间;

4、结束时间:

begin-end语句块为最后一条语句执行结束的时间,fork-join语句块为执行时间最长的那条语句执行结束的时间;

5、行为描述的意义:

begin-end语句块为电路中的数据在时钟及控制信号的作用下,沿数据通道中各级寄存器之间的传送过程。

fork-join语句块为电路上电后,各电路模块同时开始工作的过程。

(2)程序代码:

Begin-end语句:

moduleinitial_tb1;

regA,B;

initial

begin

A=0;

B=1;

#10A=1;

B=0;

#10B=1;

#10A=0;

#10B=0;

end

endmodule

Frk-join语句:

modulewave_tb2;

parameterT=10;

fork

#TA=1;

#(2*T)B=1;

#(3*T)A=0;

#(4*T)B=0;

#(5*T)A=1;

join

题目3.分别用阻塞和非阻塞赋值语句描述如下图所示移位寄存器的电路图。

(1)阻塞赋值语句

moduleblock2(din,clk,out0,out1,out2,out3);

inputdin,clk;

outputout0,out1,out2,out3;

regout0,out1,out2,out3;

always@(posedgeclk)

out0=din;

out1=out0;

out2=out1;

out3=out2;

end

(2)非阻塞赋值语句

modulenon_block1(din,clk,out0,out1,out2,out3);

begin

out0<

=din;

out1<

=out0;

out2<

=out1;

out3<

=out2;

题目4:

设计16位同步计数器

(1)分析16位同步计数器结构和电路特点;

(2)用硬件描述语言进行设计;

(3)编写测试仿真并进行仿真。

(1)电路特点:

同步计数器的时间信号是同步的;

每当到达最高计数后就会重新计数。

modulecomp_16(count,clk,rst);

output[15:

0]count;

inputclk,rst;

reg[15:

always@(posedgeclk)

if(rst)count<

=16'

b00000;

else

if(count==16'

b1111111111111111)

count<

=count+1;

(3)仿真代码:

modulecomp_16_tb;

wire[15:

regclk,rst;

comp_16U1(count,clk,rst);

always#1clk=~clk;

clk=0;

rst=0;

#1rst=1;

#10rst=0;

#10rst=1;

#99999$finish;

题目5.试用VerilogHDL门级描述方式描述如下图所示的电路。

modulezy(D0,D1,D2,D3,S1,S2,T0,T1,T2,T3,Z);

outputZ;

inputD0,D1,D2,D3,S1,S2;

wireT0,T1,T2,T3,wire1,wire2;

notU1(wire1,S1),

U2(wire2,S2);

andU3(T0,D0,wire2,wire1),

U4(T1,D1,S1,wire1),

U5(T2,D2,S1,wire2),

U6(T3,D3,S1,S2);

orU7(Z,T0,T1,T2,T3,);

题目6.试用查找真值表的方式实现真值表中的加法器,写出VerilogHDL代码:

Cin

ain

bin

sum

Cout

1

modulehomework6(SUM,COUT,A,B,CIN);

outputSUM,COUT;

inputA,B,CIN;

regSUM,COUT;

always@(AorBorCIN)

case({A,B,CIN})

3'

b000:

SUM<

=0;

COUT<

b001:

=1;

b010:

b011:

b100:

b101:

b110:

b111:

COUT<

endcase

endmodule

题目7:

设计16位同步加法器和乘法器

(1)分析16位同步加法器和乘法器结构和电路特点;

(2)用硬件描述语言进行设计;

(1)16位同步加法器和乘法器结构和电路特点:

加法器的进位只用考虑一位,但是乘法器的进位要考虑到32位才行。

16位同步加法器:

moduleadder(a,b,c,sum,cout);

output[15:

0]sum;

outputcout;

input[15:

0]a,b;

inputc;

assign{cout,sum}=a+b+c;

16位同步乘法器:

modulemultiplier(a,b,mul);

output[31:

0]mul;

assignmul=a*b;

moduleadder_tb;

regc;

wire[15:

wirecout;

initial

begin

a=8;

b=8;

c=1;

#10a=16'

b1111111111111111;

#10b=1;

adderU2(.a(a),.b(b),.c(c),.cout(cout),.sum(sum));

modulemultiplier_tb;

reg[15:

wire[31:

initial

a=3;

#10a=100;

#15b=100;

multiplierU1(.a(a),.b(b),.mul(mul));

仿真截图:

加法器:

乘法器:

题目8.将下面的状态转移图用VerilogHDL描述。

在图中,状态机的输入只与状态的跳转有关,与状态机的输出无关,因此该状态机为摩尔型状态机。

下面为三段式描述方式。

程序代码:

modulehomework8(clk,out,step,clr);

output[2:

0]out;

inputstep,clk,clr;

reg[2:

reg[1:

0]state,next_state;

always@(posedgeclk)

state<

=next_state;

always@(stateorclr)

if(clr)

next_state<

case(state)

2'

b00:

case(step)

1'

b0:

beginnext_state<

=2'

b00;

out<

=3'

b001;

b1:

b01;

b01:

out<

b010;

b10;

end

b10:

b100;

b11;

b11:

b111;

仿真代码:

modulehomework8_tb;

regclk,step,clr;

wire[3:

always

#5clk=~clk;

beginclk=0;

clr=1;

step=1;

#5c

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

当前位置:首页 > 工程科技 > 交通运输

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

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