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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

结束语
本次实验我们受益良多,在写和更改程序 的过程中,我们对VHDL语言有了更深一步 的了解,并且在与组员探讨的过程中,加 深了对十字路口交通灯的状态转换的了解, 明白了绿红、黄红、红绿、红黄4个状态之 间的循环往复,也加深了团队之间的友谊
三、复位键仿真检测图

此图为复位键urgency的检测,当urgency置1时则为特殊 状态,两个方向都禁止通行,指示红灯,图中LED显示的 为100001,即就是东西南北的红灯亮。数码管的控制端 East_West,South_North均显示00000000,即就是数码管 显示为0.
四、复位后转为普通状态仿真检测图
交通灯设计
指导老师: 作 者:
摘要

本系统采用EDA实验箱设计交通灯控制器,模拟实现了 红、绿、黄灯指挥交通的功能。它直接采用FPGA/CPLD 芯片开发,用VHDL语言编程和QUARTUSⅡ 6.0设计。交 通灯控制器设计,系统的阐述了用FPGA/CPLD芯片实现 数字电路的设计过程,展示了FPGA/CPLD芯片的强大功 能和非凡特性。本交通灯控制器适用东西和南北方向的车 流量大致相同的路口,红灯30S,绿灯25S,黄灯5S,同 时用数码管指示当前状(红、绿、黄灯)的剩余时间。另 有一个紧急状态,当特殊情况发生时,两个方向都禁止通 行,指示红灯,紧急状态解除后,重新计时并指示时间。
3 软件仿真

本实验仿真应用的是QUARTUSⅡ 6.0软件 的内部仿真程序,在仿真过程中高电平置1, 有效状态也为高电平1,若红绿黄灯置1时 则证明其工作处于亮的状态。在东西南北 方向的数码管显示的数字是由BCD码转换 的,00000000则显示是00,00011001显 示为19。
一、程序编译后的截图

编写完程序后的编 译,其中有一警告, 是指发现管脚没有 送入时钟信号,属 于编译中正常现象, 因此未作程序更改。
二、程序编译后的整体仿真图

此图为该程序波形图整体仿真,通过Edit->End Time 来设定仿真结束 时间为65.5S,将clk的时钟周期设置为1S,点击save保存后进行仿真, 上图为总的输出波形。其中已经将交通灯之间的转换显示出来了。

下图为当紧急状况结束时,也就是urgency置0时转为普通状态的红 绿灯显示,图中的LED显示为100100,也就是东西方向红灯,南北 方向绿灯,并且能保持为25秒(可由上面的时间轴看出)
五、普通状态中红绿黄灯之间的转换

此图为东西南北的红绿灯转为红黄灯再转为绿红灯的三种 状态之间的转换,可从图中的LED之间的100100和 100010以及001001的跳变可知LED的转换,并且可从时 间轴上看出时间的跳变。

(2)如何准确的显示 数码管的剩余时间? 解决方案:为了能直 接将剩余时间显示在 数码管中,分别对信 号以BCD码的规则进 行处理,因此将这两 个信号直接送往BCD 码译码器电路就可以 直接显示相关的数字 了。






ELSIF (East_West(3 DOWNTO 0) = 0 AND South_North (3 DOWNTO 0) = 0) THEN East_West <= East_West - 7; --BCD码减法转换 South_North <= South_North - 7; ELSIF (East_West(3 DOWNTO 0) = 0 AND South_North (3 DOWNTO 0) = 0) THEN East_West <= East_West - 7; --BCD码减法转换 South_North <= South_North - 1; ELSIF (South_North (3 DOWNTO 0) = 0 AND East_West(3 DOWNTO 0) = 0) THEN South_North <= South_North - 7; --BCD码减法转换 East_West <= East_West - 1; ELSE East_West <= East_West - 1; South_North <= South_North - 1; --不满足上述特殊情况时 减一
六、普通状态中红绿黄灯之间的转换

此图为东西南北的绿红灯转变为黄红灯在转换为红绿灯的跳变,可从 图中的LED之间的001001和010001以及100100的跳变可知LED的转 换,并且可从时间轴上看出时间的跳变。
Fra Baidu bibliotek 硬件验证




(1) 确定管脚对应关系。输入信号urgency与按键K1对应;输出信号 led与发光二极管D5~D0一一对应;输出信号East_West和 South_North与电路板上的数码管显示译码驱动器引脚相连,其中 East_West的低4位与数码管U1的十进制输入管脚相连,East_West 的高4位与数码管U2的十进制输入管脚相连,South_North的低4位与 数码管U3的十进制输入管脚相连,South_North的高4位与数码管U4 的十进制输入管脚相连。 (2)由QuartusⅡ进行管脚分配。K1在MAXⅡ芯片上对应的管脚号 为27;DO~D5在MAXⅡ芯片上对应的管脚号依次为88~83;数码管 U1的十进制输入管脚在MAXⅡ芯片上对应的管脚号为100~97;数码 管U2的十进制输入管脚在MAXⅡ芯片上对应的管脚号为96、95、92、 91;数码管U3的十进制输入管脚在MAXⅡ芯片上对应的管脚号为61、 58~56;数码管U4的十进制输入管脚在MAXⅡ芯片上对应的管脚号为 55~52. (3)电平定义。以D5~D0的亮代表输出信号对应位的电平为“1”, D5~D0的灭代表输出信号对应位的电平为“0”;按键K1按下时相当于 输入信号为低电平。 (4)运行验证。按下K1,表示进入紧急状态,此时东西方向与南北 方向的红灯都亮,数码管均显示“0”。弹出K1后,可观察到相应灯的 亮灭情况,各灯的亮灭时间通过数码管可以显示,经验证能实现交通 灯控制功能。以下为仿真时各输入端的端口对应表。
1 交通灯控制器的实现

东西、南北方向的不同状 态组合(红绿、红黄、绿 红、黄红四个状态) ,右 图为两交通灯的运行状态。 但我们可以简单地将其看 成两个(东西、南北)减 1的计数器,通过监测两 个方向的计数值,可以检 测红黄绿灯组合的跳变。
2 软件程序设计
东西方向
南北方向
led(5) led(4) led(3) led(2) led(1) led(0)
仿真时各输入端的端口对应表
设计过程中的问题及解决办法

(1)如何使东西南北方 向的红绿、红黄、绿红、 绿黄四种状态之间进行跳 变?


解决方案:将这四种状 态简单的看成两个(东西、 南北)减1计数的计数器, 通过检测两个方向的计数 值来判别红绿灯组合的跳 变。



ELSIF (East_West = "00000101" AND South_North = "00000000") THEN East_West <= "00000100"; South_North <= "00000100"; led <= "100010"; --东西红灯余5秒,南 北黄灯5秒
黄灯 红灯 黄灯 绿灯 绿灯 红灯 (30S) (5S) (25S) (25S) (5S) (30S)
交通灯控制器程序




ENTITY traffic IS PORT( clk : IN STD_LOGIC; --时 钟信号(1Hz) urgency : IN STD_LOGIC; --紧急状 态控制端 led : BUFFER STD_LOGIC_VECTOR(5 DOWNTO 0); --红黄绿,绿黄红 East_West,South_North : BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0) ); --东西,南北倒计时数码管(高4位为十位,低 4位为个位) END;
相关文档
最新文档