哈工大数电大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
H a r b i n I n s t i t u t e o f T e c h n o l o g y
数字电子技术基础大作业
课程名称:数字电子技术基础
设计题目:血型与状态机
院系:
班级:
设计者:
学号:
哈尔滨工业大学
血型逻辑电路设计
一实验目的
1.掌握采用可编程逻辑器件实现数字电路与系统的方法。
2.掌握采用Xilinx_ISE软件开发可编程逻辑器件的过程。
3.学会设计血型能否输血的数字电路。
4.掌握Verilog HDL描述数字逻辑电路与系统的方法。
二设计要求
1.采用BASYS2开发板开关,LED,数码管等制作验证能否输血的电路。
2.采用Xilinx_ISE软件进行编程、仿真与下载设计到BASYS2开发板。三电路图
1.电路模块图(简化)
应用:
2.内部电路组成(简化)
四 编程
1.源程序
module xuexing(M, N, P, Q, E,F,G,OUT,CTL,clk,bi); input M;
input P;
input Q;
input clk;
output E;
output[3:0] F;
output[3:0] G;
output[7:0] OUT;
output[3:0] CTL;
reg E;
reg[3:0] F;
reg[3:0] G;
reg[7:0] OUT;
reg[7:0] OUT1;
reg[7:0] OUT2;
reg[7:0] OUT3;
reg[7:0] OUT4;
reg[3:0] CTL=4'b1110;
output bi;
reg bi;
integer clk_cnt;
reg clk_400Hz;
always @(posedge clk) //400Hz扫描信号if(clk_cnt==32'd100000)
begin
clk_cnt <= 1'b0;
clk_400Hz <= ~clk_400Hz;
end
else
clk_cnt <= clk_cnt + 1'b1;
//位控制
reg clk_1Hz;
integer clk_1Hz_cnt; //1Hz发声信号
always @(posedge clk)
if(clk_1Hz_cnt==32'd2*******-1)
begin
clk_1Hz_cnt <= 1'b0;
clk_1Hz <= ~clk_1Hz;
end
else
clk_1Hz_cnt <= clk_1Hz_cnt + 1'b1; always @(posedge clk_400Hz)
CTL <= {CTL[2:0],CTL[3]};
//段控制
always @(CTL)
case(CTL)
OUT=OUT1;
4'b1011:
OUT=OUT2;
4'b1101:
OUT=OUT3;
4'b1110:
OUT=OUT4;
default:OUT=4'hf;
endcase
always @(M or N or P or Q)
begin
E=(P&Q)|(~M&~N)|(~M&Q)|(~N&P); //选择能否输血case(E)
1:
begin
OUT1=8'b10001001;
OUT2=8'b01100001;
OUT3=8'b01001001;
OUT4=8'b11111111;
bi=clk_400Hz;
end
0:
begin
OUT1=8'b00010011;
OUT2=8'b00000011;
OUT3=8'b11111111;
OUT4=8'b11111111;
bi=clk_1Hz;
end
endcase
end
always @(M or N or P or Q) //显示输入输出血型begin
if(M==1&&N==0)
F=4'b1000;
else if(M==0&&N==1)
F=4'b0100;
else if(M==1&&N==1)
F=4'b0010;
else
F=4'b0001;
end
always @(M or N or P or Q) //显示输入输出血型begin
if(P==1&&Q==0)
else if(P==0&&Q==1)
G=4'b0100;
else if(P==1&&Q==1)
G=4'b0010;
else
G=4'b0001;
end
endmodule
2.管脚定义程序
NET "M" LOC=N3;
NET "N" LOC=E2;
NET "P" LOC=L3;
NET "Q" LOC=P11;
NET "E" LOC=B2;
NET "OUT[7]" LOC = L14; NET "OUT[6]" LOC = H12; NET "OUT[5]" LOC = N14; NET "OUT[4]" LOC = N11; NET "OUT[3]" LOC = P12; NET "OUT[2]" LOC = L13; NET "OUT[1]" LOC = M12; NET "OUT[0]" LOC = N13; NET "CTL[3]" LOC = K14; NET "CTL[2]" LOC = M13; NET "CTL[1]" LOC = J12; NET "CTL[0]" LOC = F12; NET "clk" LOC=B8;
NET "F[3]" LOC=G1;
NET "F[2]" LOC=P4;
NET "F[1]" LOC=N4;
NET "F[0]" LOC=N5;
NET "G[3]" LOC=P6;
NET "G[2]" LOC=P7;
NET "G[1]" LOC=M11;
NET "G[0]" LOC=M5;
NET "bi" LOC=B6;
五仿真图