FPGA课设——交通信号控制器的VHDL设计
1、设计任务及要求:2、参考设计方案3、采用 VHDL 语言输入的方式实现交通信号灯控制器4、设计方案5、自定义交通灯主从控制时间
1、设计任务及要求:
设计任务:模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED 作为交通信号灯,设计一个交通信号灯控制器。要求: (1)交通灯从绿变红时,有4秒黄灯亮的间隔时间; (2)交通灯红变绿是直接进行的,没有间隔时间; (3)主干道上的绿灯时间为40秒,支干道的绿灯时间为20秒; (4)在任意时间,显示每个状态到该状态结束所需的时间。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210616080804320.png#pic_center)
设计要求: (1)采用VHDL语言编写程序,并在QUARTUSII工具平台中进行仿真,下载到EDA实验箱进行验证。 (2)编写设计报告,要求包括方案选择、程序清单、调试过程、测试结果及心得体会。
2、参考设计方案
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210616080954422.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NzA1NDg4,size_16,color_FFFFFF,t_70#pic_center)
3、采用 VHDL 语言输入的方式实现交通信号灯控制器
该程序由 7 个进程组成,进程 P1 和 P2 将 CLK 信号分频后产生 1 秒信号,进程 P3、P4、 P5构成两个带有预置数功能的十进制计数器,其中P4 产生允许十位计数器计数的控制信号。 进程P6实现状态转换和产生状态转换的控制信号,进程P7产生次态信号和信号灯输出信号, 以及每一个状态的时间值。
4、设计方案
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY TRAFFIC_LIGHT IS
PORT(CLK,RST: IN STD_LOGIC;
LED: OUT STD_LOGIC_VECTOR(5 DOWNTO 0); --定义6个LED灯
WideSEGH: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --主干倒计时的十位
WideSEGL: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --主干倒计时的个位
NSEGH: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --支干倒计时的十位
NSEGL: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); --支干倒计时的个位
END ENTITY TRAFFIC_LIGHT;
ARCHITECTURE bhv OF TRAFFIC_LIGHT IS
TYPE state IS(S0,S1,S2,S3); --枚举状态类型
SIGNAL current_s,next_s:state;
SIGNAL COUNT68:STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
COUNT: PROCESS(RST,CLK) --辅助进程
BEGIN
IF RST= '1' THEN --异步清零
COUNT6819 THEN WESEG:=WESEG+12;
ELSIF WESEG>9 THEN WESEG:=WESEG+6;
ELSE NULL;
END IF;
--这个修改方法跟上面一样
IF NSSEG>39 THEN NSSEG:=NSSEG+24;
ELSIF NSSEG>29 THEN NSSEG:=NSSEG+18;
ELSIF NSSEG>19 THEN NSSEG:=NSSEG+12;
ELSIF NSSEG>9 THEN NSSEG:=NSSEG+6;
ELSE NULL;
END IF;
WESEGH |