交通信号控制器的VHDL的设计说明

合集下载

基于vhdl交通灯信号控制器设计说明书

基于vhdl交通灯信号控制器设计说明书

本科生毕业论文(设计)题目: 基于VHDL 的交通灯信号控制器设计系 部 电子信息工程学院 学科门类 工学 专 业 电子信息工程 学 号姓 名指导教师2012年 5 月 22 日装订线基于VHDL的交通灯信号控制器的设计摘要传统的交通灯控制系统多数由单片机或PLC实现,本文介绍的是基于EDA 技术设计交通灯系统的一种思路和方法。

通过用数字信号自动控制十字路口交通灯状态转换的方法,指挥车辆和行人安全通行,实现十字路口交通管理的自动化。

本设计利用VHDL语言来实现交通灯控制器。

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

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

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

关键词:交通信号灯VHDL 仿真ABSTRACTMost traditional traffic light control system implemented by a single-chip computer or PLC, this article describes the design of a traffic light system is based on EDA technology ideas and methods.By using digital methods of signal control intersection traffic signal state transition, command vehicles and pedestrians safe passage, implementation of intersection traffic management automation.Design and implementation of traffic light controller with VHDL language.Through the system for structural analysis, using top-down hierarchical design method, gives a VHDL program modules, and applications using Quartus II simulation, have come to the corresponding simulation results.Circuit design with VHDL language, should be fully aware of the features of VHDL language, from the design, use statement, and description of the superior aspects of optimized circuit design.Through optimization design of circuits, programmable logic chip can use smaller, thus reducing system costs.Keywords: traffic light VHDL simulation目录一前言 (1)1.1研究背景 (1)1.2 研究目的 (1)二 EDA技术与VHDL语言 (3)2.1EDA技术及其发展 (3)2.2 EDA与传统电子设计方法的比较及优点 (4)2.3VHDL系统概述 (5)三交通灯系统的设计 (7)3.1 红绿灯交通信号系统功能描述 (7)3.2系统的模块设计 (8)3.2.1 时钟脉冲发生电路 (8)3.2.2 计数秒数选择电路 (9)3.2.3 倒计时控制电路 (10)3.2.4 红绿灯信号控制电路 (11)3.2.5 交通灯系统描述 (12)四总结 (15)参考文献 (16)附录 (17)一前言1.1 研究背景自从1858年英国人发明了原始的机械扳手交通灯之后,随后的一百多年里,交通灯改变了交通路况,也在人们日常生活中占据了重要地位,随着人们社会活动日益增加,经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通灯更加显示出了它的功能,使得交通得到有效管制,对于交通疏导,提高道路导通能力,减少交通事故起到了显著的效果。

基于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课程设计报告样本

《电子设计自动化( 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源程序;交通信号控制器的仿真波形;交通信号控制器的硬件测试结果。

基于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 everyyear 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 the Max-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引言在交通发达的当代,交通灯控制器无疑是最实用的的工具。

基于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数字系统设计姓名:系:电子信息工程专业:电子信息工程年级: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的交通灯控制器的设计一、设计目的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语言的交通信号控制器的设计与实现
交 通信 号 控 制 器 的应 用 将 起 到积 极 的促 进 作 用 。 基 于上 述思 路 , 者着 重讨 论 了基 于 VHD 笔 L语 言 的交 通 信号 灯控 制器 的硬 件 实现方 法 。
本设 计仅 考虑用 C L P D能实现 的功 能 。基 准 时钟 脉冲信 号 由外 部 电路 提供 , f 一1MHz 用 设 o 。 C L 实现 的功能 主要包 括分 频 电路 、 制器 、 PD 控 红 绿灯 各个 时段倒计 时计 数器等 。在各 方 向为绿灯 或 者红灯 时 , 以秒 为单位 , 采用 倒计 时 的方式 显示
道 绿灯状 态 , 读取设 定输 入值 。 并 复位信 号返 回无
效 状态 后 , 系统 按新读 入 的设 定值运 行 。 2相定 周 期 交通 信号控 制器 的系统结 构框 图如 图 2所示 。
1- 0
1 z 设定输入 0H
控 制 器
1 z 分频 1 MH
l I 主干道倒计时 l 支干道倒计时 0 I 1
文献标识码 : A
中 图 法 分 类 号 : 9 . 1 U4 1 5
0 引 言
目前 , 于控 制交 通 信 号 灯 的交 通信 号控 制 用
器 主 要 有 P C 控 制 器[3、 片 机 控 制 器 5 L 13 单 - .和 ] P D控 制 器[7 多种 形式 。其 中 P C控 制 器 的 L 63 -等 L 特 点 为编程 较方 便 , 易扩 展输入 输 出通道 , 系 容 但 统硬 件 成本 较 高 ; 片机 控 制器 的特 点为 系 统 可 单 塑性 强 , 控制模 式 灵活 多样 , 系统 组成 除单 片机 但 芯 片外 还需 要扩 展较 多 的外 围电路 。 L 控制 器 PD 则 多应 用 于 数 字 电路 实 验 或 者课 程 设计 , 与实 际 应 用存 在一 定 的差 距 。随着 ASC技术 的发展 , I 若 能将 交 通 信号 控 制 器设 计 成 专 用 集成 电路 , 用户 在 开 发 交 通信 号 控 制 器 时 , 需 要 配 置简 单 的外 仅

十字路口交通灯控制器的VHDL设计

十字路口交通灯控制器的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交通灯控制器-实验报告

可编程逻辑器件应用项目报告书项目名称:交通灯控制器指导老师:姓名:学号:班级:(以后写报告要包含以下一些内容:)一、设计要求--------------------------------------------------------------------------------二、设计目的--------------------------------------------------------------------------------三、设计方案--------------------------------------------------------------------------------四、设计程序---------------------------------------------------------------------------------五、管脚分配---------------------------------------------------------------------------------六、硬件下载实现现象描述------------------------------------------七、体会、对设计工作的总结与展-------------------------------------------一、设计要求:①在十字路口的两个方向上各设一组红、绿、黄灯,显示顺序为其中一方向(东西方向)是绿灯、黄灯、红灯;另一方向(南北方向)是红灯、绿灯、黄灯。

②设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间,其中绿灯、黄灯、红灯的持续时间分别是20s、5s和25s。

③当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其他需要优先放行的车辆通过时,各方向上均是红灯亮,倒计时停止,且显示数字在闪烁。

当特殊运行状态结束后,控制器恢复原来状态,继续正常运行。

基于VHDL语言的交通信号灯设计

基于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交通信号灯控制器

基于VHDL交通信号灯控制器

《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设计

EDA课程设计.题目:交通灯控制器VHDL设计&专业:通信工程班级:通信082姓名:XXX学号:XXXXXXXX【$设计要求;乐曲硬件演奏电路的VHDL设计要求:1、设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。

2、红、绿、黄发光二极管作信号灯,。

3、主干道处于常允许通行的状态,支干道有车来时才允许通行。

主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。

4、主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。

5、在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。

:教学提示:1、选择1HZ时钟脉冲作为系统时钟。

2、 45秒、25秒、5秒定时信号可用顺计时,也可用倒计时,计时起始信号由主控电路给出,每当计满所需时间,即向主控电路输出“时间到”信号,并使计数器清零,由主控电路启、闭三色信号灯或启动另一计时电路。

显示结果:设计一个十字路口的交通灯控制器,能显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态。

用两组红、黄、绿三种颜色的灯分别作为东西、南北两个方向的红、黄、绿灯,变化规律为:东西绿灯亮,南北红灯亮→东西黄灯亮,南北红灯亮→东西红灯亮、南北绿灯亮→东西红灯亮,南北黄灯亮→东西绿灯亮,南北红灯亮….,这样依次循环。

南北方向是主干道车道,东西方向是支干道车道,要求两条交叉道路上的车辆交替运行,主干道每次通行时间都设为45秒,支干道每次通行时间都设为25秒,时间可设置修改。

在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道。

要求交通灯控制器有复位功能,在复位信号使能的情况下能够实现交通灯的自动复位,并且要求所有交通灯的状态变化,包括复位信号引起的均发生时钟脉冲的上升沿处。

交通灯控制器的vhdl程序设计

交通灯控制器的vhdl程序设计

交通灯控制器一、实验目的:1、学会使用VHDL语言编程解决实际问题;2、实现高速公路与乡间小路的交叉路口红绿灯的控制;3、熟悉MAX-plusⅡ的使用。

二、实验设备:PC 机一台三、实验原理与内容:实现高速公路与乡间小路的交叉路口红绿灯的控制。

功能如下要求:1.只有在小路上发现汽车时,高速公路上的交通灯才可能变为红灯。

2.当汽车行驶在小路上时、小路的交通灯保持为绿灯,但不能超过给定的延迟时间。

〔注;这段时间定义为20S时间)。

3.高速公路灯转为绿灯后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定的时间内保持高速公路绿灯。

(注:这段时间定义为60S)。

程序流程图:四、实验步骤:1、在C盘以后的盘上建一个文件夹,后缀名不能有中文。

2、打开MAX-plusⅡ,单击file,在new中选择text editor file,单击ok打开文本编辑框。

3、保存到新建的文件夹中,名称与实体一致,类型为 .vhd 。

4、在编辑框中输入程序,保存,置顶(file->project->set project 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设计

交通信号灯的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上进行源程序的仿真,直至没有错误。

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

E D A 课程设计报告交通信号控制器的VHDL设计班级:2009级通信工程一班姓名:陈洁学号:2009550606指导老师:刘奇能交通信号控制器的VHDL的设计一、设计任务模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。

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

主干道图1 路口交通管理示意图表1 交通信号灯的4种状态二、设计原理1、设计目的:学习DEA开发软件和QuartusII的使用方法,熟悉可编程逻辑器件的使用。

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

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

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

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

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

(4)第四模块:时间显示电路本电路负责红绿灯的计数时间的显示。

模块说明:系统输入信号:gw:倒计数值秒数个位变化控制信号;sw:倒计数值秒数十位变化控制信号;sgw:次倒计数值秒数个位变化控制信号;ssw:次倒计数值秒数十位变化控制信号;系统输出信号:led7gw: 负责主红绿灯的显示秒数个位。

led7sw:负责主红绿灯的显示秒数十位。

sled7gw: 负责支干红绿灯的显示秒数个位。

s led7sw:负责支干红绿灯的显示秒数十位。

三、设计方案图2 交通信号灯控制器的原理框图采用VHDL语言输入的方式实现交通信号灯控制器间显示数据输信号灯输出图3 交通信号灯控制器程序原理框图该程序由7个进程组成,进程P1和P2将CLK信号分频后产生1秒信号,进程P3、P4、P5构成两个带有预置数功能的十进制计数器,其中P4产生允许十位计数器计数的控制信号。

进程P6实现状态转换和产生状态转换的控制信号,进程P7产生次态信号和信号灯输出信号,以及每一个状态的时间值。

四、VHDL程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY chenjie ISPORT (clk:in std_logic;led7gw:out std_logic_vector(6 downto 0);led7sw:out std_logic_vector(6 downto 0);sled7gw:out std_logic_vector(6 downto 0);sled7sw:out std_logic_vector(6 downto 0);zhuangtai:out std_logic_vector(5 downto 0));END;ARCHITECTURE one OF chenjie ISTYPE tai IS (s0,s1,s2,s3);SIgnal xiantai,citai:tai;SIGNAL gw :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL sw:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL sgw :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL ssw:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL tm :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL ts :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL TIME :STD_LOGIC_VECTOR(6 DOWNTO 0); BEGINPROCESS(clk)BEGINIF clk'EVENT AND clk='1' THENIF TIME<"1000011" THENTIME<=TIME+1;ELSe TIME <="0000000";END IF;END IF;END PROCESS;REG:process( clk,xiantai)BEGINIF clk='1' AND clk'EVENT THENxiantai<=citai;END IF;END process;COM:process( xiantai, time)begincase xiantai iswhen s0=>zhuangtai<="001100";tm<=39-time;ts<=43-time; if time=39 then citai<=s1;else citai<=s0;end if;when s1=>zhuangtai<="010100";tm<=43-time;ts<=43-time; if time=43 then citai<=s2;else citai<=s1;end if;when s2=>zhuangtai<="100010";tm<=67-time;ts<=63-time; if time=63 then citai<=s3;else citai<=s2;end if;when s3=>zhuangtai<="100001";tm<=67-time;ts<=67-time; if time=67 then citai<=s0;else citai<=s3;end if;end case;end process;PROCESS(tm)BEGINIF tm>=30 THEN sw<="11";gw<=tm-30; ELSIF tm>=20 THEN sw<="10";gw<=tm-20; ELSIF tm>=10 THEN sw<="01";gw<=tm-10; ELSE sw<="00";gw<=tm;END IF;END PROCESS;PROCESS(ts)BEGINIF ts>=40 THEN ssw<="100";sgw<=ts-40; ELSIF ts>=30 THEN ssw<="011";sgw<=ts-30; ELSIF ts>=20 THEN ssw<="010";sgw<=ts-20; ELSIF ts>=10 THEN ssw<="001";sgw<=ts-10; ELSE ssw<="000";sgw<=ts;END IF;END PROCESS;process(sw,gw)begincase sw iswhen"00"=>led7sw<="0111111";when"01"=>led7sw<="0000110";when"10"=>led7sw<="1011011";when"11"=>led7sw<="1001111";when others=>null;end case;case gw iswhen "0000000"=>led7gw<="0111111";when"0000001"=>led7gw<="0000110";when"0000011"=>led7gw<="1001111";when"0000100"=>led7gw<="1100110";when "0000101"=>led7gw<="1101101";when "0000110"=>led7gw<="1111101";when"0000111"=>led7gw<="0000111";when "0001000"=>led7gw<="1111111";when "0001001"=>led7gw<="1101111";when others=>null;end case;end process;process(ssw,sgw)begincase ssw iswhen"000"=>sled7sw<="0111111";when"001"=>sled7sw<="0000110";when"010"=>sled7sw<="1011011";when"011"=>sled7sw<="1001111";when"100"=>sled7sw<="1001111";when others=>null;end case;case sgw iswhen "0000000"=>sled7gw<="0111111";when"0000001"=>sled7gw<="0000110";when "0000010"=>sled7gw<="1011011";when"0000011"=>sled7gw<="1001111";when"0000100"=>sled7gw<="1100110";when "0000101"=>sled7gw<="1101101";when "0000110"=>sled7gw<="1111101";when"0000111"=>sled7gw<="0000111";when "0001001"=>sled7gw<="1101111";when others=>null;end case;end process;end;五、仿真结果(如下图)未修改的程序程序修改后图ABCDE六引脚设置选择的引脚锁定方法如下图所示。

相关文档
最新文档