交通灯VHDL设计.doc
文本预览下载声明
交通灯控制器设计报告
一.设计目的.
(1) 初步学习,运用VHDL(Verilog)语言编写模块程序。
(2) 巩固课堂所学的组合逻辑电路,时序逻辑电路及其有关的应用,如计数器,分频器等。
(3) 提高实践及运用意识。
二.设计任务及要求.
利用EDA/SOPC实验开发平台提供的八位七段管码显示模块以及EP2C35核心板,实现交通灯信号控制器。
设交通灯信号控制器用于主干道公路的交叉路口,要求是优先保证主干道的畅通,因此,平时处于“主干道绿灯,支道红灯”状态。
(1)当处于“主干道绿灯,支道红灯”状态:
① 主干道有车要求通行,支道也有车要求通行时,若主干道通行时间大于等于30秒则切换到“主黄,支红”,4秒后自动切换到“主红,支绿”。
② 主干道无车要求通行,支道有车要求通行时,立即切换到“主黄,支红”,4秒后自动切换到“主红,支绿”。
其它情况保持“主绿,支红”状态。
(2)当处于“主干道红灯,支道绿灯”状态:
① 支道有车要求通行时,保持“主红,支绿”状态,但最多保持30秒然后自动切换到“主红,支黄”状态,4秒后自动切换到“主绿,支红”状态。
② 支道无车要求通行时,立即切换到“主红,支黄”状态,4秒后自动切换到“主绿,支红”状态。
(3)利用八位七段管码显示模块其中的2位实现时间显示。
(4)扩展要求:自主设计(如改变时间显示方式,丰富控制逻辑等)
三.设计原理及方案.
1.总体设计框图
2.原理概述:
(1)由于主干道,支干道的交通灯均在绿,黄,红三种状态之间有顺序的转换,组合共有四种。所以,利用状态机按照设定的条件实现“主绿,支红” 、“主黄,支红” 、“主红,支绿”、“主红,支黄”4种状态之间的切换。
(2)因为红黄绿灯之间转换有时间限制,所以要有计数器,可用七段数码管显示模块,由于时间是两位数,所以只需要八位七段管码显示模块其中的2位实现时间显示。
(3)由于实验室提供的基准频率为50MHZ,所以得用分频器得到所需要的频率。
四.电路设计及实现.
(1)各模块设计程序及模块图:
1.1计数器:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY counter IS
PORT (clk:IN STD_LOGIC;
reset:in std_logic;
图1 计数器 countNum:BuFFeR INTEGER RANGE 0 TO 64);
END;
ARCHITECTURE behavior OF counter IS
BEGIN
process(reset,Clk)
BEGIN
IF Reset=1 THEN
countNum=0;
ELSIF rising_edge(Clk) THEN
IF countNum=64 THEN
countNum=0;
ELSE
countNum=countNum+1;
END IF;
END IF;
END PROCESS;
END;
(2)七段显示器程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY bcd_data IS
PORT
(bcd_data:in STD_LOGIC_VECTOR(3 downto 0);
segout: out STD_LOGIC_VECTOR(6 downto 0));
END;
ARCHITECTURE behavior OF bcd_data IS
BEGIN
process(bcd_data)
BEGIN
case bcd_data is
when 0000=segout=0111111;
when 0001=segout=0000110;
when 0010=segout=1011011;
when 0011 =segout=1001111;
图2 显示器 when 0100 =segout=1100110 ;
when 0101=segout=1101101 ;
when 0110=segout=1111101 ;
when 0111=segout=0000111 ;
when 1000 =segout=1111111 ;
when
显示全部