哈工大数电大作业
哈工大数电大作业 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); M; N; P; Q; 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 d25000000-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) 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) begin E=(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 else if(M==0 else if(M==1 else F=4 b0001; end always @(M or N or P or Q) //显示输入输出血型 begin if(P==1 else if(P==0 else if(P==1 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; N