交通灯控制器的设计正文Word格式文档下载.docx
《交通灯控制器的设计正文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《交通灯控制器的设计正文Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
利用EDA技术(特指IES/ASIC自动设计技术)进行电子系统的设计,具有以下几个特点:
①用软件的方式设计硬件;
②用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;
③设计过程中可用有关软件进行各种仿真;
④系统可现场编程,在线升级;
⑤整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。
因此,EDA技术是现代电子设计的发展趋势。
EDA技术在进入21世纪后,得到了更大的发展。
在仿真和设计两方面支持标准硬件描述语言的功能越来越强大,软硬件技术也进一步得到了融合,在电子行业的产业领域、技术领域和设计应用领域得到了进一步的肯定,使得复杂电子系统的设计和验证趋于简单化。
1.3可编程逻辑器件概述
可编程逻辑器件(简称PLD)是允许用户编程(配置)实现所需逻辑功能的电路,一般可利用计算机辅助设计,即用原理图、状态机、硬件描述语言(VHDL)等方法来表示设计思想,经过一系列编译或装换程序,生成相应的目标文件,再由编程器或下载电缆将设计文件配置到目标器件中,这时的可编程逻辑器件就可作为满足用户需求的专用集成电路使用了。
1.4FPGA/CPLD概述
FPGA(现场可编程门阵列)和CPLD(复杂可编程逻辑器件)都是可编程逻辑器件,他们是在PAL,GAL等逻辑器件的基础上发展起来的。
同以往的PAL,GAL相比较,FPGA/CPLD的规模比较大,它可以替代几十甚至几千块通用IC芯片。
这样的FPGA/CPLD实际上就是一个子系统部件。
这种芯片受到世界范围内电子工程设计人员的广泛关注和普遍欢迎。
比较典型的就是Altera公司和Xilinx公司的CPLD器件系列和FPGA器件系列,他们开发较早,占用了较大的PLD市场。
1.5硬件描述语言介绍
常用的硬件描述语言有VHDL、Verilog、ABEL。
VHDL:
作为IEEE的工业标准硬件描述语言,在电子工程领域,已成为事实上的通用硬件描述语言。
Verilog:
支持的EDA工具较多,适用于RTL级和门电路级的描述,其综合过程较VHDL稍简单,但其在高级描述方面不如VHDL。
ABEL:
一种支持各种不同输入方式的HDL,被广泛用于各种可编程逻辑器件的逻辑功能设计,由于其语言描述的独立性,因而适用于各种不同规模的可编程器件的设计。
2总体方案设计
通过查阅大量相关技术资料,并结合自己的实际知识,我主要提出了两种技术方案来实现系统功能。
下面我将首先对这两种方案的组成框图和实现原理分别进行说明,并分析比较它们的特点,然后阐述我最终选择方案的原因。
2.1方案比较
本模块主要介绍以下两种方案原理,分析、比较各方案的优缺点,并最终确定所选的方案
2.1.1方案一
用传统的数字电路设计并制作。
数字电路制作交通灯的制作流程图为如图2.1所示。
图2.1数字电路设计流程图
图中所示,选用JK触发器,设状态编码为:
S0=00
S1=01
S2=11
S3=10,其输出为Q1Q0倒计时显示采用七段数码管作为显示,它由计数器驱动并显示计数器的输出值。
计数器选用集成电路74190进行设计。
74190是十进制同步可逆计数器,它具有异步并行置数功能、保持功能。
74190没有专用的清零输入端,但可以借助QA、QB、QC、QD的输出数据间接实现清零功能。
现选用两个74190芯片级联成一个从可任意设定时间00~99倒计至00的计数器,其中作为个位数的74190芯片的CLK接秒脉冲发生器(频率为1),再把个位数74190芯片输出端的QA、QD用一个与门连起来,再接在十位数74190芯片的CLK端。
当个位数减到0时,再减1就会变成9,0(0000)和9(1001)之间的QA、QD同时由0变为1,把QA、QD与起来接在十位数的CLK端,此时会给十位数74190芯片一个脉冲数字减1,相当于借位。
整个交通灯控制系统需要有4个时间显示器,28个交通灯。
我在这里共接了6个时间显示器,其中4个用于交通倒计时,另外2个用于显示当前置数。
2.1.2方案二
采用模块层次化设计,将此设计分为20分频器模块,状态配置电路模块和组合逻辑电路模块。
将三个模块再分用VHDL语言编写成,做成原理图模块,用原理图输入法做整个设计的顶层文件。
在选择总时钟脉冲信号CPA时我们选择的是555时钟控制器,而后面的部分选择FPGA的TOP-DOWN的设计方案。
方案二原理框图如图2-2所示。
图2.2交通控制灯逻辑电路框图
2.2方案论证
如上所述,采用传统的数字电路设计并制作方案。
电路复杂,设计复杂,设计思维能力要求较高,调试起来也有一定的难度。
加上电路需要的硬件多,成本高。
用VHDL程序语言来实现简单易懂,电路硬件比较少,借助QUARTUS2软件来设计顶层文件和仿真波形。
2.3方案选择
我选择方案二,此设计方案方便,简单,方法易懂,易操作,也易于寻找程序中的错误,故我采用此方案。
3单元模块电路设计
本节主要介绍系统各单元模块的具体功能、电路结构、工作原理、以及各个单元模块之间的联接关系;
同时本节也会对相关电路中的参数计算、元器件选择、以及核心器件进行必要说明。
以下是交通灯控制系统的模块框图。
图3.1交通灯控制系统模块框图
3.15V电源的设计
任何电路都要一个电源,它是由四个三极管和一个齐纳二极管和电容加上LM2576构成的!
本电路主要是通过LMP2576的稳压功能加上需要的外围部件构成的稳压电路。
其原理图如图3.2所示。
图3.25V电源稳压发生电路
LM2576系列是美国国家半导体公司生产的3A电流输出降压开关型集成稳压电路,它内含固定频率振荡器(52kHz)和基准稳压器(1.23V),并具有完善的保护电路,包括电流限制及热关断电路等,利用该器件只需极少的外围器件便可构成高效稳压电路。
LM2576系列包括LM2576(最高输入电压40V)及LM2576HV(最高输入电压60V)二个系列。
各系列产品均提供有3.3V(-3.3)、5V(-5.0)、12V(-12)、15V(-15)及可调(-ADJ)等多个电压档次产品。
此外,该芯片还提供了工作状态的外部控制引脚。
LM2576系列开关稳压集成电路的主要特性如下[2]:
●最大输出电流:
3A;
●最高输入电压:
LM2576为40V,LM2576HV为60V;
●输出电压:
3.3V、5V、12V、15V和ADJ(可调)等可选;
●振东频率:
52kHz;
●转换效率:
75%~88%(不同电压输出时的效率不同);
●控制方式:
PWM;
●工作温度范围:
-40℃~+125℃
●工作模式:
低功耗/正常两种模式可外部控制;
●工作模式控制:
TTL电平兼容;
●所需外部元件:
仅四个(不可调)或六个(可调);
●器件保护:
热关断及电流限制;
3.23.3V电源转换电路
此模块通过芯片LM1117实现电源5V转3.3V功能,其电路图如图3.3所示。
图3.35v转3.3v电路图
LM1117是一个低压差电压调节器系列。
其压差在1.2V输出,负载电流为800mA时为1.2V。
它与国家半导体的工业标准器件LM317有相同的管脚排列。
LM1117有可调电压的版本,通过2个外部电阻可实现1.25~13.8V输出电压范围。
另外还有5个固定电压输出(1.8V、2.5V、2.85V、3.3V和5V)的型号。
LM1117提供电流限制和热保护。
电路包含1个齐纳调节的带隙参考电压以确保输出电压的精度在±
1%以内。
LM1117系列具有LLP、TO-263、SOT-223、TO-220和TO-252D-PAK封装。
输出端需要一个至少10uF的钽电容来改善瞬态响应和稳定性。
3.3时钟电路的设计
秒信号产生器的电路是利用555定时器组成的秒信号发生器。
其电路原理图如图3.4所示。
图3.4秒信号产生器原理图
NE555芯片有单稳态电路功能,可发生方波信号,可适当的选择电阻、电容,使其输出信号的周期为1秒。
本电路输出脉冲的周期为:
T=0.7*(R1+2*R2)*C,
若T=1s,令C=10μF,R1=39kΩ,则R2=51kΩ。
取一固定值电阻47kΩ与一5kΩ的电位器相串联代替电阻R2。
在调试电路时调节电位器Qp,使输出脉冲周期为1S.
555时基电路具有以下几个特点:
(1)555时基电路,是一种将模拟电路和数字电路巧妙结合在一起的电路;
(2)555时基电路可以采用4.5~15V的单独电源,也可以和其它的运算放大器和TTL电路共用电源;
(3)一个单独的555时基电路,可以提供近15分钟的较准确的定时时间;
(4)555时基电路具有一定的输出功率,最大输出电流达200mA,可直接驱动继电器、小电动机、指示灯及喇叭等负载。
因此,555时基电路可用作:
脉冲发生器、方波发生器、单稳态多谐振荡器、双稳态多谐振荡器、自由振荡器、内振荡器、定时电路、延时电路、脉冲调制电路、仪器仪表的各种控制电路及民用电子产品、电子琴、电子玩具等。
3.4JTAG基本工作原理
JTAG(JointTestActionGroup&
#0;
联合测试行动小组)是一种国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试。
现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。
标准的JTAG接口是4线:
TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
以下是JTAG的下载原理图。
图3.5JTAG下载原理
JTAG最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP(TestAccessPort&
测试访问口)通过专用的JTAG测试工具对进行内部节点进行测试。
JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。
现在,JTAG接口还常用于实现ISP(In-Systemrogrammable&
在线编程),对FLASH等器件进行编程。
JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程现再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。
JTAG接口可对PSD芯片内部的所有部件进行编程。
3.5复位电路
为确保系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。
一般电路正常工作需要供电电源为5V±
5%,即4.75~5.25V。
由于电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,电路开始正常工作。
图3.6复位电路原理图
3.6分频模块
分频器实现的是将高频时钟信号转换成低频的时钟信号,用于触发控制器、计数器和扫描显示电路。
以下是20分频的VDHL程序语言。
modulefp_5(clk,clk1,reset);
inputclk;
inputreset;
outputclk1;
regclk1;
reg[8:
0]j;
always@(posedgeclk)
begin
if(!
reset)//reset=0EN
clk1<
=0;
elseif(j==9)
begin
clk1<
=~clk1;
j<
end
else
j<
=j+1;
end
endmodule
3.7状态配置组合电路模块
位于十字路口的交通灯,在A方向和B方向各有红,黄,绿三盏灯,按下表所列顺序进行循环。
其中1表示灯亮,0表示灯灭。
实验中假设交通灯按照10s的节拍工作,各个灯亮的时间相等。
以下是交通灯循环顺序表:
表3-1交通灯循环顺序
A方向
B方向
红灯
黄灯
绿灯
1
以下是实现该模块的VHDL程序语言:
moduletraffic(clk1,reset,ra,ya,ga,rb,yb,gb);
inputclk1;
outputra,ya,ga,rb,yb,gb;
regra,ya,ga,rb,yb,gb;
reg[3:
0]state;
parameter
state0=3'
b000,
state1=3'
b001,
state2=3'
b010,
state3=3'
b011,
state4=3'
b100,
state5=3'
b101,
state6=3'
b110,
state7=3'
b111;
always@(posedgeclk1ornegedgereset)
begin
ra<
ya<
ga<
rb<
yb<
gb<
state<
=state0;
end
else
case(state)
state0:
begin
ra=1;
ya=0;
ga=0;
rb=0;
yb=0;
gb=1;
state<
=state1;
end
state1:
ra<
=1;
rb<
=state2;
state2:
=state3;
state3:
begin
=state4;
end
state4:
=state5;
state5:
=state6;
state6:
=state7;
state7:
default:
ra<
end
endcase
end
3.830S计数与七段显示译码模块
通过日常生活中的观察,我发现在一些交通路口已经开始使用倒计时显示器,它们的作用就是用来提示车辆行人目前还有多长时间信号灯会发生变化,这样车辆行人就可以提前判断是否有足够的时间通过路口,进而就可以避免很多意外事故的发生。
如果采用发光二极管作为倒计时的显示装置就会使司机和行人一目了然,同样也能够起到很好的提示作用。
所以,倒计时控制电路最主要的功能就是负责接收电路输出的值,然后将其转换成BCD码,并利用发光二极管显示出来,让车辆行人能够清楚地知道再过多久信号灯就会发生变化。
以下是实现倒计时30秒的VHDL程序语言:
moduleled_30(clk1,reset,QH,QL);
output[3:
0]QH,QL;
reset)
QH[3:
0]<
QL[3:
elseif(QH==0&
QL==0)
QH[3:
=3;
QL[3:
elseif(QL[3:
0]==0)
=9;
=QH[3:
0]-1;
=QL[3:
0];
4系统调试
4.1分频部分的调试
此设计用的是20分频,f/f0=2N,N=10。
以下是仿真波形:
图4.1分频模块的仿真波形
已知输入信号CLK的频率为20HZ,经过20分频器分频后得到输出信号CLK1周期为20秒。
4.2状态配置组合电路的调试
该模块作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段译管的分译码电路。
此外,当检测到特殊情况(Hold=‘1’)发生时,无条件点亮红色的发光二极管。
图4.2状态配置模块仿真图
4.3七段数码管的调试
此模块主要是实现倒计时及显示时间,实现30秒倒计时并且10秒变换一次灯的颜色,仿真波形如下:
图4.330秒倒计时仿真图
4.4总电路的调试
以下是在quartus2上所设计的交通灯控制器电路,包括20分频器,状态配置电路和组合逻辑电路,30秒LED倒计时器实现该设计的功能。
图4.4总电路图
图4.5总电路仿真波形图
如图所示,在ra(a通道红灯)灭到gb(b通道绿灯)亮的过程之中,有一个中间态就是yb,ya先后亮起,待到一定时间后才有gb(b通道绿灯)亮,这样的结果满足状态转换图所示流程同时也符合实际的运用要求,仿真结果正确。
5系统功能
本设计的交通信号灯控制电路,主要适用于在两条干道汇合点形成的十字交叉路口,路口设计两组红绿灯分别对两个方向上的交通运行状态进行管理。
交通灯的持续闪亮时间由键盘输入控制。
灯亮时序如图1所示,当B方向的红灯亮时,A方向对应绿灯亮,由绿灯转换成红灯的过渡阶段黄灯亮,即B方向红灯亮的时间等于A方向绿灯和黄灯亮的时间之和。
同理,当A方向的红灯变亮时,B方向的交通灯也遵循此规则。
各干道上安装有数码管,以倒计时的形式显示本道各信号灯闪亮的时间。
当出现特殊情况时,各方向上均亮红灯,倒计时停止。
特殊运行状态结束后,控制器恢复原来的状态,继续运行。
6设计总结
在胡兵老师和研究生刘希军的精心指导和严格要求下,经过我们自己的努力,终于完成了这次课程设计。
通过本次设计的学习,我深深地体会到了设计课的重要性和目的性所在。
为了完成项目,在图书馆找到了许多相关的资料,大大扩充自己的知识面,是许多以前想解决却无法解决的困难迎刃而解。
对软件设计流程有了更深刻的理解,掌握了EDA软件的使用。
将书本上的理论知识和实际有机地结合起来,锻炼了实际分析问题和解决问题的能力,提高了适应实际的能力,为今后的学习和实践打下了良好的基础。
本次EDA课程设计的目的和意义:
通过交通灯控制器,了解EDA技术,了解并掌握VHDL硬件描述语言的设计方法和思想,巩固和综合运用所学过的原理知识,提高分析、解决实际问题的独立工作能力。
同时获得了丰富的理论知识,极大地提高了实践能力,对FPGA技术方面有了更深的了解,这对我们今后进一步学习有了极大地帮组,通过大量阅读资料,我拓宽了自己的知识面,并懂得将所学知识融会贯通到实践中去。
在获得知识的同时,我也认识到自己还需要学习的东西很多,理论需要很好的结合实践,全面分析并解决问题的能力有待提高。
另外,此次课程设计还获得了我们的同学大力支持,在我们对有些知识掌握不够时,是研究生及时出手帮助我们的课程设计能够及时完成。
此次,我们衷心感谢各位