1、EDA课程设计报告课程设计名称:交通信号控制器的VHDL设计专业班级: 11通信工程2班 学生姓名: 学生学号: 指导教师: 完成时间: 目 录1. 设计任务及要求11.1设计任务11.2 设计要求12、设计方案12.1交通灯控制系统框图12.2交通灯控制器程序流程图23. 交通灯控制器单元模块的设计33.1 主控时序进程33.2 主控组合进程43.3 辅助进程44. 交通灯控制器顶层文件原理图45. VHDL源程序及仿真波形45.1 VHDL源程序45.2 仿真波形66. 硬件测试66.1 引脚锁定76.2 配置文件下载76.3 硬件调试7心得体会8参考文献9交通信号控制器的VHDL设计1.
2、 设计任务及要求1.1设计任务模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。要求:(1) 交通灯从绿变红时,有4秒黄灯亮的间隔时间;(2) 交通灯红变绿是直接进行的,没有间隔时间;(3) 主干道上的绿灯时间为40秒,支干道的绿灯时间为20秒;(4) 在任意时间,显示每个状态到该状态结束所需的时间。 支干道 主干道图1-1 十字路口交通管理示意图表1-1 交通信号灯的4种状态ABCD主干道交通灯绿(40秒)黄(4秒)红(20秒)红(4秒)支干道交通灯红红绿黄1.2 设计要求1) 采用VHDL语言编写程序,并在QUARTUSII工具平
3、台中进行仿真,下载到EDA实验箱进行验证。2) 编写设计报告,要求包括方案选择、程序清单、调试过程、测试结果及心得体会。3) 设计时间和地点:两个星期,信息楼4楼EDA实验室。2、设计方案2.1交通灯控制系统框图路口交通灯控制系统与其他控制系统一样,划分为控制器和受控电路两部分。控制器使整个系统按设定的工作方式交替指挥车辆及行人的通行,并接收受控部分的反馈信号,决定其状态转换方向及输出信号,控制整个系统的工作过程。系统框图如图2-1。控制器显示显示r g yR G Y南北东西CLK图2-1 十字路口交通灯控制系统框图图2-1中RGY分别表示东西方向红绿黄交通灯;rgy分别表示南北方向红绿黄交通
4、灯。各交通灯的状态及保持总时间如表2-1。表中1表示灯亮,0表示灯灭,顺序为红绿黄。表2-1 交通信号灯的4种状态S0S1S2S2主干道交通灯绿(40秒)010黄(4秒)001红(24秒)100支干道交通灯红(44秒)100绿(20秒)010黄(4秒)0012.2交通灯控制器程序流程图开始外部CLK控制Count加1Count=68?Count清零YN图2-2 交通灯控制器程序主流程图 S0Count=40?S1Count=44?S3Count=68?S2Count=64?001100010100100010100001YYYYNNNN图2-3交通灯控制器程序子流程图3. 交通灯控制器单元模块
5、的设计本系统采用状态机设计,可分为三大模块,分别为主控时序进程,主控组合进程,辅助进程。3.1 主控时序进程主控时序进程是负责状态机运转和在时钟驱动下负责状态转换的进程。当时钟的有效跳变到来时,时序进程只是机械地将代表次态的信号next_state中的内容送人现态的信号current_state中,而信号next_state中的内容完全由其他进程根据实际情况来决定。本设计中在主控时序进程中放置了异步复位控制信号RST。3.2 主控组合进程主控组合进程也可称为状态译码进程,其任务是根据外部输入的控制信号(包括来自状态机外部的信号和来自状态机内部其他非主控的组合或时序进程的信号),或和当前状态的状
6、态值确定下一状态(next_state)的取向,即next_state的取值内容,以及确定对外输出或对内部其他组合或时序进程输出控制信号的内容。本设计中主控组合进程通过信号current_s中的状态值,进入相应的状态,向外部输出交通灯和数码显示器控制信号,并在此状态中根据辅助进程的COUNT68的值来确定下一状态的走向,即向次态信号next_s中赋入相应的状态值。此状态值通过next_s传给主控时序进程,直到下一个时钟脉冲的到来再进入另一次的状态转换周期。3.3 辅助进程辅助进程用于配合状态机工作的组合进程或时序进程。本设计的辅助进程是秒计数器。秒计数器通过外部秒时钟CLK计数,当时钟CLK上
7、升沿到来时,COUNT68的值加1,COUNT68的值传递给主控组合进程,COUNT68的值等于68时清零重新计数。此进程放置有异步复位控制信号RST。4. 交通灯控制器顶层文件原理图 图4-1 顶层文件原理图5. VHDL源程序及仿真波形5.1 VHDL源程序LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY TRAFFIC_LAMP IS PORT(CLK,RST: IN STD_LOGIC;LEDCTRL: OUT STD_LOGIC_VECTOR(5 DOWNTO 0);
8、WESEGH: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); WESEGL: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); NSSEGH: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); NSSEGL: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY TRAFFIC_LAMP;ARCHITECTURE behav OF TRAFFIC_LAMP IS TYPE FSM_ST IS(S0,S1,S2,S3); SIGNAL current_s,next_s:FSM_ST; SIGNAL COU
9、NT68:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINCOUNT: PROCESS(RST,CLK) -辅助进程 BEGIN IF RST= 1 THEN COUNT68=00000000;-检测异步复位信号 ELSIF CLKEVENT AND CLK=1 THEN IF COUNT6801000011 THEN COUNT68=COUNT68+1; ELSE COUNT68=00000000; END IF; END IF;END PROCESS; REG: PROCESS (RST,CLK) -主控时序进程 BEGIN IF RST= 1 THEN curren
10、t_s = s0; -检测异步复位信号 ELSIF clk=1 AND clkEVENT THEN current_s LEDCTRL= 010100; WESEG:=39-COUNT68;NSSEG:=43-COUNT68; IF COUNT68 =00100111 THEN next_s=s1; ELSE next_s LEDCTRL= 001100; WESEG:=43-COUNT68;NSSEG:=43-COUNT68; IF COUNT68 = 00101011 THEN next_s=s2; ELSE next_s LEDCTRL= 100010; WESEG:=67-COUNT6
11、8;NSSEG:=63-COUNT68; IF COUNT68 =00111111 THEN next_s = s3; ELSE next_s LEDCTRL = 100001; WESEG:=67-COUNT68;NSSEG:=67-COUNT68; IF COUNT68 =01000011 THEN next_s= s0; ELSE next_s 39 THEN WESEG:=WESEG+24; ELSIF WESEG29 THEN WESEG:=WESEG+18; ELSIF WESEG19 THEN WESEG:=WESEG+12; ELSIF WESEG9 THEN WESEG:=W
12、ESEG+6; ELSE NULL;END IF;IF NSSEG39 THEN NSSEG:=NSSEG+24; ELSIF NSSEG29 THEN NSSEG:=NSSEG+18; ELSIF NSSEG19 THEN NSSEG:=NSSEG+12; ELSIF NSSEG9 THEN NSSEG:=NSSEG+6; ELSE NULL;END IF;WESEGH=WESEG(7 DOWNTO 4);WESEGL=WESEG(3 DOWNTO 0);NSSEGH=NSSEG(7 DOWNTO 4);NSSEGL=NSSEG(3 DOWNTO 0); END PROCESS; END A
13、RCHITECTURE behav;5.2 仿真波形6. 硬件测试硬件测试采用GW48实验箱,芯片为cyclone EP1C3T144C8,工作在模式NO.5状态下。6.1 引脚锁定根据GW48实验模式5电路结构图和模式结构图中I/O口与FPGA EP1C3T144C8的引脚对应引脚号锁定引脚。引脚锁定如表6-1。表6-1 引脚锁定端口名模式结构图中I/O口芯片引脚号端口名模式结构图中I/O口芯片引脚号WESEGH(3)PIO47106NSSEGL(3)PIO1942WESEGH(2)PIO46105NSSEGL(2)PIO1841WESEGH(1)PIO45103NSSEGL(1)PIO17
14、40WESEGH(0)PIO4499NSSEGL(0)PIO1639WESEGL(3)PIO4398LEDCTRL(5)PIO1538WESEGL(2)PIO4297LEDCTRL(4)PIO1437WESEGL(1)PIO4196LEDCTRL(3)PIO1336WESEGL(0)PIO4085LEDCTRL(2)PIO1033NSSEGH(3)PIO2350LEDCTRL(1)PIO932NSSEGH(2)PIO2249LEDCTRL(0)PIO811NSSEGH(1)PIO2148RSTPIO01NSSEGH(0)PIO2047CLKCLOKE0936.2 配置文件下载将编译产生的SOF
15、格式配置进FPGA中,打开编程窗和配置文件,将实验系统和并口通信线连接好,打开电源。在菜单TOOL中选择programmer,单机下载标符start按钮,即进入对目标器件FPGA的配置下载操作。6.3 硬件调试配置文件下载成功后,选择电路模式No.5,CLOKE0选择1HZ。观察数码管与LED信号指示灯的变化情况。若数码管与LED信号指示灯按照表2-1所述规律变化,说明控制器主程序正确可行。系统在工作的任意状态,按下按键1,系统回到初始状态,则表明异步复位控制正常。完成以上调试均正常,硬件测试成功。心得体会本次EDA课程设计的主要任务是根据设计要求编写VHDL程序,在Quartus II软件上
16、编译仿真,最后下载到GW48实验箱进行硬件测试。本设计为交通信号控制系统,主要是编写交通信号控制器的VHDL程序。交通信号控制器设计的难点是状态较多,并且状态转换时间不相同。如果运用VHDL语言的并行进程语句判断状态的转换,逻辑性比较强,结构清晰。在此设计过程中考验了自己独立编写程序的能力和思维逻辑性,同时复习了已学过的知识,提升VHDL语言及Quartus II的运用能力,而且提高了查阅资料和分析解决问题的能力,达到本次课程设计的目的。参考文献1潘松,黄继业EDA技术与VHDL(第3版)清华大学出版社,20102刘明业VHDL语言100例详解清华大学出版社,20013邢建平,曾繁泰VHDL程序设计教程(第3版)清华大学出版社,20114全国大学生电子设计竞赛主委会第九届全国大学生电子设计竞赛获奖品选编M北京理工大学出版社,20109