加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶(hù)
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入

基于小腳丫FPGA開(kāi)發(fā)板和四位數(shù)碼管 的數(shù)字時(shí)鐘設(shè)計(jì)

2016/08/11
41
服務(wù)支持:
技術(shù)交流群

完成交易后在“購(gòu)買(mǎi)成功”頁(yè)面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長(zhǎng)和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購(gòu)買(mǎi)后不支持退換且無(wú)法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
方塊圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

1、設(shè)計(jì)要求

基于小腳丫FPGA開(kāi)發(fā)板和四位數(shù)碼管實(shí)現(xiàn)數(shù)字時(shí)鐘的設(shè)計(jì),要求:

1)采用FPGA+按鍵+四位數(shù)碼管實(shí)現(xiàn)數(shù)字時(shí)鐘功能;

2)時(shí)間顯示格式:XX:XX:XX (時(shí):分:秒),采用24小時(shí)制;

3)四位數(shù)碼管顯示時(shí)分秒,可以通過(guò)按鍵控制選擇顯示時(shí)分界面還是分秒界面。

4)通過(guò)按鍵設(shè)定初始時(shí)間。

5)設(shè)置在整點(diǎn)12點(diǎn)時(shí),通過(guò)蜂鳴器響示意整點(diǎn)報(bào)時(shí)。蜂鳴器響維持大概5S;

2、硬件連接

FPGA的系統(tǒng)時(shí)鐘來(lái)自于小腳丫FPGA開(kāi)發(fā)板配置的24MHz時(shí)鐘晶振,連接FPGA的C1引腳。

本設(shè)計(jì)用到五個(gè)個(gè)按鍵K1~K5,硬件設(shè)計(jì)如圖1所示,五個(gè)按鍵分別連接到FPGA的B8、C8、A10、A11和A12引腳。

圖1. 按鍵硬件設(shè)計(jì)

本設(shè)計(jì)用到一個(gè)蜂鳴器來(lái)示意整點(diǎn)報(bào)時(shí),硬件設(shè)計(jì)如圖1所示,蜂鳴器連接到FPGA的B2引腳。

圖2. 蜂鳴器硬件設(shè)計(jì)

本設(shè)計(jì)用到四位數(shù)碼管來(lái)顯示時(shí)間,四位數(shù)碼管用兩個(gè)74HC595驅(qū)動(dòng),硬件設(shè)計(jì)如圖1所示,74HC595的串行時(shí)鐘SCK、并行時(shí)鐘RCK和串行數(shù)據(jù)DIN分別連接到FPGA的N2、M1和K1引腳上。

圖3. 數(shù)碼管驅(qū)動(dòng)74HC595硬件設(shè)計(jì)

3、工作原理

1)使用計(jì)數(shù)器做分頻處理,得到周期為1秒的脈沖信號(hào);

2)使用三個(gè)8bit的BCD碼表示時(shí)鐘、分鐘、秒鐘的值,其中高4bit表示值的十位,低4bit表示值的個(gè)位;

3)正常運(yùn)行時(shí),每來(lái)一個(gè)1S脈沖信號(hào)個(gè)位加1,個(gè)位滿(mǎn)10清零同時(shí)十位加1,當(dāng)秒鐘滿(mǎn)60清零同時(shí)分鐘個(gè)位加1,依次進(jìn)行...直到23:59:59的下一刻全部清零;

4)按鍵K5,模式調(diào)節(jié),設(shè)計(jì)共分4中模式(分秒顯示、分秒調(diào)節(jié)、時(shí)分顯示、時(shí)分調(diào)節(jié)),按動(dòng)K5依次切換模式;

5)按鍵K2,時(shí)間調(diào)節(jié),當(dāng)數(shù)字時(shí)鐘在時(shí)針調(diào)節(jié)、分針調(diào)節(jié)或秒針調(diào)節(jié)模式時(shí),按動(dòng)K2調(diào)節(jié)對(duì)應(yīng)時(shí)間位;

6)在調(diào)時(shí)分和調(diào)分秒兩個(gè)狀態(tài),可以通過(guò)K4和K2鍵分別左移右移要調(diào)整的位,要調(diào)整的位會(huì)通過(guò)對(duì)應(yīng)位的閃爍來(lái)示意。通過(guò)K4和 K2左右移動(dòng)選擇好要調(diào)整的位以后,就可以通過(guò)K1和K3來(lái)增大或調(diào)小對(duì)應(yīng)的位;

4、代碼設(shè)計(jì)

為了實(shí)現(xiàn)所需要的功能,我們將整個(gè)設(shè)計(jì)劃分不同的模塊,如圖4所示。

圖4. 數(shù)字時(shí)鐘程序設(shè)計(jì)框架

4.1 五位按鍵消抖模塊

圖5. 五位按鍵消抖模塊

  • ?輸入:五位的按鍵電平信息輸入
  • ?輸出:五位消抖后的脈沖輸出
  • ?功能:將按鍵按下一次的電平信號(hào),經(jīng)過(guò)消抖后變成一個(gè)維持一個(gè)時(shí)鐘周期的脈沖信號(hào);
  • ?原理:

圖6. 按鍵抖動(dòng)特性

FPGA過(guò)20ms檢測(cè)按鍵是否按下,存儲(chǔ)檢測(cè)到的值,并且按位取反與前一個(gè)20ms檢測(cè)的值相與,得到一個(gè)值,如果為1,則判斷按鍵按下,否則則無(wú)按下。

圖7. FPGA按鍵的理解示意圖

4.2 電子表顯示控制模塊。

圖8. 電子表顯示控制模塊

  • ?輸入:五位的按鍵脈沖
  • ?輸出:十六位的BCD碼輸出,每四個(gè)代表一個(gè)十進(jìn)制數(shù);
  • ?原理:四位的位閃爍控制信號(hào)。某一位為一代表這位對(duì)應(yīng)的數(shù)碼管的一位進(jìn)行閃爍顯示。(在調(diào)整狀態(tài)下,會(huì)讓當(dāng)前調(diào)整的哪一位進(jìn)行閃爍。正常顯示狀態(tài)下seg_flash_data全為零);
  • ?功能:主要就是一個(gè)狀態(tài)機(jī),通過(guò)檢查輸入的按鍵信息,進(jìn)行顯示狀態(tài)切換,時(shí)間調(diào)整。四個(gè)狀態(tài)分別為:顯示分秒,調(diào)分秒,時(shí)分顯示,調(diào)時(shí)分;當(dāng)K5按鍵按下(key_pulse[4])時(shí)依次跳轉(zhuǎn),如圖9所示。

圖 9. 數(shù)字時(shí)鐘狀態(tài)控制設(shè)計(jì)

4.3 數(shù)碼管譯碼模塊

圖10. 數(shù)碼管譯碼模塊

  • ?輸入:四位的BCD碼數(shù)據(jù)
  • ?輸出:八位的七段數(shù)碼數(shù)據(jù)
  • ?功能:一個(gè)case語(yǔ)句,將輸入的四位BCD碼轉(zhuǎn)化為七段數(shù)碼數(shù)據(jù);
  • ?原理:數(shù)碼管分為共陽(yáng)極數(shù)碼管和共陰極數(shù)碼管。共陽(yáng)數(shù)碼管是指將所有發(fā)光二極管的陽(yáng)極接到一起形成公共陽(yáng)極(COM)的數(shù)碼管,共陽(yáng)極(COM)需接+5V才能使其工作。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼,共陰極(COM)需接GND才能使其工作。小腳丫拓展板上的數(shù)碼管如下圖所示:

圖11. 數(shù)碼管內(nèi)部電路

共陰極數(shù)碼管:

位選為低電平(即0)選中數(shù)碼管;各段選為高電平(即接+5V時(shí))選中各數(shù)碼段;由0到f的編碼為:

4.4 四位數(shù)碼管顯示控制模塊。

圖12. 數(shù)碼管顯示控制模塊

  • ?輸入:四個(gè)八位的七段數(shù)碼管數(shù)據(jù)和位閃爍控制信號(hào)seg_flash_data.
  • ?輸出:需要串行輸出給74HC595的十六位數(shù)據(jù);
  • ?功能:模塊就是循環(huán)的將四位七段數(shù)碼數(shù)據(jù),組合一個(gè)十六位的輸出數(shù)據(jù);

4.5 74HC595驅(qū)動(dòng)功能模塊

圖13. 74HC595驅(qū)動(dòng)功能模塊

  • ?輸入:十六位的位選段選數(shù)據(jù)。
  • 1)duan_wei_data[13:0]分別對(duì)應(yīng):
  • 2)[ X,X,H+,H-,DIG4,DIG3,DIG2,DIG1,DP,G,F,E,D,C,B,A] ;
  • ?輸出:SPI接口輸出,串行輸出十六位位選段選信號(hào);
  • ?功能:將輸入的并行的十六位的位選段選數(shù)據(jù)通過(guò)SPI接口轉(zhuǎn)化為串行輸出;
  • ?原理:詳見(jiàn)Text8.數(shù)碼管顯示及74HC595芯片資料

5、系統(tǒng)運(yùn)行

圖14. 系統(tǒng)運(yùn)行

視頻地址:

https://v.youku.com/v_show/id_XMTM5MDE4OTE2MA==.html?from=s1.8-1-1.2

6、資源報(bào)告

資源 數(shù)量 比例 說(shuō)明
LUTs 244 38%
寄存器 203 13%
存儲(chǔ)器 0 0%
IO管腳 11
時(shí)鐘頻率 25MHz

7、知識(shí)點(diǎn)

?時(shí)鐘計(jì)數(shù)分頻?按鍵消抖處理

?功能建模

?波形仿真

?SPI時(shí)序?qū)崿F(xiàn)

?74HC575數(shù)碼管驅(qū)動(dòng)原理

8、參考文檔

Lattice MachXO2數(shù)據(jù)手冊(cè)

9、相關(guān)文件

文件名稱(chēng) 功能
Watch_system 頂層模塊,將所有功能模塊接口連接起來(lái)
Clock_control_module 實(shí)現(xiàn)數(shù)字鐘的計(jì)時(shí),調(diào)整,整點(diǎn)報(bào)時(shí)功能
Key_jitter 實(shí)現(xiàn)按鍵消抖
Smg_encoder_module 實(shí)現(xiàn)BCD碼到數(shù)碼管段碼的轉(zhuǎn)換
Seg595_control_module 循環(huán)送出每位數(shù)碼管段位數(shù)據(jù)
Seg595_function_module 實(shí)現(xiàn)SPI時(shí)序,十六位的段位數(shù)據(jù)串行移入74HC595
  • STEP_BaseBoard.pdf
    描述:小腳丫FPGA資源擴(kuò)展板原理圖
  • Watch_system.zip
    描述:小腳丫FPGA數(shù)字時(shí)鐘數(shù)碼管顯示邏輯代碼
  • 基于小腳丫FPGA和四位數(shù)碼管的數(shù)字時(shí)鐘設(shè)計(jì).docx
    描述:小腳丫FPGA數(shù)字時(shí)鐘數(shù)碼管顯示設(shè)計(jì)資料

相關(guān)推薦

電子產(chǎn)業(yè)圖譜