EDA实验报告南昌大学.docx
- 文档编号:10791278
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:21
- 大小:758.68KB
EDA实验报告南昌大学.docx
《EDA实验报告南昌大学.docx》由会员分享,可在线阅读,更多相关《EDA实验报告南昌大学.docx(21页珍藏版)》请在冰豆网上搜索。
EDA实验报告南昌大学
南昌大学实验报告
学生姓名:
胡文松学号:
6103413007专业班级:
生物医学工程131班
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
___
实验一模可变计数器设计
(一)实验目的
1、进一步熟悉实验装置和QuartusⅡ软件的使用;
2、进一步熟悉和掌握EDA设计流程;
3、学习简单组合、时序电路的EDA设计;
4、学习计数器中二进制码到BCD码的转换技巧;
5、学习实验装置上数码管的输出方法。
(二)设计要求
完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现模可变计数器功能,具体要求如下:
1、设置一个按键控制改变模值,按键按下时模为10-99之间(具体数值自行确定)的数,没按下时模为100-199之间(具体数值自行确定)的数;
2、计数结果用三位数码管十进制显示。
(三)主要仪器设备
3、微机1台
4、QuartusII集成开发软件1套
5、EDA实验装置1套
(四)实验步骤
主要有三个模块
1:
一个模20和模119的计数器
2:
数码管的显示
3:
BCD的调整
源程序:
modulecount(clk,m,en,rst,a,sel,SG,d);
inputclk,m,en,rst;
output[7:
0]SG;
output[2:
0]sel;
outputa;
(*synthesis,keep*)regclk1;
(*synthesis,keep*)wire[3:
0]gw,sw,bw;
/*(*synthesis,keep*)*/reg[3:
0]a;
reg[11:
0]q;
reg[11:
0]model;
reg[7:
0]cnt,SG;
reg[2:
0]sel;
reg[0:
0]d;
output[0:
0]d;
always@(posedgeclk)
begincnt=cnt+1;
if(cnt==200)beginclk1=1'b1;cnt=0;end
elseclk1=1'b0;//200分频,CLK为数码管扫描频率,CLK1为计数频率
if(sel<2)sel=sel+1;elsesel=0;end//sel为数码管选择
always@(sel)begin
case(sel)
0:
a=bw;//0数码管为百位
1:
a=sw;//1数码管为十位
2:
a=gw;//2数码管为个位
default:
a=0;
endcase
case(a)
0:
SG<=8'b00111111;1:
SG<=8'b00000110;
2:
SG<=8'b01011011;3:
SG<=8'b01001111;
4:
SG<=8'b01100110;5:
SG<=8'b01101101;
6:
SG<=8'b01111101;7:
SG<=8'b00000111;
8:
SG<=8'b01111111;9:
SG<=8'b01101111;//8段译码值
default:
SG=8'b11111111;
endcaseend
always@(m)
if(m)model=12'b000000100000;//模值20
elsemodel=12'b000100011001;//模值119
assigngw=q[3:
0];
assignsw=q[7:
4];
assignbw=q[11:
8];
always@(posedgeclk1,negedgerst)
begin
if(!
rst)q=0;
elseif(en)
begin
if(q begin if(gw==9)beginq=q+7;if(sw==9)q=q+96;end//BCD调整 elseq=q+1; end elseq=0; end end always@(q) if(q elsed<=1; endmodule 波形仿真: Clk1是计数频率,每来一个clk1信号q计数一次 如图所示: rst=1有效时开始计数clk为扫描频率 sel=0时数码管显示百位a=0 sel=1时数码管显示十位a=1 sel=2时数码管显示个位a=3 m=1模20计数器 m=0模119计数器 管脚分配: SG[0]PIN_F13 SG[1]PIN_F14 SG[2]PIN_F15 SG[3]PIN_E15 SG[4]PIN_F16 SG[5]PIN_F17 SG[6]PIN_E18 SG[7]PIN_F18 clkPIN_C13 enPIN_H8 mPIN_J9 rstPIN_C5 sel[0]PIN_G18 sel[1]PIN_G17 sel[2]PIN_G16 d[0]PIN_G13 (五)实验心得 吸取第一次实验的教训,这次实验我事先在寝室设计、编译调试和观察波形等。 相比较第一个实验,这个实验感觉更简单,只要想到了程序的设计方法其他的都能解决,所以,对这次实验来说,思路想法是很重要的。 在寝室完成实验后担心在实验室出现不可预知的问题,所以在实验前已经把引脚锁定好了,希望实验室能早点做出来。 结果还算满意,因为它没有直接原理图和AHDL语言作为参考,它完全是靠我自己的知识积累和创新完成的。 在实验箱上看见预期的实验现象时,我体会到了一种喜悦的感觉,同时我也认识到了只有动手才能真正学到东西。 其实在大学可能学不到我们预期的那么多知识,但能学会几个实用的软件,锻炼自己的动手能力,我想已经不错了。 实验二序列信号发生和检测器设计 (一)实验目的 1、进一步熟悉EDA实验装置和QuartusⅡ软件的使用方法; 2、学习有限状态机法进行数字系统设计; 3、学习使用原理图输入法进行设计。 (二)设计要求 完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现一个串行序列信号发生器和一个序列信号检测器的功能,具体要求如下: 1、先用设计0111010011011010序列信号发生器,其最后6BIT数据用LED显示出来; 2、再设计一个序列信号检测器,检测上述序列信号,若检测到串行序列“11010”则输出为“1”,否则输出为“0”; (三)主要仪器设备 1、微机1台 2、QuartusII集成开发软件1套 3、EDA实验装置1套 (四)实验步骤 主要两部分 1: 序列信号发生器设置q<=16'b0111010011011010; q[0]<=q[15]; Q<=q[15]; q[15: 1]<=q[14: 0]; 通过循环移位串行输出 2: 序列信号检测器 状转移态图一共有六个状态分别为 S=5'd00000, A=5'd00001, B=5'd00011, C=5'd00110, D=5'd01101, E=5'd11010; 源程序: modulexulie(clk,rst,z,Q,led); inputclk,rst; outputQ,z; output[4: 0]led; reg[4: 0]led; reg[4: 0]state; regQ,z; reg[4: 0]a; reg[15: 0]q; parameterS=5'd00000, A=5'd00001, B=5'd00011, C=5'd00110, D=5'd01101, E=5'd11010; always@(posedgeclk) begin if(rst==0)begin q<=16'b0111010011011010; end elsebegin q[0]<=q[15]; Q<=q[15]; q[15: 1]<=q[14: 0]; end end always@(posedgeclk) begin if(state==D&&Q==1) beginz<=1; led<=5'b11101;end elsebeginz<=0;led<=5'b00000;end end always@(posedgeclkornegedgerst) if(! rst) begin state<=S;end else casex(state) S: if(Q==1) state<=A; elsestate<=S; A: if(Q==1) state<=B; elsestate<=S; B: if(Q==1) state<=C; elsestate<=S; C: if(Q==0) state<=D; elsestate<=C; D: if(Q==1) state<=E; elsestate<=S; E: if(Q==0) state<=S; elsestate<=A; default: state<=S; endcase endmodule 波形仿真 当rst=1是序列信号发生器循环发出0111010011011010当检测到11010是z=1输出高电平,并且同时使11010序列显示在五个led灯上 (五)实验心得 通过以前实验的设计练习,这次实验的设计时间明显短于从前,一方面是对于VHDL有了一定的了解和熟悉,另一方面是加强了和同学的交流以及讨论。 比如设计中对于画出正确的状态转移图,自己一直有些考虑不清,在饶水华同学的帮助下,理解并且给出了正确的状态转移,从而使得实验设计得以成功。 遇到问题时,在考虑到一定程度时,和身边的老师、同学交流请教是非常必要的。 实验三、交通灯的设计 一、实验目的 1、学习与日常生活相关且较复杂数字系统设计; 2、学习二进制码到BCD码的转换; 3、学习有限状态机的设计应用。 二、实验要求 完成设计、仿真、调试、下载、硬件测试等环节,在型EDA实验装置上实现一个由一条主干道和一条乡间公路的汇合点形成的十字交叉路口的交通灯控制器功能,具体要求如下: 1、有LED5(主干道红灯)、LED4(主干道黄灯)、LED3(主干道绿灯)、LED2(乡村道红灯)、LED1(乡村道黄灯)、LED0(乡村道绿灯)六盏交通灯需要控制; 2、交通灯由绿转红前有4秒亮黄灯的间隔时间,由红转绿没有间隔时间; 3、乡间公路右侧各埋有一个串连传感器,当有车辆准备通过乡间公路时,发出请求信号S=1,其余时间S=0; 4、平时系统停留在主干道通行(MGCR)状态,一旦S信号有效,经主道黄灯4秒(MYCR)状态后转入乡间公路通行(MRCG)状态,但要保证主干道通行大于一分钟后才能转换; 5、一旦S信号消失,系统脱离MRCG状态,即经乡道黄灯4秒(MRCY)状态进入MGCR状态,即使S信号一直有效,MRCG状态也不得长于20秒钟; 6、控制对象除红绿灯之外,还包括分别在主干道和乡间公路各有一个两位十进制倒计时数码管显示。 三、实验设备 1、 PC机 2、QUARTUS集成开发软件 3、EDA实验装置 四、实验步骤 1)建立工程文件,编辑程序设计文件并保存。 2)对程序设计文件进行编译。 如图显示编译成功: 3)建立仿真波形文件,进行波形仿真: 输入设置: 对波形仿真文件进行编译: 如图: 当s信号为0时,分别是LED2(乡村道红灯)和LED3(主干道绿灯)亮,为主干道通行状态; 如图,态平时系统停留在主干道通行状,即主干道绿灯乡道红灯;一旦S信号有效,经主道黄灯4s状态后转入乡间公路通行状态,但要保证主干道通行大于一分钟后才能转换,并开始20s倒计时。 之后回到主干道绿灯,乡道红灯状态,60s倒计时。 4)进行管脚分配 如图对各管脚进行分配: 5)在实验箱上进行下载测试 将pc与实验箱连接,开始仿真。 K1表示信号s,当k1断开,表示乡村道路没有车辆,此时处于主干道通行状态。 当合上k1,主干道绿灯转黄灯4s后变为红灯,乡道变为绿灯,倒计时20s,又进入主干道绿灯状态。 通过实验现象可知,该程序的设计完全符合设计要求。 四、实验总结 这次试验用了两个模块,总体思路比较清晰,明白了主绿乡红、主黄乡红、主红乡绿、主红乡黄4个状态之间的循环,另外还有模可变倒计时计数器的设计。 实验四、多功能数字钟设计 一、实验要求 1、数字显示当前的时、分、秒; 2、闹钟和24小时计时显示; 3、经设置应具有整点报时、跑表、闹钟功能; 三、实验材料 微机、QuartusII集成开发软件、EDA实验装置 三、实验步骤 1.建立工作库文件夹,输入计数器的verilog代码并存盘。 2.选目标器件CycloneII中的EP2C35F672C8并编译。 3.建立仿真波形文件,进行波形仿真。 当Mode1=1为正常时间模式,输出的秒钟如图LED_Sec当到59秒时进位,分钟加1,秒钟重新计数,分钟如图LED_Min,当到59分时进位,时钟加1,分钟重新计数,通过按下AdjMinKey调节分钟时间,时钟如图LED_Hr,通过按下AdjHrKey可调节时钟时间,当LED_hr到23时,重新开始计数。 当Mode1=0,Mode2=1,为闹钟模式,按键按下SetHrKey调节闹钟的小时,按键按下SetMinKey调节闹钟的分钟,秒钟始终为零。 当时钟到闹钟时间时,Alarm信号为1,触发闹钟响铃。 当Mode1=0,Mode2=0,为秒表模式,其中LED_Sec位到99进位为零,LED_Min加1,可通过按键按下stopwatchen使秒表暂停,按键按下stopwatchnCR使秒表归零。 四、管脚分配 依据下表,分配好管脚。 五、硬件测试 1、调节Mode1=1(即K1打开,K2任意)时,显示正常时间,通过按下S2,S3分别调节小时和分钟时间。 2、调节Mode1=0,Mode2=1时(即K1关闭,K2打开),显示闹钟时间,通过按下S4,S5分别调节闹钟小时和分钟时间。 当正常时间到闹钟时间时,Alarm信号为1,触发闹钟,即LED8亮一分钟,通过关闭CtrlBell(即K3关闭)可立即关闭闹钟。 3、调节Mode1=0,Mode2=0时(即K1关闭,K2关闭),显示秒表时间,通过关闭stopwatchen(即K4)可暂停秒表时间,通过按下S6可是秒表归零。 4、当正常时间到XX: 59: 55---XX: 59: 59时,具有整点报时功能,即LED8灯亮起。 通过以上测试,所设计的多功能数字钟完全符合要求。 六、实验总结 1、学会复杂数字电路系统的设计: 对一般复杂的电路系统可以分模块设计,这样可以使设计简单明了 2、引脚绑定要和试验箱上的各个键对上号,在操作试验箱时才不会出错. 3、学会了数码管动态扫描电路的设计。 南昌大学实验报告 学生姓名: 胡文松学号: 6103413007专业班级: 生物医学工程131班 实验类型: □验证□综合□设计□创新实验日期: 实验成绩: 综合实验出租车计费器的设计 一、实验目的 1、了解出租车计费器的工作原理。 2、学会用verilogHDL语言编写正确的七段码管显示程序。 3、数量掌握用verilogHDL编写复杂功能模块。 4、进一步数量状态积在系统设计中的应用。 二、实验原理 出租车计费器一般都是按公里计费,通常是起步价xx元(xx元可以行走x公里),然后再是xx元/公里。 所以要完成一个出租车计费器,就要有两个计数单位,一个用来计公里,另外一个用来计费用。 通常在出租车的轮子上都有传感器,用来记录车轮转动的圈数,而车轮子的周长是固定的,所以知道了圈数自然也就知道了里程。 在这个实验中,就要模拟出租车计费器的工作过程,用步进电机模拟出租车轮子,通过传感器,可以得到电机每转一周输出一个脉冲波形。 结果的显示用8个七段码管,前四个显示里程,后四个显示费用。 在设计verilogHDL程序时,首先在复位信号的作用下将所有用到的寄存器进行清零,然后开始设定到起步价记录状态,在此状态时,在起步价规定的里程里都一直显示起步价,直到路程超过起步价规定的里程时,系统转移到每公里计费状态,此时每增加一公里,计费器增加相应的费用。 三、实验内容 本实验要完成的任务就是设计一个简单的出租车计费器,要求是起步价3元,准行1公里,以后1.5元/公里。 显示部分的七段码管扫描时钟选择时钟模块的1KHz,电机模块的跳线选择“开”端,这样通过旋钮电机模块的电位器,即可达到控制电机转速的目的。 另外用按键模块的S1来作为整个系统的复位按钮,每复位一次,计费器从头开始计费。 步进电机用来模拟出租车的车轮子,没转动一圈认为是行走1米,所以每旋转1000圈,认为车子前进1公里。 系统设计是需要检测电机的转动情况,每转一周,计米计数器增加1。 七段码管显示要求为前4个显示里程,后3个显示费用。 实验箱中用到的数字时钟模块、按键开关、步进电机模块、数码管与FPGA的接口电路. 4、实验步骤 1.建立工作库文件夹,输入计数器的VHDL代码并存盘。 2.选目标器件CycloneII中的EP2C35F672C8并编译。 在k<=30之前,也就是3公里以内,M=300,也就是始终为3元。 3.建立仿真波形文件,进行波形仿真。 RST是复位键,stop是暂停键。 k为公里数,m为所计的费用。 当k>30,开始计费,当k=40时,也就是4公里。 M=450,也就是4.5元。 4.如图所示,符合实验要求起步价3元,以后1.5元/公里。 5.下载测试 下载到实验箱上测试,七段码管前4个显示里程,后3个显示费用。 下推K8(stop=0),开始计费,当超过三公里后,开始以1.5元每公里计费。 上推k8停止计费,按下RST,计费器重新开始。 符合要求。 5、实验小结 通过本次实验让我了解出租车计费器的工作原理,掌握用verilogHDL语言编写正确的七段码管显示程序,调试过程中出现不少问题,但是通过同学老师的帮助都迎刃而解了,经过本次实验,也是收获量多。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 实验 报告 南昌大学