《Verilog HDL数字系统设计——原理、实例及仿真》课件第10章.pptx
第10章综合应用实例
10.1交通灯控制系统
10.2多功能数字钟
10.3乐曲播放器
10.4VGA控制器
10.1交通灯控制系统
交通灯控制系统是一个比较简单的数字系统,它是通过控制交通道路的通行和等待时间来实现交通控制的,因此控制系统的主要功能是实现红、绿灯状态控制并显示当前状态持续的时间。这里设计的一个交通控制系统具有紧急状态、测试状态和正常工作三种状态。紧急状态用于处理一些突发的状态,如戒严等,此时双向路口禁止通行;测试状态可用于检测信号灯和数码管的硬件是否正常;正常工作状态则用于双向路口的信号灯控制。
交通灯控制系统通常控制十字路口两个方向的信号灯,
两个方向中车流量比较大的道路称为主干道,其绿灯的时间较长,而另一个方向就是次干道。两个路口的工作原理是相同的,主要区别是红、绿灯的时长不同,所以可以先实现一个路口的控制模块,然后再用该模块构成一个十字路口的控制系统。
10.1.1交通灯控制系统的设计思路
这里先介绍一个路口控制模块的设计思路。该模块包括复位状态、正常工作状态、紧急状态和信号灯测试状态,
reset_n(复位信号)、emergency(紧急状态信号)和test(测试状态信号)是状态控制输入信号。
10.1.2一个路口控制模块的代码
一个路口控制模块traffic_con的各端口信号的说明如下:输入信号:
clk——1Hz时钟信号;
reset_n——复位信号,低电平有效;
prim_flag——主、次干道标志,1为主干道,0为次干道;red_time——红灯时间(秒);
green_time——绿灯时间(秒);
yellow_time——黄灯时间(秒);
emergency——紧急状态控制信号;
test——信号灯测试控制信号。
输出信号:
wait_time——当前状态的倒计时时间输出;
ryg_light[2:0]——红、黄、绿信号灯状态输出。
【代码10.1】单个路口交通灯控制模块。
主干道和次干道的初始化状态截图如图10.1和图10.2所示,
图10.1中prim_flog=1,表示该路口是主干道。因此,在复位
信号无效后,红、黄、绿灯的输出信号ryg_light立即为3b001,即绿灯亮,由于green_time=6,所以绿灯持续时间应为6秒钟,在wait_time输出分别为6、5、4、3、2、1后,ryg_
light为3b010,绿灯亮,绿灯持续2秒后,ryg_light=3b100,红灯亮,红灯持续9秒钟后,ryg_light=3b001,绿灯再次亮。
Itrafictest/primflag
+jitrafictestiwaitLtime120
+010oo
心第Nowb0ons
Cursor1)96ns
wave-default
Messages
jtrafictestick
+今jtrafic_testired_tme
田trafic_test/yellow_time2
图10.1主干道复位仿真波形
010
3000ns
001
4000ns
o
1000ns
Messages
jtrafic_test/ck
jtrafic_testjreset_n
+jtrafic_testredtime
+今jtrafic_testigreentime
+
jtrafic_testiyelow_time
jtrafic_testjemergency
jtrafictestitest
jtrafic_testjprimflag
+jtrafictest/wait_time
+ftrafic_testiryg_light
12
|0
0
0
3
o0101)000Yo0
图10.2次干道复位仿真波形
图10.2中,prim_flag=0,表示该路口是次干道。在复位
信号无效后,红、黄、绿灯的输出信号ryg_light=3b100,即红灯先亮。红灯持续9秒后依次是绿灯亮6秒、黄灯亮2秒。
图10.3所示是通行时间重新设置后的仿真波形。图中可以看出,红、绿、黄灯的通行时间分别由9秒、6秒、2秒变为12秒、8秒和4秒后,新的灯时按照新输入时间运行;当前的绿灯状态结束后,随后的黄灯时间变为4秒,红灯时间变为12秒。
wave-defaut
Messagesjtrafic_testick
jtrafic_testir