張 莉,周燕云,黃曉輝
(新疆大學(xué) 信息科學(xué)與工程學(xué)院,新疆 烏魯木齊 830046)
目前,國產(chǎn)FPGA力量也在快速崛起,在5G通信時代,航錦科技的FPGA 芯片也可應(yīng)用于5G 通信產(chǎn)業(yè)鏈[1?2]。Qsys 是一個用于軟核平臺開發(fā)的嵌入在Quartus Ⅱ軟件中的系統(tǒng)集成工具。Qsys 可以創(chuàng)建IP(Intellectual Property)核之間的互聯(lián)邏輯,還可以自定義IP 核[3]。最重要的是,Qsys 能做好標(biāo)準(zhǔn)內(nèi)核和膠合邏輯,去除不必要的工作量,讓設(shè)計者可以把工作重點(diǎn)放在產(chǎn)品的差異化設(shè)計和邏輯定制上,實現(xiàn)產(chǎn)品的價值。
通過定制的硬件設(shè)計系統(tǒng)可以使用戶更加快速地完成軟件設(shè)計的任務(wù),然而日新月異的計算機(jī)行業(yè)又必然要求這些已經(jīng)被定制的計算機(jī)硬件系統(tǒng)可被重新進(jìn)行編程來設(shè)計和執(zhí)行新類型的計算任務(wù),F(xiàn)PGA 的體系結(jié)構(gòu)就有可重構(gòu)的特性[4]。利用Qsys 設(shè)計系統(tǒng),不僅能夠發(fā)揮FPGA 同時擁有流水線并行和數(shù)據(jù)并行的特點(diǎn),且其運(yùn)行速度快,可定制硬件的獨(dú)特優(yōu)勢,又可以體現(xiàn)Qsys 系統(tǒng)結(jié)構(gòu)性強(qiáng)且移植靈活的特點(diǎn),為執(zhí)行各類任務(wù)帶來便捷[5?6]。
系統(tǒng)通過Qsys 完成硬核搭建,同時使用Eclipse 的Nios Ⅱ工具實現(xiàn)軟核編程控制。LCD 的使用通常利用硬件描述語言控制[7?8]。在Qsys 系統(tǒng)中,重新集成了液晶的IP 核,這就意味著使用Qsys 來控制液晶可以非常便捷,無需進(jìn)行硬件描述語言構(gòu)建液晶時序的繁瑣操作,而直接添加IP 核即可使用。但系統(tǒng)提供的液晶IP核仍有不足,一些控制管腳未直接集成入IP 核內(nèi),需額外添加才可正常使用[9]。將所需的顯示元件LCD 設(shè)定成元件KEY,和需要外接聲光電提示電路的I/O 口,一同集成在系統(tǒng)硬核,生成Nios CPU。之后使用軟件編程工具,實現(xiàn)各模塊的讀/寫,從而完成時間管理的設(shè)計要求。
基于Qsys 的時間管理系統(tǒng)所有硬件主要分為兩個部分[10]:一個是Nios CPU 的設(shè)計;另一部分是FPGA 芯片與外圍設(shè)備的接口和外圍電路。通過設(shè)計Nios CPU,可以將所有外設(shè)掛載在Avalon 總線上,從而通過總線與Nios CPU 相接。這里的FPGA 芯片選擇Altera Cyclone Ⅱ系列的EP2C35F672C6N,SDRAM 選用8 MB單數(shù)據(jù)傳輸率同步動態(tài)隨機(jī)存儲芯片,選擇LCD1602液晶核獨(dú)立的8 個數(shù)碼管作為系統(tǒng)的顯示設(shè)備。外圍電路使用光敏電阻,構(gòu)建簡單光控電路。系統(tǒng)整體結(jié)構(gòu)圖如圖1 所示。左側(cè)虛線框中是使用FPGA 芯片搭建的Nios CPU 與鎖相環(huán),右側(cè)虛線框中是所有外設(shè)。
圖1 系統(tǒng)整體結(jié)構(gòu)
硬核的設(shè)計包含鎖相環(huán)PLL 和Nios CPU。其中,Nios CPU 的定制又需要使用到各外設(shè)的接口IP 核和用戶自定義的IP 核。
1.1.1 鎖相環(huán)設(shè)計
鎖相環(huán)可以依據(jù)需求對系統(tǒng)時鐘倍頻以提高系統(tǒng)的工作時鐘,加快運(yùn)行速度,還可以實現(xiàn)分頻以及設(shè)定相位偏移和輸出時鐘占空比[11]。Cyclone 系列的FPGA芯片包括兩個鎖相環(huán),鎖相環(huán)的使用需要依據(jù)系統(tǒng)需求進(jìn)行各項參數(shù)設(shè)定。由于鎖相環(huán)除了給Nios CPU 提供時鐘外,還需要作為SDRAM 的工作時鐘,因此針對鎖相環(huán)的設(shè)置,需要考慮SDRAM 的工作時序。將系統(tǒng)時鐘的50 MHz 倍頻,并相位偏移-63°,占空比設(shè)置為50%,生成的時鐘作為SDRAM 的工作時鐘。
1.1.2 Nios CPU 設(shè)計
對Nios 處理器編寫程序主要是用來控制Qsys 內(nèi)的部件,如片上存儲器、PIO 內(nèi)核、定時器、SDRAM 內(nèi)核、UART 內(nèi)核、DMA 內(nèi)核以及用戶自定義內(nèi)核等。其本質(zhì)是對Nios Ⅱ外圍設(shè)備的相關(guān)寄存器進(jìn)行讀/寫操作[12?13]。根據(jù)系統(tǒng)需求添加SDRAM 控制器用于存取整個工程文件和程序文件,加入jtag uart,使系統(tǒng)和上位機(jī)可以通過串行通信接口通信,添加自定義的數(shù)碼管IP核,用于顯示信息,添加液晶IP 核LCD16207用于控制液晶顯示,添加定時器用于計時計數(shù),添加開關(guān)用于用戶輸入設(shè)定。除此之外,由于LCD16207內(nèi)核未集成兩個功能管腳LCD_ON和LCD_BLON,因此在Quartus Ⅱ下,要單獨(dú)添加這兩個管腳并拉高電平。圖2是Qsys系統(tǒng)的部分部件。
圖2 Qsys 系統(tǒng)部分部件
除存儲設(shè)備SDRAM 和顯示液晶設(shè)備及數(shù)碼管這些外圍設(shè)備之外,對于系統(tǒng)功能還需要再加入部分外圍電路,用于用戶交互。其中,輸入電路主要是開關(guān)電路,用于用戶對時間系統(tǒng)的設(shè)定修改等。本文設(shè)計開關(guān)電路主要有兩種:按鍵開關(guān)和撥動開關(guān)。開關(guān)通過輸入PIO,與Nios CPU 相連。使用一個最高阻值22 kΩ、最低阻值50 Ω 的光敏電阻,串聯(lián)一個1 kΩ 的普通電阻再并聯(lián)一個5 V 的直流電源就構(gòu)成了一個簡單的光控電路[14]。通過一個雙向PIO,與Nios CPU 相連。圖3 給出了FPGA 芯片與液晶和數(shù)碼管的連接電路,以及時間管理系統(tǒng)整體設(shè)計工程圖。
定時器既可以測定事件發(fā)生的時間還能夠作為系統(tǒng)的周期性時鐘源。Nios Ⅱ處理器通過控制寄存器執(zhí)行不同的寫操作來控制定時器啟動和停止。在硬核中添加定時器后,Nios Ⅱ可直接通過程序?qū)崿F(xiàn)對系統(tǒng)定時器的初始化以及開啟和關(guān)閉。
圖3 顯示功能電路連接與完整工程圖
關(guān)鍵代碼如下:
顯示設(shè)備包括數(shù)碼管和液晶,其中,液晶顯示器由Qsys系統(tǒng)為固化好的IP核LCD16207提供接口,在Nios Ⅱ中,通過printf()函數(shù)向液晶發(fā)出指令,顯示相應(yīng)信息。而數(shù)碼管沒有固化的IP 核,需要用戶自定義添加,通過硬件描述語言將數(shù)碼管的控制過程,封裝成一個元件,在Qsys 中,為元件設(shè)置接入總線的接口后,即可在Nios Ⅱ中實現(xiàn)對數(shù)碼管的直接使用。
以下是數(shù)碼管自定義添加IP 核后,在Nios Ⅱ中對數(shù)碼管調(diào)用控制輸出的部分關(guān)鍵代碼:
光控部分通過IOWR()函數(shù)讀取光敏電阻接入FPGA 芯片的I/O 口電平來實現(xiàn)檢測光線狀態(tài)。當(dāng)I/O口檢測為低電平時,說明外部沒有光照,此時將LED 燈點(diǎn)亮,示意開啟光照;當(dāng)I/O 口檢測為高電平時,說明外部有足夠光照,此時控制LED 熄滅,同時可在液晶上顯示實時狀態(tài)。電路接入蜂鳴器,與光敏電阻一樣,通過I/O 口完成蜂鳴器電路與芯片的連接,實現(xiàn)告警提示模塊的聲光同步。
為了驗證本設(shè)計的有效性,將軟硬件程序編譯無誤后下載到FPGA 芯片中實際驗證。系統(tǒng)的初始界面顯示定時器和時鐘兩種模式,在時鐘模式下,顯示當(dāng)前的時間,時間可以通過按鍵與撥動開關(guān)修改和設(shè)定。還可進(jìn)入定時鬧鐘模式和倒計時模式。鬧鐘模式通過LCD顯示,倒計時通過數(shù)碼管顯示。右邊4 組為設(shè)定的倒計時時長,左邊為倒計時。計時結(jié)束或時間到達(dá)設(shè)定值時,系統(tǒng)通過LED 和蜂鳴器同步告警提示。當(dāng)光敏電阻檢測傳回I/O 口的數(shù)據(jù)為低電平時,LED 點(diǎn)亮,表明此時開啟照明。圖4 是系統(tǒng)的實驗驗證結(jié)果。結(jié)果表明各模塊均能夠正常工作。
圖4 系統(tǒng)測試結(jié)果
本文論述了在Qsys 平臺上對現(xiàn)有IP 核、自定義IP核的使用方法,和鎖相環(huán)控制處理器與SDRAM 的方法,通過液晶、數(shù)碼管、LED、光控電路實現(xiàn)一個具有萬年歷、鬧鐘、計時器、聲光告警、光控電路的時間管理系統(tǒng)。實驗效果表明,利用Qsys 設(shè)計任務(wù),不僅系統(tǒng)結(jié)構(gòu)性強(qiáng),模塊化的形式易修改擴(kuò)展,還能將FPGA 芯片的優(yōu)勢充分發(fā)揮,縮短開發(fā)時間,具有實際應(yīng)用價值。