数电实验自主设计_第1页
数电实验自主设计_第2页
数电实验自主设计_第3页
数电实验自主设计_第4页
数电实验自主设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 数电实验自主设计哈工大 哈尔滨工业大学课程设计说明书(论文) Harbin Institute of Technology 数字电子技术实验 自主设计实验报告 哈尔滨工业大学课程设计说明书(论文) 姓名 班级 1404105 学号 台号 成绩 实验日期 节次 教师签字 实验名称:基于BASYS2 FPGA板的开发应用 实验目的1.(1) 熟悉Verilog语言的使用 (2) 能通过ISE软件进行FPGA简单的开放应用 (3) 结合实际应用掌握课上所学关于组合电路和时序电路的理论知识 (4) 掌握根据实际需求设计相应较为优化的电路的能力 2. 实验环境 ISE14.7 BASYS2开发板 3.

2、实验内容 总共设计3个实际应用电路,分别为两个较为简单的组合逻辑电路和一个较为复杂的时序逻辑电路。 下面分别介绍各个设计: (1) 实验一:判断是否可以输血 设计要求:哈尔滨工业大学课程设计说明书(论文) 已知人的血型由A、B、AB、O四种。输血时,输血者的血型与受血者血型必须符合图中用箭头指示的授受关系。要求该电路能够判断输血者与受血者的血型是否符合上述规定。具体要求如图1所示。 AABBABAB OO 输血要求 1图(2) 实验二:显示译码电路 设计要求: 根据不同输入取值,依次显示“HIT+学号后5位(即HIT05108)”,共8个字型。 (3) 实验三:数字钟 设计要求: 在数码管上显

3、示分钟和秒的计时功能。最左边两个显示分钟,最右边两个显示秒钟。 4.各实验源代码及仿真结果 (1)实验一:判断是否可以输血 程序:Verilog哈尔滨工业大学课程设计说明书(论文) module shuxue( input a, input b, input ab, input o, input sa, input sb, input sab, input so, output reg w, output reg p ); /a,b,ab,o分别代表输血者的四种血型sa,sb,sab,so分别代表受血者的四种血型;w代表W灯;p代表P 灯reg w1,w2; always(*) 哈尔滨工业大学

4、课程设计说明书(论文) begin case(a,b,ab,o) /判断输血者的输入是否符合要求 4b0001:w1=0; 4b0010:w1=0; 4b0100:w1=0; 4b1000:w1=0; default:w1=1; /若符合要求w1=0;否则w1=1 endcase case(sa,sb,sab,so) /判断受血者的输入是否符合要求 4b0001:w2=0; 4b0010:w2=0; 4b0100:w2=0; 4b1000:w2=0; default:w2=1; /若符合要求w2=0;否则w2=1 哈尔滨工业大学课程设计说明书(论文) endcase w=w1|w2; /若输血

5、者和受血者都符合要求w=0;否则w=1 if(w=1) p = 0; else if(sa=1) /若受血者是A型血 begin if(a=1|ab=1|o=1) /输血者是A,AB,O型血,p=1 p=1; else p=0; end else if(sb=1) /若受血者是B型血 begin if(b=1|ab=1|o=1) /输血者是B,AB,O型血,p=1 p=1; else 哈尔滨工业大学课程设计说明书(论文) p=0; end else if(sab=1) /若受血者是AB型血 begin if(b=1|a=1|o=1|ab=1) /输血者是p=1 A,B,AB,O型血,p=1;

6、else p=0; end 型血若受血者是O /else begin p=1 型血,输血者是O/ if(o=1) p=1; else p=0; end end endmodule 哈尔滨工业大学课程设计说明书(论文) 引脚约束文件: NET a LOC=P11; NET LOC=L3; NET ab LOC=K3; NET o LOC=b4; NET sa LOC=g3; NET sb LOC=f3; NET sab LOC=e2; NET so LOC=n3; NET w LOC=m11; NET p LOC=m5; 仿真结果:数字电子技术基础设计作业 2实验一仿真波形图图 HIT05108

7、)(2)实验二:显示译码电路( Verilog程序:module da2( input 2:0 s, output reg7:0 dl 段数码管控制8/s表示8种输入;dl ); always(s) begin case(s) H ,数码管显示/s 3b000:dl=8b10010001; 输入为0 I 3b001:dl=8b11110111; ,数码管显示 输入为 1/sT 2 3b010:dl=8b11100001; ,数码管显示/s输入为1 ,数码管显示33b011:dl=8b10011111; /s输入为0 ,数码管显示 /s 3b100:dl=8b00000011; 输入为45 5

8、3b101:dl=8b01001001; ,数码管显示 /s输入为0 ,数码管显示 3b110:dl=8b00000011; /s输入为6 8 3b111:dl=8b00000001; 7/s 输入为,数码管显示10 数字电子技术基础设计作业 endcase end endmodule 管脚约束文件: NET dl7 LOC = L14; NET dl6 LOC = H12; NET dl5 LOC = N14; NET dl4 LOC = N11; NET dl3 LOC = P12; NET dl2 LOC = L13; NET dl1 LOC = M12; NET dl0 LOC = N

9、13; NET S2 LOC = K3; NET S1 LOC = L3; NET S0 LOC = P11; 仿真波形: 11 数字电子技术基础设计作业 实验二仿真波形图图 3 3)实验三:数字钟( Verilog程序: 顶层模块/module clock_top(clk,duan,wei ); input clk; output7:0 duan; output3:0 wei; wire clk_1Hz,clk_190Hz; wire15:0 disp; clock_divf U1(.clk_50MHz(clk),.clk_1Hz(clk_1Hz),.clk_190Hz(clk_190Hz)

10、; clock_time U2(.clk_1Hz(clk_1Hz),.time_MS(disp); IP_smg_dsp U3(.clk_190Hz(clk_190Hz),.dat(disp),.duan(duan),.wei(wei); endmodule 用,用于秒计数;得到190Hz,1Hz/分频模块,得到 于控制数码管显示12 数字电子技术基础设计作业 /190Hz:这是4个数码管可以同时稳定显示的最低2n分频频率 module clock_divf(clk_50MHz,clk_1Hz,clk_190Hz); input clk_50MHz; output clk_190Hz; out

11、put reg clk_1Hz; reg25:0 cnt; assign clk_190Hz=cnt17; always(posedge clk_50MHz) if(cnt=25000000) /实际项目用,1s变化1次 / if(cnt=250000) /测试用,加快100倍分钟/秒的变化 begin cnt=0; clk_1Hz=clk_1Hz; end else cnt=cnt+1; endmodule /计时模块,得到分和秒 module clock_time(clk_1Hz,time_MS); input clk_1Hz; output15:0 time_MS; reg3:0 M_H

12、,M_L,S_H,S_L; reg clk_SH,clk_ML,clk_MH; assign time_MS=M_H,M_L,S_H,S_L; /时间:分、秒 秒:个位always(posedge clk_1Hz)begin / if(S_L=9)begin 13 数字电子技术基础设计作业 S_L=0; clk_SH=1; end else begin S_L=S_L+1; clk_SH=0; end end always(posedge clk_SH)begin /秒:十位 if(S_H=5)begin S_H=0; clk_ML=1; end else begin S_H=S_H+1; c

13、lk_ML=0; end end 分钟:个位/always(posedge clk_ML)begin if(M_L=9)begin M_L=0; clk_MH=1; end else begin M_L=M_L+1; clk_MH=0; end end 14 数字电子技术基础设计作业 always(posedge clk_MH)begin /分钟:十位 if(M_H=5)M_H=0; else M_H=M_H+1; end endmodule /4个数字扫描显示模块 module IP_smg_dsp(clk_190Hz,dat,duan,wei); input clk_190Hz; inpu

14、t15:0dat; output reg7:0duan; output reg3:0wei; reg3:0disp; reg1:0smg_ctl; always(posedge clk_190Hz)begin smg_ctl=smg_ctl+1; case(smg_ctl) 2b00:begin wei=4b1110; disp=dat3:0; end 2b01:begin wei=4b1101; disp=dat7:4; end 2b10:begin wei=4b1011; disp=dat11:8; 15 数字电子技术基础设计作业 end 2b11:begin wei=4b0111; di

15、sp=dat15:12; end endcase end always(disp) case(disp) 0:duan=8b11000000; 1:duan=8b11111001; 2:duan=8b10100100; 3:duan=8b10110000; 4:duan=8b10011001; 5:duan=8b10010010; 6:duan=8b10000010; 7:duan=8b11111000; 8:duan=8b10000000; 9:duan=8b10010000; 10:duan=8b10001000; 11:duan=8b10000011; 12:duan=8b1100011

16、0; 13:duan=8b10100001; 14:duan=8b10000110; 15:duan=8b10001110; default:duan=8b11000000;/,默认为0 endcase 16 数字电子技术基础设计作业 endmodule 管脚约束文件: NET wei0 LOC = F12; NET wei1 LOC = J12; NET wei2 LOC = M13; NET wei3 LOC = K14; NET duan0 LOC = L14; NET duan1 LOC = H12; NET duan2 LOC = N14; NET duan3 LOC = N11; NET duan4 LOC = P12; NET duan5 LOC = L13; NET duan6 LOC = M12; NET duan7 LOC = N13; NET clk LOC=B8; 仿真波形: 17 数字电子技术基础设计作业 实验三仿真波形图 4图5.实验结论 (1)基于Verilog语言对FPGA开发板进行开发,可实现各种丰富的功能 (2)进行模块化的编程可提高编写代码的效率,也易于debug 6.实验中出现的问题及解决对策 (1)问题:map和place&route环节需要过长时间 解决:程序模块化,易于综合和布线 (2)问题:bit文件导入FPGA可以正常实现功能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论