基于VHDL语言的交通灯控制器设计.docx

基于VHDL语言的交通灯控制器设计 2009年 06 月 18 日 星期四 20:38 设计要求 1、 显示一个方向的绿、黄、红的指示状态。 2、 特殊情况按键能实现特殊的功能,计数器停止计数并保持在原来的状态,显示红灯状态。 特殊 后能继续计数 . 3、 复位按键实现总体计数清零功能。 4、 实现正常的倒计时功能 . 用数码管作为倒计时显示 , 显示时间为绿灯 17s, 黄灯 3s 红灯 20s。 | |---| | | 绿灯 | 黄灯 | 红灯 | 设计思想 首先由晶振产生出发信号,由控制器处理成 1HZ的时钟,利用此时钟进行计数,通过判断 控制交通灯的亮灭。通过每种灯亮的时间总数与计数值比较得到数码管应该显示的数值,利用分位 分成十位和个位。通过译码电路来实现数码管的显示。 本实验所使用的芯片为 EPM7128SLS84-,6 实体逻辑单元为 64 点,结构体逻辑单元为 128 小型芯片。 软件 本实验使用 MAX+plus II 10 来进行程序的编写,编译,仿真以及下载。在实验中发现其 用,但仍有地方需要改进,不支持 MOD取余运算。 ( 源程序 ) * 在 MAX+plus II 中,汉字很容易出现乱码,建议大家用英文,这里为了考虑到读者的习惯 写论文时都译成中文 Library IEEE; Use IEEE.std_logic_1164.all; Entity redgreen is Port ( clock_in:in std_logic hold_state:in std_logic; reset_state:in std_logic led_red, led_green , led_yellow:out std_logic; led_red select_en:buffer std_logic; select_display:out std_logic_vector(0 to 6) ); end; Architecture half of redgreen is constant loop_hz:integer:=800000; -- 一根据晶振实际频率算出来 signal count_time:integer range 0 to loop_hz; signal clock_buffer:std_logic; signal clock_out:std_logic; signal count_num:integer range 0 to 40; signal display_num:integer range 0 to 20; signal display_shi:integer range 0 to 9; signal display_ge:integer range 0 to 9; constant loop_time:integer:=40; 个循环周期的时间 constant red_time:integer:=20; -- 红灯的时间 constant green_time:integer:=17; -- 绿灯的时间 constant yellow_time:integer:=3; -- 黄灯的时间 begin process(clock_in) -- 分频进程 begin if rising_edge(clock_in) then if count_time=loop_hz then count_time=0; clock_buffer=not clock_buffer; else count_time=count_time+1; end if; end if; clock_out=clock_buffer;-- 输入 1HZ 的频率 end process; process(reset_state ,clock_out) -- 计数进程 begin if reset_state=1 then -- 重启后计数归零 count_num=0; elsif rising_edge(clock_out) then if hold_state=1 then -- 紧急时计数占停 count_num=count_num; else if count_num=loop_time-1 then count_num=0; else count_num=count_num+1; end if; end if; end if; end process; process(clock_out) -- 交通灯显示 count count begin num num if falling_edge(clock_in) then if hold_state=1 then -- led_red=1; led_green=0;

文档评论(0)

1亿VIP精品文档

相关文档