西北工业大学数字电子技术基础实验报告实验3.docx

上传人:b****4 文档编号:3183080 上传时间:2022-11-19 格式:DOCX 页数:13 大小:1.25MB
下载 相关 举报
西北工业大学数字电子技术基础实验报告实验3.docx_第1页
第1页 / 共13页
西北工业大学数字电子技术基础实验报告实验3.docx_第2页
第2页 / 共13页
西北工业大学数字电子技术基础实验报告实验3.docx_第3页
第3页 / 共13页
西北工业大学数字电子技术基础实验报告实验3.docx_第4页
第4页 / 共13页
西北工业大学数字电子技术基础实验报告实验3.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

西北工业大学数字电子技术基础实验报告实验3.docx

《西北工业大学数字电子技术基础实验报告实验3.docx》由会员分享,可在线阅读,更多相关《西北工业大学数字电子技术基础实验报告实验3.docx(13页珍藏版)》请在冰豆网上搜索。

西北工业大学数字电子技术基础实验报告实验3.docx

西北工业大学数字电子技术基础实验报告实验3

 

西北工业大学-数字电子技术基础-实验报告-实验3

数字电子技术基础第三次实验报告

一、描述QuartusII软件基本使用步骤

1编写Verilog代码,用文本编辑器正确编写源文件,并经modelsim仿真确认该电路设计正确。

2打开QuartusII软件,新建工程Newproject(注意工程名和设计文件的module名保持一致),选择和开发板一致的FPGA器件型号。

3添加文件,点击file->open,之后选择要添加的文件,并勾选Addfiletocurrentproject.

4编译,StartCompilation,编译源文件(如有错误修改后,重新编译)。

5查看电路结构,使用Tool->RTLviewer工具查看电路图结构,是否和预期设计一致。

二、题目代码以及波形分析

1.设计一款时钟上升沿触发的D寄存器

a)编写模块源码

moduleflipflop(D,Clock,Q);

inputD,Clock;

outputregQ;

always@(posedgeClock)

Q=D;

endmodule

b)测试模块

`timescale1ns/1ps

moduletb_flipflop;

regClock_test;

regD_test;

wireQ_test;

initial

Clock_test=0;

always#20Clock_test=~Clock_test;

initial

D_test=0;

always#77D_test=~D_test;

flipflopUUT_flipflop(.Clock(Clock_test),.D(D_test),.Q(Q_test));

endmodule

c)仿真后的波形截图

每当时钟上升沿到来时,触发器把D的信号传给Q

d)综合后的RTL图形

2.设计一款4bBit具有并行加载功能的移位寄存器编写模块源码

a)编写模块源码

modulemuxdff(D0,D1,Sel,Clock,Q);

inputD0,D1,Sel,Clock;

outputregQ;

wireD;

assignD=Sel?

D1:

D0;

always@(posedgeClock)

Q<=D;

endmodule

moduleshift4(R,L,w,Clock,Q);

input[3:

0]R;

inputL,w,Clock;

outputwire[3:

0]Q;

muxdffStage3(w,R[3],L,Clock,Q[3]);

muxdffStage2(Q[3],R[2],L,Clock,Q[2]);

muxdffStage1(Q[2],R[1],L,Clock,Q[1]);

muxdffStage0(Q[1],R[0],L,Clock,Q[0]);

endmodule

b)测试模块

`timescale1ns/1ps

moduletb_shift4;

regClock_test;

regL_test;

regw_test;

reg[3:

0]R_test;

wire[3:

0]Q_test;

initial

Clock_test=0;

always#10Clock_test=~Clock_test;

initial

begin

L_test=1;

#14

L_test=0;

//always#14L_test=~L_test;

end

initial

w_test=0;

always#13w_test=~w_test;

initial

R_test=4'b1010;

shift4UUT_shift4(.Clock(Clock_test),.L(L_test),.w(w_test),.R(R_test),.Q(Q_test));

endmodule

c)仿真后的波形截图

L为0时并行加载,数组R为加载时的输入。

L为1时移位,数组Q右移一位,左端补当前变量w的值。

d)综合后的RTL图形

3.设计一款4bit带复位功能的计数器

a)编写模块源码

moduleupcount(Reset,Clock,E,Q);

inputReset,Clock,E;

outputreg[3:

0]Q;

always@(posedgeReset,posedgeClock)

if(Reset)

Q<=0;

elseif(E)

Q<=Q+1;

endmodule

b)测试模块

`timescale1ns/1ps

moduletb_upcount;

regReset_test;

regClock_test;

regE_test;

wire[3:

0]Q_test;

initial

Clock_test=0;

always#5Clock_test=~Clock_test;

initial

begin

Reset_test=1;

E_test=0;

#2

Reset_test=0;

#8

E_test=1;

#184

Reset_test=1;

#2

Reset_test=0;

#32

E_test=0;

end

upcountUUT_upcount(.Reset(Reset_test),.Clock(Clock_test),.E(E_test),.Q(Q_test));

endmodule

c)仿真后的波形截图

Reset信号为1时重置。

使能信号E为1时计数器工作,每当时钟上升沿到来时,输出Q加1.

d)综合后的RTL图形

4.设计一款定时器,(如:

时钟频率20M,定时为1秒)。

a)编写模块源码

moduletimer(Reset,Clock,E,Q,Sign);

inputReset,Clock,E;

outputreg[24:

0]Q=25'b000000000000000;

outputregSign;

always@(posedgeReset,posedgeClock)

if(Reset)

Q<=0;

elseif(E)

begin

if(Q<20000000)

begin

Q<=Q+1;

Sign=0;

end

elseif(Q>=20000000)

begin

Sign=1;

Q<=0;

end

end

endmodule

b)测试模块

`timescale1ns/1ps

moduletb_timer;

regReset_test;

regClock_test;

regE_test;

wire[24:

0]Q_test;

wireSign_test;

initial

Clock_test=0;

always#25Clock_test=~Clock_test;

initial

begin

Reset_test=1;

E_test=0;

#1

Reset_test=0;

E_test=1;

end

timerUUT_timer(.Reset(Reset_test),.Clock(Clock_test),.E(E_test),.Q(Q_test),.Sign(Sign_test));

endmodule

c)仿真后的波形截图

当根据时钟信号计数到一秒时,Sign信号由零变为1,从而实现计时。

d)综合后的RTL图形

5.串并转换器

a)编写模块源码

b)测试模块

`timescale1ns/1ps

moduletb_shared;

regClock_test;

regL_test;

regw_test;

reg[3:

0]R_test;

wire[3:

0]Q_test;

initial

Clock_test=0;

always#10Clock_test=~Clock_test;

initial

begin

L_test=1;

#14

L_test=0;

//always#14L_test=~L_test;

end

initial

w_test=0;

always#13w_test=~w_test;

initial

R_test=4'b1010;

shift4UUT_shift4(.Clock(Clock_test),.L(L_test),.w(w_test),.R(R_test),.Q(Q_test));

endmodule

c)仿真后的波形截图

L为0时并行加载,数组R为加载时的输入。

L为1时移位,数组Q右移一位,左端补当前变量w的值。

当串行输入达到四个时即可并行输出,所以串并转换器本质是一个移位寄存器。

只是最后用一个D触发器存储数据再并行输出。

d)综合后的RTL图形

三、本次实验收获和心得

通过第三次数字电路实验,我对移位寄存器和计数器有了深刻的了解,以及利用计数器实现计时器和利用移位寄存器实现串并转换器,提高了Verilog编码能力,还学会了QuartusII软件的基本使用方法,以及如何对自己设计出的电路进行综合。

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

当前位置:首页 > IT计算机

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

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