VHDL上机作业-交通灯
基于vhdl语言的交通信号灯设计说明书

交通信号控制器的VHDL的设计1.设计任务模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED 作为交通信号灯,设计一个交通信号灯控制器,示意图如图1-1所示。
要求:(1)交通灯从绿变红时,有4秒黄灯亮的间隔时间;(2)交通灯红变绿是直接进行的,没有间隔时间;(3)主干道上的绿灯时间为40秒,支干道的绿灯时间为20秒;(4)在任意时间,显示每个状态到该状态结束所需的时间。
支干道主干道图1-1 路口交通管理示意图表1-1 交通信号灯的4种状态2.设计要求采用VHDL语言编写程序,并在QuartusII工具平台中进行开发,下载到EDA 实验箱进行验证。
编写设计报告,要求包括方案选择、程序清单、调试过程、测试结果及心得体会。
3.设计方案据输图3-1 交通信号灯控制器程序原理框图进程将CLK信号分频后产生1秒信号,然后构成两个带有预置数功能的十进制计数器,并产生允许十位计数器计数的控制信号。
状态寄存器实现状态转换和产生状态转换的控制信号,下个模块产生次态信号和信号灯输出信号,以及每一个状态的时间值。
经过五个模块的处理,使时间计数、红绿灯显示能够正常运行。
程序原理图如图3-1所示。
4.各模块具体设计4.1顶层文件的设计顶层文件的原理图可以依据系统的框图进行,由控制模块JTD_CTRL、计时模块JTD_TIME、译码驱动模块JTD_LIGHT、显示模块JTD_DIS和分频模块JTD_FQU 五部分组成,其顶层原理图文件如图3-1所示。
图4-1交通灯顶层文件原理图顶层模块的程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TRAFFIC ISPORT(CLK1K,CLR:IN STD_LOGIC;M:IN STD_LOGIC_VECTOR(2 DOWNTO 0);LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);ABL:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END TRAFFIC;ARCHITECTURE BEHA VE OF TRAFFIC ISCOMPONENT JTD_FQU IS --分频器元件的例化PORT(CLK1K:IN STD_LOGIC;CLK:OUT STD_LOGIC);END COMPONENT;COMPONENT JTD_DIS IS --数码显示的元件例化PORT(CLK1K,CLK,CLR:IN STD_LOGIC;M:IN STD_LOGIC_VECTOR(2 DOWNTO 0);AT,BT:IN STD_LOGIC_VECTOR(7 DOWNTO 0);LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT JTD_LIGHT IS --译码驱动的元件例化PORT(CLR:IN STD_LOGIC;M,S:IN STD_LOGIC_VECTOR(2 DOWNTO 0);ABL:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END COMPONENT;COMPONENT JTD_TIME IS --计时元件的例化PORT(CLK,CLR:IN STD_LOGIC;M,S:IN STD_LOGIC_VECTOR(2 DOWNTO 0);AT,BT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END COMPONENT;COMPONENT JTD_CTRL IS --控制模块的元件例化PORT(CLK,CLR:IN STD_LOGIC;AT,BT:IN STD_LOGIC_VECTOR(7 DOWNTO 0);M:IN STD_LOGIC_VECTOR(2 DOWNTO 0);S:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;SIGNAL CLK:STD_LOGIC;SIGNAL AT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL BT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL S:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINU1:JTD_FQU PORT MAP( --名字关联方式赋值CLK1K=>CLK1K,CLK=>CLK);U2:JTD_TIME PORT MAP(CLR=>CLR,AT=>AT,BT=>BT,CLK=>CLK,M=>M,S=>S);U3:JTD_CTRL PORT MAP(M=>M,S=>S,CLK=>CLK,CLR=>CLR,AT=>AT,BT=>BT);U4:JTD_DIS PORT MAP(CLK1K=>CLK1K,CLK=>CLK,CLR=>CLR,AT=>AT,BT=>BT,LED=>LED,SEL=>SEL,M=>M);U5:JTD_LIGHT PORT MAP(CLR=>CLR,S=>S,ABL=>ABL,M=>M);END BEHA VE;4.2 控制模块JTD_CTRL的设计控制的模块根据外部输入信号M2~M0和计时模块JTD_TIME的输入信号,产生系统的状态机,控制其他部分协调工作。
交通灯VHDL课程设计报告样本

《电子设计自动化( EDA) 技术》课程实训报告题目: 交通信号控制器VHDL设计姓名: * *院系: 应用技术学院专业: 电子信息工程( 仪器仪表)学号: ************:完成时间: 年6 月29 日目录1 课程设计题目、内容与要求…………………………………4页1.1 设计题目…………………………………………………4页1.2 设计内容…………………………………………………4页1.3 具体要求…………………………………………………4页2 系统设计………………………………………………………5页2.1 设计思路…………………………………………………5页2.2 系统原理…………………………………………………5页3 系统实现………………………………………………………5页3.1 VHDL源程序的具体程序和说明………………………5页3.2 交通信号控制器程序中使用到得信号及其对应的管脚…7页4 系统仿真………………………………………………………7页5 硬件验证( 操作) 说明………………………………………7页6 总结…………………………………………………………8页7 参考书目……………………………………………………8页交通灯控制器周晓重庆三峡学院应用技术学院电子信息工程( 仪器仪表) 级重庆万州404000摘要基于VHDL的交通灯控制器设计, 芯片采用ALTERA公司的ACEX1K 系列的EP1K10TC100-3, 使用硬件描述语言VHDL进行描述, 对交通灯进行模块化, 在VHDL编程环境Quartus II下编译经过。
此报告对该设计的思想原理, 详细程序和引脚配置以及波形仿真进行了详细的阐述。
关键词: VHDL 模块化交通灯设计1 课程设计题目、内容与要求1.1 设计题目交通信号控制器VHDL设计1.2 设计内容交通信号控制器的VHDL源程序;交通信号控制器的仿真波形;交通信号控制器的硬件测试结果。
EDA第七章 VHDL程序设计-交通灯详解

第七章 VHDL综合应用-交通灯主控制器甲道通行t3定时器乙道通行t1定时器黄灯等待t2定时器C3W3C1W1C2W2R1R2Y1G1Y2G2R1Y1G1R2Y2G2ST3ST0ST2ST1乙道通行黄灯等待黄灯等待甲道通行W3W2W1/R2R1 G2G1 Y2Y1 C3C2C1001/00 00 11 010010/01 10 00 100000/00 00 11 010001/00 00 11 000000/00 10 01 001000/00 00 11 010000/01 10 00 100100/00 00 11 010状态转换图Library ieee; --控制器程序USE IEEE.STD_LOGIC_1164.ALL;ENTITY traffic_control ISPORT( clk:IN STD_LOGIC;c1,c2,c3:OUT STD_LOGIC; --定时器结束信号 w1,w2,w3:IN STD_LOGIC;--定时器工作信号 r1,r2 :OUT STD_LOGIC;--红灯y1,y2 :OUT STD_LOGIC;--黄灯g1,g2 :OUT STD_LOGIC;--绿灯reset: IN STD_LOGIC);--复位END traffic_control;ARCHITECTURE behave OF traffic_control ISTYPE state_space IS(s0,s1,s2,s3);SIGNAL state :state_space;BEGINPROCESS(clk)BEGINIF reset = ‘1’ THEN state <=s0;ELSIF clk’event AND clk= ‘1’ THENcase state ISWHEN s2 => IF w3=‘1’ THEN state <= s3; END IF;WHEN s3 => IF w2=‘1’ THEN state <= s0; END IF; end case;END IF;END PROCESS;C1 <= ‘1’ WHEN state =s0 ELSE ‘0’;C2 <= ‘1’ WHEN state =s1 OR state = s3 ELSE ‘0’;C3 <= ‘1’ WHEN state =s2 ELSE ‘0’;r1 <= ‘1’ WHEN state =s1OR state = s0 ELSE ‘0’;y1 <= ‘1’ WHEN state =s3 ELSE ‘0’;g1 <= ‘1’ WHEN state =s2 ELSE ‘0’;r2 <= ‘1’ WHEN state =s0 ELSE ‘0’;y2 <= ‘1’ WHEN state =s0 ELSE ‘0’;g2 <= ‘1’ WHEN state =s0 ELSE ‘0’;END hehave;PORT( clk IN STD_LOGIC; --时钟enable IN STD_LOGIC; -- 工作使能c: OUT STD_LOGIC ); --定时结束输出信号END count30;ARCHITECTURE behave OF count30 IS—初值为0,30秒脉冲后计数为30 BEGINPROCESS( clk )V ARIABLE cnt : INTEGER RANGE 30 DOWNTO 0;BEGINIF ( clk’EVENT AND clk=‘1’ ) THENIF enable =‘1’ AND cnt <30 THEN cnt:=cnt+1;ELSE cnt:=0;END IF;END IF;IF cnt =30 THEN c<=‘1’ ELSE c<=‘0’END IF;END PROCESS;PORT( clk IN STD_LOGIC; --时钟enable IN STD_LOGIC; -- 工作使能c: OUT STD_LOGIC ); --定时结束输出信号 END count05;ARCHITECTURE behave OF count05 ISBEGINPROCESS( clk )V ARIABLE cnt : INTEGER RANGE 5 DOWNTO 0; BEGINIF ( clk’EVENT AND clk=‘1’ ) THENIF enable =‘1’ AND cnt <5 THEN cnt:=cnt+1;ELSE cnt:=0;END IF;END IF;IF cnt =5 THEN c<=‘1’ ELSE c<=‘0’END IF;END PROCESS;LIBRARY IEEE;--26秒定时器源文件USE IEEE.STD_LOGIC_1164.ALL;ENTITY count26 ISPORT( clk IN STD_LOGIC; --时钟enable IN STD_LOGIC; -- 工作使能c: OUT STD_LOGIC ); --定时结束输出信号END count26;ARCHITECTURE behave OF count26 ISBEGINPROCESS( clk )V ARIABLE cnt : INTEGER RANGE 26 DOWNTO 0; BEGINIF ( clk’EVENT AND clk=‘1’ ) THENIF enable =‘1’ AND cnt <26 THEN cnt:=cnt+1;ELSE cnt:=0;END IF;END IF;IF cnt =5 THEN c<=‘1’ ELSE c<=‘0’END IF;END PROCESS;END behave;顶层图形文件见P217图7-5。
基于VHDL语言的EDA设计——交通灯功能设计

北京XX大学《数字电路逻辑设计》实训报告基于VHDL语言的EDA设计——交通灯控制系统课程名称:数字电路逻辑设计课程实训学院:信息学院专业:电子信息工程姓名:班级:200908030301学号:2009080303132 2009080303101指导教师:成绩:2011年12 月22日目录目录 ................................................................................................................................................ - 1 - 概述 .. (1)第一章交通灯控制系统工程设计要求 (2)1、基础功能要求 (2)2、拓展功能要求 (2)第二章基础功能模块电路设计 (3)1、南北方向控制模块设计 (3)2、东西方向控制模块设计 (5)3、顶层设计 (8)第三章电路基础功能时序仿真验证 (9)1、南北方向控制模块功能仿真验证 (9)2、东西方向控制模块功能仿真验证 (9)3、顶层设计整体功能仿真验证 (10)第四章电路拓展功能设计 (11)1、“左转向”指示灯功能设计 (11)2、“左转向”指示功能设计 (12)附录 (13)附录1-小组成员与成员分工 (13)附录2-参考资料 (13)概述1、EDA技术的概念EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC 版图或PCB版图的整个过程的计算机上自动处理完成。
用VHDL语言实现的交通灯

目录序言 (3)第1章任务和要求 (4)1.1 设计任务 (4)1.2设计要求 (4)第2章功能分析 (6)2.1交通灯控制系统总体框架图 (6)2.2模块功能分析 (6)第3章设计过程 (7)3.1 分频模块的设计及仿真图 (7)3.2 显示模块的设计及仿真图 (7)3.3 数码管显示模块设计及仿真图 (8)3.4 译码驱动模块的设计及仿真图 (8)3.5顶层文件设计及仿真图 (9)3.6交通灯顶层原理图 (9)第4章外部电路结构图及引脚分配 (11)4.1电路主要结构 (11)4.2下载引脚分配 (12)第五章分析与小结5.1测试及结果分析 (13)5.2实验小结 (13)参考文献 (14)附录 (15)具有五种信号灯和倒计时显示的交通灯控制器序言随着社会经济的发展,城市交通问题越来越引起人们的关注。
人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。
城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。
、上海、南京等出现了交通超负荷运行的情况,因此,自80年代后期,这些城市纷纷修建城市高速道路,在高速道路建设完成的初期,它们也曾有效地改善了交通状况。
然而,随着交通量的快速增长和缺乏对高速道路的系统研究和控制,高速道路没有充分发挥出预期的作用。
而城市高速道路在构造上的特点,也决定了城市高速道路的交通状况必然受高速道路与普通道路耦合处交通状况的制约。
所以,如何采用合适的控制方法,最大限度利用好耗费巨资修建的城市高速道路,缓解主干道与匝道、城区同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的主要问题。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
随着中国加入WTO,我们不但要在经济、文化、科技等各方面与国际接轨,在交通控制方面也应与国际接轨。
EDA实验报告:基于VHDL语言的交通灯控制系统设计与实现

图为k1=0时的输出状态s1,输出恒为011110。即亮灯为R1,y2。保持时间1S。
(k2=0)
上图为k2=0时的输出状态s2,输出恒为101011。即亮灯为G1,R2。保持时间2S。
(k3=0)
上图为k3=0时的输出状态s3,输出恒为110011。即亮灯为R1,G2。保持时间1S。
四、小结及心得体会
else
if counter<5 then
next_state<=s3;
else
next_state<=s0;
end if;
end if;
end if;
end if;
end if;
end case;
end process;
ouput:process(current_state)
begin ——显示程序
begin
u1: jiaotongdeng port map(
clk=>clki,
k0=>k0,
k1=>k1,
k2=>k2,
k3=>k3,
r1=>r1,r2=>r2,g1=>g1,g2=>g2,y1=>y1,y2=>y2
);
u2: div port map(clk=>clk1,clk_out=>clki);
end if;
end if;
end if;
when s3=>
if k0='0' then
next_state<=s0;
else
if k1='0' then
next_state<=s1;
VHDL交通灯控制器-实验报告

可编程逻辑器件应用项目报告书项目名称:交通灯控制器指导老师:姓名:学号:班级:(以后写报告要包含以下一些内容:)一、设计要求--------------------------------------------------------------------------------二、设计目的--------------------------------------------------------------------------------三、设计方案--------------------------------------------------------------------------------四、设计程序---------------------------------------------------------------------------------五、管脚分配---------------------------------------------------------------------------------六、硬件下载实现现象描述------------------------------------------七、体会、对设计工作的总结与展-------------------------------------------一、设计要求:①在十字路口的两个方向上各设一组红、绿、黄灯,显示顺序为其中一方向(东西方向)是绿灯、黄灯、红灯;另一方向(南北方向)是红灯、绿灯、黄灯。
②设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间,其中绿灯、黄灯、红灯的持续时间分别是20s、5s和25s。
③当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其他需要优先放行的车辆通过时,各方向上均是红灯亮,倒计时停止,且显示数字在闪烁。
当特殊运行状态结束后,控制器恢复原来状态,继续正常运行。
基于VHDL语言的交通信号灯设计

基于VHDL语言的交通信号灯设计交通信号灯的设计是交通管理中非常重要的一环,通过合理的交通信号灯设计,可以提高道路交通的效率,并保证交通的安全性。
在本文中,将基于VHDL语言设计一个简单的交通信号灯系统,对信号灯进行控制。
首先,我们需要了解交通信号灯的基本原理。
一般情况下,交通信号灯通常分为红灯、黄灯和绿灯三个状态。
每个状态的时间长度可以根据实际情况进行调整。
在设计中,我们将考虑两个十字路口,每个十字路口设置一个交通信号灯。
接下来,我们将使用VHDL语言进行交通信号灯的设计。
首先定义一个信号类型,表示交通灯的三种状态:```vhdltype traffic_light_state is (red, yellow, green);```然后,定义信号灯实体,包括输入信号和输出信号:```vhdlentity traffic_light isportclk: in std_logic;reset: in std_logic;north_south_light: out traffic_light_state;east_west_light: out traffic_light_stateend traffic_light;```在实体中,我们使用了时钟clk和复位信号reset,以确保交通灯的状态按照预期进行转换。
north_south_light和east_west_light是输出信号,表示两个十字路口的交通信号灯状态。
接下来,我们定义信号灯行为。
在时钟上升沿或复位信号为高时,交通灯的状态会发生变化。
我们可以使用一个计数器和状态机来实现交通灯的控制。
当计数器达到一定值时,状态机将更新信号灯的状态。
```vhdlarchitecture behav of traffic_light issignal state: traffic_light_state := red;beginprocess(clk, reset)beginif reset = '1' thencounter <= 0;state <= red;elsif rising_edge(clk) thencounter <= counter + 1;case state iswhen red =>state <= green;counter <= 0;end if;when green =>state <= yellow;counter <= 0;end if;when yellow =>state <= red;counter <= 0;end if;end case;end if;end process;north_south_light <= state; east_west_light <= state; end behav;```最后,我们需要在顶层模块中实例化交通信号灯实体,并提供时钟和复位信号。
交通信号灯的VHDL设计

EDA课程设计报告(交通信号控制器)院系班级姓名学号指导老师一、设计任务及要求:设计任务:模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED 作为交通信号灯,设计一个交通信号灯控制器。
要求:(1) 交通灯从绿变红时,有4秒黄灯亮的间隔时间;(2) 交通灯红变绿是直接进行的,没有间隔时间;(3) 主干道上的绿灯时间为40秒,支干道的绿灯时间为20秒;(4) 在任意时间,显示每个状态到该状态结束所需的时间。
主干道图1路口交通管理示意图二、设计方案的选择图2 交通信号灯控制器的原理框图图3 交通信号灯控制器程序原理框图三、程序清单和仿真波形图library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity traffic isport( clk: in std_logic;A1,B1,C1,D1,A2,B2,C2,D2: out std_logic;R1,Y1,G1,R2,Y2,G2:out std_logic) ;end ;architecture arch of traffic istype 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 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;beginp1:process(clk)beginif rising_edge(clk) thencount<=count+'1';end if;end process p1;p2:process(clk)beginif rising_edge(clk) thenif count="111" thencarry<='1';elsecarry<='0';end if;end if;end process p2;p3: process (carry,load)beginif rising_edge(carry) thenif load='1' thencount0<=data0;elsif count0="0000" thencount0<="1001";elsecount0<=count0-'1';end if;end if;end process p3;p4:process(carry)beginif carry='0' thenif count0="0000" thenen<='1';elseen<='0';end if;end if;end process p4;p5:process(carry,load,en)beginif(rising_edge (carry) and en='1') then if load ='1' thencount1<=data1;elsif count1="0000" thencount1<="1001";elsecount1<=count1-'1';end if;end if;end process p5;p6:process(carry)beginif(falling_edge(carry)) thenif(count0="0000" and count1="0000" ) thenload<='1';state<=next_state;elseload<='0';end if;end if;end process p6;p7: process(state)begincase state iswhen s0=> light<="001100";next_state<=s1;data0<="1001";data1<="0011";when s1=> light <="010100";next_state<=s2;data0<="0011";data1<="0000";when s2=> light <="100001";next_state<=s3;data0<="1001";data1<="0001";when s3=> light <="100010";next_state<=s0;data0<="0011";data1<="0000";end case;end process p7;A1<=count0(0);B1<=count0(1);C1<=count0(2);D1<=count0(3); A2<=count1(0);B2<=count1(1);C2<=count1(2);D2<=count1(3); R1<=light(5);Y1<=light(4);G1<=light(3);R2<=light(2);Y2<=light(1);G2<=light(0);end arch;四、调试过程1、采用VHDL语言编写交通灯的源程序,并在QUARTUSII上进行源程序的仿真,直至没有错误。
VHDL交通灯实验报告

when"0011"=> seg<="1111001";
when"1000"=> seg<="1111111";
when"0100"=> seg<="0110011";
when others=> seg<="1110011";
end case;
end process;
end bb2;
下面是仿真出 74148 译码器的波形图。
begin reg:process(reset,co,clk)
begin if reset='1' then state<=setr; elsif rising_edge(clk)then case state is when setr=> g<="0111"; s<="0010"; ld<='1'; rgy<="100"; state<=red; when red => ld<='0'; rgy<="100"; if co = '1' then state<=setg; else state<=red; end if; when setg => g<="0100"; s<="0010"; ld<='1'; rgy<="001"; state<=green;
inst2
m148 result[3..0]
智能交通灯--VHDL

设计报告课程名称在系统编程技术任课教师设计题目交通信号灯班级姓名学号日期一、项目分析及设计要求(一)项目分析本项目设计一个智能交通灯控制系统,使其能模仿城市“十字”路口交通灯的功能,并能满足特殊的控制要求(如按键m的使用),该系统的具体功能如下:(1)该控制系统能控制东、西、南、北四个路口的红、黄、绿信号灯正常工作。
(2)当东西方向准行,南北方向禁行时,东西方向亮绿灯,南北方向亮红灯。
(3)当南北方向准行,东西方向禁行时,南北方向亮绿灯,东西方向亮红灯。
(4)绿灯亮完后,加亮一盏黄灯,以警告车辆及行人,准行方向即将改变(即准行变为禁行)。
(5)四个道口各用一组由十位和个位组成的数码管显示准行(或禁行)的剩余时间。
(6)在交通情况比较特殊的情况下,可以通过按键对交通灯进行紧急控制。
(二)设计要求本系统有两种工作状态:正常工作状态、紧急工作状态,可利用按键进行改变工作状态。
1.正常工作时:(1)十字路口的4个路口信号灯(红、黄、绿)显示各路口的各条通道的状态;(2)每个路口都有两位数码管显示当前信号灯的倒计时。
表1 信号灯状态转换表2.紧急情况:(1)四个路口的红灯全亮,禁止车辆通行;(2)四个路口的数码管显示全0,停止倒计时;(3)扬声器报警,警告车辆及行人。
图1 系统总体方框图二、系统设计及方案论证基于项目分析及设计要求,本系统采用“自顶向下”的设计思想,将整个交通灯控制系统分为四个子模块,即分频模块、倒计时控制模块、信号灯控制模块、报警模块。
本项目使用Quartus II软件进行设计,四个子模块(底层模块)分别采用VHDL语言设计,并进行元件打包,以供顶层文件使用。
设计好四个子模块后即可进行顶层文件的搭建,即交通灯控制系统,顶层文件采用图形设计方法,利用打包好的底层元件进行原理图绘制以实现项目功能。
图2 系统设计方框图根据GW48 EDA/SOPC系统使用说明,输入时钟信号采用CLOCK5的1024Hz,紧急情况按键输入使用高低电平发生器。
vhdl交通灯说明

一:十字路口交通灯实现程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY traffic ISPORT ( clk,urgency:IN STD_LOGIC;led:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);East_West,South_North:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0));END traffic;ARCHITECTURE A OF traffic ISBEGINPROCESS(clk)BEGINIF urgency='0' THEN --紧急情况两方向都禁止led<="10000001";--全红灯East_West<="00000000";South_North<="00000000";ELSIF clk'event AND clk='1' THENIF East_West>"01000110"OR South_North>"01000110" THENEast_West<="01000101";--45sSouth_North<="01000000";--40Sled<="10000100";--东西红灯南北绿灯(红黄绿--绿黄红)ELSIF East_West="00000110"AND South_North="00000001" THENEast_West<="00000101";--5SSouth_North<="00000101";--5Sled<="10000010";--东西红灯南北黄灯ELSIF East_West="00000001"AND South_North="00000001"andled="10000010" THEN--East_West<="01000000";--40SSouth_North<="01000101";--45Sled<="00100001";--东西绿灯南北红灯ELSIF East_West="00000001"AND South_North="00000110" THENEast_West<="00000101";South_North<="00000101";led<="01000001";--东西黄灯南北红灯ELSIF East_West<="00000001"AND South_North="00000001"AND LED="01000001" THEN East_West<="01000101";South_North<="01000000";led<="10000100";--东西红灯南北绿灯ELSIF East_West(3 DOWNTO 0)=0 THENEast_West<=East_West-7;--计数超出范围则减7South_North<=South_North-1;ELSIF South_North(3 DOWNTO 0)=0 THENEast_West<=East_West-1;South_North<=South_North-7;ELSEEast_West<=East_West-1;--正常情况下东西南北各计数值减1(上升沿触发)South_North<=South_North-1;END IF;END IF;END PROCESS;END A;二:模式选择与引脚定义如下:1:选择模式52:引脚定义如下:三:硬件说明:数码管2和数码管1作为东西方向灯的时间显示,数码管4和数码管3作为南北方向灯的时间显示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字电路与逻辑设计(EDA)实验报告班级:姓号:学号:实验时间:一.命题设计有一个实际的十字路口设置有东西、南北两个方向的干道,为确保车辆安全通行,在每条干道的每个入口设置了一组两位数码管显示装置和四组红、绿、黄信号灯,分别用来指示东西、南北方向车辆的通行和人横穿公路(1)数码管倒计时指示红绿灯的亮灭时间:红灯亮45秒,绿灯40秒,黄灯5秒,循环周期为90秒(2)东西方向红灯亮时,前40秒南北方向绿灯亮,后5秒黄灯亮之后东西方向路灯亮40秒,黄灯亮5秒,期间南北红灯亮45秒如此循环(3)扩展命题:由按键控制,实现紧急情况时计时暂停,两方向都亮红灯二.方案设计该交通灯程序由一个模块组成,并不复杂的功能决定其程序的简单。
主要就四个小块:(1)用分频电路实现一秒计时(2)用计数器控制LED和数码管的功能(3)LED译码电路(4)数码管译码电路交通灯的状态真值表三.程序设计(1)一秒时钟信号:由于开发板上给的时钟是49MHz的信号clk,故需要一个分频器实现一秒计时用计数的方式,以时钟改变48000000次为周期,上升沿触发,前24000000次分频信号clk1为1,后24000000次分频信号为0,分频后的信号做为内部1秒时钟计时分频器占用一个进程(2)计数器控制LED和数码管定义一个变量js,在秒信号上升沿时触发,变量加1,变量周期为90,共计90秒(3)LED的亮灭控制输出端口led的值对应红绿灯亮灭状态(由于开发板是共阳极,故低电位点亮即0为亮),前三位为东西方向红绿黄灯,后三位代表南北方向的红绿黄灯(具体点亮计数值见程序)。
(4)数码管倒计时的显示和LED的控制程序一样,由计数程序控制数码管的显示状态,7段数码管相当于7个LED灯,同够控制它们的亮灭来显示数字,实现倒计时。
数码管译码时,信号对应位为abcdefg四.系统框图五.程序流程图六.仿真时序图由于信号频率太高,仿真时不能实现。
故将分频改为4分频时序图如下:七.开发板引脚定义八.附录:程序源码--交通灯程序,LED显示和4段数码管显示程序--LED前三个代表一个方向的交通灯,其显示时间由前两段数码管显示:--第一个LED代表绿灯,点亮时间为10秒;第二个代表黄灯,点亮4秒,第三个代笔的是红灯,点亮14秒--时间由数码管以倒数的形式显示--后三个为另外一个方向的红绿灯:第四个为红灯,点亮14秒,第五个为绿灯,点亮10秒,最后一个是--黄灯,点亮4秒,倒计时为最后面的两段数码管显示--数码管,本来设计的是有片选的数码管显示,由于开发板不数码管不需要片选,故又改掉了--前两个(一二)数码管是一个方向的红绿灯计时,后两个(五六)—是另外一个方向的计时library ieee;use ieee.std_logic_1164.all;useieee.std_logic_signed.all;entityjtd isport(clk : in std_logic; --49MHznum1,num2,num3,num4 : out std_logic_vector(6 downto 0); --Digital tube the first sec and fifth sixled : out std_logic_vector(5 downto 0) --led);endjtd;architecture one of jtd issignal clk1:std_logic; -- Clock :1Ssignal q1 :std_logic :='0';beginprocess(clk)variable temp1 :integer range 0 to 3; --Change to 48999999;beginif(clk'event and clk='1') thenif temp1=3 thentemp1:=0;else temp1 :=temp1+1;if (temp1<=1)thenclk1<='1';else clk1<='0';end if;end if;end if;end process;L1: process(clk1) --LED Traffic lightsvariablejs :integer range 0 to 27; --change to 89beginif(clk1'event and clk1='1') thenifjs=27 thenjs:=0;elsejs:=js+1;end if;end if;if (js>=0 and js<=9) then --change to 39led<="011110";elsif (js>=10 and js<=13) then --change to 44led<="101110";elsif (js>=14 and js<=23) then --change to 84led<="110011";elsif (js>=24 and js<=27) then --change to 89led<="110101";else led<="111111";end if;casejs iswhen 0=> num1<="0000001";num2<="0000100";num3<="1001111";num4<="0000110";when 1=> num1<="0000001";num2<="0000000";num3<="1001111";num4<="0010010";when 2=> num1<="0000001";num2<="0001111";num3<="1001111";num4<="1001111";when 3=> num1<="0000001";num2<="0100000";num3<="1001111";num4<="0000001";when 4=> num1<="0000001";num2<="0100100";num3<="0000001";num4<="0000100";when 5=> num1<="0000001";num2<="1001100";num3<="0000001";num4<="0000000";when 6=> num1<="0000001";num2<="0000110";num3<="0000001";num4<="0001111";when 7=> num1<="0000001";num2<="0010010";num3<="0000001";num4<="0100000";when 8=> num1<="0000001";num2<="1001111";num3<="0000001";num4<="0100100";when 9=> num1<="0000001";num2<="0000001";num3<="0000001";num4<="1001100";when 10=> num1<="0000001";num2<="0000110";num3<="0000001";num4<="0000110";when 11=> num1<="0000001";num2<="0010010";num3<="0000001";num4<="0010010";when 12=> num1<="0000001";num2<="1001111";num3<="0000001";num4<="1001111";when 13=> num1<="0000001";num2<="0000001";num3<="0000001";num4<="0000001";when 14=> num1<="1001111";num2<="0000110";num3<="0000001";num4<="0000100";when 15=> num1<="1001111";num2<="0010010";num3<="0000001";num4<="0000000";when 16=> num1<="1001111";num2<="1001111";num3<="0000001";num4<="0001111";when 17=> num1<="1001111";num2<="0000001";num3<="0000001";num4<="0100000";when 18=> num1<="0000001";num2<="0000100";num3<="0000001";num4<="0100100";when 19=> num1<="0000001";num2<="0000000";num3<="0000001";num4<="1001100";when 20=> num1<="0000001";num2<="0001111";num3<="0000001";num4<="0000110";when 21=> num1<="0000001";num2<="0100000";num3<="0000001";num4<="0010010";when 22=> num1<="0000001";num2<="0100100";num3<="0000001";num4<="1001111";when 23=> num1<="0000001";num2<="1001100";num3<="0000001";num4<="0000001";when 24=> num1<="0000001";num2<="0000110";num3<="0000001";num4<="0000110";when 25=> num1<="0000001";num2<="0010010";num3<="0000001";num4<="0010010";when 26=> num1<="0000001";num2<="1001111";num3<="0000001";num4<="1001111";when 27=> num1<="0000001";num2<="0000001";num3<="0000001";num4<="0000001";end case;end process L1;end one;。