实验报告课程名称:EDA课程设计实验名称:交通控制器的设计专业班级:学生姓名:学号:指导老师:实验日期:2012/12/15一、实验目的掌握VHDL状态机设计。二、实验内容设计一个由一条主干道和一条支干道的汇合点形成的十字交叉路口的交通灯控制器,具体要求如下:(1)主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。(2)主、支道交替允许通行,主干道每次放行45s,支干道每次放行25s,在每次由亮绿灯变成亮红灯的转换过程中,要亮5s的黄灯作为过渡,并进行减计时显示。三、设计(实验)正文实验时使用状态机完成对交通灯的控制,设置s0,s1,s2,s3四个状态,分别表示主绿支红,主黄支红,主红支绿,主红支黄四个状态,设置LED1,LED2,LED3,LED4四个输出来控制倒计时数码管工作。同时使用计数器对交通灯进行时间控制。四、设计(实验)编码libraryieee;; ; entitytrafficis port( clk:instd_logic; lgt1_red,lgt1_yellow,lgt1_green:outstd_logic;--主干道的红黄绿灯 lgt2_red,lgt2_yellow,lgt2_green:outstd_logic;--支干道的红黄绿灯 led1:outstd_logic_vector(6downto0); led2:outstd_logic_vector(6downto0); led3:outstd_logic_vector(6downto0); led4:outstd_logic_vector(6downto0) ); endentitytraffic; architecturertloftrafficis typestatesis(s0,s1,s2,s3);--4种状态 signalone1,ten1,one2,ten2:std_logic_vector(3downto0);--倒计时的个位和十位 signalqh1,ql1,qh2,ql2:std_logic_vector(3downto0);--数码管地址控制信号bcd signalra,rb,ga,gb,ya,yb:std_logic; begin process(clk) variablem:states:=s0; variablea:std_logic; variableqh1,ql1,qh2,ql2:std_logic_vector(3downto0);-------------计位的高位和低位 begin ifclk'eventandclk='1'then if(m=s0)then ifa='0'then--状态s1,主干道通行45s qh1:="0100";--高位为4 ql1:="0100";---低位为40-44 ql2:="1001"; qh2:="0100";---49s a:='1'; ra<='0'; ya<='0'; ga<='1';--主干道绿灯亮 rb<='1';---支干道红灯亮 yb<='0'; gb<='0'; else ifqh1=0andql1=1then--如果倒计时到01结束,则转到s1的状态 m:=s1;
VHDL交通灯 来自淘豆网www.taodocs.com转载请标明出处.