哈工大数电大作业
- 格式:doc
- 大小:6.87 MB
- 文档页数:24
哈工大数电大作业-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII
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 N;
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)
4'b0111:
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)
G=4'b1000;
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.管脚定义程序