1、哈尔滨工业大学数字电子技术基础大作业Harbin Institute of Technology数字电子技术基础大作业数字电子技术基础大作业课程名称: 数字电子技术基础 设计题目: 血型与状态机 院 系:班 级: 设 计 者: 学 号: 哈尔滨工业大学哈尔滨工业大学数字电子技术基础大作业血型逻辑电路设计一 实验目的1. 掌握采用可编程逻辑器件实现数字电路与系统的方法。2. 掌握采用 Xilinx_ISE 软件开发可编程逻辑器件的过程。3. 学会设计血型能否输血的数字电路。4. 掌握 Verilog HDL 描述数字逻辑电路与系统的方法。二 设计要求1. 采用 BASYS2 开发板开关,LED,
2、数码管等制作验证能否输血的电路。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;output3:0 F;哈尔滨工业大学数字电子技术基础大作业output3:0 G;ou
3、tput7:0 OUT;output3:0 CTL;reg E;reg3:0 F;reg3:0 G;reg7:0 OUT;reg7:0 OUT1;reg7:0 OUT2;reg7:0 OUT3;reg7:0 OUT4;reg3:0 CTL=4b1110;output bi;reg bi;integer clk_cnt;reg clk_400Hz;always (posedge clk) /400Hz 扫描信号if(clk_cnt=32d100000)begin clk_cnt = 1b0;clk_400Hz = clk_400Hz;endelseclk_cnt = clk_cnt + 1b1;
4、/位控制reg clk_1Hz;integer clk_1Hz_cnt; /1Hz 发声信号always (posedge clk)if(clk_1Hz_cnt=32d25000000-1)begin clk_1Hz_cnt = 1b0;clk_1Hz = clk_1Hz;endelseclk_1Hz_cnt = clk_1Hz_cnt + 1b1;always (posedge clk_400Hz)CTL = CTL2:0,CTL3;/段控制always (CTL)case(CTL)4b0111:OUT=OUT1;4b1011:OUT=OUT2;4b1101:OUT=OUT3;4b1110:
5、哈尔滨工业大学数字电子技术基础大作业OUT=OUT4;default:OUT=4hf;endcasealways (M or N or P or Q)beginE=(P /选择能否输血case(E)1:beginOUT1=8b10001001;OUT2=8b01100001;OUT3=8b01001001;OUT4=8b11111111;bi=clk_400Hz;end0:beginOUT1=8b00010011;OUT2=8b00000011;OUT3=8b11111111;OUT4=8b11111111;bi=clk_1Hz;endendcaseendalways (M or N or P
6、 or Q) /显示输入输出血型beginif(M=1else if(M=0else if(M=1elseF=4b0001;endalways (M or N or P or Q) /显示输入输出血型beginif(P=1else if(P=0else if(P=1elseG=4b0001;end哈尔滨工业大学数字电子技术基础大作业endmodule2.管脚定义程序NET “M“ LOC=N3;NET “N“ LOC=E2;NET “P“ LOC=L3;NET “Q“ LOC=P11;NET “E“ LOC=B2;NET “OUT7“ LOC = L14;NET “OUT6“ LOC = H1
7、2;NET “OUT5“ LOC = N14;NET “OUT4“ LOC = N11;NET “OUT3“ LOC = P12;NET “OUT2“ LOC = L13;NET “OUT1“ LOC = M12;NET “OUT0“ LOC = N13;NET “CTL3“ LOC = K14;NET “CTL2“ LOC = M13;NET “CTL1“ LOC = J12;NET “CTL0“ LOC = F12;NET “clk“ LOC=B8;NET “F3“ LOC=G1;NET “F2“ LOC=P4;NET “F1“ LOC=N4;NET “F0“ LOC=N5;NET “G3
8、“ LOC=P6;NET “G2“ LOC=P7;NET “G1“ LOC=M11;NET “G0“ LOC=M5;NET “bi“ LOC=B6;五 仿真图六 下载设计到 BASYS2 开发板与实物图实物图:哈尔滨工业大学数字电子技术基础大作业附:程序流程:1.基本电路设计用 MN 表示输入血型,PQ 表示受血者血型其中 10 表示 A 型,01 表示 B 型, 11 表示 AB 型,00 表示 O 型。用 E 表示能否输血, 1 表示能, 0 表示不能。M N P Q E M N P Q E0 0 0 0 1 1 0 0 0 00 0 0 1 1 1 0 0 1 00 0 1 0 1 1
9、0 1 0 10 0 1 1 1 1 0 1 1 10 1 0 0 0 1 1 0 0 00 1 0 1 1 1 1 0 1 00 1 1 0 0 1 1 1 0 00 1 1 1 1 1 1 1 1 1则卡诺图为:MN PQ 00 01 11 1000 1 0 0 001 1 1 0 011 1 1 1 110 1 0 0 1哈尔滨工业大学数字电子技术基础大作业表达式为: EPQMNP则设计一个四输入一输出的电路其逻辑电路图为通过此电路图,编写程序,把输入引脚定位到开关上,把输出引脚定位到一个 LED 上便可以完成设计任务。2.项目创新(1)仅使用一个 LED 的亮与灭来表示能否输血效果不明
10、显,为了加入一个更明显显示能否输血的指示,所以就用到了 Basys2 板子上自 带的数码管,使其在能够输血时显示 yes,不能 输血时显示 no。观察硬件电路图发现,数码管只由一个片 选端控制,所有如果使数码管显示不同字母,则需要利用人类的视觉暂留效应进行循环扫描,来使数 码管来显示不同的信息。(2)为了增强能否输血的提示效果,所以加入一个蜂鸣器,用声音提示能否输血。当系统开启切能输血时,蜂鸣器输出一低音震 荡,当不能 输血时,蜂鸣器输出高音报警,提示不能输血。(3)在加入蜂鸣器报警与数码管之后,使用 LED 来表示能否输血已经多余,而且别人无法判断输血与受血分别是什么血型,所以把 8 个 LED 分成两组,其中第一组表示输血血型,第二 组表示受血血型,第一个灯表示 A 型,第二个灯表示 B 型,第三个灯表示 AB 型,最后一个灯表示 O 型。时序逻辑电路设计MNPQE