欢迎来到天天文库
浏览记录
ID:11751252
大小:40.00 KB
页数:10页
时间:2018-07-13
《基于vhdl语言的交通灯控制器设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于VHDL语言的交通灯控制器设计2009年06月18日星期四20:38设计要求1、显示一个方向的绿、黄、红的指示状态。2、特殊情况按键能实现特殊的功能,计数器停止计数并保持在原来的状态,显示红灯状态。特殊状态解除后能继续计数.3、复位按键实现总体计数清零功能。4、实现正常的倒计时功能.用数码管作为倒计时显示,显示时间为绿灯17s,黄灯3s红灯20s。
2、----------------->
3、--->
4、-------------------->
5、
6、 绿灯
7、黄灯
8、 红灯
9、设计思想 首先由晶振产生出发信号,由控制器处理成1HZ的时
10、钟,利用此时钟进行计数,通过判断计数的值来控制交通灯的亮灭。通过每种灯亮的时间总数与计数值比较得到数码管应该显示的数值,利用分位程序将其分成十位和个位。通过译码电路来实现数码管的显示。 本实验所使用的芯片为EPM7128SLS84-6,实体逻辑单元为64点,结构体逻辑单元为128点,是一种小型芯片。软件 本实验使用MAX+plusII10来进行程序的编写,编译,仿真以及下载。在实验中发现其功能虽然使用,但仍有地方需要改进,不支持MOD取余运算。(源程序) *在MAX+plusII中,汉字很容易出现乱码,建议大家用英文,这里为了考虑到读者的习惯,因此在写论文时都译成中
11、文LibraryIEEE;UseIEEE.std_logic_1164.all;EntityredgreenisPort( clock_in:instd_logic; hold_state:instd_logic; reset_state:instd_logic; led_red,led_green,led_yellow:outstd_logic; select_en:bufferstd_logic; select_display:outstd_logic_vector(0to6));end;Architecturehalfofredgreeniscon
12、stantloop_hz:integer:=800000;--一根据晶振实际频率算出来signalcount_time:integerrange0toloop_hz;signalclock_buffer:std_logic;signalclock_out:std_logic;signalcount_num:integerrange0to40;signaldisplay_num:integerrange0to20;signaldisplay_shi:integerrange0to9;signaldisplay_ge:integerrange0to9;constantloop_ti
13、me:integer:=40;个循环周期的时间constantred_time:integer:=20;--红灯的时间constantgreen_time:integer:=17;--绿灯的时间constantyellow_time:integer:=3;--黄灯的时间begin process(clock_in)--分频进程 begin ifrising_edge(clock_in)then ifcount_time=loop_hzthen count_time<=0; clock
14、_buffer<=notclock_buffer; else count_time<=count_time+1; endif; endif; clock_out<=clock_buffer;--输入1HZ的频率 endprocess; process(reset_state,clock_out)--计数进程 begin ifreset_state=1then--重启后计数归零 count_num<=0; elsifrising_ed
15、ge(clock_out)then ifhold_state=1then--紧急时计数占停 count_num<=count_num; else ifcount_num=loop_time-1then count_num<=0; else count_num<=count_num+1;
此文档下载收益归作者所有