1、設(shè)計要求
基于小腳丫FPGA開發(fā)板設(shè)計帶數(shù)碼管顯示倒計時的交通燈系統(tǒng),要求:
- 1)一個道路綠燈持續(xù)時間25S,紅燈持續(xù)時間10S,黃燈持續(xù)時間3S;
- 2)另一道路綠燈持續(xù)時間10S,紅燈持續(xù)時間25S,黃燈持續(xù)時間3S;
- 3)第一位數(shù)碼管和第二位數(shù)碼管顯示倒計時;
2、硬件連接
FPGA的系統(tǒng)時鐘來自于小腳丫FPGA開發(fā)板配置的25MHz時鐘晶振,連接FPGA的C1引腳。
本設(shè)計除了時鐘和復(fù)位鍵以外沒有其他的輸入,故只用到一個按鍵K6硬件設(shè)計如圖1所示,按鍵連接到FPGA的B1引腳。
圖1、復(fù)位鍵硬件設(shè)計
設(shè)計中需要兩個RGB的led進行交通燈顯示的呈現(xiàn),每一個RGB的LED都有三個引腳需要跟小腳丫連接在一起。兩個LED跟小腳丫FPGA開發(fā)板之間的連接關(guān)系如圖2所示,對應(yīng)的管腳如下。
圖2、RGB_LED硬件連接
設(shè)計中需要使用數(shù)碼管進行倒計時的顯示,小腳丫通過74HC595來控驅(qū)動和控制數(shù)碼管。74HC595跟小腳丫FPGA開發(fā)板之間的連接關(guān)系如圖3所示,對應(yīng)的管腳如下。
圖3、數(shù)碼管驅(qū)動74HC595硬件連接
3、工作原理和狀態(tài)轉(zhuǎn)換
- 2)使用一個6bit的BCD碼表示倒計時時間的值,其中高2bit表示值的十位,低4bit表示值的個位;
- 3)用以下四個狀態(tài)分別表示交通燈不同的顯示;
- S0: 大路綠燈亮,小路紅燈亮,持續(xù)25S;
- S1: 大路黃燈(藍燈)亮,小路紅燈持續(xù)3S;
- S2: 大路紅燈亮,小路綠燈亮,持續(xù)10S;
- S3: 大路紅燈亮,效率黃燈(藍燈)亮,持續(xù)3S;
- 得到狀態(tài)轉(zhuǎn)換圖如下:
圖4、交通燈狀態(tài)轉(zhuǎn)換圖
4、代碼設(shè)計
為了實現(xiàn)所需要的功能,我們將整個設(shè)計在頂層劃分為五個不同的模塊,如圖5所示。
圖5、交通燈程序框圖
4.1 clock_division模塊
Clock_division模塊主要實現(xiàn)數(shù)字時鐘的模式控制,程序代碼截圖如下:
4.2 Curren_state模塊
這部分代碼的作用是將次態(tài)賦值給當(dāng)前態(tài),這是三段式的標志性模塊。該模塊程序代碼截圖如下:
4.3 Output&count模塊
這部分代碼可以說是整個代碼的核心部分,交通燈的顯示在這部分完成。此外,這一部分還負責(zé)進行倒計時,這部分的代碼將即使數(shù)字分為個位和十位進行分別倒計時。此舉有利用后面對74HC595驅(qū)動數(shù)碼管的代碼進行調(diào)用。其序代碼截圖如下:
4.4 CubeDisplay模塊
這部分代碼用于74HC595的控制,以使得數(shù)碼管能夠按照計劃進行倒計時顯示。這部分代碼截圖如下:
5、系統(tǒng)運行
圖6、系統(tǒng)運行
視頻地址:
優(yōu)酷視頻(基于小腳丫FPGA的倒計時交通燈):
https://v.youku.com/v_show/id_XMTU0NDI4NjQ1Mg==.html
6、資源報告
資源 | 數(shù)量 | 比例 | 說明 |
LUT4s | 249 | 19% | |
寄存器 | 115 | 7% | |
存儲器 | 0 | 0% | |
IO管腳 | 11 | ||
時鐘頻率 | 25MHz |
7、知識點
- 時鐘計數(shù)分頻
- 三段式程序段的編寫
- 串行/并行轉(zhuǎn)換
- 74HC595控制
9、相關(guān)文件
文件名稱 | 功能 |
Traffic_Light | 交通燈狀態(tài)轉(zhuǎn)換和燈顯示,以及頂層模塊功能 |
DLED_4Bit | 倒計時顯示模塊 |