- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字电子技术基础大作-血型与状态机参考
Harbin Institute of Technology
数字电子技术基础大作业
课程名称: 数字电子技术基础
设计题目: 血型与状态机
院 系:
班 级:
设 计 者:
学 号:
哈尔滨工业大学
血型逻辑电路设计
一 实验目的
掌握采用可编程逻辑器件实现数字电路与系统的方法。
掌握采用Xilinx_ISE软件开发可编程逻辑器件的过程。
学会设计血型能否输血的数字电路。
掌握Verilog HDL描述数字逻辑电路与系统的方法。
二 设计要求
采用BASYS2开发板开关,LED,数码管等制作验证能否输血的电路。
采用Xilinx_ISE软件进行编程、仿真与下载设计到BASYS2开发板。
三 电路图
电路模块图(简化)
应用:
内部电路组成(简化)
四 编程
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=4b1110;
output bi;
reg bi;
integer clk_cnt;
reg clk_400Hz;
always @(posedge clk) //400Hz扫描信号
if(clk_cnt==32d)
begin
clk_cnt = 1b0;
clk_400Hz = ~clk_400Hz;
end
else
clk_cnt = clk_cnt + 1b1;
//位控制
reg clk_1Hz;
integer clk_1Hz_cnt; //1Hz发声信号
always @(posedge clk)
if(clk_1Hz_cnt==32d-1)
begin
clk_1Hz_cnt = 1b0;
clk_1Hz = ~clk_1Hz;
end
else
clk_1Hz_cnt = clk_1Hz_cnt + 1b1;
always @(posedge clk_400Hz)
CTL = {CTL[2:0],CTL[3]};
//段控制
always @(CTL)
case(CTL)
4b0111:
OUT=OUT1;
4b1011:
OUT=OUT2;
4b1101:
OUT=OUT3;
4b1110:
OUT=OUT4;
default:OUT=4hf;
endcase
always @(M or N or P or Q)
begin
E=(PQ)|(~M~N)|(~MQ)|(~NP); //选择能否输血
case(E)
1:
begin
OUT1=8b;
OUT2=8b;
OUT3=8b;
OUT4=8b;
bi=clk_400Hz;
end
0:
begin
OUT1=8b;
OUT2=8b;
OUT3=8b;
OUT4=8b;
bi=clk_1Hz;
end
endcase
end
always @(M or N or P or Q) //显示输入输出血型
begin
if(M==1N==0)
F=4b1000;
else if(M==0N==1)
F=4b0100;
else if(M==1N==1)
F=4b0010;
else
F=4b0001;
end
always @(M or N or P or Q) //显示输入输出血型
begin
if(P==1Q==0)
G=4b1000;
else if(P==0Q==1)
G=4b0100;
else if(P==1Q==1)
G=4b0010;
else
G=4b0001;
end
endmodule
2.管脚定义程序
NET M LOC=N3;
NET N LOC=E2;
NET P LO
文档评论(0)