VHDL交通灯课程设计
基于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: 负责红绿灯的状态显示。
verilog课程设计交通灯

verilog课程设计交通灯一、教学目标本节课的教学目标是使学生掌握Verilog HDL的基本知识,能够使用Verilog编写简单的交通灯控制系统。
具体来说,知识目标包括理解Verilog的基本语法、模块化设计方法以及状态机的设计原理;技能目标包括能够使用Verilog编写交通灯控制器的代码,并能够进行仿真测试;情感态度价值观目标包括培养学生的团队合作意识,提高他们对电子工程的兴趣。
二、教学内容本节课的教学内容主要包括Verilog基础知识、模块化设计方法、状态机设计原理以及交通灯控制系统的实现。
具体来说,首先介绍Verilog的基本语法,包括数据类型、运算符、语句等;然后讲解模块化设计方法,如何将复杂的系统分解为简单的模块,并介绍模块的调用和连接;接着介绍状态机的设计原理,如何根据状态转移图编写状态机的Verilog代码;最后,通过实例讲解如何使用Verilog编写交通灯控制系统的代码,并进行仿真测试。
三、教学方法为了达到本节课的教学目标,将采用多种教学方法相结合的方式进行教学。
首先,通过讲授法,为学生讲解Verilog的基本语法、模块化设计方法和状态机设计原理;然后,通过案例分析法,分析交通灯控制系统的实现过程,让学生加深对知识的理解;接着,通过实验法,让学生动手编写交通灯控制器的Verilog代码,并进行仿真测试,提高他们的实践能力;最后,通过讨论法,让学生分享自己的学习心得,培养他们的团队合作意识。
四、教学资源为了支持本节课的教学内容和教学方法的实施,将准备以下教学资源:教材《Verilog HDL Primer》和相关参考书,用于讲解Verilog的基本语法和设计方法;多媒体教学课件,用于展示交通灯控制系统的原理和实现过程;实验设备,包括计算机和仿真器,用于让学生动手编写代码并进行仿真测试。
此外,还将提供在线编程平台,让学生可以随时随地编写代码并进行调试。
五、教学评估本节课的教学评估将采用多元化的评估方式,以全面、客观、公正地评价学生的学习成果。
基于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语言设计数字系统,大部分设计工作可在计算机上完成,从而缩短系统开发时间,提高工作效率。
下面介绍基于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的交通灯设计

交通灯设计课程名称:学院专业姓名:学号:年级:任课教师:2011年9 月 5 日实验目的:1.熟悉quartus的使用,了解VHDL编程2.掌握逻辑电路的设计方法3.利用Quartus,使用VHDL语言编写一个交通灯的程序,使之可以实现红黄绿灯的交替出现,并在十字路口的另一条岔路上实现指挥的同步,完成交通指挥的功能。
实验基本原理:在假设时钟信号为1HZ的情况下,对路口的灯进行计时,每当时间到时转入下一个状态,开始新一轮的计时,一个十字路口的交通灯组合后有四种情况(绿,红)(黄,红)(红,绿)(红,黄),每个状态可对应一个时间。
在对每种状态编号后就可以开始状态的循环了。
实验内容:实验代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity traffic isport(clk: in std_logic;r1,y1,g1,r2,y2,g2:out std_logic --六个输出对应十字路口的六个红绿灯);end traffic;architecture act of traffic isconstant yellow_time:integer:=5;constant green_time:integer:=20; --不用定义红灯的时间,因为后面用不到.signal state:integer range 0 to 3; --这里有四种状态,用state来表示beginprocess(clk)beginif(clk'event and clk='1') thencase state is --用来展示这四种状态when 0=>r1<='0';y1<='0';g1<='1';r2<='1';y2<='0';g2<='0';when 1=>r1<='0';y1<='1';g1<='0';r2<='1';y2<='0';g2<='0';when 2=>r1<='1';y1<='0';g1<='0';r2<='0';y2<='0';g2<='1';when others=>r1<='1';y1<='0';g1<='0';r2<='0';y2<='1';g2<='0';end case;end if;end process;process(clk)variable count:integer range 0 to 25;beginif(clk'event and clk='1') thenif count=0 then --状态的循环if state=3 thenstate<=0;elsestate<=state+1;end if;case state iswhen 0=>count:=yellow_time; --选择状态对应的时间when 1=>count:=green_time;when 2=>count:=yellow_time;when others=>count:=green_time;end case;elsecount:=count-1; --状态的计时end if;end if;end process;end act;实验结果点击编译,可以看出没有出现错误设计出相应的波形文件并加载后,点击仿真,就可以出现如下的波形由时序仿真的结果可以看出,它实现了红绿灯的交替以及十字路口的两路灯的协调实验总结:此次实验做出的交通灯是建立在时钟频率为1HZ的基础上的,而硬件实验中提供的时钟信号一般都为几兆赫兹,因此如果这个实验想要下载到实验箱上去模拟的的话就需要在前面加上分频的代码,并将clk换成更改后的时钟通过实验的结果可以看出,在红绿灯稳定之前,有几秒钟的不稳定时期,这个是由于在设计是没有给变量赋给初值造成的,这在以后的设计中尤其需要注意,而在稳定后,功能实现较好,各时间段的衔接很顺畅,并且计时的时候用的是定义的常数green_time和yellow_time本实验中定义式25秒和5秒,这种做法可以方便以后的维护,修改起来也比较方便,并且使代码比较容易读懂。
基于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交通灯课程设计一、课程目标知识目标:1. 学生能理解并掌握VHDL语言的基本结构及其在交通灯控制系统中的应用;2. 学生能运用VHDL语言编写交通灯控制程序,实现对交通灯红、黄、绿灯亮灭时间的控制;3. 学生了解交通灯控制系统的工作原理,理解数字电路在实际应用中的重要性。
技能目标:1. 学生能够独立进行VHDL代码的编写,具备初步的编程能力;2. 学生通过课程设计实践,培养解决实际问题的能力,提高动手操作能力;3. 学生能够运用所学知识对交通灯控制系统进行调试和优化。
情感态度价值观目标:1. 学生在课程学习中,培养对电子信息技术专业的兴趣,激发学习热情;2. 学生通过团队合作完成课程设计,提高沟通与协作能力,增强团队意识;3. 学生认识到电子技术在现实生活中的应用,增强社会责任感和创新意识。
课程性质:本课程为电子信息技术专业高年级的专业课程设计,旨在通过实际操作,让学生将所学理论知识运用到实际项目中。
学生特点:学生已经掌握了VHDL语言的基本知识,具有一定的编程基础,对实际项目具有一定的兴趣和热情。
教学要求:结合学生特点和课程性质,注重实践操作,提高学生的动手能力和解决实际问题的能力。
在教学过程中,注重启发式教学,引导学生主动探索,培养学生的创新意识。
同时,关注学生的情感态度价值观培养,提高学生的综合素质。
通过分解课程目标,为后续教学设计和评估提供依据。
二、教学内容1. 交通灯控制系统原理介绍:讲解交通灯控制系统的工作原理,分析各个模块的功能及相互关系,使学生对交通灯控制系统有整体的认识。
相关教材章节:第三章 数字电路设计基础,第四节 交通灯控制系统原理。
2. VHDL语言基础回顾:回顾VHDL语言的基本结构、语法和常用语句,为后续编程打下基础。
相关教材章节:第二章 VHDL语言基础,全章。
3. 交通灯控制程序设计:详细讲解如何使用VHDL语言编写交通灯控制程序,包括红、黄、绿灯亮灭时间的设置。
交通灯控制器VHDL设计

情况
LIGHT: OUT STD_LOGIC_VECTOR(5 DOWNTO 0); --
light:G1,R1,Y1,G2,R2,Y2;
Q1,Q2 : OUT INTEGER RANGE 0 TO 55);
END TRAFFIC2 ;
ARCHITECTURE behav OF TRAFFIC2 IS
亮红灯 ELSIF CLK'EVENT AND CLK='1'
THEN CASE STATE IS --states为s0时,南北方向亮绿灯,东西方向亮红灯,50s WHEN S0=> LIGHT<="100010";
T1<=T1-1;T2<=T2-1; Q1<=T1;Q2<=T2; IF T1=0 THEN
END IF;
--states为s3时,南北方向亮红灯,东西方向黄灯,
5s WHEN S3=> LIGHT<="010001";
T1<=T1-1;T2<=T2-1;
Q1<=T1;Q2<=T2;
IF T1=0 THEN
STATE<=S0;T1<=50;T2<=55;
END IF;
WHEN OTHERS=>STATE<=S0;T1<=50;T2<=55;--主
END IF;
--states为s2时,南北方向亮红灯,东西方向绿灯,
30s WHEN S2=> LIGHT<="010100";
T1<=T1-1;T2<=T2-1;
Q1<=T1;Q2<=T2;
基于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版图的整个过程的计算机上自动处理完成。
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的交通灯控制器的设计

基于VHDL的交通灯控制器的设计一、设计目的1、掌握计数器、分频器、译码器的工作原理和设计方法;2、掌握数码管的动态扫描译码显示的工作原理和设计方法;3、掌握交通灯控制器的设计方法;4、掌握在EDA开发软件QuartusII环境下基于FPGA/CPLD的数字系统设计方法,掌握该环境下系统的功能仿真、时序仿真、管脚锁定和芯片下载的方法。
二、概述在城市的的十字路口处都设置有交通信号灯控制系统,这个系统由绿、黄、红信号灯指挥十字路口车辆和行人的正常通行。
其示意图如下所示:要支道主要干道S主要干道次要支道三、设计任务与要求设计一个主要干道和次要支道交叉路口处的交通信号灯控制器,其技术要求如下:1、要求主要干道和次要支道上各具有绿、黄、红三色信号灯,用来指示车辆的允许通行或禁止通行,同时设有计时、译码及显示电路,显示定时器的定时状态。
2、如果只有一个方向有车时,则保持该方向畅通;当两个方向都有车时,主要干道和次要支道交替通行,但主要干道通行的时间要比次要支道长一些。
设主要干道每次通行的时间为60秒,即主要干道每次绿灯亮的时间为60秒;次要支道上每次通行时间为30秒,即次要支道上绿灯亮的时间为30秒。
3、要求主要干道或是次要支道上绿灯亮足规定的时间后,要求黄灯先亮5秒钟后红灯才能亮,然后才能交换通行车道。
四、系统框图及组成系统主要由控制器和处理器两部分组成,控制器接受外部系统时钟信号。
处理器由定时器和译码显示器组成。
定时器能向控制器发出5秒、30秒和60秒的定时信号,译码器在控制器的控制下,改变交通灯的信号。
根据上述要求画出系统框图如下:图中:R:主要干道传感器来的信号,高电平表示有车,低电平表示设车。
S:次要支道传感器来的信号,高电平表示有车,低电平表示设车。
T L:主要干道绿灯亮的时间间隔为60秒,即主要干道车辆通行的时间为60秒,定时时间到时,T L=1,否则,T L=0。
T S:次要支道绿灯亮的时间间隔为30秒,即次要支道车辆通行的时间为30秒,定时时间到时,Ts=1,否则,T S=0。
红绿灯课程设计vhdl

红绿灯课程设计vhdl一、课程目标知识目标:1. 学生能够理解并掌握VHDL语言的基本语法和结构;2. 学生能够运用VHDL语言编写简单的数字电路程序,如红绿灯控制系统;3. 学生了解数字电路的基本原理,如触发器、计数器等,并能将其应用于VHDL程序设计。
技能目标:1. 学生能够运用VHDL语言设计并实现简单的数字电路;2. 学生能够使用相关软件工具进行VHDL代码的编译、仿真和调试;3. 学生能够通过团队协作,解决实际数字电路设计中的问题。
情感态度价值观目标:1. 学生培养对电子技术及编程的兴趣,激发创新意识和探索精神;2. 学生树立正确的工程观念,注重实际应用和实际操作能力的培养;3. 学生在团队协作中,学会沟通、分享、互助,培养合作精神。
课程性质:本课程为电子技术领域的高年级专业课程,以VHDL语言为基础,结合数字电路设计,提高学生的实际操作能力和创新能力。
学生特点:学生具备一定的电子技术基础,熟悉数字电路原理,具备一定的编程能力。
教学要求:注重理论与实践相结合,强调实际操作和团队协作,以项目为导向,培养学生解决实际问题的能力。
通过本课程的学习,使学生能够将所学知识应用于实际工程实践,提高学生的职业素养。
二、教学内容1. VHDL语言基础:包括数据类型、运算符、顺序语句、并发语句等基本语法结构,让学生掌握VHDL编程的基本方法。
相关教材章节:第一章至第三章2. 数字电路原理:回顾触发器、计数器等基本数字电路的工作原理,为后续的VHDL程序设计打下基础。
相关教材章节:第四章3. VHDL程序设计:以红绿灯控制系统为例,教授如何运用VHDL语言进行数字电路设计。
相关教材章节:第五章、第六章4. 代码编译、仿真与调试:介绍相关软件工具的使用,让学生学会如何对VHDL程序进行编译、仿真和调试。
相关教材章节:第七章5. 项目实践:分组进行实际数字电路设计,如红绿灯控制系统,培养学生团队协作和解决实际问题的能力。
十字路口交通灯控制器的VHDL设计

基于FPGA的半整数分频器设计一.系统设计任务及功能概述1.系统设计任务基于FPGA的半整数分频器设计任务要求:设有一个5MHz(或7、9、11、13、15、17、19、21、23 、25MHz)的时钟源,但电路中需要产生一个2MHz的时钟信号,由于分频比为2.5(或3.5、4.5、5.5、6.5、7.5、8.5、9.5、10.5、11.5、12.5),因此采用小数分频。
2.小数分频的基本原理小数分频的基本原理是采用脉冲吞吐计数器和锁相环技术先设计两个不同分频比的整数分频器,然后通过控制单位时间内两种分频比出现的不同次数来获得所需要的小数分频值。
如设计一个分频系数为10.1的分频器时,可以将分频器设计成9次10分频,1次11分频,这样总的分频值为:F=(9×10+1×11)/(9+1)=10.13.系统功能概述本系统是一个基于FPGA的半整数分频器,具有以下功能:有一个5MHz的时钟源,通过半整数分频器后电路中可以产生的是一个2MHz的时钟信号二.系统设计方案和程序设计1.系统设计方案下图给出再利用模PORT(CLR,ENA,CLK:IN STD_LOGIC;QA,QB,QC,QD:OUT STD_LOGIC);END ENTITY JSHQ11;ARCHITECTURE ART OF JSHQ11 IS --定义了结构体SIGNAL CQI: STD_LOGIC_VECTOR(0 TO 3);BEGINPROCESS(CLK,CLR,ENA)IS --进程开始,CLK,CLR,ENA为敏感信号BEGINIF CLR='1' THEN CQI<="0000";ELSEIF CLK'EVENT AND CLK='1'THENIF ENA='1'THENIF CQI=10THEN CQI<="0000";ELSECQI<=CQI+1;END IF;END IF;END IF;END IF;END PROCESS;QA<=CQI(0); -- 信号赋值QB<=CQI(1);QC<=CQI(2);QD<=CQI(3);END ARCHITECTURE ART;三、仿真结果及原理图1.模11计数器仿真波形图图1计数器仿真波形图2.模11计数器元件图图2计数器元件图3.半整数分频器原理图图3 分频器原理图4.半整数分频器仿真波形图图4分频器仿真波形图5.半整数分频器元件图图5分频器元件图6 输入输出管脚说明表1 半整数分频器管脚三.课程设计总结本次试验采用了程序与原理图相结合的设计方法,主要编写计数器的程序实现分频。
基于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程序设计

交通灯控制器一、实验目的:1、学会使用VHDL语言编程解决实际问题;2、实现高速公路与乡间小路的交叉路口红绿灯的控制;3、熟悉MAX-plusⅡ的使用。
二、实验设备:PC 机一台三、实验原理与内容:实现高速公路与乡间小路的交叉路口红绿灯的控制。
功能如下要求:1.只有在小路上发现汽车时,高速公路上的交通灯才可能变为红灯。
2.当汽车行驶在小路上时、小路的交通灯保持为绿灯,但不能超过给定的延迟时间。
〔注;这段时间定义为20S时间)。
3.高速公路灯转为绿灯后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定的时间内保持高速公路绿灯。
(注:这段时间定义为60S)。
程序流程图:高速公路通车小路有车T>60S5S黄灯小路通车T>20S 5S黄灯小路有车YYYN NN N Y四、实验步骤:1、在C 盘以后的盘上建一个文件夹,后缀名不能有中文。
2、打开MAX-plus Ⅱ,单击file ,在new 中选择text editorfile ,单击ok 打开文本编辑框。
3、保存到新建的文件夹中,名称与实体一致,类型为 .vhd 。
4、在编辑框中输入程序,保存,置顶(file->project->setproject current file );5、编译MAX-plusⅡ->compiler->star,如果有错误,可根据错误提示修改源程序,直到编译没有错误。
6、波形编辑MAX-plusⅡ->Wavefrom editor->Enter Nodes from Snf->list-> => ->ok;7、设置仿真信号(时钟信号,输入信号),保存。
8、仿真simulator,保存,改变输入信号仿真。
五、程序:LIBRARY IEEE; --库和程序包USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTDKZ IS --实体JTDKZ的说明PORT(CLK:IN STD_LOGIC; --时钟信号SB:IN STD_LOGIC; --小路有无车信号(SB=1:小路有车)MR,MY,MG,BR,BY,BG:OUT STD_LOGIC);--交通灯信号END ENTITY JTDKZ;ARCHITECTURE ART OF JTDKZ IS--JTDKZ的结构体说明TYPE STATE_TYPE IS(A,B,C,D);--定义信号SIGNAL STATE:STATE_TYPE;BEGINCNT:PROCESS(CLK) ISV ARIABLE CLR:BIT;--在进程中定义变量CLR(CLR=0:计时清零)V ARIABLE S:STD_LOGIC_VECTOR(0 TO 5);--在进程中定义变量S(S为时钟计时器)BEGINIF(CLK'EVENT AND CLK='1')THEN--判断时钟信号上升沿IF CLR='0'THEN--当CLR=0时计时变量清零S:="000000";ELSES:=S+1;END IF;CASE STATE IS--状态A为大路通车(绿灯),小路禁止通车(红灯)WHEN A=>MR<='0';MY<='0';MG<='1';BR<='1';BY<='0';BG<='0';IF(SB='1') THEN--判断小路是否有车IF(S="111011") THEN--判断大路通行是否满60秒STATE<=B;CLR:='0';--大路满60秒,计时清零,转到状态BELSESTATE<=A;CLR:='1';--大路不满60秒,继续状态AEND IF;ELSESTATE<=A;CLR:='1';--小路没车,大路一直通车END IF;--状态B为大路禁止通车(黄灯),小路禁止通车(红灯)WHEN B=>MR<='0';MY<='1';MG<='0';BR<='1';BY<='0';BG<='0';IF S="000100" THEN--判断大路黄灯是否满5秒STATE<=C;CLR:='0';--满5秒,计时清零,跳转到C状态ELSESTATE<=B;CLR:='1';--不满5秒继续状态B。
智能交通灯--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交通灯课程设计

沈阳理工大学课程设计专用纸目录引言 (1)…1. 系统的设计要求 .......................................................2.2. 系统分析............................................................. 2..2.1系统构成......................................................... 2.2.2系统实现过程.....................................................3.3. 具体模块设计 (4)3.1消抖模块.........................................................4.3.2交通灯模块.......................................................4.3.3交通灯时长设置模块..............................................4.3.8整体结构电路图................................................... 5.4. 程序设计.............................................................5..4.1消抖模块源代码...................................................5.4.2交通灯时长设置模块............................................... 6.4.3交通灯模块....................................................... 9.4.4顶层文件源代码 (12)5. 运行结果与分析...................................................... 1.56. 结束语 (17)参考文献 (17)引言不同的城市存在着不同的城市问题,但其中有一个共同的问题就是城市交通。
基于vhdl交通灯课程设计说明书

电子课程设计——交通灯设计学院:电子信息工程专业、班级:电子072202H姓名:学号:指导教师:2009年12月十字路口的信号灯控制电路一、设计任务与要求1、实现一个十字路口的信号灯控制电路。
2、信号灯分别由红、黄、绿三种颜色组成,运行时,绿灯亮40秒钟,然后闪5秒,绿灯灭,黄灯亮2秒,黄灯灭,红灯亮,同时另一方向的绿灯亮,红灯亮的时间为47秒。
扩展要求:1、增加显示功能,即每个灯亮时显示相应的秒数并倒计时。
2、增加左转功能,即信号灯由红灯、黄灯和两个绿灯组成,左转时间为15秒,红灯亮的时间调整为62秒。
二、总体框图图一交通灯控制系统框图1、设计思路:在某一十字路口交叉地带,可设置东西走向的道路为主道,南北走向的道路为次道,主次车道的交通灯需按交通法则交替运行。
则可设计逻辑电路。
2、分析系统的逻辑功能:交通灯控制系统原理图如图一,由计数器、分频器、控制器、分位译码电路、扫描显示电路等部分组成。
交通灯流程图MG:主道绿灯 MY:主道黄灯 MR:主道红灯 MG’:主道绿灯闪SG:次道绿灯 SY:次道黄灯 SR:次道红灯T1:40s T2:5s T3:2s T4:47s ST:状态转换量状态一:主道绿灯次道红灯持续时间小于40s时,T1=0状态保持不变,若持续时间等于40s时,T1=1转换到下一状态。
状态二:主道绿灯闪烁次道红灯持续时间小于5s时,T2=0状态保持不变,若持续时间等于5s时,T2=1转换到下一状态。
状态三:主道黄灯次道红灯持续时间小于2s时,T3=0状态保持不变,若持续时间等于2s时,T3=1转换到下一状态。
状态三:主道红灯次道绿灯持续时间小于47s时,T4=0状态保持不变,若持续时间等于47s时,T4=1转换到下一状态。
三、选择器件1、装有Altera公司QuartusII仿真软件的计算机一台。
2、选择FPGA器件:Cyclone中的EP1C12Q240C8。
3、EDA-VI实验箱一台。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录引言 (1)1.系统的设计要求 (2)2.系统分析 (2)2.1 系统构成 (2)2.2 系统实现过程 (3)3.具体模块设计 (4)3.1消抖模块 (4)3.2 交通灯模块 (4)3.3 交通灯时长设置模块 (4)3.8 整体结构电路图 (5)4.程序设计 (5)4.1消抖模块源代码 (5)4.2 交通灯时长设置模块 (6)4.3 交通灯模块 (9)4.4 顶层文件源代码 (12)5.运行结果与分析 (15)6.结束语 (17)参考文献 (17)引言不同的城市存在着不同的城市问题,但其中有一个共同的问题就是城市交通。
在交叉路口如何解决混合交通流中的相互影响,就是解决问题的关键所在!随着我国经济的稳步发展,人民生活水平的日渐提高,越来越多的汽车进入寻常百姓的家庭,再加上政府大力地发展公交、出租车行业,道路上的车辆越来越多,使得城市的交通成为了一个主要的问题。
严重的拥堵现象,逐渐恶化的城市环境,都给广大市民带来了许多困扰。
要解决这些问题不仅要求道路越来越宽阔,而且更需要有新的交通管理模式出台。
实现路口交通灯系统的控制方法很多,可以用标准逻辑器件、可编程序控制器PLC、单片机等方案来实现。
但是这些控制方法的功能修改及调试都需要硬件电路的支持,在一定程度上增加了功能修改及系统调试的困难。
交通系统未来的发展趋势就是要提高通行能力,加强环境保护,开展智能化运输和环保专项技术的研究,并且要做到以人为本,重点开展交通安全技术的研究,在这个过程中要确定经济合理的目标,促进新材料的广泛应用和开发。
EDA 技术是用于电子产品设计中比较先进的技术,可以代替设计者完成电子系统设计中的大部分工作,而且可以直接从程序中修改错误及系统功能而不需要硬件电路的支持,既缩短了研发周期,又大大节约了成本,受到了电子工程师的青睐。
1.系统的设计要求为了满足步行街的要求,此交通灯须具备以下功能:1.正常情况下保证主干道的畅通。
2.当步行街道上的行人要穿过主干道时,通过设置的按钮来发出请求。
3.当有人按下此按钮时,主干道变为黄灯,设置计数器时间为X秒。
4.X秒过后,主干道变为红灯,计数器继续计时(计时时间为Y秒),在Y秒内若有人再次按按钮,计数器不重新计时。
5.步行街绿灯闪烁时间为Y1秒,(Y-Y1)秒后主干道变为绿灯,车辆通行。
且咬保证车辆通行一定时间(Z秒)。
在此时间内,行人按按钮无效。
Z秒过后,若有人再按下按钮,又出现(3)中的状态。
计数器的计时时间长短X~Y~Z可以任意设定。
2.系统分析2.1 系统构成行人按下红灯按钮设置马路红灯后按键的无效时间步行街自助式交通灯控制器控制器分为3个模块:消抖模块,交通灯模块,交通灯时长设置模块。
2.2 系统实现过程最初状态是人行道红灯,马路绿灯。
当有行人按下按钮时,马路的红灯变为黄灯,持续一个时钟周期的时间。
然后马路的黄灯变为绿灯,此时人行道的红灯也变为绿灯,然后持续HUMAN_TIME个时钟的周期的时间。
然后人行灯的绿灯变为闪烁的绿灯,持续2个时钟的周期的时间,然后人行道的闪烁的绿灯变为红灯,此时马路的红灯也变为绿灯。
然后在VEHICLE_TIME个时钟周期内人行道为红灯,马路为绿灯状态保持不变且行人按键无效。
状态如下:3.具体模块设计3.1消抖模块消抖模块DITHER如图2所示,使用硬件消抖原理。
3.2 交通灯模块交通灯模块LIGHT如图3所示,根据输入GHUMAN_TIME,GHUMAN_CLKT和GVEHICLE_TIME的值,进行减计数,然后根据值判断状态机的状态。
3.3 交通灯时长设置模块交通灯时长设置模块COUNTER如图4所示,根据设置按键人按键设置人行道绿灯时长和按键屏蔽时长。
图2 DITHER模块图3 LIGHT模块图4 COUNTER模块3.8 整体结构电路图图5 整体结构电路图4.程序设计4.1消抖模块源代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DITHER ISPORT(UPIN: IN STD_LOGIC;DOWNIN: IN STD_LOGIC;KEYOUT: OUT STD_LOGIC );END DITHER;ARCHITECTURE BEHA VE OF DITHER ISSIGNAL OUT1: STD_LOGIC;SIGNAL OUT2: STD_LOGIC;BEGINOUT1<=NOT( OUT2 AND UPIN );OUT2<=NOT( OUT1 AND DOWNIN );KEYOUT<=OUT1;END BEHA VE;4.2 交通灯时长设置模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY COUNT ISPORT(CLK: IN STD_LOGIC;CLEAR: IN STD_LOGIC;CLKADD: IN STD_LOGIC;CLKSUB: IN STD_LOGIC;PRE_SET: IN STD_LOGIC;HUMAN_SET: IN STD_LOGIC;RST: IN STD_LOGIC;GHUMAN_TIME: OUT INTEGER RANGE 31 DOWNTO 0;GHUMAN_CLKT: OUT INTEGER RANGE 31 DOWNTO 0;GVEHICLE_TIME: OUT INTEGER RANGE 31 DOWNTO 0);END COUNT;ARCHITECTURE BEHA VE OF COUNT ISSIGNAL HUMAN_TIME: INTEGER RANGE 31 DOWNTO 0;SIGNAL VEHICLE_TIME: INTEGER RANGE 31 DOWNTO 0;SIGNAL SSTATE: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SCLK: STD_LOGIC;SIGNAL DSCLK: STD_LOGIC;BEGINSSTA TE<="0000" WHEN PRE_SET='0' ELSEHUMAN_SET & CLEAR & CLKADD & CLKSUB;SCLK<=CLKADD OR CLKSUB OR CLEAR;PROCESS (CLK)BEGINIF(CLK' EVENT AND CLK='1')THENDSCLK<=SCLK;END IF;END PROCESS;PROCESS(RST,CLEAR,DSCLK)BEGINIF(RST='1')THENVEHICLE_TIME<=8;ELSIF(DSCLK' EVENT AND DSCLK='1')THENCASE SSTATE ISWHEN "0100" => VEHICLE_TIME<= 0;WHEN "0101" => VEHICLE_TIME<= 0;WHEN "0110" => VEHICLE_TIME<= 0;WHEN "0111" => VEHICLE_TIME<= 0;WHEN "0001" => VEHICLE_TIME<= VEHICLE_TIME-1;WHEN "0010" => VEHICLE_TIME<= VEHICLE_TIME+1;WHEN OTHERS => VEHICLE_TIME<= VEHICLE_TIME;END CASE;END IF;END PROCESS;PROCESS (CLEAR,DSCLK)BEGINIF(RST='1')THENHUMAN_TIME<=4;ELSIF (DSCLK' EVENT AND DSCLK ='1')THENCASE SSTA TE ISWHEN "1100" => HUMAN_TIME<=0;WHEN "1101" => HUMAN_TIME<=0;WHEN "1110" => HUMAN_TIME<=0;WHEN "1111" => HUMAN_TIME<=0;WHEN "1001" => HUMAN_TIME<=HUMAN_TIME-1;WHEN "1010" => HUMAN_TIME<=HUMAN_TIME+1;WHEN OTHERS => HUMAN_TIME<=HUMAN_TIME;END CASE;END IF;END PROCESS;PROCESS(PRE_SET,RST)BEGINIF(RST='1')THENGHUMAN_TIME<=5;GHUMAN_CLKT<=7;GVEHICLE_TIME<=15;ELSIF(PRE_SET' EVENT AND PRE_SET='0')THENGHUMAN_TIME<=HUMAN_TIME+1;GHUMAN_CLKT<=HUMAN_TIME+3;GVEHICLE_TIME<=HUMAN_TIME+VEHICLE_TIME+3;END IF;END PROCESS;END BEHA VE;4.3 交通灯模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY LIGHT ISPORT(SRED: OUT STD_LOGIC;ERED: OUT STD_LOGIC;SGREEN: OUT STD_LOGIC;EYELLOW: OUT STD_LOGIC;EGREEN: OUT STD_LOGIC;GT_SET: IN STD_LOGIC;GHUMAN_TIME: IN INTEGER RANGE 31 DOWNTO 0;GHUMAN_CLKT: IN INTEGER RANGE 31 DOWNTO 0;GVEHICLE_TIME: IN INTEGER RANGE 31 DOWNTO 0;REQUEST: IN STD_LOGIC;CLK: IN STD_LOGIC;RST: IN STD_LOGIC);END LIGHT;ARCHITECTURE BEHA VE OF LIGHT ISTYPE IN_STATES IS(ST0,ST1,ST2,ST3,ST4);SIGNAL CURRENT_STA TE: IN_STATES;SIGNAL NEXT_STATE: IN_STATES;SIGNAL START: STD_LOGIC;SIGNAL SIG: INTEGER RANGE 31 DOWNTO 0;BEGINPROCESS(CURRENT_STA TE,RST)BEGINIF(RST='1' OR CURRENT_STA TE=ST0)THENSTART<='0';ELSESTART<='1';END IF;END PROCESS;A:PROCESS(START,CLK,RST)BEGINIF(RST='1')THENSIG<=0;ELSIF(CLK' EVENT AND CLK='1')THENIF(START='1')THENIF(SIG=GVEHICLE_TIME)THENSIG<=0;ELSESIG<=SIG+1;END IF;ELSESIG<=0;END IF;END IF;END PROCESS A;PROCESS(RST,CLK)BEGINIF(RST='1')THENCURRENT_STA TE<=ST0;ELSIF (CLK'EVENT AND CLK='1')THENCURRENT_STA TE<=NEXT_STATE;END IF;END PROCESS;PROCESS(CLK,CURRENT_STATE,REQUEST)BEGINCASE CURRENT_STATE ISWHEN ST0=>ERED<='0';EGREEN<='1';EYELLOW<='0';SRED<='1';SGREEN<='0';IF(REQUEST='1' AND GT_SET='0')THENNEXT_STA TE<=ST1;ELSENEXT_STA TE<=ST0;END IF;WHEN ST1=>ERED<='0';EGREEN<='0';EYELLOW<='1';SRED<='1';SGREEN<='0';IF (SIG=1)THENNEXT_STA TE<=ST2;ELSENEXT_STA TE<=ST1;END IF;WHEN ST2=>ERED<='1';EGREEN<='0';EYELLOW<='0';SRED<='0';SGREEN<='1';IF(SIG=GHUMAN_TIME)THENNEXT_STA TE<=ST3;ELSENEXT_STA TE<=ST2;END IF;WHEN ST3=>ERED<='1';EGREEN<='0';EYELLOW<='0';SRED<='0';SGREEN<=NOT CLK;IF(SIG=GHUMAN_CLKT)THENNEXT_STA TE<=ST4;ELSENEXT_STA TE<=ST3;END IF;WHEN ST4=>ERED<='0';EGREEN<='1';EYELLOW<='0';SRED<='1';SGREEN<='0';IF(SIG=GHUMAN_CLKT)THENNEXT_STA TE<=ST0;ELSENEXT_STA TE<=ST4;END IF;WHEN OTHERS=>ERED<='0';EGREEN<='1';EYELLOW<='0';SRED<='1';SGREEN<='0';NEXT_STATE<=ST3;END CASE;END PROCESS;END BEHA VE;4.4 顶层文件源代码Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity TrafficLight isPort(clk:in std_logic;clear:in std_logic;rclear:in std_logic;clkADD:in std_logic;rclkADD:in std_logic;clkSUB:in std_logic;rclkSUB:in std_logic;pre_set:in std_logic;human_set:in std_logic;rst:in std_logic;request:in std_logic;rrequest:in std_logic;clk_ls:in std_logic;sred,sgreen:out std_logic;ered,eyellow,egreen:out std_logic);End;Architecture behave of TrafficLight isComponent DITHER isPORT ( UPIN: IN STD_LOGIC;DOWNIN: IN STD_LOGIC;KEYOUT: OUT STD_LOGIC );End component;Component COUNT isPORT(CLK: IN STD_LOGIC;CLEAR: IN STD_LOGIC;CLKADD: IN STD_LOGIC;CLKSUB: IN STD_LOGIC;PRE_SET: IN STD_LOGIC;HUMAN_SET: IN STD_LOGIC;RST: IN STD_LOGIC;GHUMAN_TIME: OUT INTEGER RANGE 31 DOWNTO 0;GHUMAN_CLKT: OUT INTEGER RANGE 31 DOWNTO 0;GVEHICLE_TIME: OUT INTEGER RANGE 31 DOWNTO 0);End component;Component LIGHT isPORT(SRED: OUT STD_LOGIC;ERED: OUT STD_LOGIC;SGREEN: OUT STD_LOGIC;EYELLOW: OUT STD_LOGIC;EGREEN: OUT STD_LOGIC;GT_SET: IN STD_LOGIC;GHUMAN_TIME: IN INTEGER RANGE 31 DOWNTO 0;GHUMAN_CLKT: IN INTEGER RANGE 31 DOWNTO 0;GVEHICLE_TIME: IN INTEGER RANGE 31 DOWNTO 0;REQUEST: IN STD_LOGIC;CLK: IN STD_LOGIC;RST: IN STD_LOGIC);End component;Signal TEMP_GHUMAN_TIME: INTEGER RANGE 31 DOWNTO 0;Signal TEMP_GHUMAN_CLKT: INTEGER RANGE 31 DOWNTO 0;Signal TEMP_GVEHICLE_TIME: INTEGER RANGE 31 DOWNTO 0;SignalTEMP_CLEAR,TEMP_CLKADD,TEMP_CLKSUB,TEMP_REQUEST:std_logic;BeginU1:DITHER port map(clear,rclear,TEMP_CLEAR);U2:DITHER port map(clkADD,rclkADD,TEMP_CLKADD);U3:DITHER port map(clkSUB,rclkSUB,TEMP_CLKSUB);U4:DITHER port map(request,rrequest,TEMP_REQUEST);U5:COUNT port map(CLK,TEMP_CLEAR,TEMP_CLKADD,TEMP_CLKSUB,PRE_SET,HUMAN_SE T,RST,TEMP_GHUMAN_TIME,TEMP_GHUMAN_CLKT,TEMP_GVEHICLE_TIME );U6:LIGHT port map(SRED,ERED,SGREEN,EYELLOW,EGREEN,PRE_SET,TEMP_GHUMAN_TIME,TEMP_GHUMAN_CLKT,TEMP_GVEHICLE_TIME,TEMP_REQUEST,CLK_LS,RST);End behave;5.运行结果与分析(1)消抖模块仿真波形图:图6 消抖模块仿真波形图按键弹起为高电平,按下为低电平。