西北工业大学数字电子技术基础实验报告实验3Word文档下载推荐.docx
《西北工业大学数字电子技术基础实验报告实验3Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《西北工业大学数字电子技术基础实验报告实验3Word文档下载推荐.docx(13页珍藏版)》请在冰点文库上搜索。
f4-xsffl
ECA-iha
Wmni
WmUAf
⑤查看电路结构,使用Tool->
RTLviewer工具查看电路图结构,是否和预期设计一致。
rpM.Oi*>
1JiMiMdaOML<
j|Al-O*ih|
La■D/»
i-ii!
Hbi
.urmpM-羽r嘴U电
Of
■>
lir¥
i-*U■屮剑f*lMW"
M*h1$TW<
tE
■I:
(■■i!
|*ijJHft*Ii■iE.duqa.,卜r|il.
A,-K^'
Mla^34rvf(r«
ih>
«
rawwlas-Kifi*dmichWpcmim*efaharwlHKhinu.3.'
thdd&
aip*H¥
l:
MWmRM_LELHDCTE^DIS'
*ihtnvr05Ttc-rvtw
.llivl4nt*111Hi>
4-Mjilltf¥
1114igfIhB4
■Z.7UZ-unriJ■»
Ifii■-wrnrIuIfivJmtnt-,■w^aanr*fiIr■KdP-ir'
iiH/prnrlM*!
1I,*.
题目代码以及波形分析
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;
D_test=0;
always#77D_test=~D_test;
flipflopUUT_flipflop(.CIock(Clock_test),.D(D_test),.Q(Q_test));
c)
仿真后的波形截图inputD0,D1,Sel,Clock;
d)
2.设计一款4bBit具有并行加载功能的移位寄存器编写模块源码
modulemuxdff(D0,D1,Sel,Clock,Q);
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
moduletb_shift4;
regL_test;
regw_test;
reg[3:
0]R_test;
wire[3:
0]Q_test;
initial
always#10Clock_test=~Clock_test;
begin
L_test=1;
#14
L_test=0;
//always#14L_test=~L_test;
end
w_test=0;
always#13w_test=~w_test;
R_test=4'
b1010;
shift4UUT_shift4(.CIock(Clock_test),.L(L_test),.w(w_test),.R(R_test),.Q(Q_test));
c)仿真后的波形截图
hntilBpp
Iwiib^TMdipi■njmrfiB"
nx丄・p2■甲些昏细
L为0时并行加载,数组R为加载时的输入。
L为1时移位,数组Q右移一位,左端补
当前变量w的值。
d)综合后的RTL图形
3.设计一款4bit带复位功能的计数器
moduleupcount(Reset,Clock,E,Q);
inputReset,Clock,E;
outputreg[3:
always@(posedgeReset,posedgeClock)
if(Reset)
=0;
elseif(E)
=Q+1;
moduletb_upcount;
regReset_test;
regE_test;
always#5Clock_test=~Clock_test;
Reset_test=1;
E_test=0;
#2
Reset_test=0;
#8
E_test=1;
#184
#32
end
upcountUUT_upcount(.Reset(Reset_test),.Clock(Clock_test),.E(E_test),.Q(Q_test));
Q加1.
d)综合后的RTL图形
1'
hOcin_Addo
A[2-0]Oinra-O]
Clock>
4'
hlBJJ
SCLR
CLRN
Reset二>
4.设计一款定时器,(女口:
时钟频率20M,定时为1秒)。
moduletimer(Reset,Clock,E,Q,Sign);
inputReset,Clock,E;
outputreg[24:
0]Q=25'
b000000000000000;
outputregSign;
always@(posedgeReset,posedgeClock)if(Reset)
if(Q<
20000000)
Sign=0;
elseif(Q>
=20000000)
Sign=1;
b)测试模块
moduletb_timer;
wire[24:
wireSign_test;
always#25Clock_test=~Clock_test;
#1
timer
UUT_timer(.Reset(Reset_test),.Clock(Clock_test),.E(E_test),.Q(Q_test),.Sign(Sign_test));
当根据时钟信号计数到一秒时,Sign信号由零变为1,从而实现计时。
©
甲f
5.串并转换器
a)编写模块源码
moduletb_shared;
L为1时移位,数组Q右移一位,左端补当前变量w的值。
当串行输入达到四个时即可并行输出,所以串并转换器本质是一个移位寄存器。
只是最后用一个D触发器存储数据再并行输出。
*+Fl•中■.
以及利用计数器实现
还学会了Quartusll
二、本次实验收获和心得
通过第三次数字电路实验,我对移位寄存器和计数器有了深刻的了解,
计时器和利用移位寄存器实现串并转换器,提高了Verilog编码能力,
软件的基本使用方法,以及如何对自己设计出的电路进行综合。