当前位置:文档之家› 基于FPGA的交通灯设计(状态机)

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

基于FPGA的交通灯设计(状态机)
基于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、功能描述

将延时模块的计时输出值转换为数码管输出显示。

将m1对10取整接入数码管的十位,m2对10取余接入数码管的个位。

五、验证方案:

1、结果验证

将程序下载至实验板,观测其数码管计数显示和两组灯的亮灭变化。

2、复位验证

下载到实验板,让其运行一段时间,进行复位,观测变化。

3、仿真验证

六、实验截图:

图1:仿真综合

图2:管脚分配

七、源程序代码:

顶层模块:

module traffic_light(clock,rst,out,m1,m2);

input clock,rst;

output [5:0]out;

output[6:0]m1,m2;

wire [4:0] x;

wire y;

fenpin F(.clock(clock),.rst(rst),.clk(clk));

delay D(.clk(clk),.flag_data(y),.rst(rst),.cnt(x)); state S(.in(x),.rst(rst),.flag(y),.clk(clk),.out(out)); shuma M(.data(x),.rst(rst),.m1(m1),.m2(m2)); endmodule

分频模块:

module fenpin(clock,rst,clk);

input clock,rst;

output clk;

reg clk;

reg [25:0]sum;

always@(posedge clock or negedge rst)

begin

if(!rst)

begin

clk<='b0;

sum=0;

end

else if(sum==25000000)

begin

clk<=~clk;

sum<=0;

end

else sum<=sum+1;

end

endmodule

延时模块:

module delay(clk,flag_data,rst,cnt);

input clk,rst,flag_data;

output[4:0]cnt;

reg[4:0]cnt;

always@(posedge clk or negedge rst)

begin

if(!rst)cnt<='d24;

else if(cnt==0 && flag_data==0)cnt<='d4;

else if(cnt==0 && flag_data) cnt<='d24;

else cnt<=cnt-5'b1;

end

endmodule

状态机模块:

module state(clk,in,rst,flag,out);

input clk,rst;

input[4:0]in;

output [5:0]out;

output flag;

reg [5:0]out;

reg[3:0]state;

assign flag=out[1]|out[4];

parameter r1_g2or1_2_y=6'b100010,r1_y2og1_r2=6'b001100, g1_r2oy1_r2=6'b010100,y1_r2or1g2=6'b100001,

A='b0001,B='b0010,C='b0100,D='b1000;

always@(posedge clk or negedge rst)

begin

if(!rst)

begin

state<=A;

out<=y1_r2or1_g2;

end

else

begin

case(state)

A: begin

if(in==0 && flag==0)

begin

state<=B;

out<=r1_g2or1_2_y;

end

else

state<=A;

end

B: begin

if(in==0 && flag)

begin

state<=C;

out<=r1_y2og1_r2;

end

else

state<=B;

end

C: begin

if(in==0 && flag==0)

begin

state<=D;

out<=g1_r2oy1_r2;

end

else

state<=C;

end

D: begin

if(in==0 && flag)

begin

state<=A;

out<=y1_r2or1_g2;

end

else

state<=D;

end

default:state<=A;

endcase

end

end

endmodule

数码管显示模块:

module shuma(data,rst,m1,m2);

input rst;

input[4:0]data;

output[6:0]m1,m2;

reg[6:0]m1,m2;

reg[3:0]n1,n2;

reg[7:0]db[9:0];

parameter

db[0]=7'b1000000;db[1]=7'b1111001;db[2]=7'b0100100;db[3]=7'b0110000;db[4]=7'b0011001; db[5]=7'b0010010;db[6]=7'b0000010;db[7]=7'b1111000;db[8]=7'b0000000;db[9]=7'b0010000; always@(data)

begin

if(!rst)

begin

m1<=db[0];

m2<=db[0];

end

else

begin

n1<=data/'d10;

n2<=data%'d10;

m1<=db[n1];

m2<=db[n2];

end

end

endmodule

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

/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的智能交通灯的设计毕业设计

目录 摘要 ............................................................. I 1 前言 (1) 2 交通红绿灯控制电路的发展与技术现状 (2) 2.1 交通控制系统以及交通红绿灯控制电路的发展现状 (2) 2.2 智能交通红绿灯控制电路技术的现状 (3) 3 VHDL、FPGA、Quartus ii简介 (5) 3.1 VHDL简介 (5) 3.1.1 VHDL简介 (5) 3.1.2 VHDL语言的特点 (6) 3.2 FPGA简介 (8) 3.2.1 PLD器件的设计特点 (8) 3.2.2 FPGA的基本结构 (10) 3.2.3 采用FPGA设计逻辑电路的优点 (11) 3.3 Quartus II 的简介 (12) 4 具体方案论证与设计 (13) 4.1 具体方案论证 (13) 4.2系统算法设计 (15) 4.3 具体电路原理图 (16) 4.4 电路仿真图 (16) 5 实验结果 (17) 总结 (18) 参考文献 ......................................... 错误!未定义书签。附录: .. (19)

基于FPGA的十字路口交通信号灯 摘要 本文主要介绍十字路口交通灯控制器的设计。首先,介绍交通控制系统以及交通红绿灯控制电路的发展现状;然后采用硬件描述语言进行的交通灯控制器设计。重点介绍了控制系统各部分的设计,以及各个模块之间的同步处理。为了克服交通信号灯控制系统传统设计方法的弊端,更加适应城镇交通现状,利用VHDL语言、采用层次化混合输入方式,设计了具有3种信号灯和倒计时显示器的交通信号灯控制系统,在 QuartusⅡ下进行仿真,并下载到FPGA中制作成实际的硬件电路进行了模拟运行.使用该方法设计的交通灯控制系统电路简单、运行可靠、易于实现,可实现对交通信号的控制和显示功能。 关键词 FPGA;QUARTUS ii;HDPLD;十字路口交通灯控制器; Based on FPGA intersection traffic lights Abstract This paper describes the design of intersection traffic signal controller.First, the introduction of traffic control systems and traffic light control circuit of the development status; then using language designed for the traffic light controller.Focus on various parts of the control system

有限状态机设计交通灯

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

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

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

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

基于FPGA下的交通灯控制器设计

引言 随着城乡的经济发展,车辆的数量在迅速的增加,交通阻塞的问题已经严重影响了人们的出行。 现在的社会是一个数字化程度相当高的社会,很多的系统设计师都愿意把自己的设计设计成集成电路芯片,芯片可以在实际中方便使用。随着EDA技术的发展,嵌入式通用及标准FPGA器件的呼之欲出,片上系统(SOC)已经近在咫尺。FPGA/CPLD 以其不可替代的地位及伴随而来的极具知识经济特征的IP芯片产业的崛起,正越来越受到业内人士的密切关注。FPGA就是在这样的背景下诞生的,它在数字电路中的地位也越来越高,这样迅速的发展源于它的众多特点。交通等是保障交通道路畅通和安全的重要工具,而控制器是交通灯控制的主要部分,它可以通过很多种方式来实现。在这许许多多的方法之中,使用FPGA和VHDL语言设计的交通灯控制器,比起其他的方法显得更加灵活、易于改动,并且它的设计周期性更加短。 城市中的交通事故频繁发生,威胁着人们的生命健康和工作生活,交通阻塞问题在延迟出行时间的同时,还会造成更多的空气污染和噪声污染。在这种情况下,根据每个道路的实际情况来设置交通灯,使道路更加通畅,这对构建和谐畅通的城市交通有着十分重要的意义。

第一章软件介绍 1.1 QuartusⅡ介绍 本次毕业设计是基于FPGA下的设计,FPGA是现场可编程门阵列,FPGA开发工具种类很多、智能化高、功能非常的强大。可编程QuartusⅡ是一个为逻辑器件编程提供编程环境的软件,它能够支持VHDL、Verilog HDL语言的设计。在该软件环境下,设计者可以实现程序的编写、编译、仿真、图形设计、图形的仿真等许许多多的功能。在做交通灯控制器设计时选择的编程语言是VHDL语言。 在这里简单的介绍一下QuartusⅡ的基本部分。图1-1-1是一幅启动界面的图片。在设计前需要对软件进行初步的了解,在图中已经明显的标出了每一部分的名称。 图 1-1-1 启动界面 开始设计前我们需要新建一个工程,首先要在启动界面上的菜单栏中找到File,单击它选择它下拉菜单中的“New Project Wizard”时会出现图1-1-2所显示的对话框,把项目名称按照需要填好后单击Next,便会进入图 1-1-3 显示的界面。

通过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开发板上进行验证。 七、实验器材(设备、元器件)

基于FPGA的交通灯课程设计报告

总体设计要求和技术要点 1.任务及要求 (1)设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。 (2)红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号。 (3)主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。 (4)主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。 (5)在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。 (6)按《湖南涉外经济学院课程设计管理办法》要求提交课程设计报告。 工作内容及时间进度安排 第17周:周1---周2 :立题、论证方案设计 周3---周5 :程序设计与调试 第18周:周1---周3 :硬件调试与测试、撰写课程设计报告 周4---周5 :验收答辩 课程设计成果 1.与设计内容对应的软件程序 2.课程设计总结报告

摘要 本实验为自主选题设计实验,实验选择具有倒计时显示功能的红黄绿三色交通设计,实验中采用VHDL 作为设计功能描述语言,选用Altera公司的EP1K30144-PIN TQFP最为主控芯片,实验报告中简要介绍了FPGA器件,并给出了设计原理图,详细的介绍了交通灯的设计流程,实验报告中还附有实验代码实验结果照片图。 Abstract This experiment designed for independent choice experiment, experiment choice which has the function of the countdown display red yellow green traffic design, description language (VHDL as design function is applied in the experiments, the most main control chip select MAX II EPM240T100C5 Altera company, experiment report, this paper briefly introduces the MAX II device series, and gives the design diagram, detailed introduces the traffic lights of the design process, the experiment report with the code results photo graph.

交通灯控制器的设计

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

基于FPGA的交通灯设计说明

交通信号灯控制器

目录 第一章系统设计 1.1设计要求 (3) 1.2 方案比较 (3) 1.3方案论证 (3) 1.3.1总体思路 (4) 1.3.2设计方案 (5) 第二章单元电路设计 2.1 4位二进制计数器 (6) 2.2 两位二进制计数器 (6) 2.3定时时间到检测电路 (6) 2.4红黄绿灯输出控制电路 (6) 2.5计时器 (6) 第三章软件设计 3.1用VHDL编写程序 (6) 3.2 程序流程 (7) 3.3程序清单及仿真 (7) 第四章系统测试 (7) 第五章结论 (8) 参考文献 (9) 附录 (10)

0 引言 随着经济的飞速发展,现代化交通管理成了当今的热点问题。一个完善的交通控制功能,可使混乱的交通变得井然有序,从而保障了人们的正常外出。本系统通过设计一交通信号灯控制器,达到交通控制的目的。除实现交通灯基本的控制功能外,系统还可显示该灯本次距灯灭所剩的时间,具有更完善的控制功能,使行人提前做好起、停准备,具有更强的实用性。 第1章 系统设计 1.1设计要求 (1) 交通灯从绿变红时,有4秒黄灯亮的间隔时间。 (2) 交通灯红变绿是直接进行的,没有间隔时间。 (3) 主干道上的绿灯时间为20秒,支干道的绿灯时间为10秒。 (4) 在任意时间,显示每个状态到该状态结束所需要的时间。 1.2方案比较 要实现对交通灯的控制,有很多的方案可供选择。 方案一:由两块CMOS 集成电路完成定时和序列控制功能,三只双向晶体管完成实际的电源切换功能。电路中采用10V 负电源(可由市电电压经降压、整流、滤波、稳压而得)、CD4049集成电路、计数器CD4017等器件。其中双向晶闸管选用400V 、4A 的,二极管选用BY127型和1N4148型,稳压管选用10V 、1W 的。因直接使用市电工作,故在安装和使用时安全系数较低,且硬件电路复杂,所用器件多。 方案二:运用VHDL 语言分别控制分频和状态机两个模块, 即信号源经分频器分频后得到1Hz 脉冲,输出脉冲控制状态机中预置四个状态的循环,从而达到交通控制作用.该方案电路结构简单,使用器件少,易于安装和使用.但不宜于电路扩展,适用围小,应用不广泛. 方案三:采用VHDL 语言输入的方式实现交通信号灯控制器,并灵活运用了通用元件CBU14和CBU12作为4位二进制计数器和两位二进制计数器,简化了硬件电路,同时也给调试、维护和功能的扩展、性能的提高带来了极大的方便。 分析以上三种方案的优缺点,显然第三种方案具有更大的优越性、灵活性,所以采用第三种方案进行设计。 1.3 方案论证 1.3.1 总体思路 系统交通管理示意图如图1.3.1. 主干道 支干道 图1.3.1 路口交通管理示意图 由此可得出交通信号灯A 、B 、C 、D 的4种状态:

交通灯的设计与实现

一、设计任务 设计一个十字路口的红、绿、黄三色信号交通灯控制电路,具体要求如下: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进制的设计流程图

基于FPGA的十字路口交通灯控制器设计

石河子大学信息科学与技术学院 成绩存档 学期:2014 至2015学年第一学期 考试科目:电子EDA技术课程设计 专业:电子信息工程 班级:2012 (1)班 姓名: 学号: 任课教师:钟福如

目录 一、实验目的 (1) 二、测试方法 (1) 三、总的设计流程 (1) 四、交通灯控制器的具体设计方案 (1) 五、主要功能设计与仿真 (2) 1、时钟分频模块 (2) 2、交通灯控制模块 (3) 六、顶层文件 (8) 七、心得体会 (9) 八、参考文献 (10)

基于FPGA的十字路口交通灯控制器设计 一、实验目的: 弄懂交通灯的控制逻辑,注意是十字路口,分人行道与车道。车道分别有直行、左转、右转指示,且每个指示三种颜色:红绿黄,红绿转换时间设定2分钟,红与绿之间转换之前有30秒黄灯的闪烁;人行道有红、绿灯指示,红绿转换时间间隔2分钟,且在红绿转换之间有30秒的黄灯闪烁 二、测试方法: 输入技术脉冲信号,仿真波形的输出端的交通指示灯能按题目要求变化. 三、总的设计流程 首先根据交通灯控制器的功能要求,将功能要求转化成系统流程图,然后对系统进行模块的划分、定义各个模块的具体功能。再开始对各个模块用VHDL语言编程,并在Quartus II环境下进行编译及功能仿真。 四、交通灯控制器的具体设计方案

主干道 支 干 道 图1 十字路口交通灯控制器的平面图 实现红黄绿灯的自动指挥。通过交通灯控制器要能够使用于一条由主干道和支干道交汇处的十字路口(假设东西方向为主干道,南北方向为支干道)。且遵循“主干道优先考虑”原则,主、支干道红、绿灯亮的时间不完全一致,在正常情况下主干道允许车辆通行的时间更长。在绿灯转换为红灯的过程中有黄灯进行,使车辆有足够的时间停下来。另外由VHDL语言合理设计交通灯控制器的功能,以使绿、黄、红灯的转换有一个准确的转换顺序和时间间隔。依据设计要求,最终画出如图所示的系统框图。(图1)

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的交通灯(verilog)

基于同步FSM交通信号控制器 试验目的 1、进一步熟悉FSM原理; 2、交通信号控制逻辑的抽象建模方法; 3、掌握同步有限状态机的置位与复位方法; 3、掌握编写可综合的FSM一般指导原则; 试验原理 Verilog HDL和VHDL亍为描述用于综合还只有十年的历史,可综合风格的VerilogHDL和VHD啲语法只是它们各自语言的一个子集;HDL的可综合性研究近年来非常活跃,可综合子集的国际标准目前尚未最后形成,因此,各厂商的综合器所支持的HDL子集也略有不同;对于有关可综合的VerilogHDL的内容我们只着重于介绍RTL算法级和门级结构的描述;把一个时序逻辑抽象成一个同步有限状态机是设计可综合VerilogHDL 模块的关键。有限状态机是设计各种时序逻辑电路的关键。具体的有限状态机的原理可以参看试验七有关原理的介绍。下面介绍一般的可综合有限状态机的编写原则 每个always 块只能有一个事件控制@(event_expression) ,而且要紧跟在 always 关键字后面; always 可以表示时序逻辑或者组合逻辑;也可以用always 块既表示电平敏感的锁存器又同时表示组合逻辑; 带有posedge或negedge关键字的事件表达式表示边沿触发的时序逻辑,没有posedge或negedge关键字的表示组合逻辑或者电平敏感的锁存器,或者两者都表示; 每个表示时序的always 块只能由一个时钟跳变沿触发,置位和复位最好也由该始终跳变沿触发; 每个在always 块中赋值的信号必须定义为reg 类型或者整型; Always 块中应该避免组合反馈回路; 实验步骤和实验内容 1、本试验交通信号控制灯的逻辑关系该交通信号灯控制器用于控制一条主干道与一 条乡村公路的交叉口的交通 ( 如图8-1 所示) ,它必须具有下面的功能;由于主干道上来往的车辆较多,因此控制主干道的交通信号灯具有最高优先级,在默认情况下,主干道的绿灯点亮;乡村公路间断性地有车经过,有车来时乡村公路的交通灯必须变为绿灯,只需维持一段足够的时间,以便让车通过。只要乡村公路上不再有车辆,那么乡村公路上的绿灯马上变为黄灯,然后变为红灯;同时,主干道上的绿灯重新点亮;一传感器用于监视乡村公路上是否有车等待,它向控制器输入信号X;如果X=1,则

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、功能描述 将延时模块的计时输出值转换为数码管输出显示。

基于FPGA的交通灯设计报告

合肥学院综合课程设计报告 题目:基于FPGA的交通灯设计 专业:电子信息工程 班级:09电子(2)班 姓名:周峰 导师: 成绩: 2012年12月11日

基于FPGA的交通灯设计 一:题目要求 1:主干道绿灯时,支干道红灯亮,反之亦然,两者交替允许通行。主干道每次放行40秒,支干道每次放行30秒。每次路灯亮,前10秒为左转灯亮,后5秒为黄灯亮。余下为直行灯亮、 2:能实现正常的倒计时显示功能。 3:能实现总体清零功能;计数器由初始状态开始计数,对应状态的指示灯亮。二:题目分析 1:在十字路口东西方向和南北方向各设一组左转灯、;显示的顺序为:左转灯绿灯黄灯红灯。 2:设计一个倒计时显示器。倒计时只显示总体时间。主干道左转灯、红灯、绿灯和黄灯亮的时间分别是10秒、30秒、25秒、5秒。支干道左转灯、红灯、绿灯和黄灯亮的时间分别是10秒、40秒、15秒、5秒状态表如表3-1所示:3 三:选择方案 1:方案一 在VHDL设计描述中,采用自顶向下的设计思路,该思路在自顶向下的VHDL 设计描述中,通常把整个设计的系统划分为几个模块,然后采用结构描述方式对整个系统进行描述。根据实验设计的结构功能,来确定使用哪些模块以及这些模块之间的关系。通过上面的分析,不难得知可以把交通灯控制系统划分为3个模块:时钟模块、控制模块、分频模块。 2:方案二 不采用方案一的分模块设计,直接用进程写程序。该程序由7个进程组成,进程P1将CLK信号分频后产生1秒信号,P2形成0-49的计数器,进程P3、P4用来控制的信号灯亮灭的,其中P5、P6产生数码管显示的倒数的十进制形式。进程P7实现状态转换和产生状态转换的控制信号,进而控制数码管显示。 由于方案一中使用进程会使程序变得很复杂,不易理解,所以我采用了方案二。

交通灯设计心得体会

设计心得, 一个简单的交通灯控制系统终于做完,,总的来说就只实现两个功能,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";

相关主题
文本预览
相关文档 最新文档