FPGA_交通灯控制程序设计要点
基于FPGA的交通灯控制器的设计ppt课件

地感
信
线圈
号
信号
转
换
装
紧急按钮信置
号
启动信号
时钟信号
EPF10K70RC24
0-4 控制器
交通灯组 数码管组 高清数码照相机 MS12864R
6
程序执行流程
7
系统软件部分设计
闪烁子程序
通行延迟子 程序模块
交通灯子 程序模块
12864显 示子程序
闯红灯子 程序模块
测量车速子 程序模块
8
交通灯6个指示灯子程序流程图
基于CPLD/FPGA的交通信号 控制器的设计
❖ 院系名称:电子信息学院
1
设计定位
❖ 利用FPGA的相关知识设计的交通灯控制系统,可 以根据实际情况对灯亮时间进行自由调整,具有一 定的灵活性。
❖ 电子眼功能:当车辆闯红灯时,可进行拍照记录。
❖ 路况信息显示:当某干道处于通行时,可以动态显 示:车速,以及路况信息。
9状态机设计整来自程序包括五个状态机 例:十字路口左上角的交通灯对应这的9个状态: 分别是红、绿、黄、左拐、黄、右拐、黄、人行、红。
10
通行延时控制子程序流程图
11
交通灯闪烁子程序流程图
12
闯红灯监测子程序流程图
13
测车辆速度子程序流程图
14
MS12864R显示子程序流程图
15
波形仿真
顶层原理图产生的波形图:
行时,允许这支干道处于常通行状态,相应另一条干道处于禁行状态。 5、电子眼功能:当某一干道处于红灯时,如果有车闯过警戒线,那么就会被高
清数码照相机照下来。 6、路况显示功能:当某一干道处于通行时,可以动态的显示:车速,以及路况
FPGA课程设计 交通灯控制电路的设计

交通灯控制电路的设计1. 设计原理交通灯控制电路的原理框图如图3.3所示。
其中,clkgen是分频器,将EDA实训仪主板提供的20MHz的主频经20000000分频后,得到电路所需的1Hz(秒)时钟。
Cnt10de(两个)是十进制减法计数器,产生道路东西和南北通行和禁止的倒计时时间。
Contr是控制电路,控制整个系统的工作。
控制器接收倒计时的结果,当倒计时归0时,改变电路的控制模式,输出倒计时的初始时间和交通灯亮灭控制信号。
图3.3 交通灯控制电路的原理框图2. 设计要求①用EDA实训仪上的4只八段数码管分别显示道路东西和南北通行和禁止的倒计时时间。
②能设置道路东西和南北两侧通行和禁止的倒计时时间,最大设置时间为99秒,最小设置时间为1秒。
③交通灯用红、绿、黄三种发光二极管(LED)显示控制的结果。
④红、绿、黄灯显示的次序应符合实际交通道路控制的要求。
图2 交通灯控制电路的原理图图2是我们小组本次实训设计的交通灯控制电路的逻辑原理图。
交通灯工作的四种工作状态方式如下:工作状态一:东西——红——倒计时:20 → 4 (秒)南北——绿——倒计时:16 → 0 (秒)工作状态二:东西——红——倒计时: 3 → 0 (秒)南北——黄——倒计时: 3 → 0 (秒)工作状态三:东西——绿——倒计时:16 → 0 (秒)南北——红——倒计时:20 → 4 (秒)工作状态四:东西——黄——倒计时: 3 → 0 (秒)南北——红——倒计时: 3 → 0 (秒)(以上四种工作状态循环进行)1系统软件设计分析逻辑原理图里边一共有四个模块,即1)分频器模块2)蜂鸣器模块3)计数器模块4)控制器模块而我负责完成的模块则是控制器模块,控制器主要控制红绿灯的转换,我增加了一个en使能端,高电平时进入夜晚模式和暂停,不进行倒计时。
lod是预置信号输入端,对倒计时数预置,使芯片的输出状态与预置输入端相同,使芯片进入多种工作状态,。
fpga课程设计交通控制灯

fpga课程设计交通控制灯一、教学目标本课程的教学目标是使学生掌握FPGA的基本知识和应用,能够使用FPGA设计简单的交通控制灯系统。
知识目标:使学生了解FPGA的基本原理和结构,掌握FPGA的编程语言和设计方法,了解交通控制灯系统的基本原理和设计方法。
技能目标:培养学生使用FPGA设计和实现交通控制灯系统的能力,提高学生的创新能力和实践能力。
情感态度价值观目标:培养学生对新技术的兴趣和好奇心,使学生认识到新技术在现代社会中的重要性和应用前景,培养学生团结合作、积极进取的精神。
二、教学内容本课程的教学内容主要包括FPGA的基本原理和结构、FPGA的编程语言和设计方法、交通控制灯系统的基本原理和设计方法。
1.FPGA的基本原理和结构:介绍FPGA的定义、特点和分类,讲解FPGA的基本原理和结构,使学生了解FPGA的工作原理和特点。
2.FPGA的编程语言和设计方法:介绍FPGA的编程语言和设计方法,讲解HDL语言的基本概念和语法,使学生掌握FPGA的编程方法。
3.交通控制灯系统的基本原理和设计方法:介绍交通控制灯系统的基本原理和设计方法,讲解交通控制灯系统的设计流程和关键步骤,使学生能够设计和实现简单的交通控制灯系统。
三、教学方法本课程的教学方法主要包括讲授法、案例分析法、实验法。
1.讲授法:通过讲解FPGA的基本原理和结构、FPGA的编程语言和设计方法、交通控制灯系统的基本原理和设计方法,使学生了解和掌握相关知识。
2.案例分析法:通过分析典型的交通控制灯系统设计案例,使学生了解交通控制灯系统的设计方法和流程,提高学生的设计能力。
3.实验法:通过实验使学生了解FPGA的工作原理和特点,掌握FPGA的编程方法,提高学生的实践能力。
四、教学资源本课程的教学资源包括教材、实验设备等。
1.教材:选用合适的FPGA教材,为学生提供系统的理论知识和实践指导。
2.实验设备:提供必要的FPGA实验设备,包括FPGA开发板、编程器等,为学生提供实践操作的机会。
基于FPGA的交通灯的设计

课程设计一、设计任务要求基于FPGA的交通灯控制器设计1、总体要求:实现十字路口的交通灯有序显示2、具体要求:按照开发板上的两组红、黄、绿做为南北双向指示灯红灯亮60秒,绿灯亮55秒,黄灯亮5秒要求采用状态机实现状态切换3、附加要求:采用两组两位数码管实现时间倒计时显示二、设计思路1、总体设计方案由设计任务要求可知输入部分有:CLK时钟频率输入,可由实验板上直接提供,本设计选用1kHZ时钟频率。
输出部分有:1)东西方向和南北方向各使用3个LED显示,红黄绿各代表红黄绿灯。
2)东西方向和南北方向计时均为2位数,共需要4个LED七段数码管显示。
由于为共阴极控制,输出三个SEL0,SEL1,SEL2信号控制选择数码管显示,A,B,C,D,E,F,G信号为输出显示的内容。
3)R1,G1,Y1;R2,G2,Y2信号分别为东西南北红绿灯的输出控制信号。
总体设计软件原理图如下所示设计方案原理图:图1A对应13脚; B对应30脚;C对应15脚; D对应31脚;E对应33脚; F对应32脚;G对应35脚; R1对应4脚;R2对应5脚;Y1对应3脚;Y2对应10脚;G2对应8脚;SEL0对应14脚; SEL1对应11脚;SEL2对应12脚.CLK对应24脚;交通灯系统结构图如下所示:红黄绿红黄绿图2状态切换的状态图如下图:图2、模块设计及结果在VHDL设计中,采用自顶向下的设计思路。
顶层模块中,根据硬件设计,设置如下端口:外部时钟信号:Clk东西方向状态灯控制信号:R1,G1,Y1;南北方向状态灯控制信号:R2,G2,Y2;(1)分频模块:由于外部时钟信号clk的频率为1KHz,而实际需要的内部计时时钟频率为1Hz,需要一个分频电路。
输入端口:clk外部时钟信号输出端口:clk_out分频后信号源程序代码如下:数码管显示信号:A,B,C,D,E,F,G;数码管共阴极控制:SEL0,SEL1,SEL2;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Frequency1 isport(clk:in std_logic; --外部时钟信号clk_out:out std_logic --分频后信号);end Frequency1;architecture Frequency1_arc of Frequency1 isbeginprocess(clk)variable temp:integer range 0 to 999;beginif(clk'event and clk='1')thenif(temp=999)then --分频计数temp:=0;clk_out<='0';elsetemp:=temp+1;clk_out<='1';end if;end if;end process;end;图4(2)状态选择模块:由于共需要显示4个数字,需要循环点亮7位数码管,该模块通过输入的时钟信号,循环输出4个选择信号。
基于FPGA的交通灯设计(课程设计)

FPGA综合设计实验报告题目基于FPGA的交通灯控制器的设计作者专业日期 2013年3月29日1.设计任务:基于FPGA的交通灯控制器的设计2.设计要求:(1)十字路口由一条东西方向的主干道和一条南北方向的支干道构成,主干道和支干道均有红、黄、绿3种信号灯;(2)保持主、支干道红、绿交替变换;(3)绿灯转红灯过程中,先由绿灯转为黄灯,5秒后再由黄灯转为红灯;同时对方由红灯转为绿灯;(4)系统需具有复位及特殊情况紧急处理功能。
(5)了解交通灯控制器的工作原理,完成控制器的硬件电路设计及软件设计。
3.总体设计方案:从题目中计数值与交通灯的亮灭的关系如图(1)所示。
当主干道绿灯55秒和5秒黄灯过渡时,支干道必须禁止通行,即支干道红灯亮55+5=60秒;当支干道由红灯转为绿灯时,支干道亮55秒绿灯和5秒黄灯过渡,此时主干道红灯应亮55+5=60秒。
图1 交通灯控制要求4.硬件电路基本原理分析:动态LED显示的设计方法是将不同LED模块的所有的LED的驱动端一对一地连接到一起,而将其公共极(阴极或阳极)分别由不同的IO口来驱动(主要针对7段码和LED点阵模块)。
动态显示方式主要是出于简化电路和产品成本考虑在大多数场合都可以达到用户要求。
动态显示虽然占用的CPU时间多,但使用的硬件少,能节省线路板空间。
另外,本设计显示需要使用的是4个七段显示数码管。
在计时结果显示电路中,七段数码管显示部分是一个不容忽视的环节,如若处理不得当,可能引起系统功率过大,产生散热问题,严重时甚至会导致系统的烧毁。
为了解决好以上问题,下面就对七段数码管显示电路做简要的分析和介绍。
通常点亮一个LED所需的电流是5~50 mA,通电的电流愈大,LED的亮度愈高,相对的也会使其寿命缩短。
一般以10 mA的导通电流来估算它所必须串联的阻值,其计算方式参考如图1所示。
图1 单个LED的串接电阻计算方式七段显示器可分为共阳极、共阴极型两种,它们都可以等效成8个LED的连接电路,其中如图2就是共阴极型七段显示器的等效电路和每节LED的定义位置图。
基于FPGA的交通灯控制器设计06876

基于FPGA的交通灯控制器设计06876交通灯控制器是城市交通系统中非常重要的一部分,其正确的设计和运行对于交通的安全与效率至关重要。
在本文中,我们将介绍一种基于FPGA(现场可编程门阵列)的交通灯控制器设计。
首先,我们需要了解交通灯控制器的基本原理。
传统的交通灯控制器通常由定时器和状态机组成。
定时器用于控制信号灯的时间段,状态机用于根据规定的时间段和信号灯的状态切换来确定交通灯的工作状态。
FPGA是一种可编程的芯片,可以用来实现各种数字电路的功能。
它具有高度的可编程性和灵活性,可以通过改变编程来实现不同的功能。
基于FPGA的交通灯控制器设计可以提供更大的灵活性和可扩展性,因为它可以根据实际需求进行定制和修改。
在基于FPGA的交通灯控制器设计中,我们需要考虑以下几个方面:1.信号灯的时间控制:根据不同的道路交通流量和需要的通行效率,我们可以灵活地设置每个信号灯的时长。
这可以通过FPGA中的计数器和定时器来实现。
通过编程可以设置不同的时长,并确保相应的信号灯按照预定的规则进行切换。
2.交通流量检测:为了合理地分配交通灯的时间,我们需要在交通道路上安装传感器来检测交通流量。
这些传感器可以根据车辆的数量和速度来确定不同的交通流量。
在基于FPGA的设计中,我们可以使用IO接口将传感器与FPGA相连,并通过编程来读取和处理传感器数据。
3. 状态机设计:状态机是交通灯控制的核心。
它可以根据预先确定的规则和输入,确定交通灯的状态。
基于FPGA的设计中,我们可以使用状态机设计的编程语言(如VHDL或Verilog)来实现状态机。
状态机可以根据交通流量和交通灯状态的不同情况来切换不同的状态,并通过FPGA中的逻辑门来控制交通灯。
4.故障检测和容错设计:在交通灯控制器中,故障检测和容错设计非常重要。
当一些部件发生故障时,控制器应能够自动切换到备用部件或安全模式,以确保交通的安全和通行效率。
通过FPGA的灵活性,我们可以轻松地实现故障检测和容错设计,例如通过监测一些部件的输出电压或信号来检测故障。
FPGA实验报告-交通灯控制器设计
FPGA实验报告--交通灯控制器设计院系:电子与信息工程系专业:通信工程班级:姓名:学号:指导教师:一、实验任务 1、任务名称:交通灯控制器的设计2、设计容与要求:① 设计一个十字路口交通信号灯的定时控制电路。
要求红、绿灯按一定的规律亮和灭,并在亮灯期间进行倒计时,并将运行时间用数码管/液晶显示出来。
② 绿灯亮时,为该车道允许通行信号,红灯亮时,为该车道禁止通行信号。
要求主干道每次通行时间为99秒,支干道每次通行时间为30秒。
每次变换运行车道前绿灯闪烁,持续时间为5秒。
即车道要由主干道转换为支干道时,主干道在通行时间只剩下5秒钟时,绿灯闪烁显示,支干道仍为红灯,以便主干道上已过停车线的车继续通行,未过停车线的车停止通行。
同理,当车道由支干道转换为主干道时,支干道绿灯闪烁显示5秒钟,主干道仍为红灯。
③ 对红、绿灯的运行时间要能比较方便的进行重新设置。
④ 对器件进行在系统编程和实验验证。
⑤ 用VHDL 语言对设计进行描述,设计一个测试方案,通过ISE 对设计进行仿真验证。
并能够下载到实验板上调试成功。
6 写出设计性实验报告,并打印各层次的源文件和仿真波形,然后作简要说明。
2、补充功能与要求:1.在主干道和支干道添加左转向灯;2.各灯亮的时间及最后闪烁时间可调节;3.紧急路况时,主干道和支干道都为红灯。
二、实验环境1、ISE 软件一套;2、PC 机一台。
三、设计思路1、根据题目要求,知道整个交通灯的运行过程是周期的,所以可以设计一个总的计数器,满周期则清零;2、将灯闪烁时间、主干道绿灯亮的时间、主干道转向灯亮的时间、支干道绿灯亮的时间、支干道转向灯亮的时间分别记为变量t0、t1、t2、t3、t4,通过调整它们,实现调节各灯亮的时间;3、将所有需要显示的量由同一个信号表示并最终输出、显示在LCD上。
四、系统设计a)系统框图b)状态转换说明:主干道和支干道永远有且只有一个灯亮,紧急路况时两边红灯亮,其余时候有且只有一个红灯亮;主干道绿灯、主干道转向灯亮、支干道绿灯、支干道转向灯依次亮,在最后t0S(默认为5S)闪烁。
基于FPGA的交通灯控制器的设计
基于FPGA的交通灯控制器的设计交通灯控制器是现代城市交通系统中至关重要的组成部分。
传统的交通灯控制器通常是基于微控制器或单片机设计的,但随着技术的发展,基于现场可编程门阵列(Field-Programmable Gate Array,FPGA)的交通灯控制器越来越受到关注。
本文将介绍基于FPGA的交通灯控制器的设计。
FPGA是一种可编程逻辑器件,具有高度灵活性和可重配置性。
与传统的微控制器相比,FPGA能够并行处理多个任务,提供更高的性能和更低的延迟。
在交通灯控制器的设计中,这种并行处理的能力可以显著提高交通信号的响应速度和效率。
首先,我们需要确定交通流量检测的方式。
常用的交通流量检测方法有传感器检测、视频图像处理和无线通信等。
在基于FPGA的交通灯控制器设计中,我们可以选择使用传感器检测的方法。
传感器可以通过检测来往车辆的存在与否来确定交通流量,然后将这些数据传输到FPGA中进行处理。
其次,我们需要设计合适的交通灯控制算法。
传统的交通灯控制算法主要基于定时控制,但这种方法无法根据实际交通流量进行动态调整。
在基于FPGA的交通灯控制器设计中,我们可以采用基于车辆检测数据的自适应控制算法。
该算法可以根据交通流量的变化情况灵活地调整交通信号的周期和相位,以实现最优的交通流控制。
接下来,我们需要将交通灯控制算法实现在FPGA上。
使用HDL (Hardware Description Language)编程语言,如Verilog和VHDL,可以将交通灯控制算法描述为硬件逻辑电路。
然后,通过使用FPGA的开发工具,将HDL代码编译成可在FPGA上运行的位流文件。
通过将交通灯控制算法实现在FPGA上,可以实现高速的并行处理和低延迟的响应。
最后,我们需要连接FPGA与交通灯控制设备。
FPGA可以通过GPIO (General Purpose Input/Output)接口与其他设备进行通信。
通过将FPGA的输出信号与交通灯控制设备的输入信号连接,可以实现对交通灯的控制。
基于FPGA设计_交通灯
FPGA课程设计——交通灯控制器通信工程学院电科0701班罗超(17)第一部分技术规范1.1功能描述:实现一个由一条主干道和一条支干道的汇合点形成的十字路口的交通灯控制器,具体功能:(1) 主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。
(2) 主干道处于长允许通行状态,而支干道有车来时才允许通行。
当主干道允许通行亮绿灯时,支干道亮红灯。
而支干道允许通行亮绿灯时,主干道亮红灯。
(3) 当主干道、支干道均有车时,两者交替允许通行,主干道每次通行45 秒,支干道每次通行25 秒,在每次由绿灯向红灯转换的过程中,要亮5 秒的黄灯作为过渡,并进行减计时显示。
每个周期结束时都要进行支干道是否有车的检测,若有车则进行下一个周期,若没有,则主干道亮绿灯,支干道亮红灯,直到检测到支干道有车。
1.2系统总体框图:根据设计要求和系统所具有的功能,并参考相关的文献资料,经行方案设计,可以画出如下图所示的交通信号灯控制器的系统框图。
I/O 管脚的描述 名称 方向 电平 位宽 功能clkInput3.3V 1 系统时钟信号(10KHZ ) carsignal Input3.3V1检测支路是否有车rst Input 3.3V 1 复位信号 led Output 3.3V 6 LED 灯 sel Output 3.3V 7 数码管段码 segOutput3.3V4数码管位码时钟分频模块交通灯控制模块扫描显示译码模块clkrstcarsignal计时模块数码管段码 sel数码管位码 segLED 灯表一:系统总体I/O管脚的描述注:其中系统时钟的频率选为10KHZ,复位采取同步复位方式,且低有效。
支干道检测到有车时, carsignal=1;否则,carsignal=0。
方案核心:在交通灯控制器的设计中,交通灯控制及计时模块是本设计的关键模块。
第二部分 总体设计方案交通灯2.1系统详细框图:在系统总体框图的基础上进一步详细设计,得到如下系统详细框图。
《FPGA系统设计》实验报告》交通灯控制系统的设计实验
《FPGA系统设计》实验报告》交通灯控制系统的设计实验一 .实验目的了解交通灯及控制系统的控制及其显示模块。
二.实验要求1.交通灯从绿色变成红色时,要经过黄色的过渡,黄色灯亮的时间为5秒:2.交通灯从红色变成绿色时,不要需要经过黄色灯的过渡,直接由红色变成绿色,绿色灯点亮的时间为25秒,红色灯点亮的时间为20秒;3.各种灯点亮时,要实现时间的倒计时显示。
三.实验操作步骤假设十字路口的方向为xy两方向,对两个方向需要两个控制模块来控制交通灯的点亮,还需要时间倒计时显示,即需要显示模块,因此系统的总设计模块图由三大模块组成,分别是xy两方向的控制模块,显示模块。
其中显示模块又由三个子模块构成,分别是数码管选择模块,数据分配模块,数码管驱动模块。
控制模块的设计控制模块是控制系统的核心部分,它实现了交通灯的三种颜色的交替点亮和时间倒计时的控制。
x方向控制代码如下:LIBRARY IEEE;USE IEEE .STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CORNA ISPORT (CLK:IN STD_LOGIC;R,G,Y:OUT STD_LOGIC;TIMH,TIML:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END CORNA;ARCHITECTURE CORNER OF CORNA ISTYPE RGY IS (GREEN,YELLOW,RED);BEGINPROCESS(CLK)VARIABLE A:STD_LOGIC;VARIABLE TH,TL:STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE STATE:RGY;BEGINIF(CLK'EVENT AND CLK='1')THENCASE STATE ISWHEN GREEN=>IF A='0'THENTH:="0001";TL:="1001";A:='1';G<='1';R<='0';Y<='0';ELSEIF NOT(TH="0000" AND TL="0001")THENIF TL="0000" THENTL:="1001";TH:=TH-1;ELSETL:=TL-1;END IF;ELSETH:="0000";TL:="0000";A:='0';STATE:=YELLOW;END IF;END IF;WHEN YELLOW=>IF A='0' THENTH:="0000";TL:="0100";A:'1';Y<='1';G<='0';R<='0';ELSEIF NOT(TH="0000" AND TL="0001")THEN TL:=TL-1;ELSETH:="0000" ;TL:="0000";A:='0';STATE:=RED;END IF;END IF;WHEN RED=>IF A='0' THENTH:="0010";TL:="0100";A:='1';R<='1';Y<='0';G<='0';ELSEIF NOT(TH="0000" AND TL="0001")THEN IF TL="0000"THENTL:="1001";TH:=TH-1;ELSETL:=TL-1;END IF;ELSETH:="0000";TL:="0000";A:='0';STATE:=GREENEND IF;END IF;END CASE;END IF;TIMH<=TH;TIML<=TL;END PROCESS;END CORNER;在以上程序中,实体部分定义的输入时钟信号clk为1Hz的脉冲信号,r、g、y为接水通灯的信号,timh 和timl为时间显示信号的十位和个位值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三交通灯控制程序设计1.实验目的和要求完成交通灯控制器的设计,掌握状态机的使用。
2.实验内容或原理在十字路口,每条道路各有一组红,黄,绿和倒计时显示器,用以指挥车辆和行人有序的通行。
其中,红灯亮表示该道路禁止通行;黄灯亮表示停车;绿灯亮表示可以通行;倒计时显示器是用来显示允许通行或是禁止通行的时间。
根据交通灯的工作方式,设计的交通灯由两组红绿灯信号控制四组交通灯,其中处于同一个方向的交通灯共用一组红绿灯信号。
显示顺序为:方向一为黄灯、红灯、绿灯,方向二为绿灯、黄灯,红灯。
‘0’表示灯亮,‘1’表示灯熄。
其中绿灯,黄灯,红灯的持续时间分别为25秒,5秒,20秒。
系统框图如图2所示,系统包括分频模块及信号灯模块。
分频模块对系统时钟进行秒分频,为信号灯提供秒输入信号;信号灯模块实现交通灯控制的逻辑功能。
3.交通灯控制器的设计方案设东西方向和南北方向的车流量大致相同,因此红、绿、黄灯的时长也相同,定为红灯20秒,绿灯25秒,黄灯5秒,同时用数码管指示当前状态(红、绿、黄灯)剩余时间。
方案一:采用VHDL语言直接编写,实现交通灯指挥功能。
方案二:采用模块层次化设计,将此设计分为四个模块:计时模块,状态控制模块,信号灯显示模块,数码扫描显示模块。
将四个模块再分别用VHDL语言编写成,做成原理图模块,用原理图输入法做整个设计的顶层文件。
4.交通灯原理分析当SPC = '1'时,数码管停止计时,S输出为B"010010",即南北、东西方向指示灯示数维持不变。
当SPC=‘1’跳变到SPC=‘0’时,数码管继续计时,恢复正常工作状态。
当SPC = '0'时,交通即开始正常工作。
R=‘1’时,进入初始状态S0="001010"经过20秒,变为S1="100010"再经过5秒,变为S2="010001",再经过20秒,变为S3="010100",再经过5秒,S变为B"001010"……如此循环下去。
南北、东西方向的红绿灯按表一表二变化。
表一交通灯状态转换表表二交通灯状态转换表注:S的六位分别对应东西方向(A方向)的红绿黄和南北方向(B方向)的红绿黄。
‘1’表示亮,‘0’表示灭。
5.VHDL仿真实验(1)为此工程新建一个文件夹。
启动QuartusII软件工作平台,新建工程设计文件名为traffic.vhd。
在新建的VHDL模型窗口下编写源程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH;ENTITY traffic ISPORT (CLK,R,SPC: IN STD_LOGIC;LIGHT : OUT STD_LOGIC_VECTOR(5 DOWNTO 0);Q1,Q2 : OUT INTEGER RANGE 0 TO 25;LED1,LED2,LED3,LED4 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END traffic ;ARCHITECTURE behav OF traffic ISTYPE STATES IS (S0,S1,S2,S3);SIGNAL STATE : STATES ;SIGNAL T1,T2: INTEGER RANGE 0 TO 25;SIGNAL L1,L2,L3,L4 : INTEGER RANGE 0 TO 9;BEGINP1: PROCESS (CLK,STATE)BEGINIF R='1'THEN STATE<=S0;T1<=20;T2<=25;ELSIF SPC='1' THEN LIGHT<="010010";ELSIF CLK'EVENT AND CLK='1' THENCASE STATE ISWHEN S0=> LIGHT<="100010";T1<=T1-1;T2<=T2-1;Q1<=T1;Q2<=T2;IF T1=0 THENSTATE<=S1;T1<=5;T2<=5;END IF;WHEN S1=> LIGHT<="001010";T1<=T1-1;T2<=T2-1;Q1<=T1;Q2<=T2;IF T1=0 THENSTATE<=S2;T1<=25;T2<=20;END IF;WHEN S2=> LIGHT<="010100";T1<=T1-1;T2<=T2-1;Q1<=T1;Q2<=T2;IF T2=0 THENSTATE<=S3;T1<=5;T2<=5;END IF;WHEN S3=> LIGHT<="010001";T1<=T1-1;T2<=T2-1;Q1<=T1;Q2<=T2;IF T1=0 THENSTATE<=S0;T1<=20;T2<=25; END IF;WHEN OTHERS=>STATE<=S0;T1<=20;T2<=25;END CASE;END IF;end PROCESS;p2:PROCESS(T1,T2)beginL1<=T1/10;L2<=T1 REM 10;L3<=T2/10;L4<=T2 REM 10;END PROCESS;P3:PROCESS(L1)BEGINCASE L1 ISWHEN 0=>LED1<="0000";WHEN 1=>LED1<="0001";WHEN 2=>LED1<="0010";WHEN 3=>LED1<="0011";WHEN 4=>LED1<="0100";WHEN 5=>LED1<="0101";WHEN 6=>LED1<="0110";WHEN 7=>LED1<="0111";WHEN 8=>LED1<="1000";WHEN 9=>LED1<="1001";WHEN OTHERS=> LED1<="0000";END CASE;END PROCESS;P4:PROCESS(L2)BEGINCASE L2 ISWHEN 0=>LED2<="0000";WHEN 1=>LED2<="0001";WHEN 2=>LED2<="0010";WHEN 3=>LED2<="0011";WHEN 4=>LED2<="0100";WHEN 5=>LED2<="0101";WHEN 6=>LED2<="0110";WHEN 7=>LED2<="0111";WHEN 8=>LED2<="1000";WHEN 9=>LED2<="1001";WHEN OTHERS=> LED2<="0000"; END CASE;END PROCESS;P5:PROCESS(L3)BEGINCASE L3 ISWHEN 0=>LED3<="0000";WHEN 1=>LED3<="0001";WHEN 2=>LED3<="0010";WHEN 3=>LED3<="0011";WHEN 4=>LED3<="0100";WHEN 5=>LED3<="0101";WHEN 6=>LED3<="0110";WHEN 7=>LED3<="0111";WHEN 8=>LED3<="1000";WHEN 9=>LED3<="1001";WHEN OTHERS=> LED3<="0000"; END CASE;END PROCESS;P6:PROCESS(L4)BEGINCASE L4 ISWHEN 0=>LED4<="0000";WHEN 1=>LED4<="0001";WHEN 2=>LED4<="0010";WHEN 3=>LED4<="0011";WHEN 4=>LED4<="0100";WHEN 5=>LED4<="0101";WHEN 6=>LED4<="0110";WHEN 7=>LED4<="0111";WHEN 8=>LED4<="1000";WHEN 9=>LED4<="1001";WHEN OTHERS=> LED4<="0000";END CASE;END PROCESS;END behav;(2)创建工程及全程编译。
完成源代码输入后即可创建工程然后进入全程编译,检查设计是否正确。
选择Tools->Netlist Viewers->RTL Viewers命令,即HDL的RTL 级图形观测器,选择好后即自动弹出计数器设计的RTL电路,如下图:(3)仿真。