交通燈控制器原理
實(shí)例的內(nèi)容及目標(biāo)
1.實(shí)例的主要訓(xùn)練內(nèi)容
本實(shí)例通過Verilog HDL語言設(shè)計(jì)一個(gè)簡易的交通等控制器,實(shí)現(xiàn)一個(gè)具有兩個(gè)方向、共8個(gè)燈并具有時(shí)間倒計(jì)時(shí)功能的交通燈功能。
2.實(shí)例目標(biāo)
通過本實(shí)例,讀者應(yīng)達(dá)到下面的目標(biāo)。
• 掌握Verilog設(shè)計(jì)一個(gè)交通等控制器的方法。
• 初步掌握Verilog語言的設(shè)計(jì)方法。
原理簡介
交通燈是城市交通中不可缺少的重要工具,是城市交通秩序的重要保障。本實(shí)例就是實(shí)現(xiàn)一個(gè)常見的十字路通燈功能。讀者通過學(xué)習(xí)這個(gè)交通燈控制器,可以實(shí)現(xiàn)一個(gè)更加完整的交通燈。例如實(shí)現(xiàn)實(shí)時(shí)配置各種燈的時(shí)間,手動(dòng)控制各個(gè)燈的狀態(tài)等。
一個(gè)十字路口的交通一般分為兩個(gè)方向,每個(gè)方向具有紅燈、綠燈和黃燈3種,另外每個(gè)方向還具有左轉(zhuǎn)燈,因此每個(gè)方向具有4個(gè)燈。
這個(gè)交通燈還為每一個(gè)燈的狀態(tài)設(shè)計(jì)了倒計(jì)時(shí)數(shù)碼管顯示功能。可以為每一個(gè)燈的狀態(tài)設(shè)置一個(gè)初始值,燈狀態(tài)改變后,開始按照這個(gè)初始值倒計(jì)時(shí)。倒計(jì)時(shí)歸零后,燈的狀態(tài)將會(huì)改變至下一個(gè)狀態(tài)。
值得注意的是,交通燈兩個(gè)方向的燈的狀態(tài)是相關(guān)的。也就是說,每個(gè)方向的燈的狀態(tài)影響著另外一個(gè)方向的燈的狀態(tài),這樣才能夠協(xié)調(diào)兩個(gè)方向的車流。如果每個(gè)方向的燈是獨(dú)立變化的,那么交通燈就沒有了意義。
如表1所示是兩個(gè)方向(假設(shè)為A,B方向)燈的狀態(tài)的對應(yīng)情況。
表1 交通燈兩個(gè)方向燈狀態(tài)對應(yīng)表
方向A | 方向B |
紅燈亮 | 黃燈亮或綠燈亮 |
直行綠燈亮 | 紅燈亮 |
黃燈亮 | 紅燈亮 |
左轉(zhuǎn)燈 | 紅燈亮 |
在實(shí)際的交通系統(tǒng)中,直行綠燈、左轉(zhuǎn)綠燈和紅燈的變化之間都應(yīng)該有黃燈作為緩沖,以保證交通的安全。
因此假如我們假設(shè)方向A的黃燈亮的時(shí)間持續(xù)5s,直行綠燈燈亮的時(shí)間持續(xù)40s,左轉(zhuǎn)燈燈亮的時(shí)間持續(xù)15s,則方向B紅燈燈亮的時(shí)間持續(xù)為(直行綠燈+黃燈+左轉(zhuǎn)綠燈+黃燈)所消耗的時(shí)間,一共為65s。
同樣假設(shè)方向B黃燈亮的時(shí)間持續(xù)5s,直行綠燈燈亮的時(shí)間持續(xù)30s,左轉(zhuǎn)燈燈亮的時(shí)間持續(xù)15s,則方向B紅燈燈亮的時(shí)間持續(xù)為(直行綠燈+黃燈+左轉(zhuǎn)綠燈+黃燈)所消耗的時(shí)間,一共為55s。
具體時(shí)間參數(shù)的設(shè)定讀者可以根據(jù)需要進(jìn)行修改,但是一定要保證兩個(gè)方向的燈的狀態(tài)符合表1的要求。