交通灯控制电路设计
一、实验目的
1.掌握一般状态机的设计与应用。
2.掌握交通灯的亮灭规律和控制器的工作原理。
3.进一步熟悉
VHDL 语言编程,了解实际设计中的优化方案。
二、实验内容
1.实验前完成交通灯控制电路程序的编写。内容是设计一个简单的交通灯控制器,交通灯显示用实验箱的交通灯模块来显示。系统时钟选择时钟模块的 1Hz时钟,黄灯闪烁时钟要求为1Hz,红灯15s,黄灯 5s,绿灯15s。系统中用 CPU板上的复位按键进行复位。
2.本实验需要用到实验箱上交通灯模块中的发光二极管,即红、黄、绿各三个。其交通灯的亮灭规律为:初始态是两个路口的红灯全亮,之后东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。
3.完成VHDL程序的编译并仿真。仿真无误后,对交通灯模块的 LED对应的FPGA 引脚进行管脚绑定,然后再重新编译一次。用下载电缆通过 JTAG接口将对应的sof 文件下载到FPGA中。
4.功能选择位 M[3…0]状态均为0111,则16位数据线和交通灯控制电路相连接。CLK_1,即对应 IO3(用导线连接
IO3 与 ADJ_CLK,调整 SW17-SW20,使输出频率为1Hz)
实验代码
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY traffic_light is
GENERIC( green1:integer:=15;--定义东西绿灯亮15S
yellow1 :integer:=5 ;--定义东西黄灯亮5S
green2:integer:=15;--定义南北绿灯亮15S
yellow2 :integer:=5);--定义南北黄灯亮5S
PORT(
CLK,RST: IN STD_LOGIC;
w_r,w_y,w_g,e_r,e_y,e_g,n_r,n_y,n_g,s_r,s_y,s_g: out STD_LOGIC
);
End traffic_light;
ARCHITECTURE rtl of traffic_light is
Type states is (st0,st1,st2,st3,st4);--定义控制器各种状态
Signal state:states:=st4; --