1、 课课 程程 设设 计计 报报 告告 课程名称 PLD 原理与应用 设计题目 交通灯控制器设计 专 业 通信工程 班 级 学 号 姓 名 完成日期 2012-12-21 课课 程程 设设 计计 任任 务务 书书 设计题目:设计题目:交通灯控制器设计 设计内容与要求:设计内容与要求: 运用 VHDL(Verilog)语言编写控制模块程序,仿真并调试好所设计程序预期的 功能,最后在实验开发板上下载并运行成功。 指导教师:_ 年 月 日 课课 程程 设设 计计 评评 语语 成绩:成绩: 指导教师:_ 年 月 日 1 一设计目的. (1)运用 VHDL(Verilog)语言编写模块程序。 (2)巩固课
2、堂所学的组合逻辑电路,时序逻辑电路及其有关的应用,如计数器,分频器。 (3)提高实践及运用意识。 二设计任务及要求. 基本模型: 设交通灯信号控制器用于主干道公路的交叉路口, 要求是优先保证主干道的畅通, 因此, 平时处于“主干道绿灯,支道红灯”状态。 (1)当处于“主干道绿灯,支道红灯”状态: 主干道有车要求通行,支道也有车要求通行时,若主干道通行时间大于等于30秒则 切换到“主黄,支红” ,4秒后自动切换到“主红,支绿” 。 主干道无车要求通行,支道有车要求通行时,立即切换到“主黄,支红” ,4秒后自 动切换到“主红,支绿” 。 其它情况保持“主绿,支红”状态。 (2)当处于“主干道红灯,
3、支道绿灯”状态: 支道有车要求通行时,保持“主红,支绿”状态,但最多保持30秒,然后自动切换 2 到“主红,支黄”状态4秒,之后自动切换到“主绿,支红”状态。 支道无车要求通行时,立即切换到“主红,支黄”状态,4秒之后,自动切换到“主 绿,支红”状态。 (3)利用八位七段管码显示模块其中的2位实现时间显示。 (4)扩展要求:自主设计(如改变时间显示方式,丰富控制逻辑等) 三设计原理及方案. 1.总体设计框图 2.原理概述: (1)由于主干道,支干道的交通灯均在绿,黄,红三种状态之间有顺序的转换,组合共 有四种。所以,利用状态机按照设定的条件实现“主绿,支红” 、 “主黄,支红” 、 “主红,
4、支绿” 、 “主红,支黄”4种状态之间的切换。 (2)因为红黄绿灯之间转换有时间限制,所以要有计数器,可用七段数码管显示模块,由 于时间是两位数,所以只需要八位七段管码显示模块其中的2位实现时间显示。 (3)由于实验室提供的基准频率为50MHZ,所以得用分频器得到所需要的频率。 3 四、VHDL 功能语言实现程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity traffic is port(clk: in std_logic; A1,B1,C1,D1,A2,B2,C2,D2
5、:out std_logic; AR,AY,AG,BR,BY,BG,oe:out std_logic); end; architecture arch of traffic is type states is (s3,s2,s1,s0); signal state: states:=s0; signal next_state: states:=s0; signal count: std_logic_vector(2 downto 0); signal count0: std_logic_vector(3 downto 0); signal count1: std_logic_vector(3
6、downto 0); signal data0: std_logic_vector(3 downto 0); signal data1: std_logic_vector(3 downto 0); signal light: std_logic_vector(5 downto 0); signal en,load,carry: std_logic; begin p1:process(clk,load) begin if rising_edge(clk) then if load=1 then count0=data0; 4 elsif count0=“0000“ then count0=“1001“; else count0=count0-1; end if; end