基于
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_green
,
led_yellow:out std_logic;
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;
led_red