基于VHDL的交通灯数电课程设计报告

湖南大学电气与信息工程学院本科生课程设计题目:交通信号灯控制器设计课程:数字电子技术课程设计专业:电气工程及其自动化班级:电自1104学号:姓名:指导老师:苏娟、何洪英、周冰航、曾文海设计时间:2014.4-5月目录1 课题概述 (2)1.1 设计任务及要求 (2)1.2 设计方案 (3)2 系统模块划分和源程序 (4)2.1 分频模块 (4)2.2 交通灯控制模块 (5)2.3 BCD码转换模块 (7)2.4 接口模块 (10)2.5 LCD显示模块 (14)2.6 其他模块 (15)3 逻辑原理图及仿真 (16)3.1 逻辑原理图 (16)3.2 波形仿真 (16)4 实验板下载及运行结果 (20)4.1 约束文件 (20)4.2 可下载的原理图 (20)4.3 运行效果图及说明 (21)5 心得体会 (22)6 答辩老师提问 (23)7 参考文献 (24)1.课题概述1.1设计任务及要求1.运用《电子技术基础·数字部分》所学内容,使用Altium designer进行设计,使用vhdl 编写模块,制作原理图进行仿真,并通过老师提供的接口模块下载到Nanoboard 开发板上运行;2.由主干道A和支干道的汇合点形成十字交叉路口, 在交叉路口的每个入口处设置有红、绿、黄三色信号灯。

红灯亮禁止通行;绿灯亮允许通行,黄灯亮则使行驶到路口的车辆有时间行驶到禁止线之外;3.用红、绿、黄三色发光二极管作信号灯, 主干道A为东西向,设红、绿、黄三色灯为AR 、AG 、 AY; 支干道B为南北向,设红、绿、黄三色灯为BR 、 BG 、 BY;4.主干道车辆较多, 所以亮绿灯的时间设为50秒,支干道亮绿灯的时间设为30秒。

当主干道允许通行亮绿灯时则支干道亮红灯;相反,支干道允许通行亮绿灯时则主干道亮红灯。

每次由绿灯转变为红灯时,其间要亮5秒的黄灯作为过渡,以便行驶的车辆有时间行驶到禁止线外;5.交通灯正常运行时,用LCD显示屏显示主干道和支干道的倒计时时间,交通灯状态。

即在LCD上按格式显示交通灯的2个2位BCD码,红绿黄灯。

输入:EW[7..0]、SN[7..0]为东西、南北向的2个2位BCD码,EWRYG[2..0]、SNRYG[2..0]东西南北的红绿灯信号,顺序为红黄绿;6.具有一定的扩展功能,它能实现特殊状态的功能显示,用开关S作为特殊信号传感器,S为1时进入特殊状态并实现下列特殊状态功能:(1)显示器数字部分闪烁,即在全0和当前计时时间中交替显示;(2)计数器停止计数并保持原来的时间数据;(3)东西, 南北方向的三色灯全显红色状态;(4)特殊状态解除后能继续返回正常工作状态。

LCD显示屏显示格式如下:1.2设计方案状态图如下:真值表如下,时间在0-90s 循环: 时间(s ) EWSN R Y G R Y G 0-50 0 0 1 1 0 0 51-55 0 1 0 1 0 0 56-85 1 0 0 0 0 1 86-90 11总体方案:所要设计的红绿灯EW 、SN 方向各有红、黄、绿三种灯,两路口时间不相同,红灯直接切换为绿灯,绿灯则需要先亮5秒黄灯再变为红灯。

根据设计要求,除了需要正确的点亮灯以外,还需要将计时的数转换为8421码送入LCD 显示屏显示为数字,另外由于需要红绿灯有保持显示和闪烁功能。

综上,本人决定把控制器分为以下几个模块:分频器、交通灯控制模块、BCD 转换模块。

其中闪烁功能本人决定通过控制器的一个特定输出控制一个一分频(即为分频)的分频器的使能端来控制闪烁。

2.模块划分和源程序2.1分频模块本次设计输入的脉冲为10MHz,而红绿灯控制器的计数要求一秒变换一次,即需要得到1Hz 的脉冲。

因此经计算需要分频5000000次。

模块如下,其中10MHz脉冲从clkin输入,分频后输出为clkout。

源代码如下:library ieee;use ieee.std_logic_1164.all;entity divider1 isport( clkin:in std_logic; --时钟信号输入clkout:out std_logic); --时钟信号输出end divider1;architecture arcdivider1 of divider1 issignal data:integer range 0 to 5000000;signal Q:std_logic:='0';beginprocess(clkin)beginif rising_edge(clkin) thenif(data=5000000) then--想要的分频比data<=0;Q<=not Q;elsedata<=data+1;end if;end if;clkout<=Q;end process;end arcdivider1;另外由于需要实现闪烁功能,因此通过控制器的一个特定输出控制一个一分频(即为分频)的分频器的使能端来控制闪烁。

其中输入为分频后的1Hz脉冲,en为使能信号,由灯控制器的flash输出口输入en(后面会详细说明),若en为1,输出为1Hz脉冲。

源代码如下:library ieee;use ieee.std_logic_1164.all;entity clk1 isport(clkin,en:in std_logic; --时钟信号输入clkout:out std_logic); --时钟信号输出end clk1;architecture arcclk1 of clk1 issignal Q:std_logic:='0';beginprocess(clkin)beginif rising_edge(clkin) thenif en='0' thenQ<='0';elseQ<=not Q;end if;end if;clkout<=Q;end process;end arcclk1;2.2交通灯控制模块本次设计的核心模块,控制器的作用是通过一个变量在0-90间进行循环计数,在clock 输入的脉冲作用下,每一个上升沿计数值加1,同时numa[7..0],numb[7..0]分别输出东西、南北向的倒计时值。

当计数为不同的区间时,EWRYG[2..0],SNRYG[2..0]输出红绿灯代表的数字。

若reset为1,红绿灯重新开始计数,即从东西向为绿灯,南北向为红灯开始。

若hold 为1,输出numa[7..0],numb[7..0]保持不变,EWRYG[2..0],SNRYG[2..0]输出为4(红灯)flash为1,通过一个分频器的使能让BCD转换模块在0和当前数值之间变化,从而达到闪烁的效果。

源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity controller isport( clock,reset,hold:in std_logic;flash:out std_logic;numa,numb:out STD_LOGIC_VECTOR(7 DOWNTO 0);EWRYG,SNRYG :out STD_LOGIC_VECTOR(2 DOWNTO 0));end controller;architecture arccontroller of controller issignal countnum:integer range 0 to 90:=0;beginprocess(clock)beginif reset='1' thencountnum<=0;elsif rising_edge(clock) thenif hold='1' thenflash<='1';elseflash<='0';if countnum=89 thencountnum<=0;elsecountnum<=countnum+1;end if;end if;end if;end process;process(clock)beginif rising_edge(clock) thenif hold='1' thenEWRYG<="100";SNRYG<="100";elseif countnum<=49 then--49numa<="00110010"-countnum;EWRYG<="001";elsif countnum<=54 then--54numa<="00110111"-countnum;EWRYG<="010";elsenuma<="01011010"-countnum;EWRYG<="100";end if;if countnum<=54 then--54numb<="00110111"-countnum;SNRYG<="100";elsif countnum<=84 then--84numb<="01010101"-countnum;SNRYG<="001";elsenumb<="01011010"-countnum;SNRYG<="010";end if;end if;end if;end process;end arccontroller;2.3 BCD码转换模块需要将控制器输出的numa[7..0],numb[7..0]转换为8421码送入LCD显示屏显示为数字,由于vhdl语言的功能和实验所用板的限制,本人目前未找到用算式可以正确、及时转化BCD 码并能成功下载到板子的源程序,只能运用case语句穷举。

输入为七位二进制,输出为转换好的BCD码,reset为1时,输出为0。

源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity TOBCD isport(D: in STD_LOGIC_VECTOR(7 DOWNTO 0);reset:in std_logic;SEG: out STD_LOGIC_VECTOR(7 DOWNTO 0));end TOBCD;architecture ARCTOBCD of TOBCD isbeginprocess(reset,D)beginif reset='1' thenSEG <= "00000000";elsecase D iswhen "00000000" => SEG<="00000000";when "00000001" => SEG<="00000001";when "00000010" => SEG<="00000010";when "00000011" => SEG<="00000011";when "00000100" => SEG<="00000100";when "00000101" => SEG<="00000101";when "00000110" => SEG<="00000110";when "00000111" => SEG<="00000111";when "00001000" => SEG<="00001000";when "00001001" => SEG<="00001001"; --9when "00001010" => SEG<="00010000";when "00001011" => SEG<="00010001";when "00001100" => SEG<="00010010";when "00001101" => SEG<="00010011";when "00001110" => SEG<="00010100";when "00001111" => SEG<="00010101";when "00010000" => SEG<="00010110";when "00010001" => SEG<="00010111";when "00010010" => SEG<="00011000";when "00010011" => SEG<="00011001"; --19when "00010100" => SEG<="00100000";when "00010101" => SEG<="00100001";when "00010110" => SEG<="00100010";when "00010111" => SEG<="00100011";when "00011000" => SEG<="00100100";when "00011001" => SEG<="00100101";when "00011010" => SEG<="00100110";when "00011011" => SEG<="00100111";when "00011100" => SEG<="00101000";when "00011101" => SEG<="00101001"; --29when "00011110" => SEG<="00110000";when "00011111" => SEG<="00110001";when "00100000" => SEG<="00110010";when "00100001" => SEG<="00110011";when "00100010" => SEG<="00110100";when "00100011" => SEG<="00110101";when "00100100" => SEG<="00110110";when "00100101" => SEG<="00110111";when "00100110" => SEG<="00111000";when "00100111" => SEG<="00111001"; --39when "00101000" => SEG<="01000000";when "00101001" => SEG<="01000001";when "00101010" => SEG<="01000010";when "00101011" => SEG<="01000011";when "00101100" => SEG<="01000100";when "00101101" => SEG<="01000101";when "00101110" => SEG<="01000110";when "00101111" => SEG<="01000111";when "00110000" => SEG<="01001000";when "00110001" => SEG<="01001001"; --49when "00110010" => SEG<="01010000";when "00110011" => SEG<="01010001";when "00110100" => SEG<="01010010";when "00110101" => SEG<="01010011";when "00110110" => SEG<="01010100"; --54when "00110111" => SEG<="01010101";when others => SEG<="00000000";end case;end if;end process;end ARCTOBCD;2.4接口模块在这里使用周冰航老师编好的交通等接口模块,在这里感谢老师的提供!输入:EW[7..0]、SN[7..0]:东西、南北向的2个2位BCD码;EWRYG[2..0]、SNRYG[2..0]:东西南北的红绿灯信号,顺序为红黄绿;CPIN:时钟脉冲输入,按10MHz设计;R:复位;BUSY:忙信号。

合集下载

基于VHDL的交通灯设计(EDA课程设计报告)!!

基于VHDL的交通灯设计(EDA课程设计报告)!!

EDA课程设计实验报告交通信号控制器的VHDL的设计一、设计任务及要求:设计任务:模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。

要求:(1)交通灯从绿变红时,有4秒黄灯亮的间隔时间;(2)交通灯红变绿是直接进行的,没有间隔时间;(3)主干道上的绿灯时间为40秒,支干道的绿灯时间为20秒;(4)在任意时间,显示每个状态到该状态结束所需的时间。

支干道主干道图1 路口交通管理示意图表1 交通信号灯的4种状态设计要求:(1)采用VHDL语言编写程序,并在QUARTUSII工具平台中进行仿真,下载到EDA实验箱进行验证。

(2)编写设计报告,要求包括方案选择、程序清单、调试过程、测试结果及心得体会。

二设计原理1、设计目的:学习DEA开发软件和QuartusII的使用方法,熟悉可编程逻辑器件的使用。

通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制2’设计说明(1)第一模块:clk时钟秒脉冲发生电路在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。

因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。

模块说明:系统输入信号:Clk: 由外接信号发生器提供256的时钟信号;系统输出信号:full:产生每秒一个脉冲的信号;(2)第二模块:计数秒数选择电路计数电路最主要的功能就是记数负责显示倒数的计数值,对下一个模块提供状态转换信号。

模块说明:系统输入:full: 接收由clk电路的提供的1hz的时钟脉冲信号;系统输出信号:tm:产生显示电路状态转换信号tl:倒计数值秒数个位变化控制信号th:倒计数值秒数十位变化控制信号(3)第三模块:红绿灯状态转换电路本电路负责红绿灯的转换。

模块说明:系统输入信号:full: 接收由clk电路的提供的1hz的时钟脉冲信号;tm: 接收计数秒数选择电路状态转换信号;系统输出信号:comb_out: 负责红绿灯的状态显示。

VHDL报告

VHDL报告

VHDL数字系统设计交通灯实验报告姓名:李奕洋学号:010790021.实验目的:使用VHDL语言在FPGA实验板上模拟一个十字路口两对交通灯的亮灭情况。

2.实验原理:本实验要实现的效果是:0s~5s,第1对灯为绿,第2对灯为红;5s~6s,第1对灯为黄,第2对灯为红;6s~11s,第1对灯为红,第2对灯为绿;11s~12s,第1对灯为红,第2对灯为黄;12s为一个状态循环周期。

可以选择实验板上的8个LED中的6个来模拟上述功能。

为了便于区分两对灯我们选择除去中间2个的6个LED,用LED<7>、LED<6>、LED<5>分别表示第1对灯的红黄绿3盏灯,用LED<2>、LED<1>、LED<0>分别表示第2对灯的红黄绿3盏灯。

程序中,输出端口light (5)~ light (0)分别映射到LED<7>、LED<6>、LED<5>、LED<2>、LED<1>、LED<0>。

本实验需要在每个周期的特定时间点发生状态转移,所以需要实现较精确的定时。

我们使用实验板上的50MHz晶振作为时钟信号,该晶振的50M个时钟周期近似为1s。

因此可以在每个时钟周期的上升沿使用变量count计数,每计够250000000表示到第5s,每计够300000000表示到第6s,每计够550000000表示到第11s,每计够600000000表示到第12s。

程序中输入端口clk映射到50MHz晶振。

本实验的VHDL程序中,首先在实体lights中定义了输入端口clk和6个输出端口light (5)~ light (0)。

然后在实体lights的结构体Behavioral中使用2个进程。

第1个进程中在clk的每个上升沿对变量count加1,当分别计数到0、250000000、300000000、550000000时分别输出100010、001100、010100、100001。

基于VHDL的交通灯课程设计论文

基于VHDL的交通灯课程设计论文

EDA课程设计--- 交通灯设计指导教师:杨志芳2013年11月30日十字路口的信号灯控制电路设计任务与要求1实现一个十字路口的信号灯控制电路。

2信号灯分别由红、黄、绿,左转四个灯组成,运行时,东西方向绿灯亮45秒钟,黄灯亮5秒,左转灯亮15秒,黄灯亮5秒,红灯亮,同时另一方向的绿灯亮,红灯亮的时间为60秒。

期间南北方向绿灯亮40秒,黄灯5秒,左转灯10秒,黄灯5秒。

总体框图图一交通灯控制系统框图1. 设计思路:在某一十字路口交叉地带,可设置东西走向的道路为主道,南北走向的道路为次道,主次车道的交通灯需按交通法则交替运行。

则可设计逻辑电路。

2. 分析系统的逻辑功能:交通灯控制系统原理图如图一,由计数器、分频器、控制器、分位译码电路、扫描显示电路等部分组成。

3. 个状态过程如下:状态一:主干道红灯LED显示数字60,次干道绿灯显示40为状态s0;状态二:次道绿灯主道红灯持续时间小于40s时,si状态保持不变,若持续时间等于45s 时,转换到下一状态。

状态三:次道黄灯计时小于5s主道红灯持续时间小于45s时,s2状态保持不变,若黄灯持续时间等于5s时,s2转换到下一状态状态四:次道左转灯主道红灯持续时间小于10s时,S3状态保持不变,若持续时间等于10s时,S3转换到下一状态。

状态五:次道黄灯主道红灯持续时间小于5s时,s4=0状态保持不变,若持续时间等于5s 时,s4转换到下一状态。

状态六:主道绿灯显示数值45,次道红灯显示数值70s,当主道绿灯持续时间小于45s时s5状态保持不变,等于45秒时,s5跳转到下一状态。

状态七:主道黄灯显示数值5,次道红灯显示数值25s,当主道黄灯持续时间小于5s时s6状态保持不变,等于5s时,s6跳转到下一状态。

状态八:主道左转灯显示数值15,次道红灯显示数值20s,当主道左转灯持续时间小于15s时s7状态保持不变,等于15秒时,s7跳转到下一状态。

状态九:主道黄灯显示数值5,次道红灯显示数值5s,当主道黄灯持续时间小于5s时s8状态保持不变,等于5s时,s8跳转到下一状态。

VHDLFPGA交通灯

VHDLFPGA交通灯

《VHDL与数字系统设计》课程设计报告( 2014 -- 2015 年度第1 学期)名称:VHDL与数字系统设计题目:交通灯控制器院系:电气与电子工程学院班级:电子1301学号:1131230106学生:辉指导教师:高雪莲设计周数:2周成绩:日期:2015年 1 月日一、课程设计的目的与要求1.设计目的(1)熟悉MAXPLUS2/Quartus II软件,掌握软件的VHDL程序输入、程序编译和程序仿真操作;(2)学习利用VHDL语言设计交通灯控制器电路程序。

2.设计要求:根据设计正文提出的交通灯控制器功能,实现交通灯控制器设计。

(1)分析交通灯控制器的基础功能(见设计正文),在此基础上完善该交通灯控制器功能。

(2)根据提出的真值表编写相应的VHDL程序。

(3)对编写的程序说明其实现的功能和编程思路,描述程序中出现的端口含义。

二、设计正文1.设计思路:设计一个交通灯控制器,该控制器包括两组红黄绿灯(A组和B组)。

它们的变化顺序采用实际红绿灯变化顺序,变化时长设置:红灯15秒,绿灯10秒,黄灯5秒。

(便于最终仿真结果的观察)2.交通灯控制器的源程序:libraRy ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;——包含库和程序包entity counter is——定义实体port( clock,reset,hold:in std_logic;——输入变量clock,reset,holdflash:out std_logic;——输出变量flash,numa,numb,a,bnuma,numb:out integer range 0 to 25;aR,aG,aY:out std_logic;bR,bG,bY:out std_logic);end counter;——结束实体architecture rtl of counter is——定义结构体signal countnum:integer range 0 to 30;beginprocess(clock)beginif reset='1' then——reset=1时保持原状态countnum<=0;elsif rising_edge(clock) then——检测时钟上升沿if countnum=29 then——计29秒自动跳回0countnum<=0;elsecountnum<=countnum+1;——在前一秒的基础上加一秒end if;end if;end process;process(clock)beginif rising_edge(clock) then——检测时钟上升沿if countnum<=9then——A路为绿灯numa<=10-countnum;aR<='0';aG<='1';aY<='0';elsif countnum<=14 then——A路为黄灯numa<=15-countnum;aR<='0';aG<='0';aY<='1';elsenuma<=30-countnum;——A路为红灯aR<='1';aG<='0';aY<='0';end if;if countnum<=14 thennumb<=15-countnum;——b路为红灯bR<='1';bG<='0';bY<='0';elsif countnum<=24 thennumb<=25-countnum;——B路为绿灯bR<='0';bG<='1';bY<='0';elsenumb<=30-countnum;——B路为黄灯bR<='0';bG<='0';bY<='1';end if;end if;end process;——结束进程end;三.课程设计结论与总结1.交通灯控制器的仿真波形图及其分析:图1为交通灯控制道路的仿真波形图,由图1分析可得以下结论:(1)如图1中蓝色框区域所示,当reset=1时,交通灯状态保持不变;当reset=0时,交通灯控制器正常运行,即道路A按照绿—黄—红变化,道路B按照红—绿—黄变化。

VHDL编程实现交通灯控制(数电实验)解析

VHDL编程实现交通灯控制(数电实验)解析

•
emergencykey:in std_logic; --紧急开关
•
time_h,time_l:out std_logic_vector(3 downto 0); ; --定时
•
red,green,yellow:out std_logic_vector(3 downto 0) ; --红黄绿灯
•
);
描述状态机的进程
状态机的描述方式: 三进程、二进程、单进程(本实验采用)
一般采用三个进程来描述状态机 描述状态机寄存器的时序进程 描述次态产生逻辑的组合逻辑进程 描述输出组合逻辑进程
状态机寄存器的时序进程
process(reset,clk)
begin
if reset='1' then
current_state<=初始状态;
在进程中利用自定义数据类型定义交通灯的4个状态, 根据东西、南北方向的时间计数器的计数结果利用CASE 语句实现4个状态的转换,在每一个状态中利用内部信号 传递实现对红黄绿灯的显示控制。
FSM设计方法
• 分析控制器设计指标, 建立系统算法模型, 即状态转换图;
• 分析被控对象的时序, 确定控制器的有限 状态机的各个状态及输入、输出条件;
end if;
•
);
• end scandisplay;
• architecture behav of scandisplay is
• end if; •end process;
• signal num_in: std_logic_vector(3 downto 0); • signal counter:integer range 0 to 1; • signal led_chioce:std_logic; • Begin

基于vhdl交通灯课程设计

基于vhdl交通灯课程设计

基于vhdl交通灯课程设计一、课程目标知识目标:1. 学生能理解并掌握VHDL语言的基本结构及其在交通灯控制系统中的应用;2. 学生能运用VHDL语言编写交通灯控制程序,实现对交通灯红、黄、绿灯亮灭时间的控制;3. 学生了解交通灯控制系统的工作原理,理解数字电路在实际应用中的重要性。

技能目标:1. 学生能够独立进行VHDL代码的编写,具备初步的编程能力;2. 学生通过课程设计实践,培养解决实际问题的能力,提高动手操作能力;3. 学生能够运用所学知识对交通灯控制系统进行调试和优化。

情感态度价值观目标:1. 学生在课程学习中,培养对电子信息技术专业的兴趣,激发学习热情;2. 学生通过团队合作完成课程设计,提高沟通与协作能力,增强团队意识;3. 学生认识到电子技术在现实生活中的应用,增强社会责任感和创新意识。

课程性质:本课程为电子信息技术专业高年级的专业课程设计,旨在通过实际操作,让学生将所学理论知识运用到实际项目中。

学生特点:学生已经掌握了VHDL语言的基本知识,具有一定的编程基础,对实际项目具有一定的兴趣和热情。

教学要求:结合学生特点和课程性质,注重实践操作,提高学生的动手能力和解决实际问题的能力。

在教学过程中,注重启发式教学,引导学生主动探索,培养学生的创新意识。

同时,关注学生的情感态度价值观培养,提高学生的综合素质。

通过分解课程目标,为后续教学设计和评估提供依据。

二、教学内容1. 交通灯控制系统原理介绍:讲解交通灯控制系统的工作原理,分析各个模块的功能及相互关系,使学生对交通灯控制系统有整体的认识。

相关教材章节:第三章 数字电路设计基础,第四节 交通灯控制系统原理。

2. VHDL语言基础回顾:回顾VHDL语言的基本结构、语法和常用语句,为后续编程打下基础。

相关教材章节:第二章 VHDL语言基础,全章。

3. 交通灯控制程序设计:详细讲解如何使用VHDL语言编写交通灯控制程序,包括红、黄、绿灯亮灭时间的设置。

基于VHDL的交通控制灯设计

福建农林大学计算机与信息学院信息工程类实验报告课程名称:VHDL数字系统设计姓名:系:电子信息工程专业:电子信息工程年级:2008级学号:指导教师:职称:2011 年6 月18 日实验项目列表福建农林大学计算机与信息学院信息工程类实验报告实验基于VHDL的交通控制灯设计1•实验目的和要求模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。

基本要求:(a)信号灯分别由红、黄、绿三种颜色组成,运行时,绿灯亮40秒钟,然后闪5秒,绿灯灭,黄灯亮2秒,黄灯灭,红灯亮,同时另一方向的绿灯亮,红灯亮的时间为47秒。

扩展要求:(b)增加显示功能,即每个灯亮时显示相应的秒数并倒计时。

(c)增加左转功能,即信号灯由红灯、黄灯和两个绿灯组成,左转时间为15秒,红灯亮的时间调整为62秒。

2•实验原理或方案1.总体方案的设计:交通灯控制电路主要由以下几部分构成,如图 2.1所示,有电源电路,脉冲电路,分频电路,倒计时电路,(交通灯)状态控制电路,灯显示电路。

图2.1交通灯控制电路功能模块框图在某一十字路口交叉地带,可设置东西走向的道路为主道,南北走向的道路为次道,主次车道的交通灯需按交通法则交替运行。

2.总体设计电路图交通控制灯系统总体电路图3 •主要仪器设备1、 装有Altera 公司Max+plusU 仿真软件的计算机一台。

2、 选择 FPG/器件:Cyclone 中的 EP1C12Q240C83、 EDA-VI 实验箱一台。

4、 实现数据下载的数据线,导线。

5、 开关以及LED 灯。

6、 四位八段数码显示管。

4 •操作方法与实验步骤Max+plusH 开发工具是美国Altera 公司自行设计的一种软件工具,其使用方 法如下:(1) 建立和编写一个VHDL 语言的工程文件CLK-------- INPUT—VCC --OUTPUT C1 [KZCLK G1Y1 R1 L1L2 C2 Y2 R2inst9CNT45selkDOUT45M「 0EN45ADOUT45B[7 EN45B -instlOUTPUT Y1卜 二CD”OUTPU i^^^ L2OUTPUT Y2.OUTPU ^^ R2 XSKZinst4elk DOUT02M[7 EN02A EN02B inst3diV1elk3 elkouelkou 2i ist8SELTIMEDAOUT[y0]delednum[3..O] Ainst7Dfdeeode3 8SEL[2..0]Q[7.. 0]inst6OUTPUT Ar BTPUT C——=»OUTPUTEOUTPUT Q[7..0]EN45A EN45B EN02A EN02B EN15A EN15BCNT15sAIN45A[7..0] AIN45B[7..0]AIN15A[7..0]EN15ADOUT15B[7AIN15B[7..0]EN15BAIN02[7..0]inst2CNT02selk DOUT15M[: D O ITI 7TMD7OTDOUTM[7 DOUTB[7DOUT3[3..0] DOUT4[3..O] inst5BT U C DT U O D砂K2 碱T1[3..0]SEL [2.DOUT2[3..0]首先启动Max+plusU系统,启动后系统进入主菜单画面。

基于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实验报告

大连理工大学本科实验报告题目:十字路口交通灯控制系统课程名称:数字电路课程设计学院(系):电子信息与电气工程学部专业:班级:学生姓名:学号:完成日期:成绩:年月日题目:1 设计要求设计并调试好一个十字路口的交通灯控制系统,具体功能如下:(1).主干道、支干道方向分别有红、黄、绿指示灯以及两个显示数码管。

(2).当主干道方向允许通行亮绿灯时,支干道方向亮红灯,而支干道方向允许通行亮绿灯时,主干道方向亮红灯。

(3).工作顺序为支干道方向红灯亮40秒,前35秒支干道方向绿灯亮,后5秒黄灯亮。

然后主干道方向红灯亮20秒,前15秒支干道方向绿灯亮,后5秒黄灯亮。

(4).主干道和支干道的数码管分别以倒计时的方式显示该道路当前状态所剩余的时间。

2 设计分析及系统方案设计根据设计要求整个系统需要包括交通灯状态控制以及倒计时显示控制两部分,包括了计时器、交通灯状态转换控制器以及译码显示电路的设计。

交通等状态转换控制器用来控制交通灯的颜色转换;计时器用来产生交通灯状态转换的条件以及数码管倒计时所需显示的数据;译码显示电路用来控制数码管完成倒计时的功能。

交通灯控制流程图mg my mr sg sy sr1 0 0 0 0 10 1 0 0 0 10 0 1 1 0 00 0 1 0 1 03系统以及模块硬件电路设计下载时选择开发系统模式54 系统的VHDL设计library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity traffic isport(clk: in std_logic;mg,my,mr,sg,sy,sr: out std_logic;showmh: out std_logic_vector(3 downto 0);showml: out std_logic_vector(3 downto 0);showsh: out std_logic_vector(3 downto 0);showsl: out std_logic_vector(3 downto 0));end;architecture sys of traffic istype state is (a0,a1,a2,a3); --交通灯亮灭状态type mstate is (m0,m1,m2); --主干道显示状态type sstate is (s0,s1,s2); --支干道显示状态signal presents,nexts : state;signal mpresent,mnext : mstate;signal spresent,snext : sstate;signal ch35,mh35 : std_logic_vector(3 downto 0) :="0011";signal cl35,ml35 : std_logic_vector(3 downto 0) :="0100";--ch35(高位),cl35(低位)为交通灯状态计时信号(35s)--mh35(高位),ml35(低位)为主干道显示计时信号(35s) signal ch15,sh15 : std_logic_vector(3 downto 0) :="0001";signal cl15,sl15 : std_logic_vector(3 downto 0) :="0100";--ch15(高位),cl15(低位)为交通灯状态计时信号(15s)--sh15(高位),sl15(低位)为支干道显示计时信号(15s) signal cl5,sl5,ml5 : std_logic_vector(3 downto 0) :="0100";signal ch5,sh5,mh5 : std_logic_vector(3 downto 0) :="0000";--ch5(高位),cl5(低位)为交通灯状态计时信号(5s)--sh5(高位),sl5(低位)为支干道显示计时信号(5s)--mh5(高位),ml5(低位)为主干道显示计时信号(5s)signal sh40 : std_logic_vector(3 downto 0) :="0011";signal sl40 : std_logic_vector(3 downto 0) :="1001";--sh40(高位),sl40(低位)为支干道显示计时信号(40s) signal mh20 : std_logic_vector(3 downto 0) :="0001";signal ml20 : std_logic_vector(3 downto 0) :="1001";--mh20(高位),ml20(低位)为主干道显示计时信号(20s) signal sreach40,mreach20,mreach5,sreach5,mreach35 : std_logic:='0';sreach15,reach5,reach35,reach15 : std_logic:='0';--表示各计时信号计时一次结束的信号signal srst40,mrst20,mrst5,srst5,mrst35,srst15,rst5,rst35,rst15 : std_logic :='0';--将各计时信号重新置数的信号beginshift: process(clk) --状态转换beginif clk'event and clk='1' thenpresents<=nexts; --交通灯状态转换mpresent<=mnext; --主干道显示状态转换spresent<=snext; --支干道显示状态转换end if;end process;lightctrl: process(presents,reach35,reach15,reach5) --交通灯控制begincase presents iswhen a0 => mg<='1';my<='0';mr<='0';sg<='0';sy<='0';sr<='1';if reach35='1' then nexts<=a1;else nexts<=a0;rst35<='0';rst15<='1';rst5<='1';end if;--若reach35为1则转到a1状态,否则维持a0状态when a1 => mg<='0';my<='1';mr<='0';sg<='0';sy<='0';sr<='1';if reach5='1' then nexts<=a2;else nexts<=a1;rst35<='1';rst15<='1';rst5<='0';end if;--若reach5为1则转到a2状态,否则维持a1状态when a2 => mg<='0';my<='0';mr<='1';sg<='1';sy<='0';sr<='0';if reach15='1' then nexts<=a3;else nexts<=a2;rst35<='1';rst15<='0';rst5<='1';end if;--若reach15为1则转到a3状态,否则维持a2状态when a3 => mg<='0';my<='0';mr<='1';sg<='0';sy<='1';sr<='0';if reach5='1' then nexts<=a0;else nexts<=a3;rst35<='1';rst15<='1';rst5<='0';end if;--若reach5为1则转到a0状态,否则维持a3状态end case;end process;c35: process(clk,rst35) --35s交通灯状态计时beginif rst35='1' then ch35<="0011";cl35<="0100";elsif (clk'event and clk='1') thenif (cl35="0001" and ch35="0000") then reach35<='1';else reach35<='0';--计数到1时reach35置1,否则置0if cl35="0000" thenif ch35="0000" thench35<="0011";cl35<="0100";else cl35<="1001";ch35<=ch35-1;end if;else cl35<=cl35-1;end if;end if;end process;c15: process(clk,rst15) --15s交通灯状态计时beginif rst15='1' then ch15<="0001";cl15<="0100";elsif clk'event and clk='1' thenif (cl15="0001" and ch15="0000") then reach15<='1';else reach15<='0';end if;--计数到1时reach15置1,否则置0if cl15="0000" thenif ch15="0000" thenelse cl15<="1001";ch15<=ch15-1;end if;else cl15<=cl15-1;end if;end if;end process;c5: process(clk,rst5) --5s交通灯状态计时beginif rst5='1' then cl5<="0100";elsif clk'event and clk='1' thenif cl5="0001" then reach5<='1';else reach5<='0';--计数到1时reach5置1,否则置0cl5<=cl5-1;end if;end process;mcount: process(mpresent,mreach20,mreach35,mreach5) --主干道显示控制begincase mpresent iswhen m0 => mrst35<='0';mrst20<='1';mrst5<='1';showmh<=mh35;showml<=ml35;if mreach35='1' then mnext<=m1;else mnext<=m0;end if;--若mreach35为1则转到m1状态,否则维持m0状态when m1 => mrst35<='1';mrst20<='1';mrst5<='0';showmh<=mh5;showml<=ml5;if mreach5='1' then mnext<=m2;else mnext<=m1;end if;--若mreach5为1则转到m2状态,否则维持m1状态when m2 => mrst35<='1';mrst20<='0';mrst5<='1';showmh<=mh20;showml<=ml20;if mreach20='1' then mnext<=m0;else mnext<=m2;end if;--若mreach20为1则转到m0状态,否则维持m2状态end case;end process;m5: process(clk,mrst5) --5s主干道显示计时beginif mrst5='1' then ml5<="0100";mh5<="0000";elsif clk'event and clk='1' thenif ml5="0001" then mreach5<='1';else mreach5<='0';end if;--计数到1时mreach5置1,否则置0if ml5="0000" then ml5<="0100";else ml5<=ml5-1;end if;end if;end process;m20: process(clk,mrst20) --20s主干道显示计时beginif mrst20='1' then mh20<="0001";ml20<="1001";elsif clk'event and clk='1' thenif (ml20="0001" and mh20="0000") then mreach20<='1';else mreach20<='0';end if;--计数到1时mreach20置1,否则置0if ml20="0000" thenif mh20="0000" thenmh20<="0001";ml20<="1001";else ml20<="1001";mh20<=mh20-1;end if;else ml20<=ml20-1;end if;end if;end process;m35: process(clk,mrst35) --20s主干道显示计时beginif mrst35='1' then mh35<="0011";ml35<="0100";elsif (clk'event and clk='1') thenif (ml35="0001" and mh35="0000") then mreach35<='1';else mreach35<='0';end if;--计数到1时mreach35置1,否则置0if ml35="0000" thenif mh35="0000" thenmh35<="0011";ml35<="0100";else ml35<="1001";mh35<=mh35-1;end if;else ml35<=ml35-1;end if;end if;end process;scount: process(spresent,sreach40,sreach15,sreach5) --支干道显示控制begincase spresent iswhen s0 => srst40<='0';srst15<='1';srst5<='1';showsh<=sh40;showsl<=sl40;if sreach40='1' then snext<=s1;else snext<=s0;end if;--若sreach40为1则转到s1状态,否则维持s0状态when s1 => srst40<='1';srst15<='0';srst5<='1';showsh<=sh15;showsl<=sl15;if sreach15='1' then snext<=s2;else snext<=s1;end if;--若sreach15为1则转到s2状态,否则维持s1状态when s2 => srst40<='1';srst15<='1';srst5<='0';showsh<=sh5;showsl<=sl5;if sreach5='1' then snext<=s0;else snext<=s2;end if;--若sreach5为1则转到s0状态,否则维持s2状态end case;end process;s40: process(clk,srst40) --40s支干道显示计时beginif srst40='1' then sh40<="0011";sl40<="1001";elsif (clk'event and clk='1') thenif (sl40="0001" and sh40="0000") then sreach40<='1';else sreach40<='0';end if;--计数到1时sreach40置1,否则置0if sl40="0000" thenif sh40="0000" thensh40<="0011";sl40<="1001";else sl40<="1001";sh40<=sh40-1;end if;else sl40<=sl40-1;end if;end if;end process;s5: process(clk,srst5) --5s支干道显示计时beginif srst5='1' then sl5<="0100";sh5<="0000";elsif clk'event and clk='1' thenif sl5="0001" then sreach5<='1';else sreach5<='0';--计数到1时sreach5置1,否则置0end if;if sl5="0000" then sl5<="0100";else sl5<=sl5-1;end if;end if;end process;s15: process(clk,srst15) --15s支干道显示计时beginif srst15='1' then sh15<="0001";sl15<="0100";elsif clk'event and clk='1' thenif (sl15="0001" and sh15="0000") then sreach15<='1';else sreach15<='0';end if;--计数到1时sreach15置1,否则置0if sl15="0000" thenif sh15="0000" thensh15<="0001";sl15<="0100";else sl15<="1001";sh15<=sh15-1;end if;else sl15<=sl15-1;end if;end if;end process;end sys;5 结论以及结果说明采用GW48-CK开发系统,选用工作模式5,使用MAX+plus II软件调试环境,仿真过程中时钟周期设为200ns,仿真时间100us。

VHDL课程设计报告

课程设计课程名称:交通灯设计.一、课程设计内容1.学习ALTERA公司的FPGA/CPLD的结构、特点和性能。

2.学习集成开发软件MAX+plus II/Quartus II的使用及设计过程。

3.熟悉EDA工具设计数字电路设计方法,掌握VHDL硬件描述语言设计方法。

4.根据给定题目设计数字电路,来加深对可编程逻辑器件的理解和掌握。

二、课程设计应完成的工作1.在所选择器件内完成交通灯控制器的设计,要求设计完成后芯片具有交通灯控制器的全部功能、包括显示和操作接口。

2.交通灯控制器要求控制十字路口两道路的交通灯,两道路交替通行,每次通行时间可设定20——60秒之间,每个路口要求有前行、禁止、人行灯。

(根据实际设计进度考虑可以增加左右转向灯,等待和通行时间显示等)。

3.撰写设计说明书一份(不少于2000字),阐述系统的工作原理,软、硬件设计方法,重点阐述软件思路。

说明书应包括封面、任务书、目录、摘要、正文、参考文献(资料)等内容,以及硬件电路综合图和软件程序清单等材料。

注:设计说明书题目字体用小三,黑体,正文字体用五号字,宋体,小标题用四号及小四,宋体,并用A4纸打印。

三、课程设计进程安排四、设计资料及参考文献1.康华光主编,《电子技术基础-数字部分》,高等教育出版社,1998。

2.谭会生等主编,《EDA技术及应用》,西安电子科技大学出版社,2001 3.潘松等主编,《EDA技术实用教程》,科学出版社,20064.雷伏容主编,《VHDL电路设计》,清华大学出版社,2006 5.Charles H.Roth等著,《数字系统设计与VHDL》,电子工业出版社,2008五、成绩评定综合以下因素:(1) 说明书及设计图纸的质量(占50%)。

(2) 独立工作能力及设计过程的表现(占30%)。

(3) 回答问题的情况(占20%)。

说明书和图纸部分评分分值分布如下:1、任务分析与设计思路(10分)要求说明设计任务的具体技术指标打算如何实现,根据实现各技术指标的解决方法,提出总体设计的思路和解决方案,说明其中关键问题及其解决办法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档