哈工大数电大作业

  • 格式:doc
  • 大小:6.69 MB
  • 文档页数:21

下载文档原格式

  / 21
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

五仿真图