有限状态机设计交通灯

有限状态机设计交通灯
有限状态机设计交通灯

《FPGA原理及应用》

大作业

题目用有限状态机法设计交通灯学院专业

姓名学号

指导教师

2017年11月

实验八用有限状态机设计交通灯

(综合性实验)

一、实验目的

掌握有限状态机的编程和使用方法。

二、实验内容

设计一个十字路口交通灯控制器,东西、南北方向有红灯、黄灯、绿灯,持续时间分别为35、5、30秒,并在实验箱上验证。

方案一:利用状态机设计

本报告通过用状态机对交通信号灯的设计,完成对红、绿、黄三盏灯状态变换的控制,进而完成对十字路口交通通断的控制。本实验以VHDL语言为基础,状态机为工具,完成四种交通状态的控制,即主道有车支道无车,主道无车支道有车,主道支道均有车,主道支道均无车四种状态。以主支道的安装的传感器为信号输入,感应道路有无车辆,实现交通自动化控制。

状态机一般用来描述数字系统的控制单元,是许多数字电路的核心元件。状态机包括输入信号、输出信号、状态译码器和状态寄存器。状态寄存器用来记忆状态机的内部状态。状态寄存器的下一个状态及输出不仅同输入信号有关,而且还与寄存器的当前状态有关,即下一个状态根据当前状态和输入决定。VHDL程序如下:

方案二:利用接线图设计

设计一个五秒计时器,VHDL程序如下:

结果用二进制表示,需要输出三个变量。

仿真无误后,新建波形仿真文件,得到结果如下:

对五秒计时器进行封装。

设计三十秒计时器:

结果有三十个,用二进制表示,最少需要五个输出变量。

仿真无误后新建仿真波形,仿真波形如下:

对三十秒计时器进行封装。

设计三十五秒计时器,VHDL程序如下:

程序结构大致与五秒计时器、三十秒计时器相似,并且用二进制表示,需要输出六个变量。

波形仿真结果如下:

设计好后进行封装。

然后设计通过计时器控制六个交通灯亮灭的转换器。

使用case语句,根据五秒、三十秒、三十五秒计时器的进位信号,对交通灯的亮灭进行控制。初始状态为主干道的红灯亮,而支干道的绿灯亮,三十五秒内,支干道由绿灯变为黄灯,黄灯亮五秒后变为红灯。此时主干道由红灯变为绿灯,两边交换,以此情况反复进行。红灯时间为三十五秒钟,在此期间,另一干到的黄灯和绿灯发生变化,完成十字路口交通灯的功能。其波形仿真如下图:

VHDL程序设计如下:

检测该状态检测功能无误后,进行封装。

新建原理图链接文件,将封装好的四个原件进行连接实现交通灯的功能:

程序设计好后,进行输出输入口的管脚绑定:

管脚绑定如上图,绑定好后,对程序进行上传。

FPGA硬件连接图如下,按如下接线图接好线后,进行程序上传:

V8连接1Hz的时钟输入,Y8接开关1,V3接入LED1(r1),V7接入LED2(y1),V10接入LED3(g1), V5接入LED8(r2),W8接入LED7(y2),W13接入LED6(g2)。上传程序后开始进行六个灯开始进行交替闪烁。

实验中遇到的问题:

1.V8连接1Hz的时钟输入,Y8接开关1,V3接入LED1(r1),V7接入LED2(y1),V10接入LED3(g1), V5接入LED4(r2),W8接入LED5(y2),W13接入LED6(g2)。上传程序后六个灯只有LED1到LED4发光,其余灯泡始终不会亮,无法实现交通灯的功能,于是检查LED5及LED6发现这两个灯泡有问题无法正确接收管脚的输入信号,于是选择其他LED该问题得到解决。

用状态机设计的交通灯控制器

/module traffic (clock, reset, sensor1, sensor2, red1, yellow1, green1, red2, yellow2, green2); input clock, reset, sensor1, sensor2; output red1, yellow1, green1, red2, yellow2, green2; // Define the states. Enumerated type pragma allows Spectrum to chose encoding. parameter /*exemplar enum ee1 */ st0 = 0, st1 = 1, st2 = 2, st3 = 3, st4 = 4, st5 = 5, st6 = 6, st7 = 7; reg [2:0] /* exemplar enum ee1 */ state, nxstate ; reg red1, yellow1, green1, red2, yellow2, green2; // Update the state with the next state on the clock edge // or reset value. always @(posedge clock or posedge reset) begin if (reset) state = st0 ; else state = nxstate; end // // Calculate the next state and the outputs // based on the present state and the inputs // always @(state or sensor1 or sensor2) begin // Default values for the outputs

有限状态机设计交通灯

《FPGA原理及应用》 大作业 题目用有限状态机法设计交通灯学院专业 姓名学号 指导教师 2017年11月

实验八用有限状态机设计交通灯 (综合性实验) 一、实验目的 掌握有限状态机的编程和使用方法。 二、实验内容 设计一个十字路口交通灯控制器,东西、南北方向有红灯、黄灯、绿灯,持续时间分别为35、5、30秒,并在实验箱上验证。 方案一:利用状态机设计 本报告通过用状态机对交通信号灯的设计,完成对红、绿、黄三盏灯状态变换的控制,进而完成对十字路口交通通断的控制。本实验以VHDL语言为基础,状态机为工具,完成四种交通状态的控制,即主道有车支道无车,主道无车支道有车,主道支道均有车,主道支道均无车四种状态。以主支道的安装的传感器为信号输入,感应道路有无车辆,实现交通自动化控制。 状态机一般用来描述数字系统的控制单元,是许多数字电路的核心元件。状态机包括输入信号、输出信号、状态译码器和状态寄存器。状态寄存器用来记忆状态机的内部状态。状态寄存器的下一个状态及输出不仅同输入信号有关,而且还与寄存器的当前状态有关,即下一个状态根据当前状态和输入决定。VHDL程序如下:

方案二:利用接线图设计 设计一个五秒计时器,VHDL程序如下: 结果用二进制表示,需要输出三个变量。 仿真无误后,新建波形仿真文件,得到结果如下:

对五秒计时器进行封装。 设计三十秒计时器: 结果有三十个,用二进制表示,最少需要五个输出变量。 仿真无误后新建仿真波形,仿真波形如下: 对三十秒计时器进行封装。 设计三十五秒计时器,VHDL程序如下: 程序结构大致与五秒计时器、三十秒计时器相似,并且用二进制表示,需要输出六个变量。

通过Verilog实现交通灯设计实验报告

电子科技大学 实 验 报 告 一、实验室名称:虚拟仪器实验室 二、实验项目名称:交通灯设计实验 三、实验学时:4学时 四、实验原理

假设交通灯处于南北和东西两条大街的“十”字路口,如图1所示。用FPGA 开发板的LED 灯来模拟红、黄、绿3种颜色信号,并按一定顺序、时延来点亮LED ,如图2所示。图3给出了交通灯的状态转移图。设计使用频率为1Hz 的时钟来驱动电路(注1:仿真时采用1MHz 的时钟来驱动电路),则停留1个时钟可得到1S 的延时,类似停留3个时钟可得到3S 的延时,停留15个时钟可得到15S 的延时(注2:开发板工作时钟为50MHz )。 北 南 西东 图1. 六个彩色LED 可以表示一组交通信号灯 图2. 交通灯状态 南北 东西 红 黄 绿 红 黄 绿 S0 1 0 0 0 0 1 S1 1 0 0 0 1 0 S2 1 0 0 1 0 0 S3 0 0 1 1 0 0 S4 0 1 0 1 0 0 S5 1 0 0 1 0 0

图3. 交通灯的状态转移图 顶层模块 时钟分频模块状态机跳转模块 图4. 交通灯的原理框图 五、实验目的 本实验是有限状态机的典型综合实验,掌握如何使用状态转移图来定义Mealy状态机和Moore状态机,熟悉利用HDL代码输入方式进行电路的设计和仿真的流程,掌握Verilog语言的基本语法。并通过一个交通灯的设计掌握利用EDA软件(Xilinx ISE 13.2)进行HDL代码输入方式的电子线路设计与仿真的详细流程。。 六、实验内容 在Xilinx ISE 13.2上完成交通灯设计,输入设计文件,生成二进制码流文件下载到FPGA开发板上进行验证。 七、实验器材(设备、元器件)

交通灯控制器的设计

EDA实验报告 一、课程设计题目及要求 题目: 十字路口交通灯 具体要求: 设计一个十字路口得交通灯控制器,能显示十字路口东西、南北两个方向红、黄、绿灯得指示状态。用两组红、黄、绿三种颜色得灯分别作为东西、南北两个方向红、黄、绿等。变化规律为:东西绿灯亮,南北红灯亮——东西黄灯亮,南北红灯亮——东西红灯亮,南北绿灯亮——东西红灯亮,南北黄灯亮——东西绿灯亮,南北红灯亮······,这样循环下去。南北方向每次通行时间为45秒,东西方向每次通行时间为45秒,要求两条交叉道路上得车辆交替运行,时间可设置修改。绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道。并要求所有交通灯得状态变化在时钟脉冲上升沿处。 二、实验编程环境 QuartusII 8、0 三、课程设计得详细设计方案 (一)、总体设计方案得描述 1、1、根据交通灯系统设计要求,可以用一个有限状态机来实现这个交通灯控制器。首先根据功能要求,明确两组交通灯得状态,这两组交通灯总共共有四种状态,我们用ST0,ST1,ST2,ST3 来表示: St0表示东西路绿灯亮,南北路红灯亮; St1表示东西路黄灯亮,南北路红灯亮; St2表示东西路红灯亮,南北路绿灯亮; St3表示东西路红灯亮,南北路黄灯亮; 1、2、根据上述四种状态描述列出得状态转换表 1、3、根据状态转换表得到交通灯控制器得状态转移图如图所示。

交通灯控制器得状态转移图 (二)各个模块设计 2、1、控制器模块 控制器模块示意图 其中,clk 为时钟信号,时钟上升沿有效。hold 为紧急制动信号,低电平有效。ared,agreen,ayellow 分别表示东西方向得红灯,黄灯,绿灯显示信号,高电平有效。 bred,bgreen,byellow 分别表示南北方向得红灯,黄灯,绿灯显示信号,高电平有效。 用于控制红绿黄灯得亮暗情况。 2、2、45秒倒计时计数器模块 45秒倒计时计数器模块示意图 其中,CLK 为时钟信号,时钟上升沿有效。EN 为使能端,高电平有效。CR 为紧急制动信号低电平有效。QL{3、、0}就是计数低位。QH{3、、0}就是计数高位。 用于45秒得倒计时计数。 2、3、7位译码器模块 7位译码器模块示意图 其中dat{3、、0}为要译码得信号。a,b,c,d,e,f,g 为译码后得信号。 用于将45秒倒计时计数得信号译码成数码管可以识别得信号。 2、4、50MHZ 分频器模块 50MHZ 分频器模块示意图 其中clk 为50MHZ 时钟信号,时钟上升沿有效。输出clk_out 为1HZ 时钟信号,时钟上升CLK EN CR QL[3、、0] QH[3、、0] OC m45 inst2

交通灯的设计与实现

一、设计任务 设计一个十字路口的红、绿、黄三色信号交通灯控制电路,具体要求如下:1)用红、绿、黄三色发光二极管作信号灯。主干道为东西向,有红、绿、黄三个灯;另一支干道为南北向,也有红、绿、黄三个灯。红灯亮禁止通行;绿灯亮允许通行;黄灯亮则给行驶中的车辆有时间停靠到禁行线之外。 2)东西和南北每次绿灯放行26s,红灯禁止30s。在每次由亮绿灯变成亮红灯的转换过程中间,需要亮5s的黄灯作为过渡,以使行驶中的车辆有时间停靠到禁行线以外。 3)能实现正常的、即时显示功能,用实验箱上的4个七段数码管作为到计时显示器,分别显示东西、南北方向的红灯、绿灯、黄灯时间。 二、设计原理 首先要对时钟进行分频。由于系统时钟频率比较大,因此首先分频产生时钟,用于下面的电路的控制;然后是各种颜色之间的转换,在此在添加一个使能端en,当使能端en为1的时候,就开始进行状态循环以及倒计时,然后en就立即变为0;在状态机中一共有四个状态,如下图所示: 然后,我们这里用了BCD码表示倒计时时间。灯亮或闪烁时间(绿、黄、红分别为26s、130s、5s)用BCD码表示(分别为26h、30h、5h),倒计时的时候个位和十位分别是BCD码的高四位和低四位,首先是低四位倒数,当倒数到0时,给它重新赋值为9,且高四位减1,如此循环,直到这个数减到0,此时表示某一个灯亮的时间到,接着进行下一个状态,为了能使进入下一个状态,必须在时间减到0的时候,给使能端en 赋值1;由于用的BCD码,高四位和低四位就分别是我们要在译码模块的要用数码管显示的十位和个位。用数据选择器来控制东西、南北的灯亮。 三、程序流程图

1.1分频器的设计流程图 1.2 5进制的设计流程图

verilog_HDL交通灯控制电路

青岛农业大学 理学与信息科学学院 电子设计自动化及专用集成电路课程设计 报告 设计题目__________ 用状态机设计交通灯控制器___________ 学生专业班级_____ 通信工程2008级1班 _______________ 学生姓名(学号)孙鹏飞(20082715)_____________ 扌旨导教师________________ 刘金梅_____________________ 完成时间2011-9-9 ________________________ 实习(设计)地点工程楼405 __________________ 2011年9月9日

、课程设计目的和任务 课程设计目的:本次课程设计是在学生学习完数字电路、模拟电路、电子设 计自动化的相关课程之后进行的。通过对数字集成电路或模拟集成电路的模拟与 仿真等,熟练使用相关软件设计具有较强功能的电路, 提高实际动手,为将来设 计大规模集成电路打下基础。 课程设计任务:设计一个交通控制器,用 LED 显示灯表示交通状态,并以 7 段数码显示器显示当前状态剩余秒数 主干道绿灯亮时,支干道红灯亮;反之亦 然,二者交替允许通行,主干道每次放行 35s ,支干道每次放行25s 。每次由绿 灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为 5s o 能进行特殊状 态显示,特殊状态时东西、南北路口均显示红灯状态。用 LED 灯显示倒计时,并 且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。 二、分析与设计 1、设计任务分析 本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。 设定东 西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红 灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续 35S 后,主干道和支干道上的黄灯都亮启,持续 5S 后,主干道上红灯亮启,支 干道上绿灯亮启持续25S ,之后主干道和支干道上的黄灯都亮启 5s ,一个循环完 成。循环往复的直行这个过程。其过程如下图所示: 图1?交通灯点亮时间控制说明 2、设计方案论证 主干道方向 支干道方向

FPGA实验8实验八 用有限状态机设计交通灯代码

状态机: LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL; ENTITY xhd IS Port(clk : in std_logic; ra,rb,ya,yb,ga,gb : out std_logic ); END xhd; Architecture a of xhd is type state is (S0,S1,S2,S3); signal presentstate,nextstate : state; signal tmp1,tmp2 : integer range 0 to 30; signal timeout1,timeout2: std_logic; signal q: std_logic_vector(21 downto 0); signal sec: std_logic; Begin ----get 1 hz clock pulse process(clk) begin if clk'event and clk='1' then q<=q+1; end if; sec<=q(21); --get 1 hz clock pulse end process; timing: process(sec) begin if sec'event and sec='1' then if tmp1=29 then timeout1<='1'; timeout2<='0'; tmp1<=0; else if timeout1='1' then if tmp2=4 then timeout2<='1'; timeout1<='0'; tmp2<=0; else tmp2<=tmp2+1; end if; else tmp1<=tmp1+1; end if; end if; end if; end process; changestate: process(presentstate) Begin case presentstate is when S0 => if timeout1='0' then nextstate<=s0; ra<='0'; ya<='0'; ga<='1'; rb<='1'; yb<='0'; gb<='0'; else nextstate<=s1; end if; when S1 => if timeout2='0' then

基于FPGA的交通灯设计(状态机)

基于FPGA的交通灯设计规范 一、功能描述: 本设计实现一个交通信号灯,具体功能如下: 1.异步信号复位,复位后1组为红灯亮2组为绿灯亮,数码管显示从24开始 依次递减计数 2.实现红黄绿灯的延时交替亮灭,分两组灯,1组红灯亮时,2组为黄灯,5 秒后,1组红灯亮,2组绿灯亮;25秒后,1组黄灯亮,2组红灯亮;5秒后,1组绿灯亮,2组红灯亮。如此交替重复 3.计时时间25秒、5秒显示在数码管上。分别为:从24依次递减到0,从4 依次递减到0 二、输入输出信号描述:

系统结构框图 顶层模块说明: 1、fenpin:将50MHz晶振转为1Hz作为时钟频率; 2、delay:计数延时; 3、state:指出状态转移顺序; 4、shuma:将计数延时用数码管输出显示。 设计说明: 设计分为分频、延时、状态机、数码管显示四个模块。分频,将50MHz的系统时钟转为1Hz。计数延时,让状态机能在合适的时间点进行状态切换。状态机,完成状态间的切换,输出。数码管显示,将延时模块的计时输出值转换为数码管输出显示。 状态机的输出状态信号标志flag=out[1]|out[4],即为:判断此时的两组输出是否有黄灯亮。flag_data=flag,作为计数延时模块的输入,用状态信号标志flag_data和计数值cnt来共同控制计数模块是5秒还是25秒。 四、子模块描述: 4.1、fenpin:分频模块 1、功能描述 将实验板上的50MHz的石英晶振频率转为1Hz。 2、管脚描述

每当clock时钟上升沿来临时,内部寄存器sum从0递加,加至25000000时,对clk进行取反操作,则可得到频率为1Hz的clk时钟 4.2、delay:延时模块 1、功能描述 计数延时,让状态机能在合适的时间点进行状态切换。 用计数值和状态信号标志的与结果(cnt==0 && flag_data)来判断计数延时的初始值应为24还是4 4.3、state:状态机模块 1、功能描述 完成状态间的切换,输出。 状态信号标志flag=out[1]|out[4]。即为检测当前是否有黄灯亮。 注:out[5:3]对应1组灯的:红黄绿 out[2:0]对应2组灯的:红黄绿 4.4、shuma:数码管显示模块 1、功能描述 将延时模块的计时输出值转换为数码管输出显示。

交通灯设计心得体会

设计心得, 一个简单的交通灯控制系统终于做完,,总的来说就只实现两个功能,1 红绿黄灯的交替点亮。2,显示每种灯的倒计时,其实,就是一个的状态机,四个状态的变换,刚开始,。我按照书上的程序将代码输进去,只输的过程中发现不少错误。定义灯的显示错了。多个地方判断语句IF的判断部分都写成赋值语句“《=”最严重的是最后的结果既然仿真不出来,我试图将错误的揪出来,没想到自己自己的思维也陷进去了。按着书上的注解一点都没错,就是仿真不出来。在这时候,我决定按照自己的思路来修改,书上的原程序有7个进程,我将,p5 p6,p7, 压缩成一个程序p5 ,同样也可以实现书要求的所有功能,书上的计数器是通过十六输出端,分别接到两个数码管,考虑到我们的实验板上带有bcd/七段led译码器。故我直接将计数器的输出,按照bcd码接到译码器上,做了这些算是有点点成就感,我觉得这个课设,不仅需要很好的dea基本功,更需要周密的思维。耐心和细心的做事态度,当看到大篇幅的程序是,正是验证理论知识的时刻,我是以为自己还有必要加强,平时判断上升沿时一般习惯用clk’event and (cke=1), 一下子看到wait语句时,我顿时不知书上的语句是对是错,只能查阅课本,做事态度面,我有时候特心急,一下子十几行的错误提示,看着心都凉了,要不是为了一组的荣誉的我真的没耐心看了,当把一条一条的错误改正后,才知道自己能行的。 我们设计的东西最终目标就是能真正应用到生活中去,因此,,需要对平时的生活常识有一定了解,善于观察生活,看需要什么,就设计什么出来。也不一定要做已经有了的东西,或者自己写出更高效的程序。。 总的来,我对这是很感兴趣的。我能在做的过程中找到快乐,觉得学到的东西有用处,我以后更加深刻地学习课本知识,,做事会更有耐心,平时多关注生活,多思考。 既然选择这个专业,就不仅学习专业知识,也要学习专业精神。

交通灯控制逻辑电路设计

数电逻辑与数字电路实验报告交通灯控制逻辑电路设计 班级:通信162 同组人:王佳成 姓名:李浩坤 学号:163977 成绩:

一、实验目的: 1.掌握半导体器件的开关特性,正确理解正、负及混合逻辑。 2.熟悉集成门电路和集成触发器的结构,工作原理,主要参数。 3.掌握基本功能电路(编码器、译码器、全加器、多路转换器、移位寄存器和计数器等)的电路结构,工作原理和逻辑功能。 4.掌握组合逻辑电路的分析、设计和验证方法。 5.掌握利用MSI器件设计组合逻辑电路的方法。 6.掌握时序逻辑电路的分析与设计方法。 7.初步掌握脉冲波形产生和整形电路相关原理。 6.初步掌握A/D、D/A转换器件的工作原理。 一、实验仪器和元件 实验箱、74LS153、74LS161、74LS00 二、实验内容及原理 用MOORE型状态机设计一个十字路口交通灯控制器。十字路口东 西、南北各有红、黄、绿指示灯。 要求实现逻辑功能,状态机所包含的状态(S0,S1,S2,S3,s4, s5),其中正常情况下在S0-S3状态循环,如果发生紧急情况,进入 S4状态。 S0、东西方向绿灯亮,南北方向红灯亮,时间45s; S1、东西方向黄灯亮,南北方向红灯亮,时间5s; S2、南北方向绿灯亮,东西方向红灯亮,时间40s; S3、南北方向黄灯亮,东西方向红灯亮,时间5s; S4、如果发生紧急事件,可以手动控制四个方向红灯全亮。 其中S0状态持续时间45秒,S2状态持续时间40秒,S1和S3状态 应该持续5秒,S4状态为紧急事件,持续时间不定,紧急事件解除 进入S0状态。该功能采用减计数器计时实现,包含一个最大计数值 为44的计数器,一个最大计数值为39的计数器和一个最大计数值 为4的计数器(计数器是从0开始计时)。计数器的使能控制根据 当前状态决定,计数器的进位位输出作为状态机的控制输入。东西、南北红、绿、黄灯点亮由状态机的输出控制。 其状态转移图如下

基于状态机的交通灯控制

实验三:基于状态机的交通灯控制 设计要求: 1、开发板上三个led等分别代表公路上红黄绿三种颜色交通灯,D3代表红灯, D5代表黄灯,D7代表绿灯。D3,D5,D7 对应开发板的IO口为120,118,116 。 2、交通灯状态机初始状态为红灯,交通灯工作过程依次是红红。 3、为了方便观察,本次实验要求红灯的显示时间为9s,绿灯显示时间为6s , 黄灯显示时间为3s ,时间需要倒计时,在数码管Q4上显示。Q4的使能端(低电平有效)对应开发板IO口为168,八段led对应IO口为A~H (144,158,162,160,159,156,163,161)。 4、编程之前要求同学们先画好ASM图。 5、1Hz分频模块请采用第二次实验中的内容(文件夹中的clk_1s.vhd),7段码显 示模块请参考书本151页内容。 附:八段led译码列表:

Library ieee; Use ieee.std_logic_1164.all; Entity traffic is Port(clk:IN std_logic; q4:OUT std_logic; seven_seg_input:OUT std_logic_vector(7 downto 0); light_RGY:OUT std_logic_vector(2 downto 0)); End traffic; Architecture behav of traffic is Signal seven_seg_input_reg:std_logic_vector(7 downto 0); Signal time:integer RANGE 0 to 49999999;-- Signal q:std_logic; Signal light_time:integer RANGE 0 to 17; Type state_type is(R,G,Y); Signal light_state:state_type; Begin q4<='0'; --display Process(light_time,seven_seg_input_reg) Begin Case light_time is when 0 => seven_seg_input_reg<="00001001";light_state<=R; --9 when 1 => seven_seg_input_reg<="00000001";light_state<=R; --8 when 2 => seven_seg_input_reg<="00011111";light_state<=R; --7 when 3 => seven_seg_input_reg<="01000001";light_state<=R; --6 when 4 => seven_seg_input_reg<="01001001";light_state<=R; --5 when 5 => seven_seg_input_reg<="10011001";light_state<=R; --4 when 6 => seven_seg_input_reg<="00001101";light_state<=R; --3 when 7 => seven_seg_input_reg<="00100101";light_state<=R; --2 when 8 => seven_seg_input_reg<="10011111";light_state<=R; --1 when 9 => seven_seg_input_reg<="01000001";light_state<=G; --6 when 10=> seven_seg_input_reg<="01001001";light_state<=G; --5 when 11 => seven_seg_input_reg<="10011001";light_state<=G; --4 when 12 => seven_seg_input_reg<="00001101";light_state<=G; --3 when 13 => seven_seg_input_reg<="00100101";light_state<=G; --2 when 14 => seven_seg_input_reg<="10011111";light_state<=G; --1 when 15 => seven_seg_input_reg<="00001101";light_state<=Y; --3 when 16 => seven_seg_input_reg<="00100101";light_state<=Y; --2 when 17 => seven_seg_input_reg<="10011111";light_state<=Y; --1 when others => seven_seg_input_reg<="00000011";

状态机设计交通灯

利用有限状态机的交通灯控制系统设计与仿真 时间:2012-03-09 17:09:59 来源:电子科技作者:冯竞楠陕西科技大学摘要:基于硬件电路设计软件化的思想,根据路口交通灯控制功能要求,以可编程逻辑器件(FPGA)为硬件基础,以有限状态机为设计基础,通过对系统状态及其转移关系的定义,运用多进程方式描述硬件模块的逻辑关系,用VHDL语言编程实现了交通灯控制系统,经仿真,并在实验箱上进行功能测试,正确实现了预期功能。仅用一片可编程逻辑器件,即完成需要的控制功能,设计思路清晰,实现过程灵活。 关键词:有限状态机;交通灯;控制系统;设计 实现路口交通灯控制器系统的方法很多,可以用标准逻辑器件、可编程序控制器PLC、单片机等方案来实现。但是这些方法在进行功能修改及调试时,都涉及硬件电路的调整,在一定程度上增加了工作的难度。随着电子技术的迅猛发展,集成电路的设计方法也在不断地更新,传统的“固定功能集成电路+连线”的手工电子设计方法已被现代的对“芯片”进行设计的电子设计自动化(EDA)的设计方法所替代,使用“语言”进行电子电路设计已成为一种趋势。笔者设计开发的交通信号灯控制器系统,采用EDA技术和可编程逻辑器件FPGA,应用VHDL有限状态机来设计控制系统的控制功能,并可根据实际情况对灯亮时间进行自由调整,整个系统通过OuartusⅡ软件平台进行了仿真,并下载到FPGA器件EP1C120240C8中进行调试,验证了设计的交通信号灯控制电路完全可以实现预定的功能。该系统可以较好地缓解交通压力,并可实现对突发事件进行紧急处理,具有一定的实用性。 1 有限状态机的基本特性 有限状态机FSM(finite state machine)由有限的状态及其相互之间的转移关系构成。从有限状态机的角度看,许多数字系统中的时序电路都可以用其来描述,因此,有限状态机是一种重要的、易于建立的、比较规范、以描述控制特性为主的建模方法,它可以应用于从系统分析到设计的所有阶段。同时,因为有限状态机具有有限个状态,所以可以在实际的工程上实现。但这并不意味着其只能进行有限次的处理。相反,有限状态机是闭环系统,可以用有限的状态,处理无穷的事务。 在用VHDL语言来设计实用系统的控制功能时,通常会选用有限状态机方法来实现,因为无论与VHDL的其他设计方案相比,还是与可完成相同功能的CPU相比,有限状态机有其独特的、难以超越的优越性,主要表现在以下几个方面: 1)有限状态机由纯硬件来实现,工作方式是根据控制信号按照预先设定的状态进行顺序运行,在运行和控制方式上类似于控制灵活和方便的CPU,而在设计中能使用各种完整的容错技术,使其在运行速度和工作可靠性方面又都优于CPU。 2)用VHDL设计有限状态机,设计流程和方案相对固定,程序层次分明,程序结构简单清晰,特别是可以定义符号化枚举类型的状态,使VHDL综合器对状态机具有强大的优化功能。 3)状态机容易构成性能良好的同步时序模块,为了消除电路中的毛刺现象,在有限状态机设计中有多种设计方案可供选择,相比其他硬件设计方法,电路的完善性更能得到保证。 因此,在控制灵活、高速、高可靠性要求的系统设计中应用VHDL设计有限状态机将是非常实用的选择。 利用VHDL的有限状态机设计不同实用逻辑控制系统时,通常采用枚举类型来定义状态机的状态,这样可以获得可综合的、高效的VHDL描述,并且使用多进程方式来描述状态机的内部逻辑。例如:可用两个进程来描述,一个进程描述时序逻辑功能,通常称为时序进程;另一个进程描述组合逻辑功能,即组合进程,必要时还可以引入第3个进程完成其他的逻辑功能,另外还需要相应的说明部分,在说明部分用TYPE定义新的数据类型和状态名,以及在此新数

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

基于VHDL状态机的交通灯控制器设计 0 引言 交通灯是城市交通监管系统的重要组成部分,对于保证机动车辆的安全运行,维持城市道路的顺畅起到了重要作用。本文在VHDL状态机的基础上,利用FPGA的相关知识设计了交通灯控制系统。可以根据实际情况对灯亮时间进行自由调整,整个设计系统通过QuartusII 软件平台进行了模拟仿真,并下载到FPGA器件中进行硬件的调试,验证了设计的交通信号灯控制电路完全可以实现预定的功能,具有一定的实用性。 1 设计要求 有一条主干道和一条支干道的汇合点形成的十字路口,为确保车辆安全,迅速通行,在干道和支道的入口设置了红、绿(包括直行和左拐)、黄3色信号灯(如图1所示)。 图1 十字路口交通灯示意图 设计要求: (1)A方向和B方向各设红(R)、黄(Y)、绿(G)、和左拐(L)四盏指示灯; (2)四种灯按合理的顺序亮灭,并能将灯亮的时间以倒计时的形式显示出来; (3)主、支干道交替通行,假设B方向是主干道,车流量大,因此B方向通行的时间应比A方向长一些。B方向每次放行40秒,A方向每次放行30秒,在每次亮绿灯、左拐灯与红灯的转换过程中,亮5秒的黄灯作为过渡; (4)两个方向各种灯亮的时间应该能够进行非常方便的设计和修改; (5)上电复位后,主干道先通行。 2 VHDL设计实现 2.1 系统整体设计 该系统主要由控制模块、分频模块以及显示电路构成。其中分频模块主要将系统输入的基准时钟信号转换为1 HZ的激励信号,驱动控制模块工作。控制模块根据计数情况对交通灯的亮灭及持续时间进行控制,并将灯亮时间以倒计时的形式通过数码管显示出来。其中Reset是复位信号,高电平有效。 2.2 分频模块设计

交通灯控制器设计

实验十交通灯控制器设计 一、实验目的 学习并掌握简单状态机的设计方法。 二、设计描述及方法 1. 状态机的状态表 2. 设计电路的描述--状态机的转移关系图 说明: ?交通灯控制器控制红(r)、绿(g)、黄(y)三种不同颜色的交通灯,这三种不同颜色灯的亮、灭分别由三个定时器(timer1、timer2、timer3)控制; ?当某个定时器工作时,它所控制的交通灯亮,直到设定的定时时间到(该定时器状态由’0’变’1’),交通灯跳转到另一种状态; ?clk是脉冲控制端(图中未标出);reset是异步复位端,复位状态为红色交通灯亮; ?输出端r、g、y分别表示三种颜色交通灯的亮、灭状态。

三、程序代码 library ieee; use ieee.std_logic_1164.all; entity traffic_lights is port (clk,reset ,timer1,timer2,timer3: in std_logic; r,y,g: out std_logic ); end traffic_lights ; architecture behave of traffic_lights is constant red:std_logic_vector(2 downto 0):="100"; constant green:std_logic_vector(2 downto 0):="010"; constant yellow:std_logic_vector(2 downto 0):="001"; signal current_state,next_state:std_logic_vector(2 downto 0); begin process(clk,reset) begin if(reset='1') then current_state<=red; elsif clk'event and clk='1' then current_state<=next_state; end if; end process; process(timer1,timer2,timer3,current_state) begin case current_state is when red => if(timer1='1') then next_state<=green;r<='0';g<='1';y<='0'; else next_state<=red;r<='1';g<='0';y<='0'; end if;

简易交通灯控制器设计

实验四简易交通灯控制器设计 一、实验目的 了解状态机的典型结构及编写方法。 二、实验要求 使用状态机设计一个交通灯控制器,该控制器用于控制十字路口的信号灯和倒计时显示器。在东西和南北两个方向上均有一组红、黄、绿灯和倒计时显示器,假设各灯交替点亮的时间为:红灯45秒,绿灯40秒,黄灯5秒,同时用数码管指示当前状态的剩余时间。另外设置一个禁止通行控制输入信号端,当该信号为低电平时,两个方向都禁止通行,红灯点亮,计时器不显示时间。完成设计输入、编译、仿真、硬件测试等过程。 三、实验原理与方案 根据实验要求,两个方向灯的点亮状态共有红绿、红黄、绿红、黄红四种组合,如下表: 从表中可以看出,交通灯的有效状态共有4种,某一状态的定时时间到,则转向下一个状态。在采用状态机设计时可以考虑定义一个状态设置,取值范围为S1、S2、S3、S4,另外对应禁止通行的特殊状态还可以设置一个状态S0。为了实现各状态的定时,设置两个计数器EW、SN,分别用于对东西、南北方向的各状态定时。 四、实验内容、步骤与结果 1、项目设计:

1)启动QuartusII,完成项目设置,顶层文件名JTD 2)打开VHDL编辑器将输入程序代码,保存 程序:LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY JTD IS PORT(CLK,S2,S1:IN STD_LOGIC; A_GREEN,A_YELLOW,A_RED:OUT STD_LOGIC; B_GREEN,B_YELLOW,B_RED:OUT STD_LOGIC); END ENTITY JTD; ARCHITECTURE RTL OF JTD IS TYPE STATE IS(AGREEN,AYELLOW,BGREEN,BYELLOW); BEGIN PROCESS(CLK,S2,S1) V ARIABLE CURRENT_STATE:STATE;V ARIABLE TIMER:INTEGER; V ARIABLE JTD:STD_LOGIC_VECTOR(5 DOWNTO 0); V ARIABLE FLAG:STD_LOGIC; BEGIN IF(S2='1')THEN CURRENT_STATE:=AGREEN;TIMER:=50;FLAG:='0'; ELSIF(S1='1')THEN CURRENT_STATE:=CURRENT_STATE;TIMER:=TIMER;FLAG:='1'; JTD:="001001"; ELSIF(CLK'EVENT AND CLK='1')THEN FLAG:='0'; TIMER:=TIMER-1; CASE CURRENT_STATE IS WHEN AGREEN=> IF(TIMER=0)THEN CURRENT_STATE:=AYELLOW;TIMER:=5; END IF;

交通灯控制逻辑电路设计课程设计

电工学(少学时) 课程设计 中国人民公安大学 交通灯控制逻辑电路设计 设计要求和技术指标 1、技术指标:设计一个十字路口的交通灯控制电路,每条道路上各配 有一组红、黄、绿交通信号灯,其中红灯亮,表示该道路禁止通行; 黄灯亮表示该道路上未过停车线的车辆禁止通行,已过停车线的车辆继续通行;绿灯表示该道路允许通行。该电路自动控制十字路口两组红、黄、绿交通灯的状态转换,实现十字路口自动化。 2.、设计任务与要求 一.基本功能 1.设计一个十字路口的交通灯控制电路,要求甲车道和乙车道两条交叉道路上的车辆交替运行,每次通行时间都设为25秒; 2.要求黄灯先亮5秒,才能变换运行车道; 3.黄灯亮时,要求每秒钟闪亮一次。 二.基本扩展功能 1.信号灯的倒计时 2.进行数字显示 三.特色扩展功能

1.定时控制信号周期。 实际应用:我们灯控路口的每天都存在着低峰时段(如夜间),不需要设置信号灯的周期,以便节省能源。 我们设计在一个周期的某一时间段内,将交通信号灯自动关闭。(第8个周期运行,第1-7个周期停止运行) 实现手动对关闭周期的时间控制。(周期在20和40之间通过开关控制) 2.定时控制信号周期,实现在一个时段内的不对称周期。 实际应用:我们灯控路口的每天都存在着某时段(如两个车道中的一个车道需要长周期),便于交通。 我们设计在一个周期的某一时间段内,将交通信号灯变为不对称的信号(A车道为70秒,B车道为30秒)。暂时设置为(第8个的半个周期(30秒)(自动设置为半个周期)运行,加第7个的上半周期(70秒),形成一个不对称周期。第7个下半周期和1-6个周期正常运行) 目录 一、交通灯的组成 (4) 二、单元电路的设计 (7) 1、秒脉冲发生器 (7) 2、定时器 (8) 3、控制信号发发生器 (10) 4.控制绿灯显示器 (13)

基于原理图的交通灯控制器的设计

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

电子技术课程设计(交通灯)

湖南文理学院课程设计报告 课程名称:电子技术课程设计 教学院部: 专业班级: 学生姓名: 指导教师: 完成时间: 报告成绩:

目录 一、引言 (3) 二、设计题目 (3) 三、设计任务与要求 (3) 四、方案选择与论证 (3) 五、单元电路设计 (4) 1、脉冲发生器 2、定时器 3、控制器 4、译码器 5、交通信号灯 六、总电路图及其原理说明 (9) 七、仿真过程与效果分析 (11) 八、实验仪器设备及元器件清单 (12) 九、心得体会与总结 (13) 十、参考文献 (13)

一、引言: 数字电路技术基础是高等学校弱点类各专业的一门重要的技术基础课程。这门课程发展迅速、实用性和应用性强,侧重于逻辑行为的认知和验证。 随着社会经济的发展,城市交通问题越来越引起人们的关注。人、车、路三者关系的协调,已经成为交通管理部门亟待需要解决的问题之一。城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代化城市交通监测指挥系统中最重要的组成部分。 同时也随着城市机动车量的不断增加,许多大城市如北京、上海、南京、长沙等大城市都出现了交通超负荷运行的情况。因此,自80年代后期这些城市纷纷修建城市高速公路,在高速公路建成完成的初期,它们也曾有效地改善了交通状况。然而,随着交通量的快速增长和缺乏对高速道路的系统研究和控制,高速道路没有充分发挥预期的作用。而城市高速道路在构造上的特点,也决定了城市高速道路的交通道路必然受高速与普通道路耦合处交通住哪个科的制约。所以,如何采用合适的控制方法,最大限度利用好耗费巨资修建高速道路,缓解主干道与匝道、城区同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的问题。为此,本次设计完成的就是交通灯设计。以下就是城乡交通灯控制系统的电路原理图、设计计算和实验调试等问题来具体分析讨论。 二、设计题目: 交通灯控制器设计 三、设计任务与要求: 设计一个十字路口的交通信号灯控制器,控制A、B两条交叉道路上的车辆通行,具体要求如下: (1)每条道路设一组信号灯,每组信号灯有红、绿、黄三个灯组成,绿灯表示允许通行,红灯表示禁止通行,黄灯表示该车道上已过停车线的车辆继续通行,未过停车线的车辆停止通行。 (2)要求甲车道和乙车道两条交叉道路上的车辆交替运行,每次通行时间都设为25秒; (3)每次交换通行车道之前,要求黄灯先亮5秒,才能变换运行车道; (4)黄灯亮时,要求每秒钟闪亮一次。 四、方案选择与论证: 1 )电源提供方案 为使模块稳定工作,须有可靠电源,我们考虑了两种电源方案 方案一:采用独立的稳压电源,此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立,会使系统复杂,且可能影响电路电平。

相关文档
最新文档