数电实验自主设计哈工大.docx
- 文档编号:3009026
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:12
- 大小:146.66KB
数电实验自主设计哈工大.docx
《数电实验自主设计哈工大.docx》由会员分享,可在线阅读,更多相关《数电实验自主设计哈工大.docx(12页珍藏版)》请在冰豆网上搜索。
数电实验自主设计哈工大
HarbinInstituteofTechnology
数字电子技术实验
自主设计实验报告
姓名班级1404105学号台号
实验日期节次教师签字成绩
实验名称:
基于BASYS2FPGA板的开发应用
1.实验目的
(1)熟悉Verilog语言的使用
(2)能通过ISE软件进行FPGA简单的开放应用
(3)结合实际应用掌握课上所学关于组合电路和时序电路的理论知识
(4)掌握根据实际需求设计相应较为优化的电路的能力
2.实验环境
ISE14.7
BASYS2开发板
3.实验内容
总共设计3个实际应用电路,分别为两个较为简单的组合逻辑电路和一个较为复杂的时序逻辑电路。
下面分别介绍各个设计:
(1)实验一:
判断是否可以输血
设计要求:
已知人的血型由A、B、AB、O四种。
输血时,输血者的血型与受血者血型必须符合图中用箭头指示的授受关系。
要求该电路能够判断输血者与受血者的血型是否符合上述规定。
具体要求如图1所示。
图1输血要求
(2)实验二:
显示译码电路
设计要求:
根据不同输入取值,依次显示“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;
4'b0010:
w1=0;
4'b0100:
w1=0;
4'b1000:
w1=0;
default:
w1=1;//若符合要求w1=0;否则w1=1
endcase
case({sa,sb,sab,so})//判断受血者的输入是否符合要求
4'b0001:
w2=0;
4'b0010:
w2=0;
4'b0100:
w2=0;
4'b1000:
w2=0;
default:
w2=1;//若符合要求w2=0;否则w2=1
endcase
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
p=1;
else
p=0;
end
elseif(sab==1)//若受血者是AB型血
begin
if(b==1||a==1||o==1||ab==1)//输血者是A,B,AB,O型血,p=1
p=1;
else
p=0;
end
else//若受血者是O型血
begin
if(o==1)//输血者是O型血,p=1
p=1;
else
p=0;
end
end
endmodule
引脚约束文件:
NET"a"LOC=P11;
NET"b"LOC=L3;
NET"ab"LOC=K3;
NET"o"LOC=b4;
NET"sa"LOC=g3;
NET"sb"LOC=f3;
NET"sab"LOC=e2;
NET"so"LOC=n3;
NET"w"LOC=m11;
NET"p"LOC=m5;
仿真结果:
图2实验一仿真波形图
(2)实验二:
显示译码电路(HIT05108)
Verilog程序:
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
3'b001:
dl=8'b11110111;//s输入为1,数码管显示I
3'b010:
dl=8'b11100001;//s输入为2,数码管显示T
3'b011:
dl=8'b10011111;//s输入为3,数码管显示1
3'b100:
dl=8'b00000011;//s输入为4,数码管显示0
3'b101:
dl=8'b01001001;//s输入为5,数码管显示5
3'b110:
dl=8'b00000011;//s输入为6,数码管显示0
3'b111:
dl=8'b00000001;//s输入为7,数码管显示8
endcase
end
endmodule
管脚约束文件:
NET"dl[7]"LOC=L14;
NET"dl[6]"LOC=H12;
NET"dl[5]"LOC=N14;
NET"dl[4]"LOC=N11;
NET"dl[3]"LOC=P12;
NET"dl[2]"LOC=L13;
NET"dl[1]"LOC=M12;
NET"dl[0]"LOC=N13;
NET"S[2]"LOC=K3;
NET"S[1]"LOC=L3;
NET"S[0]"LOC=P11;
仿真波形:
图3实验二仿真波形图
(3)实验三:
数字钟
Verilog程序:
//顶层模块
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));
endmodule
//分频模块,得到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倍分钟/秒的变化
begin
cnt=0;
clk_1Hz=~clk_1Hz;
end
elsecnt=cnt+1;
endmodule
//计时模块,得到分和秒
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;
end
elsebegin
S_L=S_L+1;
clk_SH=0;
end
end
always@(posedgeclk_SH)begin//秒:
十位
if(S_H==5)begin
S_H=0;
clk_ML=1;
end
elsebegin
S_H=S_H+1;
clk_ML=0;
end
end
always@(posedgeclk_ML)begin//分钟:
个位
if(M_L==9)begin
M_L=0;
clk_MH=1;
end
elsebegin
M_L=M_L+1;
clk_MH=0;
end
end
always@(posedgeclk_MH)begin//分钟:
十位
if(M_H==5)M_H=0;
elseM_H=M_H+1;
end
endmodule
//4个数字扫描显示模块
moduleIP_smg_dsp(clk_190Hz,dat,duan,wei);
inputclk_190Hz;
input[15:
0]dat;
outputreg[7:
0]duan;
outputreg[3:
0]wei;
reg[3:
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];
end
2'b01:
begin
wei=4'b1101;
disp=dat[7:
4];
end
2'b10:
begin
wei=4'b1011;
disp=dat[11:
8];
end
2'b11:
begin
wei=4'b0111;
disp=dat[15:
12];
end
endcase
end
always@(disp)
case(disp)
0:
duan=8'b11000000;
1:
duan=8'b11111001;
2:
duan=8'b10100100;
3:
duan=8'b10110000;
4:
duan=8'b10011001;
5:
duan=8'b10010010;
6:
duan=8'b10000010;
7:
duan=8'b11111000;
8:
duan=8'b10000000;
9:
duan=8'b10010000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 自主 设计 哈工大