- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6 总结
基于FPGA的十字路口交通灯控制器设计
实验目的:弄懂交通灯的控制逻辑,注意是十字路口,分人行道与车道。车道分别有直行、左转、右转指示,且每个指示三种颜色:红绿黄,红绿转换时间设定2分钟,红与绿之间转换之前有30秒黄灯的闪烁;人行道有红、绿灯指示,红绿转换时间间隔2分钟,且在红绿转换之间有30秒的黄灯闪烁
2、测试方法:输入技术脉冲信号,仿真波形的输出端的交通指示灯能按题目要求变化.
3、总的设计流程
首先根据交通灯控制器的功能要求,将功能要求转化成系统流程图,然后对系统进行模块的划分、定义各个模块的具体功能。再开始对各个模块用VHDL语言编程,并在Quartus II环境下进行编译及功能仿真。
— — 装 订 线 —
— — 装 订 线 — —
图1 十字路口交通灯控制器的平面图
实现红黄绿灯的自动指挥是城市交通管理自动化的重要课题之一。通过分析可以知道,所设计的交通灯控制器要能够使用于一条由主干道和支干道交汇处的十字路口(假设东西方向为主干道,南北方向为支干道)。且遵循“主干道优先考虑”原则,主、支干道红、绿灯亮的时间不完全一致,在正常情况下主干道允许车辆通行的时间更长。在绿灯转换为红灯的过程中有黄灯进行,使车辆有足够的时间停下来。另外由VHDL语言合理设计交通灯控制器的功能,以使绿、黄、红灯的转换有一个准确的转换顺序和时间间隔。依据设计要求,最终画出如图所示的系统框图。
主要功能模块设计与仿真
一、 时钟分频模块
分频模块的作用是为系统提供所需的计时脉冲。FPGA器件FLEX EPF10K10LC84上时钟源频率为4MHZ,而系统的时钟计时模块需要1HZ的脉冲。因此需要对4MHZ的时钟信号进行分频,产生1S的方波,作为系统的计时脉冲。
其电路符号如图1所示:
图2时钟分频模块的电路符号
在模块中,clkin分频器产生的1hz的输出脉冲。其控制程序如下所示:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY FENPINgI IS
PORT( CLKIN : IN STD_LOGIC;
CLKOUT : OUT STD_LOGIC
);
END;
ARCHITECTURE BEV OF FENPINgI IS
CONSTANT N: INTEGER:=499;
SIGNAL COUNTER : INTEGER RANGE 0 TO N;
SIGNAL CLK : STD_LOGIC;
BEGIN
PROCESS(CLKIN)
BEGIN
IF RISING_EDGE(CLKIN) THEN
IF COUNTER=N THEN COUNTER=0;CLK=NOT CLK;
ELSE
COUNTER=COUNTER+1;CLKOUT=CLK;
END IF;
END IF;
End PROCESS;
END;
分频模块的仿真图如4.2所示:
图3 时钟分频模块仿真图
为方便观看波形,时钟信号的周期并未严格按要求设置。从图中可以看出该模块完成了分频功能。
二、交通灯控制模块
控制模块依据外部输入输出信号,来控制交通灯其他部分协调工作。
执行程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CONTROL IS
port(CLK:in std_logic;
mr_g_y_z_p:out std_logic_VECTOR(4 downto 0);
sr_g_y_z_p:out std_logic_VECTOR(4 downto 0));
end;
ARCHITECTURE ONE OF CONTROL IS
SIGNAL T:INTEGER:=0;
begin
process(clk)
BEGIN
IF CLKEVENT AND CLK=1THEN
IF T=0 THEN mr_g_y_z_p=10011; sr_g_y_z_p=10001;
ELSIF T=25 THEN mr_g_y_z_p=01000; sr_g_y_z_p=10000;
ELSIF T=30 THEN mr_g_y_z_p=00100; sr
文档评论(0)