基于VHDL交通信号灯控制器

合集下载

基于VHDL的交通灯控制器设计

基于VHDL的交通灯控制器设计

基于VHDL 的交通灯控制器设计翟殿棠,方 敏,厉光伟(济南大学控制科学与工程学院 山东济南 250022)摘 要:传统的交通灯控制器多数由单片机或PLC 实现,本文介绍基于EDA 技术设计交通灯控制器的一种方案。

EDA 技术的一个重要特征就是使用硬件描述语言(HDL)来完成系统的设计文件,这在电子设计领域已得到设计者的广泛采用。

给出了交通灯控制器的VH DL 源程序和仿真结果。

仿真结果表明该系统的设计方案正确。

展示了VH DL 语言的强大功能和优秀特性。

关键词:交通灯控制器;电子设计自动化;硬件描述语言;可编程器件中图分类号:T N702 文献标识码:B 文章编号:1004373X(2007)0318702Design of Traffic Light Controller Based on VHDLZH AI Diantang,FANG Min,LI Guangwei(School of Cont rol Sci ence and Engineering,Ji nan Universi t y,Ji c nan,250022,China)A bstra ct :Tr affic light controller is usually developed by micr oprocessor or PLC.This paper introduces the design of t raffic light controller base on EDA,one im portant character istic of the EDA is that the design documents should be complet ed by the HDL,and it is widely used by electr onic designer now.The VH DL source progr ammer and simulating r esults of traffic light cont roller are given.T he simulating r esults show that the design met hod is corr ect,it shows the powerful function and excel 2lent char acter of the VHDL.Keywords :traff ic light controller;EDA;HDL;PLD收稿日期:20060706应用VH DL 语言设计数字系统,大部分设计工作可在计算机上完成,从而缩短系统开发时间,提高工作效率。

基于VHDL的智能交通灯控制器

基于VHDL的智能交通灯控制器

基于VHDL的智能交通灯控制器1 设计任务及要求交通灯在指挥道路交叉部分的车辆,行人安全,有序,高效地通行,缓解城市交通拥堵状况起着重要作用,交通灯的出现大大降低了交汇路段的交通事故率,极大地提高了通行效率,是现代交通控制系统不可缺少的一部分。

本次将设计基于VHDL语言的交通灯控制系统,实现如下功能: 1. 本设计用总共8个LED灯分别指示南北和东西方向的红黄绿以及左转信号灯。

并规定在非紧急情况下各个方向车辆在不影响其他直行车道车辆正常行驶是情况下均能右转向,因此本设计未包含右转向信号。

2. 本设计具有状态实时显示功能,即各个状态的剩余时间将在对应的数码管上显示。

3. 复位功能:在紧急情况键未按下时复位键可以使系统从任意状态回到第一种状态。

4. 紧急状态限行功能:在紧急情况时可以按下紧急情况按钮,可使系统在任意情况,转向限制所有方向车辆通行,同时数码管显示“00”,发出警告音 5. 系统的六个状态为:东西方向绿灯,南北方向红灯,持续30s;东西方向黄灯,南北方向红灯,持续5s;东西方向绿灯,南北方向左转,持续10;东西方向红灯,南北方向绿灯,持续30s;东西方向红灯,南北方向黄灯,持续5s;东西方向左转,南北方向绿灯,持续10s;6.要求在无人工干预条件下各个状态能自动转换,系统正常运行。

2设计原理及总体框图本交通灯设计总共用8个数码管分别指示东西和南北方向的红灯,黄灯,绿灯以及左转指示灯。

共有六种状态,如下表所示:状态 1 2 3 4 5 6 南北方向东西方向LED指示LED状态绿灯黄灯绿灯红灯红灯左转计数器初值30 5 10 35 5 10 LED状态红灯红灯左转绿灯黄灯绿灯计数器初值35 5 10 305 10 LED代码00101000 01001000 00100001 10000010 10000100 00010010 设计的总体框图为:时钟输入交通灯控制核心模块东西方向数码管时间显示南北方向数码管时间显示LED显示交通灯控制模块在时钟的控制下,实现各个状态的自动转换,并且负责输出LED的控制信号和,数码管倒计时的BCD码输入信号。

基于VHDL的交通灯控制器设计

基于VHDL的交通灯控制器设计

生物医学工程王春雨基于VHDL的交通灯控制器设计应用VHDL语言设计数字系统,大部分设计工作可在计算机上完成,从而缩短系统开发时间,提高工作效率。

下面介绍基于VHDL设计交通灯控制器的一种方案,并给出源程序和仿真结果。

1 系统功能与要求实现交通繁忙的主路和偶有车行的小路交会路口的交通管理。

要求:1、交通灯控制器控制主干道和小路交叉路口的交通。

2、小路口来车,主线路口绿灯切换到黄灯5秒钟后变为红灯。

3、红灯燃亮20秒后,自动切换为绿灯。

4、指示左转弯的绿灯亮12 s,绿灯变至红灯时,黄灯亮3 s。

5、主路的交通管制重新切换到绿灯后5分钟内不理睬小路上的车况,即使又有车辆驶入小路路口。

上述主路上的灯光显示,小路口的灯信号与之逻辑配合。

2 程序设计根据交通灯控制器的功能与要求,将其总体电路分为分频器、信号控制器两个模块。

外部脉冲振荡器的频率选为32768 kHz,经分频器分频得1 Hz的信号,1 Hz信号用做信号控制器的计数脉冲,用VHDL设计组成交通灯控制器的分频器、信号控制器两个模块,在M AX+plus Ⅱ平台上,编译VHDL程序,然后用原理图输入法形成总体框图。

实验程序:Library IEEE;Use IEEE.Std_Logic_1164.All;Use IEEE.STd_Logic_Unsigned.All;Entity Frequency10Hz IsPort(Clk20M: In Std_Logic;Clk10Hz:Out Std_Logic);End;Architecture Count Of Frequency10Hz Is Signal Tout:Integer Range 0 to ;Signal Clk:Std_Logic;BeginProcess(Clk20M)BeginIf rising_edge(Clk20M) thenIf Tout= thenTout<=0;Clk<=Not Clk;Else Tout<=Tout+1;End If;End If;End Process;Clk10Hz<=Clk;End;Library IEEE;Use IEEE.Std_Logic_1164.All;Use IEEE.STd_Logic_Unsigned.All; Entity Frequency IsPort(Clk10Hz: In Std_Logic;Clk1Hz:Out Std_Logic);End;Architecture Count Of Frequency Is Signal Tout:Integer Range 0 to 4;Signal Clk:Std_Logic;BeginProcess(Clk10Hz)BeginIf rising_edge(Clk10Hz) thenIf Tout=4 thenTout<=0;Clk<=Not Clk;Else Tout<=Tout+1;End If;End If;End Process;Clk1Hz<=Clk;End;Library IEEE;Use IEEE.Std_Logic_1164.All;Use IEEE.Std_Logic_Unsigned.All;Entity Controller IsPort(Clock:In Std_Logic;Hold:In Std_Logic;CountNum:IN Integer RANgE 0 TO 49;Flash:Out Std_Logic;NumA,NumB:Out Integer Range 0 To 25;RedA,GreenA,YellowA:Out Std_Logic;RedB,GreenB,YellowB:Out Std_Logic);End;ARCHITECTURE Behavior OF Controller IS BEGINPROCESS(CLOCK)BeginIf falling_edge(Clock) thenIf Hold='1' thenRedA<='1';RedB<='1';GreenA<='0';GreenB<='0';YellowA<='0';YellowB<='0';Flash<='1';ElseFlash<='0';If CountNum<=19 thenNumA<=20-CountNum;RedA<='0';GreenA<='1';YellowA<='0';Elsif (CountNum<=24) thenNumA<=25-CountNum;RedA<='0';GreenA<='0';YellowA<='1';ElseNumA<=50-CountNum;RedA<='1';GreenA<='0';YellowA<='0';End If;If CountNum<=24 thenNumB<=25-CountNum;RedB<='1';GreenB<='0';YellowB<='0';Elsif CountNum<=44 thenNumB<=45-CountNum;RedB<='0';GreenB<='1';YellowB<='0';ElseNumB<=50-CountNum;RedB<='0';GreenB<='0';YellowB<='1';End If;End If;End If;End Process;End;LIBRARY IEEE;USE IEEE.Std_logic_1164.all;Use IEEE.Std_Logic_Unsigned.All; ENTITY Counter ISPORT(Clock:IN Std_logic;Reset:IN Std_logic;Hold:IN Std_logic;CountNum:BUFFER Integer RANGE 0 TO 49 );END;ARCHITECTURE Behavior OF Counter IS BEGINPROCESS(Reset,Clock)BEGINIF Reset='1'THENCountNum<=0;ELSIF rising_edge(Clock) THENIF Hold='1'THENCountNum<=CountNum;ELSEIF CountNum=49 THENCountNum<=0;ELSECountNum<=CountNum+1;END IF;END IF;END IF;END PROCESS;END Behavior;Library IEEE;Use IEEE.Std_Logic_1164.All;Use IEEE.Std_Logic_Unsigned.All;Entity Display IsPort( Clock:In Std_Logic;Flash:In Std_Logic;Qin:In Std_Logic_Vector(3 Downto 0); Display:Out Std_Logic_Vector(0 to 6)); End;Architecture Light Of Display IsSignal Timeout:Integer Range 0 To 11;BeginProcess(Clock)BeginIf rising_edge(Clock) thenIf (Flash='0') thenTimeout<=0;ElseIf (Timeout=11) thenTimeout<=0;ElseTimeout<=Timeout+1;End If;End If;If (Timeout<=6) thenCase Qin IsWhen "0000"=>Display<="";When "0001"=>Display<="";When "0010"=>Display<="";When "0011"=>Display<="";When "0100"=>Display<="";When "0101"=>Display<="";When "0110"=>Display<="";When "0111"=>Display<="";When "1000"=>Display<="";When "1001"=>Display<="";When Others=>Display<="";End Case;ElseDisplay<="";End If;End If;End Process;End;Library IEEE;Use IEEE.Std_Logic_1164.All;Use IEEE.Std_Logic_Unsigned.All; Entity Fenwei IsPort(Numin:In Integer Range 0 To 25;NumA,NumB:Out Integer Range 0 To 9 );End;Architecture Fen Of Fenwei IsBeginProcess(Numin)BeginIf Numin>=20 thenNumA<=2;NumB<=Numin-20;Elsif Numin>=10 thenNumA<=1;NumB<=Numin-10;ElseNumA<=0;NumB<=Numin;End If;End Process;End;顶层框图:3.仿真结果。

基于VHDL语言的交通灯控制器设计

基于VHDL语言的交通灯控制器设计

基于VHDL语言的交通灯控制器设计2009年06 月18 日星期四20:38设计要求1、显示一个方向的绿、黄、红的指示状态。

2、特殊情况按键能实现特殊的功能,计数器停止计数并保持在原来的状态,显示红灯状态。

特殊后能继续计数.3、复位按键实现总体计数清零功能。

4、实现正常的倒计时功能. 用数码管作为倒计时显示, 显示时间为绿灯17s, 黄灯3s 红灯20s。

| ---------- >|--->| ------------ >|| 绿灯| 黄灯| 红灯|设计思想首先由晶振产生出发信号,由控制器处理成1HZ的时钟,利用此时钟进行计数,通过判断控制交通灯的亮灭。

通过每种灯亮的时间总数与计数值比较得到数码管应该显示的数值,利用分位分成十位和个位。

通过译码电路来实现数码管的显示。

本实验所使用的芯片为EPM7128SLS84-,6 实体逻辑单元为64 点,结构体逻辑单元为128 小型芯片。

软件本实验使用MAX+plus II 10 来进行程序的编写,编译,仿真以及下载。

在实验中发现其用,但仍有地方需要改进,不支持MOD取余运算。

(源程序)* 在MAX+plus II 中,汉字很容易出现乱码,建议大家用英文,这里为了考虑到读者的习惯写论文时都译成中文Library IEEE;Use IEEE.std_logic_1164.all;Entity redgreen isPort(clock_in:in std_logichold_state:instd_logic;reset_state:instd_logic,led_green ,led_yellow:out std_logic;led_redselect_en:buffer std_logic; select_display:out std_logic_vector(0 to 6)); end;Architecture half of redgreen isconstant loop_hz:integer:=800000; -- 一根据晶振实际频率算出来signal count_time:integer range 0 to loop_hz;signal clock_buffer:std_logic;signal clock_out:std_logic;signal count_num:integer range 0 to 40;signal display_num:integer range 0 to 20;signal display_shi:integer range 0 to 9;signal display_ge:integer range 0 to 9;constant loop_time:integer:=40; 个循环周期的时间constant red_time:integer:=20; -- 红灯的时间constant green_time:integer:=17; -- 绿灯的时间constant yellow_time:integer:=3; -- 黄灯的时间beginprocess(clock_in) -- 分频进程beginif rising_edge(clock_in) thenif count_time=loop_hz then count_time<=0; clock_buffer<=notclock_buffer;else count_time<=count_time+1;end if;end if; clock_out<=clock_buffer;-- 输入1HZ 的频率end process;process(reset_state ,clock_out) -- 计数进程beginif reset_state=1 then -- 重启后计数归零count_num<=0;elsif rising_edge(clock_out) thenif hold_state=1 then -- 紧急时计数占停count_num<=count_num;elseif count_num=loop_time-1 then count_num<=0;else count_num<=count_num+1;end if;end if;end if;end process;process(clock_out) -- 交通灯显示count countbeginnumnumif falling_edge(clock_in) thenif hold_state=1 then --led_red<=1;led_green<=0;led_yellow<=0;elseifelsifelseendif;占停时红灯亮display_num<=green_time-count_num;led_red<=0;led_green<=1;led_yellow<=0;display_num<=green_time+yellow_time-led_red<=0;led_green<=0;led_yellow<=1;display_num<=loop_time-count_num;led_red<=1;led_green<=0;led_yellow<=0;endif; end if;end process;process(display_num) -- 分位进程beginif display_num>=20 then display_shi<=2;display_ge<=display_num-20;elsif display_num>=10 thendisplay_shi<=1;display_ge<=display_num-10;elsedisplay_shi<=0;display_ge<=display_num;end if;end process;process(clock_in) -- 数码管显示beginif falling_edge(clock_in) thenselect_en<=1; -- 因为我们的实验箱采用数码管并联方式,所以显示case display_shi iswhen 0=>select_display<=1111110; when1=>select_display<=0110000; when 2=>select_display<=1101101; whenothers=>select_display<=0000000; end case;if select_en=1 then select_en<=0; case display_ge is when0=>select_display<=1111110; when 1=>select_display<=0110000; when2=>select_display<=1101101; when 3=>select_display<=1111001; when4=>select_display<=0110011; when 5=>select_display<=1011011; when6=>select_display<=1011111; when 7=>select_display<=1110000; when8=>select_display<=1111111; when 9=>select_display<=1110011; whenothers=>select_display<=0000000; end case;end if;end if;end process;end;-- 由于时间和硬件限制,这个程序仅仅实现了一路交通灯,用类似的方法可以写出两路交通灯的程library ieee;use ieee.std_logic_1164.all;entity redgreen isPort( clock_in:in std_logic; hold_state:in std_logic;reset_state:in std_logic;led_red,led_green,led_yellow:out std_logic; select_en:buffer std_logic; select_display:out std_logic_vector(0 to 6));end;architecture half of redgreen isbeginsignal count_time:integer range 0 to 800000;signal clock_buffer:std_logic;signal clock_out:std_logic;signal count_num:integer range 0 to 40;signal display_num:integer range 0 to 20; signal display_shi:integer range 0 to 9; signal display_ge:integer range 0 to 9; constantloop_time:integer:=50;constant red_time:integer:=25;constant green_time:integer:=20; constant yellow_time:integer:=5;begin process(clock_in)beginif rising_edge(clock_in)count_time<=0;clock_buffer<=not clock_buffer;count_time<=count_time+1;end if;end if;clock_out<=clock_buffer;end process;process(reset_state,clock_out)beginif reset_state=1then count_num<=0;elsif rising_edge(clock_out)then if hold_state=1then count_num<=count_num;else if count_num=loop_time-1then count_num<=0;else count_num<=count_num+1;end if;end if;thenif count_time=loop_hz then elseend if;end process;process(clock_out)beginif falling_edge(clock_in)then if hold_state=1thenled_red<=1;led_green<=0; led_yellow<=0;elseif count_numdisplay_num<=green_time-count_num;led_red<=0;led_green<=1;led_yellow<=0;elsif count_numdisplay_num<=green_time+yellow_time-count_num; led_red<=0;led_green<=0;led_yellow<=1;elsedisplay_num<=loop_time-count_num;led_red<=1;led_green<=0;led_yellow<=0;end if;end if;end if;end process;process(display_num)beginif display_num>=20then display_shi<=2;display_ge<=display_num-20;elsif display_num>=10then display_shi<=1;display_ge<=display_num-10;else display_shi<=0;display_ge<=display_num;end if;end process;process(clock_in)beginif falling_edge(clock_in)then select_en<=1;case display_shi iswhen 0=>select_display<=1111110;when 1=>select_display<=0110000;when 2=>select_display<=1101101;when others=>select_display<=0000000; end case;if select_en=1then select_en<=0;case display_ge iswhen 0=>select_display<=1111110;when 1=>select_display<=0110000;when 2=>select_display<=1101101;when 3=>select_display<=1111001;when 4=>select_display<=0110011;when 5=>select_display<=1011011;when 6=>select_display<=1011111;when 7=>select_display<=1110000;when 8=>select_display<=1111111;when 9=>select_display<=1110011;when others=>select_display<=0000000;end case; end if; end if;end process; end;end half;。

基于VHDL交通灯系统的设计_毕业论文

基于VHDL交通灯系统的设计_毕业论文

毕业设计(论文)报告题目基于VHDL交通灯系统的设计系别专业班级学生姓名学号指导教师2013年4 月基于VHDL的交通灯系统设计摘要:当今时代是一个自动化时代,交通灯控制等很多行业的设备都与计算机密切相关。

因此,一个好的交通灯控制系统,将给道路拥挤、违章控制等方面给予技术革新。

随着大规模集成电路及计算机技术的迅速发展,以及人工智能在控制技术方面的广泛运用,智能设备有了很大的发展,是现代科技发展的主流方向。

本文介绍了一个交通灯系统的设计,模拟实现了红、绿灯指挥交通的功能。

传统的交通灯控制系统多数由单片机或PLC实现,本文介绍的是基于EDA技术设计交通灯系统的一种方案。

EDA技术的一个重要特征就是使用硬件描述语言(HDL)来完成系统的设计文件,应用VHDL的数字电路实验降低了数字系统的设计难度,这在电子设计领域已得到设计者的广泛采用。

本设计就是针对交通信号灯控制器的设计问题,提出了基于VHDL语言的交通信号灯系统的硬件实现方法。

VHDL(即超高速集成电路硬件描述语言)是随着可编程逻辑器件(PLD)的发展而发展起来的一种硬件描述语言,主要用于描述数字系统的结构、行为、功能和接口,是电子设计自动化(EDA)的关键技术之一。

它采用一种自上而下(top-down)的设计方法,即从系统总体要求出发,自上至下地逐步将设计内容细化,如划分为若干子模块,最后完成系统硬件的整体设计。

它支持设计库和可重复使用的元件生成,支持阶层设计,提供模块设计的创建。

VHDL设计技术对可编程专用集成电路(ASIC)的发展起着极为重要的作用。

通过对系统进行结构分析,采用了层次化的设计方法,给出了各个模块的VHDL程序,并且利用Max PlusⅡ对应用程序进行了仿真,并给出了相应的仿真结果。

在用VHDL语言进行电路设计时,应充分认识到VHDL语言的特点,从设计思想、语句运用及描述方法上等多方面对电路进行优化设计。

通过电路优化设计,可以使用规模更小的可编程逻辑芯片,从而降低系统成本。

基于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的交通控制灯设计

福建农林大学计算机与信息学院信息工程类实验报告课程名称: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的交通灯控制器的设计和实现

基于VHDL的交通灯控制器的设计和实现

基于VHDL语言的交通灯控制器设计与实现摘要 VHDL是Very High Speed Integrated Circuit Hardware Description Language 的缩写,意思是超高速集成电路硬件描述语言。

对于复杂的数字系统的设计,它有独特的作用。

它的硬件描述能力强,能轻易的描述出硬件的结构和功能。

这种语言的应用至少意味着两种重大的改变:电路的设计可以通过文字描述的方式完成;电子电路可以当作文件一样来存储。

随着现代技术的发展,这种语言的效益与作用日益明显,每年均能够以超过30%的速度快速成长。

交通灯控制系统通常要实现自动控制红绿灯的变化,基于FPGA设计的交通灯控制系统电路简单、可靠性好。

本系统可控制2个路口的红、黄、绿三盏交通灯。

对于Max+PlusⅡ开发工具,它是美国Altera公司自行设计的一种CAE软件工具。

他具有全面的逻辑设计能力,设计者可以自由组合文本、图形和波形输入法,建立起层次化的单器件或多器件设计。

利用该工具配备的编辑、编译、仿真、综合、芯片编程等功能,将设计的电路图或电路描述程序变成基本的逻辑单元写入到可编程芯片中(如CPLD、FPGA),做成ASIC芯片。

仿真实验结果表明了该编解码器的正确性和合理性。

关键词:交通灯;控制器;VHDL;MAX+PlusⅡAbstract VHDL is the Very Hight Speed Integrated Circuit Hardware Description Language acronym,meaning that high-speed integrated circuit hardware description language.For complex digital system design,it has a unique role.Its hardware descirption ability,can easily describe the structure and funtion of the hardware.The application of this language implies that at least two kinds of major changes:the design of the circuit can actually be completed by the manner described in the text;electronic circuits can be used as to store the same files.With modern technology,the benefits and role of this language has become more obvious every year to more than 30% of the rate of rapid growth.Traffic light control system is usually to achieve the automatic trafffic light changes,FPGA-based design of a traffic light control system circuit is simplem,and good reliability.The system can control two junctions of red,yellow,green,three traffic lights.For theMax-Plus II development tool,it is United States Altera’s own design of a CAE software tools.It has a comprehensive logic design capabilities,designers can freely mix text,graphics,and waveform input method,set up hierarchical design of a single device or multiple devices.The use of the tool is equipped with the editing,compiling,simulation,synthesis,chip programming features such as the design of the circuit or circuit described procedure into the basic logic unit is written into the programmable chip(eg,CPLD,FPGA),made of ASIC chips.The simulation results show that the correct codec and rationality.Keywords:traffic light;controller,VHDL,MAX+PlusII目录1 引言 (1)2 课题背景及相关技术 (2)2.1 Max+plusII简介 (2)2.2 VHDL语言简介 (3)2.3 VHDL设计的优点与设计方法 (5)3交通灯控制器分析 (7)3.1 分频器 (7)3.2 状态机 (8)4交通灯控制器的VHDL设计 (9)4.1程序流程图 (9)4.2交通灯顶层文件和管脚分配 (10)4.3分频器和状态机的图示符号 (11)4.4仿真波形图 (12)附录 (13)结束语 (17)参考文献 (18)1引言在交通发达的当代,交通灯控制器无疑是最实用的的工具。

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

《PLD与现代传感技术应用》课程论文基于VHDL的交通信号灯的设计学院:电信学院专业:控制工程姓名:王晋学号:102430111356基于VHDL的交通信号灯的设计王晋(辽宁科技大学电信学院,电信2010)摘要:交通灯控制系统在城市交通监管中起着极其重要的作用。

应用VHDL语言,在Altera公司的QuartusII软件环境下,通过模块化编程完成了灯亮时间可调的交通灯控制系统设计, 并进行了逻辑综合、仿真, 系统的软件仿真测试结果满足了设计要求,达到了预期的效果。

由于设计采EDA技术,不但大大缩短了开发研制周期, 提高了设计效率,而且使系统具有设计灵活,实现简单, 性能稳定的特点。

关键词:交通灯控制; FPGA; VH DL;仿真0 引言交通灯是城市交通监管系统的重要组成部分,对于保证机动车辆的安全运行,维持城市道路的顺畅起到了重要作用。

目前很多城市交叉路口的交通灯实行的是定时控制,灯亮的时间是预先设定好的, 在时间和空间方面的应变性能较差,一定程度上造成了交通资源的浪费,加重了道路交通压力。

本文在EDA 技术的基础上,利用FPGA 的相关知识设计了交通灯控制系统,可以根据实际情况对灯亮时间进行自由调整,整个设计系统通过Quartus I I软件进行了模拟仿真,并可以下载到FPGA 器件中进行硬件的调试, 验证其设计的交通信号灯控制电路预定的功能。

1 VHDL的特点随着电子技术的发展,数字系统的设计正朝高速度、大容量、小体积的方向发展,传统的自底而上的设计方法已难以适应形势。

EDA ( Electronic Design Automation)技术的应运而生,使传统的电子系统设计发生了根本的变革。

EDA 技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言VHDL(Very Hieh Speed Integrated Circuit Hardware DescriptionLanguage)为系统逻辑描述手段自顶而下地逐层完成相应的描述、综合、优化、仿真与验证,直至生成器件。

VHDL 语言是目前应用于数字系统仿真最为实用的语言之一。

VHDL 语言最早由美国国防部提出。

用VHDL 语言进行数字逻辑电路和数字系统的设计,是电子电路设计方法上的一次革命性变革。

与传统设计方法相比,VHDL 描述电路行为的算法有很多优点:(1)设计层次较高、用于较复杂的计算时,能尽早发现存在的问题,缩短设计周期;(2)独立实现 ,修改方便 ,系统硬件描述能力强; (3)可读性好 ,有利于交流 ,适合于文档保存; (4)VHDL 语言标准、 规范、 移植性强;(5)VHDL 类型众多而且支持用户自定义类型 ,支持自顶而下的设计方法和 多种电路的设计。

2 交通灯设计说明启动交通灯首先将开关 rest 由低电平状态置为高电平状态(复位信号,低电平时有效),则系统就会进入稳定的工作状态。

分load0和load1两路交通灯。

初始状态为load0绿灯亮,load1红灯亮。

30 秒后 , load0和load1均变黄 ,持续5秒后, load0为红灯亮 , load1为绿亮。

30 秒后 , load0和load1均变黄 ,持续5秒,如此交替循环。

3 交通灯设计思路框图图1 交通灯设计框图Rest 信号由低电平置为高电平交,交通灯进入启动状态load0绿灯亮load1红灯亮Load0、load1均黄灯亮load0红灯亮load1绿灯亮load0、load1均黄灯亮持续30秒持续5秒持续5秒持续30秒4 软件流程图及程序根据交通灯信号控制的要求,可把它分解为定时器和控制器两部分。

CLK:时钟脉冲; rest:复位信号,低电平有效。

r0:road0红灯;y0:road0黄灯;g0:road0绿灯。

r1:road1红灯;y1:road1黄灯;g1:road1绿灯。

(如图1所示) 。

主控制电路设计程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;use ieee.std_logic_arith.all;ENTITY fz ISPORT( clk : IN STD_LOGIC;rest : in std_logic;r0,y0,g0,r1,y1,g1: out std_logic);END ENTITY fz;ARCHITECTURE behavioral OF fz ISconstant yellow_time : integer:=5;constant green_time : integer:=30;constant red_time : integer:=30;signal p,f : integer range 0 to 3;signal clk_500 :std_logic;BEGINtemp1: process(clk)variable cnt1 :integer range 0 to 2;variable cnt2 :integer range 0 to 3;BEGINif clk'event and clk='1' thenif cnt1=2 thencnt1:=0;if cnt2=3 thencnt2:=0;clk_500<=not clk_500;elsecnt2:=cnt2 + 1;end if;elsecnt1:=cnt1+1;end if ;end if ;end process temp1; --当clk周期为10ns时,分频后200*250*2,周期为1s temp2: process( clk_500)variable load0,load1:integer;beginif rest='0' thenf<=0;load0:=green_time;load1:=red_time;r0<='0';y0<='0';g0<='1';r1<='1';y1<='0';g1<='0';elsif clk_500'event and clk_500='1' thencase f iswhen 0=>if load0=0 thenload0:=yellow_time;f<=1;elseload0:=load0-1; --0路绿灯时间,循环等待r0<='0';y0<='0';g0<='1';--0路绿灯r1<='1';y1<='0';g1<='0';--1路红灯end if;when 1=>if load0=0 thenload0:=green_time;f<=2;elseload0:=load0-1; --黄灯时间r0<='0';y0<='1';g0<='0';--0路黄灯r1<='0';y1<='1';g1<='0';--1路黄灯end if;when 2=>if load0=0 thenload0:=yellow_time;f<=3;elseload0:=load0-1; --绿灯时间r0<='1';y0<='0';g0<='0'; --0路红灯r1<='0';y1<='0';g1<='1'; --1路绿灯end if;when 3=>if load0=0 thenload0:=green_time;f<=0;elseload0:=load0-1; --黄灯时间r0<='0';y0<='1';g0<='0'; --0路黄灯r1<='0';y1<='1';g1<='0'; --1路黄灯end if;when others=>r0<='1';y0<='0';g0<='0';r1<='1';y1<='0';g1<='0';end case;end if;end process temp2 ;end behavioral;开始判断是否 rest=1load0绿灯亮load1红灯亮是否到30秒load0、load1黄灯亮是否到5秒load0红灯亮load1绿灯亮是否到30秒否是否是否load0,load1黄灯亮是否到5秒否是是是否load0绿灯亮load1红灯亮开始计时图2 软件流程图5 程序仿真图图3 功能仿真图说明:图3为交通灯由启动到稳定的时序仿真图。

为了显示明显,时钟选择clk(分频clk_500未使用)触发信号。

交通灯程序首先Rest由低电平置高低电平。

初始状态为r0= 0,y0=0,g0=1,r1=1,y1=0,g1=0即,load0绿灯亮,load1红灯亮。

在0.3ns处rest=1, load0:=load0-1,开始自减,进入状态f=0 ,30s后load0=0时,进入状态f=1,r0= 0,y0=1,g0=0;r1=0,y1=1,g1=0即load0黄灯亮load1黄灯亮。

循环5s后进入状态f=2,r0= 1,y0=0,g0=0;r1=0,y1=0,g1=1,即load0红灯亮,load1绿灯亮。

循环30s后进入状态f=3,r0= 0,y0=1,g0=0;r1=0,y1=1,g1=0即load0黄灯亮load1黄灯亮。

循环5s后,进入状态f=0。

依此方式,循环反复运行,完成交通灯控制功能。

6 结语VHDL 语言可用简洁明确的代码描述来进行复杂逻辑的设计,使用灵活方便,易于设计结果的交流,保存和重用。

EDA 技术彻底改变了数字系统的设计方法和实现手段,借助于硬件描述语言的国际标准VHDL 和强大的EDA 工具,随着VHDL 语言使用范围的日益扩大,必将给硬件设计领域带来巨大的改革。

参考文献[1 ] 侯伯亨.VHDL 硬件描述语言与数字逻辑电路设计[M] .西安:西安电子科技大学出版社,1999.[2 ] 邢建平,曾繁泰. VHDL 程序设计教程. 3 版. 北京:清华大学出版社,2005.[3 ] Xilinx lnc. The Programmable Logic Data Book [ Z] .Xilinc lnc ,USA:1998.。

相关文档
最新文档