基于SOPC和FPGA的LCD電子鐘設(shè)計
引言
SOPC(System On Programmable Chip)是用可編程邏輯技術(shù)把整個系統(tǒng)放到一片硅片上的一種特殊嵌入式系統(tǒng)。一方面,它片上系統(tǒng)(SOC)完成整個系統(tǒng)的邏輯功能;另一方面,它是可編程系統(tǒng),具有靈 活的設(shè)計方式,可裁剪、擴充、升級,并具備軟硬件在 系統(tǒng)可編程功能。SOPC是PLD和ASIC技術(shù)融合的結(jié)果,可以認為SOPC代表了半導體產(chǎn)業(yè)未來的發(fā)展方向。本文采用EDA軟件Quartus II中的SOPC Builder構(gòu)建了一個SOPC系統(tǒng)。并以構(gòu)建的系統(tǒng)為平臺進行電子鐘的軟件設(shè)計。最后在Altera 公司FPGA多媒體開發(fā)平臺DE2上進行實現(xiàn)。該方案不同于基于處理器或控制器及SOC的嵌入式系統(tǒng),基于SOPC的嵌入式系統(tǒng)具有可配置的特點,不會包括任何專用外設(shè),而是可根據(jù)需要靈活地在一片F(xiàn)PGA中構(gòu)造外設(shè)接口。
ALTERA公司在其開發(fā)工具Quartus II中集成T SOPC Builder工具。在該工具的輔助下,設(shè)計者可以非常方便地完成系統(tǒng)集成,軟硬件協(xié)同設(shè)計和驗 證,以最大限度地提高電子系統(tǒng)的性能,加快設(shè)計速度和節(jié)約設(shè)計成本。
1 整體設(shè)計
數(shù)字電子鐘是包括物聯(lián)網(wǎng)在內(nèi)的常用電子設(shè)備, 其主要功能是顯示日期、時、分、秒等實時信息,并能 夠方便地對這些實時信息進行設(shè)置。
本系統(tǒng)以NiosII軟核處理器為處理器,同時添加了一些必要的外設(shè),如并行輸入輸出口(PIO)、LCD1602模塊、一定容量的片上RAM等,從而構(gòu)成一個最小系統(tǒng),以用于實現(xiàn)電子鐘功能。其中定義的三位輸入口(KEY1, KEY2, KEY3 )用作電子鐘的控制鍵。KEY1用于工作模式的切換,在正常工作中可以對各位進行調(diào)整;KEY2用于調(diào)整的遞減;KEY3用于調(diào)整的遞加。兩位的輸出口用來連接蜂鳴器,做整點報時;LCD模塊用作日期和時間的顯示;片上RAM用作各種數(shù)據(jù)的存儲。
2 硬件設(shè)計
2. 1 在SOPC Builder構(gòu)建SOPC 系統(tǒng)
在Quartus II軟件中打開SOPC Builder,可以按要求依次添加NiosII處理器、30 MB的片上RAM,LCD模塊、三位輸入口和兩位輸出口,再給處理器分配復位向量地址和異常向量地址。然后給各外設(shè)分配一個基地址和中斷優(yōu)先級。所構(gòu)成的系統(tǒng)窗口如圖1所示。這時就可以點擊生成按鈕生成所構(gòu)建的NiosII系統(tǒng),如果構(gòu)建成功,就會有System generation was successful的提示。
2. 2 在Quartus K中搭建硬件電路
設(shè)計時,可在Quartus H中建立一個原理圖編輯文件,再將構(gòu)建的NiosII系統(tǒng)添加進去,并為其添加管腳,同時進行管腳鎖定,圖2所示是其系統(tǒng)硬件電路。這樣,就可以進行編譯并生成用于配置的.sof文件和用于編程的.pof文件。然后再將所構(gòu)建的系統(tǒng)下載到目標板上的FPGA中,并且連接好各外設(shè)。
3 軟件設(shè)計
NiosII是一個用戶可配置的通用RISC嵌入式處理器。Nios II集成開發(fā)環(huán)境(IDE)是NiosII系列嵌入式處理器的基本軟件開發(fā)工具。所有軟件開發(fā)任務(wù)都可以在NiosII IDE下完成,包括編輯,編譯,調(diào)試程序。
電子鐘的軟件設(shè)計流程主要包括初始化,電子鐘的運行和LCD的顯示,其中后兩個模塊是系統(tǒng)的主要模塊。電子鐘運行模塊主要用來實現(xiàn)電子鐘的計時間和計日期功能,1秒的時間信號可通過軟件延時來實現(xiàn)。LCD模塊用來實現(xiàn)日期和時間的顯示。下面分別介紹這兩個模塊。
3.1 電子鐘模塊設(shè)計
電子鐘模塊的軟件流程如圖3所示。初始化的目的是顯示初始日期和時間并使其處于正常工作狀態(tài)。通過KEY1鍵可以進行工作模式的切換,實現(xiàn)日期和時間的校正。最后對要顯示的日期和時間數(shù)據(jù)進行格式轉(zhuǎn)換,調(diào)整成適合LCD顯示的數(shù)據(jù),送給LCD進行實時的日期和時間顯示。
3.2 LCD顯示模塊設(shè)計
LCD顯示模塊用來實現(xiàn)電子鐘日期和時間的實時顯示,其軟件流程如圖4所示。
圖4中的LCD初始化包括對LCD的功能設(shè)置、顯示開關(guān)設(shè)置和模式設(shè)置。LCD定位到首行首列是通過對LCD寫定位指令來完成的,可用于將顯示位置確定到第一行第一列。寫日期數(shù)據(jù)到第一行是通過寫數(shù)據(jù)指令來將要顯示的日期數(shù)據(jù)顯示在液晶屏的第一行。LCD顯示換行也是通過定位指令來實現(xiàn)的。
在對LCD模塊進行顯示控制時,用到了寫控制命令和寫數(shù)據(jù)命令。這些命令是針對具體配置的硬件電路而編寫的.h頭文件。LCD模塊的頭文件如下:
這樣編寫是為了和具體的硬件電路相對應,在LCD模塊的硬件描述語言中,液晶模塊RW和RS的地址分配模塊如下:
其中RS信號是命令與數(shù)據(jù)線,高電平表示目前數(shù)據(jù)線上交換的是數(shù)據(jù),低電平表示目前數(shù)據(jù)線上交 換的是命令。液晶模塊可以根據(jù)這個信號作出正確的 響應。RW是電平信號,高電平表示對液晶模塊執(zhí)行 讀取操作,低電平表示對液晶模塊寫入數(shù)據(jù)或命令。 這樣便于確定各讀寫操作對應于基地址的偏移量。
最后,再將軟硬件的配置文件下載到DE2開發(fā)板上進行電子鐘的功能驗證。其實驗顯示結(jié)果如圖5所示。
4 結(jié)論
本文主要介紹了一種基于SOPC的電子鐘的設(shè)計方法。并對SOPC硬件系統(tǒng)的設(shè)計過程以及基于此硬件系統(tǒng)的軟件功能的設(shè)計進行了詳細的介紹。由于在SOPC系統(tǒng)中,軟硬件都可以編程,從而為硬件系統(tǒng)的靈活配置和軟件系統(tǒng)的靈活設(shè)計提供了方便,也有利于系統(tǒng)的優(yōu)化和升級。尤其這種量體裁衣的硬件配置方式,可以最大限度的提高系統(tǒng)的性價比。同時,也可以利用HardCopy技術(shù),將成功實現(xiàn)于FPGA器件上的SOPC系統(tǒng)通過特定的技術(shù)直接向ASIC轉(zhuǎn)化。