完整版基于FPGA的交通灯控制器毕业设计论文.docx
- 文档编号:29204089
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:32
- 大小:286.71KB
完整版基于FPGA的交通灯控制器毕业设计论文.docx
《完整版基于FPGA的交通灯控制器毕业设计论文.docx》由会员分享,可在线阅读,更多相关《完整版基于FPGA的交通灯控制器毕业设计论文.docx(32页珍藏版)》请在冰豆网上搜索。
完整版基于FPGA的交通灯控制器毕业设计论文
基于FPGA的交通灯控制器设计
摘要
超高速硬件描述语言VHDL,是对数字系统进行抽象的行为与功能描述到具体的内部线路结构描述,利用EDA工具可以在电子设计的各个阶段、各个层系进行计算机模拟验证,保证设计过程的正确性,可大大降低设计成本,缩短设计周期。
本文介绍的数字秒表设计,利用基于VHDL的EDA设计工具,采用大规模可编程逻辑器件FPGA,通过设计芯片来实现系统功能。
交通灯控制系统可以实现路口红绿灯的自动控制。
基于FPGA设计的交通灯控制系统具有电路简单、可靠性强、实时快速擦写、运算速度高、故障率低、可靠性高,而且体积小的特点。
本设计采用Altera公司Cyclone系列的EPlC3T1444C8芯片,在QuartusII软件平台上使用VHDL语言,采用自顶向下的设计方法对系统进行了模块化设计和综合,并进行了仿真。
该系统可实现十字路口红绿灯及左转弯控制和倒计时显示,仿真结果结果表明系统能够自动控制交通灯转变。
关键词:
VHDL,交通灯,EDA
THELIGHTCONTROLLERBASEDONFPGADESIGN
ABSTRACT
Withthedevelopmentoftheeconomy,microelectronictechnology,computertechnologyandtheautomatictheoryaredevelopedrapidly.Itsapplicationisbecomingmoreandmorewidely.Butthetrafficlightasanimportanttraffic,italsoallthesystemofthetrafficlight,ThesystemoftrafficcontrolwhichdesignedbasedonFPGAisreceivedbymoreandmorepeople.
Thesystemoftrafficcontrolcanrealizetheautomaticcontroloftrafficlightinaintersection.ThesystemoftrafficcontrolwhichdesignedbasedonFPGA,toerasefunctionquicklywithreal-timeapplications,systemQuartusIIandtheformoftheVHDLlanguage,wesimulatethesystembyusingEPlC3T1444C8Marsdeviceandtheresultshowthatthedownloadsystemcanautomaticallycontrolthetrafficlights.
KEYWORDS:
VHDL,trafficlight,EDA
前 言1
第1章FPGA概述2
1.1FPGA的简介2
1.2FPGA的应用2
第2章VHDL硬件描述语言3
2.1VHDL程序基本结构3
2.1.1实体3
2.1.2结构体4
2.1.3库4
2.2VHDL语言4
2.2.1VHDL文字规则4
2.2.2VHDL数据对象4
2.2.3VHDL数据类型5
2.2.4VHDL顺序语句5
2.2.5VHDL并行语句5
第3章系统设计与仿真6
3.1系统介绍6
3.1.1设计任务6
3.1.2设计要求6
3.2系统设计仿真7
3.2.1顶层框图的设计7
3.2.2时序状态图的设计7
3.2.3工程设计流程框图:
8
3.2.4芯片的选择8
3.2.5各个模块的设计与仿真8
结论23
谢辞24
参考文献25
附录26
外文资料翻译28
前 言
当今社会是数字化的社会,是数字集成电路广泛应用的社会。
数字集成电路本身在不断进行更新换代,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。
系统设计师更愿意自己设计专业集成电路(ASIC)芯片,而且希望设计周期尽可能短,最好在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程器件(FPLD)。
现场可编程门阵列(FPGA)即属其中应用最广泛的一种。
随着电子技术的发展,特别是大规模集成电路和计算机技术的研制和发展,让电子产品设计有了更好的应用市场,实现方法也有了更多的选择,而电子电路的设计却变得越来越复杂,使用“语言”进行电子设计已成为一种趋势。
现代电子系统设计方法是设计师自己设计芯片来实现电子系统的功能,将传统的固件选用及电路板设计工作放在芯片设计中进行。
在这些专业化软件中,EDA(ElectronicDesignAutomation)具有一定的代表性,EDA技术是一种基于芯片的现代电子系统设计方法。
基于EDA技术的现场可编程门阵列(FPGA)电(ASIC),在数字系统设计和控制电路中越来越受到重视。
VHDL语言是电子设计的主流硬件描述语言,它更适合进行行为描述,这种方式使得设计者专注于电路功能的设计,而不必过多地考虑具体的硬件结构。
基于EDA技术的现场可编程门阵列(FPGA)电路,提出现场可编程门阵列(FPGA)是近年来迅速发展的大规模可编程专用集成电路(ASIC),在数字系统设计和控制电路中越来越受到重视。
VHDL语言是电子设计的主流硬件描述语言,它更适合进行行为描述,这种方式使得设计者专注于电路功能的设计,而不必过多地考虑具体的硬件结构。
第1章FPGA概述
1.1FPGA的简介
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在可编程器件的基础上进一步发展的产物。
它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
目前以硬件描述语言所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。
1.2FPGA的应用
FPGA的应用可分为三个层面:
电路设计,产品设计,系统设计。
1.电路设计
连接逻辑,控制逻辑是FPGA早期发挥作用比较大的领域也是FPGA应用的基石。
事实上在电路设计中应用FPGA要求开发者要具备相应的硬件知识(电路知识)和软件应用能力(开发工具)。
2.产品设计
把相对成熟的技术应用到某些特定领域开发出满足行业需要并能被行业客户接受的产品。
这方面主要是FPGA技术和专业技术的结合问题,重点在性能,FPGA技术在这个领域是一个实现手段,FPGA因为具备接口,控制,功能IP,内嵌CPU等特点有条件实现一个构造简单,固化程度高,功能全面的系统产品设计。
3.系统级应用
系统级的应用是FPGA与传统的计算机技术结合,实现一种FPGA版的计算机系统如用Xilinx V-4,V-5系列的FPGA,实现内嵌POWER PC CPU,然后再配合各种外围功能,这个平台上跑LINIX等系统这个系统也就支持各种标准外设和功能接口了,这对于快速构成FPGA大型系统来讲是很有帮助的。
第2章VHDL硬件描述语言
2.1VHDL程序基本结构
一个相对完整的VHDL程序通常包含实体、结构体、配置、程序包和库5个部分。
程序模板如下:
LIBRARYlibraryname;
USElibraryname.packagename.all;
ENTITYentitynameIS
GENERIC
(parametername:
string:
=defaultvalue;
parametername:
integer:
=defaultvalue);
PORT
(inputname,inputname:
INSTD-LOGIC;
Inputvectorname:
INSTD_LOGIC_VECTOR(、time、character、string、integer、real。
2.2.4VHDL顺序语句
VHDL有如下六类基本顺序语句:
赋值语句、流程控制语句、等待语句、子程序调用语句、返回语句、空操作语句。
赋值语句有信号赋值语句和变量赋值语句两种。
流程控制语句共有五种:
IF语句、CASE语句、LOOP语句、NEXT语句、EXIT语句。
IF语句根据条件句产生的判断结果:
TRUE或FALSE,有条件地选择执行其后的顺序语句。
CASE语句根据满足的条件直接选择多项顺序语句中的一项执行。
空操作语句不完成任何操作,它常用于CASE语句中,利用它来表示所余的不用条件下的操作行为——满足所有可能的条件。
2.2.5VHDL并行语句
结构体中的并行语句主要有七种:
并行信号赋值语句、进程语句、块语句、条件信号赋值语句、元件例化语句(其中包括类属配置语句)生成语句、并行过程调用语句。
第3章系统设计与仿真
3.1系统介绍
交通灯控制器用于自动控制十字路口交通灯和计时器,指挥各种车辆和行人安全通行。
3.1.1设计任务
设计一个十字路口交通控制器,方向分为东南西北四个方向。
东西方向的红绿灯状态一样,南北方向的红绿灯状态一样。
每个方向上,有四盏灯,分别是左转灯、红灯、绿灯和黄灯。
左拐灯亮表示左转车辆可以通行;红灯亮表示左转和直行车辆禁行;绿灯亮表示直行车辆和右转的车辆可以通行;黄灯亮表示左转和直行的车辆即将禁行;倒计时显示器用来显示允许通行或禁止通行的时间倒计时。
3.1.2设计要求
在十字路口东西方向和南北方向各设一组左转灯、;显示的顺序为:
左转灯绿灯黄灯红灯。
在东西方向和南北方向各设一组倒计时显示器。
倒计时只显示对应方向上的红灯倒计时和绿灯倒计时。
其余的状态不显示倒计时。
左转灯、红灯、绿灯和黄灯亮的时间分别是15秒、80秒、45秒、5秒。
状态表如表3-1所示:
表3-1交通灯状态转换表
状态
S0
S1
S2
S3
S4
S5
东西方向
红
红
红
红左转
绿
黄
亮灯
15
45
5
15
45
5
南北方向
红左转
绿
黄
红
红
红
亮灯
15
45
5
15
45
5
3.2系统设计仿真
对于交通灯控制器,可基于QuartusII软件,采用层次化混合输入方式进行设计,即顶层采用原理图设计,底层采用VHDL语言设计。
3.2.1顶层框图的设计
顶层原理图设计可以依据系统框图进行,有分频模块、控制模块、倒计时模块、红绿灯显示模块、译码模块、译码显示模块6六部分组成,如图3-1所示:
图3-1顶层原理图系统框图
3.2.2时序状态图的设计
图3-2交通灯时序状态图
3.2.3工程设计流程框图:
图3-3工程设计流程框图
3.2.4芯片的选择
在这次毕业设计中,我们选用的FPGA芯片是Altera公司的Cyclone(飓风)系列的芯片,型号为:
EP1C3T144C8。
它是基于1.5V的,采用0.13um全铜SRAM工艺、TQFP封装,有5980个逻辑单元,2个锁相环,20个M4KRAM块,其中每个RAM为4kbit,可以另加一位奇偶校验位。
3.2.5各个模块的设计与仿真
1.模块设计
该模块可将频率为1KHZ的脉冲波,经过分频变为频率为1HZ的脉冲波,这样我们就得到了周期为1S的脉冲波。
分频器程序清单如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityfenpinqiis
port(clk1khz:
instd_logic;
clk1hz:
outstd_logic);
endfenpinqi;
architectureaoffenpinqiis
begin
process(clk1khz)
variableq:
integer:
=0;
variabler:
std_logic:
='0';
begin
ifclk1khz'eventandclk1khz='1'then
ifq=512thenr:
=notr;q:
=0;
elseq:
=q+1;
endif;
clk1hz<=r;
endif;
endprocess;
enda;
分频器程序仿真结果如图3-4所示:
图3-4分频器程序仿真结果图
在分频器程序仿真结果图中,clk1khz为输入脉冲信号,频率为1khz;clk1hz为输出脉冲信号,频率为1hz。
从图中,我们可以看出clk1hz的周期为1s。
这表明程序的确把1khz的信号分频成1hz的信号。
2.模块设计
control模块可根据clk的脉冲信号输出S的值,下游模块根据S的值来决定红绿灯的状态。
同时对倒计时的信号赋初值。
control模块程序清单:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycontrolis
port(clk:
instd_logic;
s:
outstd_logic_vector(2downto0);
loadat,loadbt:
outstd_logic;
at,bt:
outintegerrange0to80);
endcontrol;
architectureaofcontrolis
signalt:
integer;
begin
process(clk)
begin
ifclk'eventandclk='1'then
loadat<='0';loadbt<='0';
ift=0thens<="000";at<=80;loadat<='1';
elsift=15thens<="001";bt<=45;loadbt<='1';
elsift=60thens<="010";
elsift=65thens<="011";bt<=80;loadbt<='1';
elsift=80thens<="100";at<=45;loadat<='1';
elsift=125thens<="101";
endif;
t<=t+1;
endif;
ift=130thent<=0;endif;
endprocess;
enda;
control模块程序仿真结果如图3-5所示:
图3-5control模块程序仿真结果图
在control模块程序仿真结果图中,只有一个输入信号clk,它是一个频率为1hz的时钟脉冲信号,输出信号有3个分别是s、at、bt。
程序中,通过变量t的值来确定输出信号s的值,并由此确定将要赋得倒计时的初值,然后赋给at,bt。
在每次给at,bt赋值时,都会使另一个输出信号loadat,loadbt变成高电平,从而可以触发下一模块的装载。
3.daojishi模块设计
该模块用来接收control模块的输出作为初值,并进行减一操作,最后把减一得结果输出。
程序里每检测到一个脉冲clk,就进行一次减一操作。
atdaojishi模块程序清单:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityatdaojishiis
port(clk,loadat:
instd_logic;
atin:
inintegerrange0to80;
atout:
outintegerrange0to80);
endatdaojishi;
architectureaofatdaojishiis
signalcountat:
integerrange0to80;
begin
process
begin
waituntilrising_edge(clk);
ifloadat='1'thencountat<=atin;
elsecountat<=countat-1;
endif;
endprocess;
atout<=countat;
enda;
atdaojishi模块程序仿真结果如图3-6所示:
图3-6atdaojishi模块程序仿真结果图
在atdaojishi模块程序仿真结果图中,clk为1hz的输入信号,loadat为at计数器的装载信号,当loadat为高电平时,将输入信号atin的值装载到计数器中,开始执行减一操作,每接受一次clk,执行一次,并将结果输出。
4.daojishi模块设计
该模块用来接收control模块的输出作为初值,并进行减一操作,最后把减一得结果输出。
程序里每检测到一个脉冲clk,就进行一次减一操作。
btdaojishi模块程序清单:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitybtdaojishiis
port(clk,loadbt:
instd_logic;
btin:
inintegerrange0to80;
btout:
outintegerrange0to80);
endbtdaojishi;
architectureaofbtdaojishiis
signalcountbt:
integerrange0to80;
begin
process
begin
waituntilrising_edge(clk);
ifloadbt='1'thencountbt<=btin;
elsecountbt<=countbt-1;
endif;
endprocess;
btout<=countbt;
enda;
btdaojishi模块程序仿真结果如图3-7所示:
图3-7btdaojishi模块程序仿真结果图
在btdaojishi模块程序仿真结果图中,clk为1hz的输入信号,loadbt为bt计数器的装载信号,当loadbt为高电平时,将输入信号btin的值装载到计数器中,开始执行减一操作,每接受一次clk,执行一次,并将结果输出。
5.Main模块设计
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitymainis
port(s:
instd_logic_vector(2downto0);
lrgy:
outstd_logic_vector(7downto0));
endmain;
architectureaofmainis
begin
process(s)
variableb:
std_logic_vector(7downto0);
begin
casesis
when"000"=>b:
="";
when"001"=>b:
="";
when"010"=>b:
="";
when"011"=>b:
="";
when"100"=>b:
="";
when"101"=>b:
="";
whenothers=>b:
="";
endcase;
lrgy<=b;
endprocess;
enda;
main模块程序仿真结果如图3-8所示:
图3-8main模块程序仿真结果图
Main模块可根据输入的S信号,输出对应的红绿灯信号。
直接改变并驱动红绿灯的亮和灭。
在main模块程序仿真结果图中,S为输入信号,用来表明整个红绿灯的状态(一共6个状态:
S0~S5);lrgy为输出信号,代表整个红绿灯的亮和灭的情况,灯的排序从高位到低位排列,方向上是先东西方向,后南北方向。
也就是说,序列为:
东西方向左转灯、红灯、绿灯、黄灯,然后南北方向左转灯、红灯、绿灯、黄灯。
从图中我们可以看出S的状态从“000”到“101”,共六个状态,每一个状态都对应相应的红绿灯亮灭的状态,仿真结果完全正确,符合预期。
6.码模块设计
译码程序将输入的用来显示的两位倒计时数值,分解成四个整形的数值,以供后面的译码显示模块继续译码显示。
译码程序清单如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityto8421bcdis
port(at,bt:
inintegerrange0to80;
aout1,aout2,bout1,bout2:
outintegerrange0to9);
endto8421bcd;
architectureaofto8421bcdis
begin
process(at,bt)
begin
ifat>=70then
aout1<=7;
aout2<=at-70;
elsifat>=60then
aout1<=6;
aout2<=at-60;
elsifat>=50then
aout1<=5;
aout2<=at-50;
elsifat>=40then
aout1<=4;
aout2<=at-40;
elsifat>=30then
aout1<=3;
aout2<=at-30;
elsifat>=20then
aout1<=2;
aout2<=at-20;
elsifat>=10then
aout1<=1;
aout2<=at-10;
elsifat>=0then
aout1<=0;
aout2<=at;
endif;
ifbt>=70then
bout1<=7;
bout2<=bt-70;
elsifbt>=60then
bout1<=6;
bout2<=bt-60
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 基于 FPGA 交通灯 控制器 毕业设计 论文