图3.2 方案二系统组成框图
方案三:采用可编程逻辑器件来实现
该设计方案以CPLD器件为核心,用VHDL编程实现各计时单元以及控制电路的功能,在Max+Plus Ⅱ软件上仿真调试,显示电路采用7段得共阴数码管。系统组成框图如图3.3所示:
标准信号 信号灯控制电路 信号灯 各定时电路 显示控制电路 译码显示电路 图3.3 系统组成框图
(2)方案论证
方案一采用的是集成硬件电路的搭建,各个模块之间的接口很难保证,而且用到大量芯片来搭建各个模块,整个电路系统体积相对较大,增加了系统的调试难度,不满足现代社会发展的需求。
方案二采用的以单片机为核心,电路整体简单,扩展性良好,很大程度上降低了调试难度,但是不满足本次课题基于VHDL语言的要求,所以不采用。
方案三以CPLD器件为核心,以VHDL语言为基础,编程具有很大的灵活性,而且这种语言也易于掌握和理解,调试和修改都比较容易,满足课题的要求,所以最终选择方案三。 3.2 具体设计以及模块划分
设计方案:
该设计分为6个基本模块:标准信号电路、信号灯控制电路、信号灯、各定时单元电路、显示控制电路、译码显示电路,组成框图如上图3.3。
标准信号为整个电路提供1Hz信号,信号灯控制电路控制8路灯的亮灭,定时电路分为45s、10s、5s、60s定时单元,分别控制8路灯的亮灭时间,显示控制电路控制每一路灯的倒计时显示时间,译码后通过数码管显示。 3.3 工作原理
交通灯的亮灭规律为:甲车道的绿灯亮,乙车道的红灯亮,甲车道通车,经45s后,甲车道绿灯灭,甲车道左拐灯亮,经10s后,甲车道黄灯开始闪烁,同时乙车道黄灯开始闪烁,闪烁5s后,甲车道红灯亮,而同时乙车道的绿灯亮,乙车道开始通车,经45s后,乙车道
绿灯灭,乙车道的左拐灯亮,经10s后,甲乙车道黄灯同时开始闪烁。闪烁5s后,再切换到甲车道,重复上述过程。在试验箱开始表示甲路的绿色发光二极管亮45s,然后依次是表示左拐的蓝色二极管亮10s和黄色二极管亮5s,此过程乙路的红色二极管亮60s;此后乙路的绿色发光二极管,蓝色发光二极管和黄色发光二极管依次亮45s、10s、5s,此过程甲路红色发光二极管亮60s。重复以上过程。在试验过程中的四个数码管,分两个为一组,前一
组表示甲路的倒计时时间,后一组表示乙路的倒计时时间。 3.4 交通灯工作示意图
十字路口的东西方向和南北方向分别安装红、绿、黄、蓝交通信号灯,设置示意图如图3.4所示。 南北方向和东西方向各设四路信号灯,分别代表红灯、黄灯、绿灯、左拐灯。交通规则明确显示必须按照交通指示灯来执行,尤其是左拐,只有在左拐灯亮的时候才可以左拐。图3.4只是模拟的交通示意图,但是结合上述原理很容易理解。
乙
甲路 路
图3.4交通灯工作示意图
4 系统设计
4.1顶层电路设计
交通灯控制器的顶层电路图是采用硬件描述语言设计的一个复杂电路系统,而且采用自顶向下的设计思想,将系统按功能逐层分割的层次化设计方法。在顶层设计中,要对内部各功能模块的连接关系和对外的接口关系进行描述,而功能模块实际的逻辑功能和具体的实现形式则由下一层模块来描述。
系统的顶层电路如图4.1,CLK为整个电路提供1Hz的标准信号,用四个定时单元60s 、45s、10s、5s分别控制四盏交通指示灯的倒计时显示时间,交通灯控制部分JTDKZ控制交通灯的每一种状态,显示控制部分XSKZ部分主要控制交通灯的亮灭时间,图中译码器是47译码器,译码后数据输出到共阴数码管。
图4.1 顶层电路图
4.2 交通灯主制模块
主要控制部分分别列出四种颜色灯的亮灭状态,分为六种状态A、B、C、D、E、F,每种状态的持续时间也即是对应控制每一路的四种灯亮的时间。如图4.2交通灯控制模块生成的器件,CLK是输入标准时钟信号,AR、AY、AG、AL为输出信号控制甲车道的四盏指示灯,BR、BY、BG、BL为输出信号控制乙车道的四盏指示灯,部分程序如下: entity jtdkz is
port(clk:in std_logic;
ar,ay,ag,al,br,by,bg,bl:out std_logic); --定义各路信号灯
end entity jtdkz;
architecture art of jtdkz is
type state_type is(A,B,C,D,E,F); --信号灯的亮灭状态分为六种 signal state:state_type; begin
cnt:process(clk)is
variable s:integer range 0 to 60; --整形变量s范围0到60 when A=>ar<='0';ay<='0';ag<='1';al<='0'; --A状态各路灯的亮灭 br<='1';by<='0';bg<='0';bl<='0';
if s=45 then --a路绿灯亮状态持续45s state<=B;clr:='0';en:='0'; else
state<=A;clr:='1';en:='1';
4.3 定时单元以及显示控制、译码电路
(1)45s定时单元控制两路绿灯的显示时间,从DOUT45端口输出到显示控制模块的AIN45 端口,45s定时单元模块生成器件如图4.3所示,EN45A、EN45B分别甲路和乙路绿灯的使能信号控制应该哪一路的绿灯亮。45s定时单元主要的VHDL程序段如下:
entity cnt45s is
port (clk,en45a,en45b:in std_logic; 输入的标准时钟和使能信号 dout45:out std_logic_vector(7 downto 0));--输出8位二进制数 end entity cnt45s;
architecture art of cnt45s is
signal cnt6b:std_logic_vector(5 downto 0); begin
process(clk, en45a,en45b) is begin
if(clk'event and clk='1') then
if en45a='1'or en45b='1' then cnt6b<=cnt6b+1;--控制输出数据 else cnt6b<=\
(2)60s定时单元控制两路红灯的显示时间,从DOUT60端口输出到显示控制模块的
AIN60 端口,60s定时单元模块生成器件如图4.4所示,EN60A、EN60B分别甲路和乙路红灯的使能信号控制应该那一路红灯亮。60s定时单元的主要程序段如下: entity cnt60s is
port (clk,en60a,en60b:in std_logic; --输入的标准时钟和使能信号 dout60:out std_logic_vector(7 downto 0));--输出8位二进制数 end entity cnt60s;
architecture art of cnt60s is
signal cnt6b:std_logic_vector(5 downto 0); begin
process(clk, en60a,en60b) is begin
if(clk'event and clk='1') then
if en60a='1'or en60b='1' then cnt6b<=cnt6b+1; --使能信号控制 else cnt6b<=\
(3)10s定时单元控制两路左拐灯的显示时间,从DOUT10端口输出到显示控制模块的AIN10 端口,10s定时单元模块生成器件如图4.5所示,EN10A、EN10B分别甲路和乙路红灯的使能信号控制应该那一路红灯亮。10s定时单元的主要程序段如下:
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于VHDL交通灯控制电路设计毕业设计论文 - 图文(4)在线全文阅读。
相关推荐: