哈工大数电大作业

发布 2022-07-17 20:14:28 阅读 8890

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...