数电实验自主设计哈工大文档格式.docx
- 文档编号:15920007
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:12
- 大小:146.66KB
数电实验自主设计哈工大文档格式.docx
《数电实验自主设计哈工大文档格式.docx》由会员分享,可在线阅读,更多相关《数电实验自主设计哈工大文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
根据不同输入取值,依次显示“HIT+学号后5位(即HIT05108)”,共8个字型。
(3)实验三:
数字钟
在数码管上显示分钟和秒的计时功能。
最左边两个显示分钟,最右边两个显示秒钟。
4.各实验源代码及仿真结果
(1)实验一:
Verilog程序:
moduleshuxue(
inputa,
inputb,
inputab,
inputo,
inputsa,
inputsb,
inputsab,
inputso,
outputregw,
outputregp
);
//a,b,ab,o分别代表输血者的四种血型sa,sb,sab,so分别代表受血者的四种血型;
w代表W灯;
p代表P灯
regw1,w2;
always@(*)
begin
case({a,b,ab,o})//判断输血者的输入是否符合要求
4'
b0001:
w1=0;
b0010:
b0100:
b1000:
default:
w1=1;
//若符合要求w1=0;
否则w1=1
endcase
case({sa,sb,sab,so})//判断受血者的输入是否符合要求
w2=0;
w2=1;
//若符合要求w2=0;
否则w2=1
w=w1||w2;
//若输血者和受血者都符合要求w=0;
否则w=1
if(w==1)
p=0;
elseif(sa==1)//若受血者是A型血
begin
if(a==1||ab==1||o==1)//输血者是A,AB,O型血,p=1
p=1;
else
p=0;
end
elseif(sb==1)//若受血者是B型血
begin
if(b==1||ab==1||o==1)//输血者是B,AB,O型血,p=1
elseif(sab==1)//若受血者是AB型血
if(b==1||a==1||o==1||ab==1)//输血者是A,B,AB,O型血,p=1
else//若受血者是O型血
if(o==1)//输血者是O型血,p=1
end
endmodule
引脚约束文件:
NET"
a"
LOC=P11;
b"
LOC=L3;
ab"
LOC=K3;
o"
LOC=b4;
sa"
LOC=g3;
sb"
LOC=f3;
sab"
LOC=e2;
so"
LOC=n3;
w"
LOC=m11;
p"
LOC=m5;
仿真结果:
图2实验一仿真波形图
(2)实验二:
显示译码电路(HIT05108)
moduleda2(
input[2:
0]s,
outputreg[7:
0]dl
//s表示8种输入;
dl控制8段数码管
always@(s)
begin
case(s)
3'
b000:
dl=8'
b10010001;
//s输入为0,数码管显示H
b001:
b11110111;
//s输入为1,数码管显示I
b010:
b11100001;
//s输入为2,数码管显示T
b011:
b10011111;
//s输入为3,数码管显示1
b100:
b00000011;
//s输入为4,数码管显示0
b101:
b01001001;
//s输入为5,数码管显示5
b110:
//s输入为6,数码管显示0
b111:
b00000001;
//s输入为7,数码管显示8
endcase
管脚约束文件:
dl[7]"
LOC=L14;
dl[6]"
LOC=H12;
dl[5]"
LOC=N14;
dl[4]"
LOC=N11;
dl[3]"
LOC=P12;
dl[2]"
LOC=L13;
dl[1]"
LOC=M12;
dl[0]"
LOC=N13;
S[2]"
LOC=K3;
S[1]"
LOC=L3;
S[0]"
LOC=P11;
仿真波形:
图3实验二仿真波形图
(3)实验三:
//顶层模块
moduleclock_top(clk,duan,wei
inputclk;
output[7:
0]duan;
output[3:
0]wei;
wireclk_1Hz,clk_190Hz;
wire[15:
0]disp;
clock_divfU1(.clk_50MHz(clk),.clk_1Hz(clk_1Hz),.clk_190Hz(clk_190Hz));
clock_timeU2(.clk_1Hz(clk_1Hz),.time_MS(disp));
IP_smg_dspU3(.clk_190Hz(clk_190Hz),.dat(disp),.duan(duan),.wei(wei));
//分频模块,得到1Hz,用于秒计数;
得到190Hz,用于控制数码管显示
//190Hz:
这是4个数码管可以同时稳定显示的最低2n分频频率
moduleclock_divf(clk_50MHz,clk_1Hz,clk_190Hz);
inputclk_50MHz;
outputclk_190Hz;
outputregclk_1Hz;
reg[25:
0]cnt;
assignclk_190Hz=cnt[17];
always@(posedgeclk_50MHz)
if(cnt==25000000)//实际项目用,1s变化1次
//if(cnt==250000)//测试用,加快100倍分钟/秒的变化
cnt=0;
clk_1Hz=~clk_1Hz;
elsecnt=cnt+1;
//计时模块,得到分和秒
moduleclock_time(clk_1Hz,time_MS);
inputclk_1Hz;
output[15:
0]time_MS;
reg[3:
0]M_H,M_L,S_H,S_L;
regclk_SH,clk_ML,clk_MH;
assigntime_MS={M_H,M_L,S_H,S_L};
//时间:
分、秒
always@(posedgeclk_1Hz)begin//秒:
个位
if(S_L==9)begin
S_L=0;
clk_SH=1;
elsebegin
S_L=S_L+1;
clk_SH=0;
end
always@(posedgeclk_SH)begin//秒:
十位
if(S_H==5)begin
S_H=0;
clk_ML=1;
S_H=S_H+1;
clk_ML=0;
always@(posedgeclk_ML)begin//分钟:
if(M_L==9)begin
M_L=0;
clk_MH=1;
M_L=M_L+1;
clk_MH=0;
always@(posedgeclk_MH)begin//分钟:
if(M_H==5)M_H=0;
elseM_H=M_H+1;
//4个数字扫描显示模块
moduleIP_smg_dsp(clk_190Hz,dat,duan,wei);
inputclk_190Hz;
input[15:
0]dat;
outputreg[7:
0]duan;
outputreg[3:
0]wei;
0]disp;
reg[1:
0]smg_ctl;
always@(posedgeclk_190Hz)begin
smg_ctl=smg_ctl+1;
case(smg_ctl)
2'
b00:
begin
wei=4'
b1110;
disp=dat[3:
0];
b01:
b1101;
disp=dat[7:
4];
b10:
b1011;
disp=dat[11:
8];
b11:
b0111;
disp=dat[15:
12];
endcase
always@(disp)
case(disp)
0:
duan=8'
b11000000;
1:
b11111001;
2:
b10100100;
3:
b10110000;
4:
b10011001;
5:
b10010010;
6:
b10000010;
7:
b11111000;
8:
b10000000;
9:
b10010000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 自主 设计 哈工大
![提示](https://static.bdocx.com/images/bang_tan.gif)