楊翠娥
(太原工業(yè)學(xué)院,山西 太原 030008)
FPGA是一種超大規(guī)??删幊踢壿嬈骷?。通過EDA軟件設(shè)計(jì)平臺,采用符合業(yè)界標(biāo)準(zhǔn)的HDL語言對FPGA芯片進(jìn)行設(shè)計(jì)開發(fā),使得電子工程師逐步從使用硬件轉(zhuǎn)向設(shè)計(jì)硬件,把想設(shè)計(jì)的電路直接設(shè)計(jì)在自己的專用芯片上,使設(shè)計(jì)者通過設(shè)計(jì)芯片實(shí)現(xiàn)電子系統(tǒng)功能。近年來越來越多的IP核的出現(xiàn),尤其是IP CPU核的使用,使得FPGA設(shè)計(jì)更加集成、快捷與高效。相對于簡單的單片機(jī)系統(tǒng),基于FPGA的SOC系統(tǒng)由于集成度高,具有良好的抗干擾性能,同時(shí)也使信號傳輸?shù)乃俣却蠓岣?。以Intel的Cyclone 4E為例,其單片機(jī)核的工作頻率最高可超過200MHz,遠(yuǎn)遠(yuǎn)高于一般的單片機(jī)的工作速度。另外,F(xiàn)PGA系統(tǒng)升級便捷,開發(fā)效率高,低成本及低功耗的特點(diǎn)也使得基于FPGA的SOC應(yīng)用越來越得到業(yè)界的認(rèn)可,成為現(xiàn)代電子工程師進(jìn)行產(chǎn)品設(shè)計(jì)的重要手段[1]。
圖1所示為基于FPGA的SOC系統(tǒng)組成框圖。虛線框內(nèi)部分可以組成一個(gè)單片機(jī)系統(tǒng)且可以集成在一片F(xiàn)PGA芯片中,構(gòu)成FPGA片上系統(tǒng)(SOC)。片上系統(tǒng)是一個(gè)軟硬件相結(jié)合的可綜合系統(tǒng)模塊,其中單片機(jī)部分一般是一個(gè)開源的軟核處理器,然后在FPGA上設(shè)計(jì)或定制相應(yīng)功能的邏輯模塊,其中包括所有必須的存儲器,控制模塊、通信模塊和接口模塊等。片上系統(tǒng)可以和外圍輸入、輸出接口相連接,構(gòu)成一個(gè)完整的電子應(yīng)用設(shè)計(jì)?;贔PGA的SOC系統(tǒng)設(shè)計(jì)流程主要包括設(shè)計(jì)規(guī)劃、硬件控制模塊設(shè)計(jì)及仿真、軟件運(yùn)行平臺構(gòu)建、完整硬件系統(tǒng)構(gòu)建、系統(tǒng)軟件設(shè)計(jì)與調(diào)試等。與基于單片機(jī)的純軟件系統(tǒng)設(shè)計(jì)不同,F(xiàn)PGA的SOC設(shè)計(jì)涉及硬件設(shè)計(jì)、軟件設(shè)計(jì)及二者的相互替代及滲透,是一個(gè)系統(tǒng)軟硬件聯(lián)合設(shè)計(jì)與綜合調(diào)試的過程[2]。

圖1 基于FPGA的SOC系統(tǒng)組成框圖
圖2所示為在Quartus II設(shè)計(jì)環(huán)境下給出的基于8051 IP核的數(shù)字電壓表頂層電路圖。

圖2 基于8051 IP核的數(shù)字電壓表頂層電路圖
其中8051單片機(jī)核是由VQM原碼經(jīng)過例化方式生成的,外圍配接上程序存儲器ROM和數(shù)據(jù)RAM后就成為一個(gè)完整的8051單片機(jī)最小系統(tǒng)了。該8051 IP核與標(biāo)準(zhǔn)的8051指令系統(tǒng)完全兼容,大部分控制信號及數(shù)據(jù)傳輸接口也與單片機(jī)系統(tǒng)相同。
由于FPGA有良好的高速性能,F(xiàn)PGA與高速ADC接口十分常見。在FPGA中,可以使用狀態(tài)機(jī)的形式來控制ADC的采樣,并實(shí)時(shí)地將每一采樣周期獲得的數(shù)據(jù)及時(shí)地存入FPGA內(nèi)部的RAM中,在適當(dāng)?shù)臅r(shí)候由單片機(jī)讀取處理。本設(shè)計(jì)給出了基于8051 IP核的數(shù)字電壓表的設(shè)計(jì),其中鎖相環(huán)模塊為系統(tǒng)提供了三個(gè)時(shí)鐘信號;ADC0809控制模塊由Verilog語言設(shè)計(jì)完成[3],用于實(shí)現(xiàn)對外部ADC0809芯片的時(shí)序控制;ADC0809控制模塊的數(shù)據(jù)輸出端口Q[7..0]在FPGA內(nèi)部與單片機(jī)核的P2口的輸入口P2I[7..0]相接。在ROM模塊中,可通過定制初始化文件LCD1602.HEX實(shí)現(xiàn)ASM程序的調(diào)用及運(yùn)行。
圖3為ROM模塊初始化文件定制界面。LCD1602.HEX是LCD1602.ASM程序經(jīng)過匯編軟件編譯生成的可執(zhí)行文件。LCD1602.ASM的主要功能是將來自ADC0809采樣數(shù)據(jù)從P2口讀入,最后轉(zhuǎn)換為BCD碼顯示于液晶。以下是一段關(guān)于數(shù)據(jù)采集、轉(zhuǎn)換并顯示于液晶的部分ASM程序:

圖3 ROM模塊初始化文件定制界面
……
GGGG: MOV A, P2;將來自ADC0809采樣數(shù)據(jù)從
P2口讀入
PUSH A
MOV 4FH,A
MOV 4EH,#00H
MOV 5FH,#OF4H
MOV 5EH,#01H
LCALL MULNM;將此數(shù)乘以500(1F4H)
MOV 4CH,5CH
MOV 4DH,5DH
MOV 4EH,5FH
MOV 4FH,5FH
MOV 5EH,#00H
MOV 5FH,#0FFH
LCALL DIVD;乘積除以255(FFH)
;HEXBCD : 7 BYTE HEX TO
8 BYTE BCD : HEX(3XH-30H)
-->BCD(4XH-40H)
MOV 30H,4FH
MOV 31H,4EH
MOV 32H,#00H
MOV 33H,#00H
MOV 34H,#00H
MOV 35H,#00H
MOV 36H,#00H
MOV 37H,#00H
LCALL HEXBCD;最后轉(zhuǎn)換為BCD碼顯示于與液晶
……
在Quartus軟件設(shè)計(jì)環(huán)境下,對頂層文件編譯,然后下載到開發(fā)板上的FPGA芯片中,F(xiàn)PGA輸出數(shù)據(jù)端口連接LCD1602液晶顯示器,圖4為實(shí)測的液晶顯示數(shù)據(jù)。

圖4 實(shí)測的液晶顯示數(shù)據(jù)
基于FPGA的片上系統(tǒng)設(shè)計(jì)應(yīng)用越來越廣泛,其中核心CPU核可以是一個(gè)51單片機(jī)核,也可以是其他類型的的單片機(jī)核,甚至是功能更強(qiáng)大的ASM處理器。目前基于Nios嵌入式核處理器的應(yīng)用已經(jīng)成為現(xiàn)代處理器應(yīng)用的一個(gè)重要方向。基于FPGA的SOC片上系統(tǒng)設(shè)計(jì)技術(shù)不論在功能、速度、成本、靈活性,還是開發(fā)效率、系統(tǒng)升級可行性等方面,對應(yīng)電子工程師們來說都是一個(gè)上佳的選擇。本設(shè)計(jì)以8051核為例在FPGA芯片上設(shè)計(jì)了一個(gè)基于SOC的數(shù)字電壓表,其設(shè)計(jì)過程與方法適合其他類型的CPU核的設(shè)計(jì),具有一定的設(shè)計(jì)參考價(jià)值。