harbin institute of technology
数字电子技术基础大作业。
课程名称: 数字电子技术基础
设计题目: 血型与状态机
院系:班级:
设计者。学号:
哈尔滨工业大学。
血型逻辑电路设计。
一实验目的。
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 clk400hz扫描信号。
if(clk_cnt==32'd100000)
begin
clk_cnt <=1'b0;
clk_400hz <=clk_400hz;
endelse
clk_cnt <=clk_cnt + 1'b1;
位控制。reg clk_1hz;
integer clk_1hz_cnt1hz发声信号。
always @(posedge clk)
if(clk_1hz_cnt==32'd2***1)
begin
clk_1hz_cnt <=1'b0;
clk_1hz <=clk_1hz;
endelse
clk_1hz_cnt <=clk_1hz_cnt + 1'b1;
always @(posedge clk_400hz)
ctl <=
段控制。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)
begine=(p&q)|(m&~n)|(m&q)|(n&p); 选择能否输血。
case(e)
beginout1=8'b10001001;
out2=8'b01100001;
out3=8'b01001001;
out4=8'b11111111;
bi=clk_400hz;end
beginout1=8'b00010011;
out2=8'b00000011;
out3=8'b11111111;
out4=8'b11111111;
bi=clk_1hz;
endendcase
endalways @(m or n or p or q) /显示输入输出血型。
beginif(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;
elsef=4'b0001;
endalways @(m or n or p or q) /显示输入输出血型。
beginif(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;
elseg=4'b0001;
endendmodule
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;
五**图。六**设计到basys2开发板与实物图。
实物图:附:程序流程:
1.基本电路设计。
用mn表示输入血型,pq表示受血者血型其中10表示a型,01表示b型,11表示ab型,00表示o型。用e表示能否输血,1表示能,0表示不能。
则卡诺图为:
表达式为:
则设计一个四输入一输出的电路。
其逻辑电路图为。
通过此电路图,编写程序,把输入引脚定位到开关上,把输出引脚定位到一个led上便可以完成设计任务。
2.项目创新。
1)仅使用一个led的亮与灭来表示能否输血效果不明显,为了加入一个更明显显示能否输血的指示,所以就用到了basys2板子上自带的数码管,使其在能够输血时显示yes,不能输血时显示no。
观察硬件电路图发现,数码管只由一个片选端控制,所有如果使数码管显示不同字母,则需要利用人类的视觉暂留效应进行循环扫描,来使数码管来显示不同的信息。
2)为了增强能否输血的提示效果,所以加入一个蜂鸣器,用声音提示能否输血。当系统开启切能输血时,蜂鸣器输出一低音**,当不能输血时,蜂鸣器输出高音报警,提示不能输血。
3)在加入蜂鸣器报警与数码管之后,使用led来表示能否输血已经多余,而且别人无法判断输血与受血分别是什么血型,所以把8个led分成两组,其中第一组表示输血血型,第二组表示受血血型,第一个灯表示a型,第二个灯表示b型,第三个灯表示ab型,最后一个灯表示o型。
时序逻辑电路设计。
一实验目的。
1.掌握采用可编程逻辑器件实现数字电路与系统的方法。
2.掌握采用xilinx_ise软件开发可编程逻辑器件的过程。
3.学会设计状态机时序逻辑电路。
4.掌握verilog hdl描述数字逻辑电路与系统的方法。
二设计要求。
1.采用basys2开发板开关,led,数码管等制作验证能否输血的电路。
2.采用xilinx_ise软件进行编程、**与**设计到basys2开发板。
三电路图。1.电路模块图。
2.内部电路组成。
四编程。1.源程序。
module shixu(clk,op,din,b,c,d,e,f,g,h,i,bi,out,ctl);
input clk;
input din;
output bi,op;
output[7:0] out;
output[3:0] ctl;
output b,c,d,e,f,g,h,i;
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;
reg b,c,d,e,f,g,h,i;
reg[1:0] current_state,next_state;
reg op,bi;
parameter s0=2'b00,s1=2'b01,s2=2'b10,s3=2'b11;
reg clk_1hz,clk_400hz;
integer clk_1hz_cnt,clk_cnt;
always @(posedge clk)
if(clk_1hz_cnt==32'd2***1)
beginclk_1hz_cnt <=1'b0;
clk_1hz <=clk_1hz;
endelse
clk_1hz_cnt <=clk_1hz_cnt + 1'b1;
always @(posedge clk)
if(clk_cnt==32'd100000)
begin
clk_cnt <=1'b0;
clk_400hz <=clk_400hz;
endelse
clk_cnt <=clk_cnt + 1'b1;
reg clk_05hz;
integer clk_05hz_cnt;
always @(posedge clk)
哈工大数电大作业
harbin institute of technology 数电大作业 一 院系 航天学院。班级。姓名。学号。指导教师 陶隽源。哈尔滨工业大学航天学院。2015年1月。1 设计要求。利用verilog hdl设计一个逻辑控制电路,用于对某备进行模式切换控制,设备模式共三种,控制方式为 a 直通模式...
哈工大数电大作业
harbin institute of technology 数电大作业 一 院系 航天学院。班级。姓名。学号。指导教师 陶隽源。哈尔滨工业大学航天学院。2015年1月。1 设计要求。利用verilog hdl设计一个逻辑控制电路,用于对某备进行模式切换控制,设备模式共三种,控制方式为 a 直通模式...
哈工大数电大作业
数电大作业。1 实验题目。实验要求 设计一个十六进制以上的计数器。要求解析 用两片74ls161设计一个的三十进制的计数器,并用multism进行分析。2 实验电路。图1 三十进制计数器原理图。3 设计思路。首先,74ls161是十六进制计数器,要达到要求的三十进制计数器,必须要使用两片74ls16...