




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数字电路综合实验 -交通灯班级:姓名:学号:班内序号:教师:设计任务要求控制器部分的状态转移图和流程图;交通灯控制器:用于十字路口的交通灯控制器。实验要求:1. 东西方向各有一组红,黄,绿灯用于指挥交通,红,黄,绿的持续时间分别为25s,5s,20s 。2. 当有紧急情况(如消防车)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制器恢复原来状态,正常工作。3. 两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间。4. 选做:增加左、右转弯显示控制功能;5. 选做:其它自拟功能。设计思路1总体设计:由设计任务要求可知,输入部分有:1) clk时钟频率输入,可由实验板上直接提供。
2、2) 紧急状态按键key,当按一下键,表示紧急情况发生,两个方向均为红灯亮,计时停止,蜂鸣器蜂鸣;当再次按下键时,信号灯和计时器恢复原来状态,正常工作。输出部分有:1) 东西方向和南北方向各使用4个led显示,红黄绿各代表红黄绿灯,绿灯和另一个红灯同时亮时为左转时间。2) 东西方向和南北方向计时均为2位数,共需要4个led七段数码管显示。由于为共阴极控制,输出一个catn信号控制选择数码管显示,num_out信号输出显示的内容。3) 增加一个voice输出,控制紧急状态下的蜂鸣器。总体设计图,如下clk r1key y1 g1 t1key r2 y2 g2 t2 voice num_out(0
3、-6) catn(0-5)clk按键数码管显示输出数码管共阴极控制东西向交通灯南北向交通灯蜂鸣器main系统复位紧急请求控制器交通灯系统结构图 东西交通灯 南北交通灯蜂鸣器2分块设计:1) 在vhdl设计中,采用自顶向下的设计思路。顶层模块中,根据硬件设计,设置如下端口:外部时钟信号:clk紧急状态按键:key东西方向状态灯:r1,y1,g1,t1南北方向状态灯:r2,y2,g2,t2蜂鸣器控制:voice数码管显示信号:num_out数码管共阴极控制:catn2) 在底层中,把不同功能分模块设计。u emergency模块:紧急情况控制信号是采用按键的输入方式,当按键按下时候,由emerge
4、ncy模块接收按键信息并输出信号给其它模块。输入端口:btn_in接收按键信息输出端口:btn_out输出紧急信号u debounce模块,由于紧急控制采用btn按键,其产生时刻和持续时间的长短是随机不定的,且存在因开关簧片反弹引起的电平抖动现象,因此必须安排一个消抖和同步化电路模块,以保证系统能捕捉到输入脉冲。输入端口:key按键信息,clk时钟信号输出端口:key_out消抖后信号u frequency1模块,由于外部时钟信号clk的频率为1mhz,而实际需要的内部计时时钟频率为1hz,需要一个分频电路。输入端口:clk外部时钟信号输出端口:clk_out分频后信号u statussele
5、ct模块,由于共需要显示4个数字,需要循环点亮7位数码管,该模块通过输入的时钟信号,循环输出4个选择信号。当紧急状态信号到来,改变显示状态,通过计数部分,实现闪烁,并输出蜂鸣信号。输入端口:clk时钟信号,show紧急显示输出端口:sel选择信号,voice蜂鸣信号u timeselect模块,接收状态选择信号以及交通灯剩余时间信号,根据状态选择信号,选择剩余时间的位数输出给译码模块,并选择阴极控制显示位置。输入接口:sel状态选择信号, timeh1 timel1 timeh2 timel2剩余时间输出接口:catn共阴极控制,time_out数字输出u display模块,接收数字信号,进
6、行7位数码管显示译码输出。输入接口:num_in输入信号输出接口:num_out译码输出u 信号灯控制模块,东西方向controla,南北方向controlb。自定义一个type类型,包括green,yellow,red,turn状态,接收到分频后的信号,通过case语句,进行状态选择,在每个状态下分别计时,当计时结束后,选择下一个状态,循环显示。当紧急状态下,停止循环,计数停止。输入接口:clk时钟信号,show紧急状态控制输出接口:timeh timel计时数字输出,r g y t信号灯输出总体流程图总体结构框图;clk rshow gconrola ytimehtimelclk rsho
7、w gconrolb ytimehtimel statusselectclk voice seltimeselectsel catntimeh1timel1 timeouttimeh2timel2displaynum_innum_outfrequency1clkclk_outdebouncekeykey_outemergencybtn_inbtn_outclkbtn7segvoice所实现功能说明实现功能:南北和东西方向各有一组绿,转弯,红,黄灯,各自的持续时间分别为10s,10s,25s,5s;当有特殊情况时,两个方向均为红灯,计时暂停,闪烁并伴有蜂鸣声。当特殊情况结束后,控制器恢复原来状态
8、,继续正常工作。用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的剩余时间。当绿灯和另一红灯同时亮时,允许左拐。编译结果controla模块状态转移图controlb模块状态转移图仿真波形波形方针时,为方便观察,将分频器改为10分频 。通过观察,r1,y1,g1,t1,r2,y2,g2,t2可看出为循环显示,一方向为红灯时,另一方向显示绿灯、转弯灯、黄灯。放大后可看到倒计时显示的变化,以及共阴极控制的选择当按下key键,key信号产生脉冲,进入紧急状态,只有两盏红灯亮,同时蜂鸣器产生蜂鸣信号,当再次按下key键,紧急状态解除放大后,可看出计时暂停,并且数码管共阴极选择会在全1信号和选择
9、信号间交替,产生闪烁效果。故障及问题分析;u 开始时,选用了低频clk信号,无法准确控制时间长短,经老师指点换用了高频信号,同时修改了分频电路以准确分频。u 对程序的选择分支认识不清楚,case语句嵌套不正确,编译后系统宏单元超出,修改嵌套关系后,宏单元大幅下降。总结和结论;通过综合实验的思考和设计,对一个项目的整体设计有了进一步认识。当看到要求后,应该对项目进行分功能和模块的设计,自顶向下,完成顶层的设计后,再编写功能模块。模块化设计便于修改和查错。通过程序的编写,加深了对vhdl语言的了解,提高了编程能力。同时,锻炼了独立发现问题解决问题的能力,提高了个人素质。所用元器件及测试仪表清单u
10、稳压电源u 万用表u 示波器u 计算机u 实验板一块u quartus ii 完整源程序u emergency模块library ieee;use ieee.std_logic_1164.all;entity emergency is port(btn_in:in std_logic;-接收按键信息btn_out:out std_logic-输出紧急信号);end emergency;architecture emergency_arc of emergency isbeginprocess(btn_in)variable temp: std_logic;beginif btn_inevent
11、 and btn_in=1 thentemp:= not temp;-当有紧急信号时,输出信号切换end if;btn_out=temp;end process;end;u debounce模块library ieee;use ieee.std_logic_1164.all;entity debounce isport(key,clk: in std_logic;-按键信息key_out: out std_logic-时钟信号 );end debounce;architecture debounce_arc of debounce issignal temp1,temp2: std_logic
12、;beginprocess(key,clk)beginif clkevent and clk=0 then-与时钟信号同步,并且temp2=temp1;-与存储先前值temp1=key;end if;end process;key_out=temp1 and (not temp2) and clk;-消抖输出end;u frequency1模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity frequency1 isport(clk:in std_logic;-外部时钟信号clk_o
13、ut:out std_logic-分频后信号);end frequency1;architecture frequency1_arc of frequency1 isbeginprocess(clk)variable temp:integer range 0 to 999999;beginif(clkevent and clk=1)thenif(temp=999999)then-分频计数temp:=0;clk_out=0;elsetemp:=temp+1;clk_out-非紧急状态voicetemptemptemptemptemp-紧急状态voicetemptemptemptemptemp=0
14、00;end case;elsetemp=111;end if;end case;end if;seltime_out=timeh1; catntime_out=timel1; catntime_out=timeh2; catntime_out=timel2; catntime_out=0000; catnnum_outnum_outnum_outnum_outnum_outnum_outnum_outnum_outnum_outnum_outnum_out-非紧急状态case temp_color iswhen yellow=-黄灯tempr:=0;tempg:=0;tempy:=1;tem
15、pt:=0;case reset is-计时部分when 0 =-归零temp_h:=0000;temp_l:=0100;reset:=1;when others =-计时case temp_l iswhen 0000=temp_l:=1001;temp_h:=temp_h-1;when 0001=case temp_h iswhen 0000 =temp_h:=0000;temp_l:=0000;reset:=0;temp_color:=red;when others =temp_l:=0000;end case;when others=temp_l:=temp_l-1; end case;
16、end case;when green=-绿灯tempr:=0;tempg:=1;tempy:=0;tempt:=0;case reset is-计时部分when 0 =-归零temp_h:=0000;temp_l:=1001;reset:=1;when others =-计时case temp_l iswhen 0000=temp_l:=1001;temp_h:=temp_h-1;when 0001=case temp_h iswhen 0000 =temp_h:=0000;temp_l:=0000;reset:=0;temp_color:=turn;when others =temp_l:
17、=0000;end case;when others=temp_l:=temp_l-1; end case;end case;when red=-红灯tempr:=1;tempg:=0;tempy:=0;tempt:=0;case reset is-计时部分when 0 =-归零temp_h:=0010;temp_l:=0100;reset:=1;when others =-计时case temp_l iswhen 0000=temp_l:=1001;temp_h:=temp_h-1;when 0001=case temp_h iswhen 0000 =temp_h:=0000;temp_l:
18、=0000;reset:=0;temp_color:=green;when others =temp_l:=0000;end case;when others=temp_l:=temp_l-1; end case;end case;when turn=-转弯tempr:=0;tempg:=1;tempy:=0;tempt:=1;case reset is-计时部分when 0 =-归零temp_h:=0000;temp_l:=1001;reset:=1;when others =-计时case temp_l iswhen 0000=temp_l:=1001;temp_h:=temp_h-1;when 0001=case temp_h iswhen 0000 =temp_h:=000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 航空快递合作协议样本
- 二零二五年度保健食品电商平台居间合作协议
- 二零二五年度高端商务区开荒保洁及定期保洁服务合同
- 2025年植物生长调节剂项目合作计划书
- 电视墙架企业数字化转型与智慧升级战略研究报告
- 专用家具企业数字化转型与智慧升级战略研究报告
- 乡镇卫生院机器人行业深度调研及发展战略咨询报告
- 人造染色板企业ESG实践与创新战略研究报告
- 医学级润体啫喱制造行业跨境出海战略研究报告
- 2025年交通运输自动化监测与管理系统合作协议书
- 工期定额-民用建筑
- 黄土地质灾害类型及其危害性评估
- 交际德语教程第二版A1Studio[21] 课后习题参考答案
- 最新修改 班组安全管理建设--5831模式通用课件
- 气割、电气焊作业的应急救援预案
- 2018年柴油机大修工程量单
- 超级精美PPT模版美国经典ppt模板(通用珍藏版2)
- 2022年“叶圣陶杯”全国中学生新作文大赛专用稿纸
- 中医内科方歌-八
- 气动控制阀的定义分类及工作原理详解
- 梯形练字格A4纸打印版
评论
0/150
提交评论