基于vhdl交通灯信号控制器设计说明书内容摘要:

号; recount:接收由交通灯信号控制电路产生的重新计数的使能控制信号; sign_state:接收由交通灯信号控制电路产生的状态信号。 系统输出信号: load:负责产生计数器所需要的计数数值。 图 35是计数秒数选择电路通过 Quartus II 软件仿真得到的仿真波形图。 2020届本科生毕业论文(设计) 10 图 35 计数秒数选择电路时序图 由计数描述选择电路的时序图 (见图 35)可以看出这段程序中定义了在正常车流量情况下,东西及南北方向红灯、黄灯和绿灯需要维持 的秒数分别是 15s、 5s和 25s。 当外部信号发生器提供了 1kHZ 的时钟信号,并且重新计数信号 (recount)为“ 1”时 ,load 信号就会按照预先设置的数值逐 1 递减 ,直至减到零为止 ,当下一个重新计数信号(recount)再次为“ 1”时,会重复此过程。 倒计时控制电路 通过日常生活中的观察,我发现在一些交通路口已经开始使用倒计时显示器,它们的作用就是用来提示车辆行人目前还有多长时间信号灯会发生变化,这样车辆行人就可以提前判断是否有足够的时间通过路口,进而就可以避免很多意外事故的发生。 例如:南北方向绿灯,车辆处于正常行驶中,东西方向红灯,车辆处于等待中,若南北方向行驶的车辆看到倒计时显示器上可以通行的时间很短,可能就会放慢速度等待下一次通行,这样在东西方向绿灯时,车辆就能够正常行驶,不会为等待南北方向强行的车辆而耽误更多的时间。 如此循环下去,道路就会畅通无阻了。 考虑到有些路口的交通拥堵现象较为严重,车辆会在道路上排成很长的一队,这样排在较远距离的司机就很难看清楚倒计时显示器上变化的数字,有可能会影响到车辆之间的正常行驶。 因此,如果采用发光二极管作为倒计时的显示装置就会使司机和行人一目了然,同样也能够 起到很好的提示作用。 所以,倒计时控制电路最主要的功能就是负责接收 hld2 电路输出的值,然后将其转换成 BCD 码,并利用发光二极管显示出来,让车辆行人能够清楚地知道再过多久信号灯就会发生变化。 程序如下(见附录) 图 36是倒计时控制电路元件模块图。 图 36 倒计时控制电路模块图 系统输入信号: clk:由外部信号发生器提供 1kHz 的时钟信号; reset:系统内部自复位信号; ena_1hz:接收由时钟发生电路提供的 1Hz 的脉冲信号; recount:重新计数的使能控制信号; load:负责接 收计数器所需要的计数数值。 2020届本科生毕业论文(设计) 11 系统输出信号: led:负责将计数数值转换成 BCD 码,并利用发光二极管显示倒计时状态; next_state:当计数器计时完毕后,负责产生一个脉冲信号,作为下一个状态的触发信号。 图 37是倒计时控制电路通过 Quartus II 软件仿真得到的仿真波形图。 图 37 倒计时控制电路时序图 这段程序是采用的就是查表的方法并且利用发光二极管进行倒计时显示 ,如图 37 所示 :当绿灯点亮开始计数后, load 就会将减 1后的值赋给 t_ff,之后 t_ff 又会从 case语句中 查找到相对应的值再赋给 led 显示所剩余的时间。 在程序编写过程中运用到了conv_integer()语句,它可以将 t_ff 所赋的值转换成整数。 由图可知 led 是 25位的系统输出信号,负责控制发光二极管的输出,所以 25 位的输出信号可以分成七组控制发光二极管的显示,其中“ 1”为点亮,“ 0”为熄灭。 红绿灯信号控制电路 在红绿灯交通信号系统中,大多数的情况是通过自动控制的方式指挥交通。 但为了配合高峰时段,防止交通拥挤,有时还必须使用手动控制,即让交通警察自行指挥交通。 因此,红绿灯信号控制电路除了负责监 控路口红绿灯之外,最主要的功能就是能够利用开关来切换手动与自动的模式,让交通警察能够通过外部输入的方式来控制红绿灯交通信号系统的运做。 程序如下(见附录) 图 38是红绿灯信号控制电路元件模块图。 图 38 红绿灯信号控制电路模块图 2020届本科生毕业论文(设计) 12 系统输入信号: clk:由外部信号发生器提供 1kHZ 的时钟信号; reset:系统内部自复位信号; ena_scan:接收由时钟发生电路提供的 250Hz 的时钟脉冲信号; ena_1hz:接收由时钟发生电路提供的 1Hz 的脉冲信号; flash_1hz:接收由时钟发生电 路提供的 1Hz 的脉冲时钟信号; a_m:手动、自动切换按钮( 1:自动、 0:手动); st_butt: 红绿灯状态切换按钮(在手动操作下,每按一次按钮就变换一个状态); next_state:接收由倒计时控制电路提供的下一个状态的触发信号。 系统输出信号: recount:产生重新计数的输出使能控制信号; sign_state:产生输出状态信号; red:负责红色信号灯的显示; green:负责绿色信号灯的显示; yellow:负责黄色信号灯的显示。 图 39 是红绿灯信号控制电路通过 Quartus II 软件仿真得到的仿真波形图。 图 39 红绿灯信号控制电路 图 39显示的是第三种状态时东西方向红灯亮、南北方向绿灯亮。 红绿灯信号控制电路的作用就是产生的一系列的控制信号去完成之前几个模块设定好的功能。 交通灯系统描述 顶层系统的设计是把以上各个功能模块连接起来构成一个完整电路,顶层模块可用VHDL 输入法设计,也可用原理图输入法设计。 2020届本科生毕业论文(设计) 13 图 310是系统的顶层电路图。 图 310 交 通灯控制系统的顶层电路图 系统输入信号: reset:系统内部自复位信号; clk: 1kHz 的时钟信号; a_m:手动、自动切换按钮( 1:自动、 0:手动); st_butt: 红绿灯状态切换按钮(在手动操作下,每按一次按钮就变换一个状态); 系统输出信号: red:负责红色信号灯的显示; green:负责绿色信号灯的显示; yellow:负责黄色信号灯的显示; led:负责将计数数值转换成 BCD 码,并利用发光二极管显示倒计时状态。 本文采用 VHDL 输入法来设计。 将时钟脉冲发生电路、计数秒数选择电路、倒计时控制电路、红绿灯信号控制电路四部分放进定义的程序包中。 (程序见附录) 图 311是交通灯控制系统通过 Quartus II 软件仿真得到的波形图。 2020届本科生毕业论文(设计) 14 图 311 系统仿真波形图 连接各个模块后的时序图 (见图 311)是综合了上述 4 个模块后仿真出来的波形。 图311 显示的也是状态三时东西方向红灯亮、南北方向绿灯亮,这与之前红绿灯信号控制电路仿真出来的波形结果是相同的。 2020届本科生毕业论文(设计) 15 四 总结 本设计采用了 VHDL 硬件描述语言文本输入方式,在确立总体预期实现功能 的前提下,分层次进行设计。 实现了三种颜色交通信号灯的交替点亮,以及时间的倒计时显示,指挥行人和车辆安全通行。 程序中所用到的数据均可以根据实际情况进行设置,修改灵活方便。 通过此次设计,我对于 VHDL 硬件描述语言有了更深入地了解,也在原来所学的理论基础上得到了进一步地应用。 但由于经验上的不足,有些地方还需要做进一步地改善。 数字化时代的到来给人们的生活水平带来了极大的改变,我们有理由相信,随着数字化的深入,交通灯控制器的功能将日趋完善。 而且, VHDL 语言对 EDA 技术产生的影响也是深远的,它缩短了电子产品的设计周 期,为设计者提供了方便。 在今后的电子产品研究开发过程中, EDA 技术将会具有更好的开发手段和更高的性价比,并且将拥有更为广阔的市场应用前景。 2020届本科生毕业论文(设计) 16 参考文献 [1] 元红妍,张鑫 .电子综合设计实验教程 [M].山东:山东大学出版社, 2020, 21~30 [2] 杨晓慧 ,许红梅 ,杨会玲 .电子技术 EDA实践教程 [M].北京:国防工业出版社, 2020, 46~55 [3] 杨恒 ,李爱国 ,王辉 ,王新安 .FPGA/CPLD最新实用技术指南 [M].北京:清华大学出版社, 2020, 76~82 [4] 孙芹芝 ,苏晓鹭 .基于 EDA的交通灯控制系统 [M].北京:清华大学出版社, 2020, 51~62 [5] 林明权等 .VHDL数字控制系统设计范例 [M].北京:电子工业出版社, 2020,62~73 [6] 潘松 ,黄继业 .EDA技术实用教程 [M].北京:科学出版社, 2020, 120~131 [7] 杨恒新 .自顶向下法设计交通灯控制系统 [M].北京: 中国科学文化出版社, 2020,174~182 [8] 林涛 .基于 VHDL语言的交通信号控制器的设计与实现 [M].北京: 希望电子出版社, 2020,37~46 [9] 曾素琼 .EDA技术在数字电路中的探讨 [M].重庆:重庆大学出版社, 2020, 154~167 [10] 徐志军,徐光辉 .CPLD/FPGA的开发与应用 [M].北京:电子工业出版社, 2020,99~104 [11] 陶涛 .基于 VHDL语言实现十字路口交通灯设计 [M].武汉 :武汉理工大学出版社, 2020,65~79 [12] 邱磊 ,肖兵 .基于 VHDL语言的交通灯控制器设计 [M].北京:科学出版社, 2020,112~121 [13] 王正中 .系统仿真技术 [M].北京:科学出版社, 1999,89~96 [14] 蔡明生 .电子设计 [M].北京:高度教育出版社, 2020,45~59 2020届本科生毕业论文(设计) 17 附 录 library ieee。 use。 use。 use。 entity hld1 is port(reset:in std_logic。 clk:in std_logic。 ena_scan:out std_logic。 ena_1hz:out std_logic。 flash_1hz:out std_logic)。 end。 architecture bhv of hld1 is constant scan_bit:positive:=2。 constant scan_val:positive:=4。 constant two_hz_bit:positive:=7。 constant two_hz_val:positive:=125。 signal clk_scan_ff:std_logic_vector(scan_bit1 downto 0)。 signal clk_2hz_ff:std_logic_vector(two_hz_bit1 downto 0)。 signal ena_s:std_logic。 signal ena_one:std_logic。 signal ena_two:std_logic。 begin process(reset,clk) begin if reset=39。 139。 then clk_scan_ff=00。 ena_s=39。 039。 elsif (clk39。 event and clk=39。 139。 ) then if clk_scan_ff=scan_val1 then clk_scan_ff=00。 ena_s=39。 139。 else 2020届本科生毕业论文(设计) 18 clk_scan_ff=clk_scan_ff+1。 ena_s=39。 039。 end if。 end if。 end process。 ena_scan=ena_s。 process(reset,clk,ena_s) begin if reset=39。 139。 then ena_one=39。 039。 ena_two=39。 039。 clk_2hz_ff=0000000。 elsif (clk39。 event and clk=39。 139。 ) then if ena_s=39。 139。 then if clk_2hz_ff=two_hz_val1 then clk_2hz_ff=0000000。 ena_two=39。 139。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。