楊翠娥
(太原工業(yè)學院,山西 太原 030008)
FPGA是一種超大規(guī)模可編程邏輯器件。通過EDA軟件設計平臺,采用符合業(yè)界標準的HDL語言對FPGA芯片進行設計開發(fā),使得電子工程師逐步從使用硬件轉向設計硬件,把想設計的電路直接設計在自己的專用芯片上,使設計者通過設計芯片實現(xiàn)電子系統(tǒng)功能。近年來越來越多的IP核的出現(xiàn),尤其是IP CPU核的使用,使得FPGA設計更加集成、快捷與高效。相對于簡單的單片機系統(tǒng),基于FPGA的SOC系統(tǒng)由于集成度高,具有良好的抗干擾性能,同時也使信號傳輸?shù)乃俣却蠓岣摺R訧ntel的Cyclone 4E為例,其單片機核的工作頻率最高可超過200MHz,遠遠高于一般的單片機的工作速度。另外,F(xiàn)PGA系統(tǒng)升級便捷,開發(fā)效率高,低成本及低功耗的特點也使得基于FPGA的SOC應用越來越得到業(yè)界的認可,成為現(xiàn)代電子工程師進行產(chǎn)品設計的重要手段[1]。
圖1所示為基于FPGA的SOC系統(tǒng)組成框圖。虛線框內(nèi)部分可以組成一個單片機系統(tǒng)且可以集成在一片F(xiàn)PGA芯片中,構成FPGA片上系統(tǒng)(SOC)。片上系統(tǒng)是一個軟硬件相結合的可綜合系統(tǒng)模塊,其中單片機部分一般是一個開源的軟核處理器,然后在FPGA上設計或定制相應功能的邏輯模塊,其中包括所有必須的存儲器,控制模塊、通信模塊和接口模塊等。片上系統(tǒng)可以和外圍輸入、輸出接口相連接,構成一個完整的電子應用設計?;贔PGA的SOC系統(tǒng)設計流程主要包括設計規(guī)劃、硬件控制模塊設計及仿真、軟件運行平臺構建、完整硬件系統(tǒng)構建、系統(tǒng)軟件設計與調(diào)試等。與基于單片機的純軟件系統(tǒng)設計不同,F(xiàn)PGA的SOC設計涉及硬件設計、軟件設計及二者的相互替代及滲透,是一個系統(tǒng)軟硬件聯(lián)合設計與綜合調(diào)試的過程[2]。
圖1 基于FPGA的SOC系統(tǒng)組成框圖
圖2所示為在Quartus II設計環(huán)境下給出的基于8051 IP核的數(shù)字電壓表頂層電路圖。
圖2 基于8051 IP核的數(shù)字電壓表頂層電路圖
其中8051單片機核是由VQM原碼經(jīng)過例化方式生成的,外圍配接上程序存儲器ROM和數(shù)據(jù)RAM后就成為一個完整的8051單片機最小系統(tǒng)了。該8051 IP核與標準的8051指令系統(tǒng)完全兼容,大部分控制信號及數(shù)據(jù)傳輸接口也與單片機系統(tǒng)相同。
由于FPGA有良好的高速性能,F(xiàn)PGA與高速ADC接口十分常見。在FPGA中,可以使用狀態(tài)機的形式來控制ADC的采樣,并實時地將每一采樣周期獲得的數(shù)據(jù)及時地存入FPGA內(nèi)部的RAM中,在適當?shù)臅r候由單片機讀取處理。本設計給出了基于8051 IP核的數(shù)字電壓表的設計,其中鎖相環(huán)模塊為系統(tǒng)提供了三個時鐘信號;ADC0809控制模塊由Verilog語言設計完成[3],用于實現(xiàn)對外部ADC0809芯片的時序控制;ADC0809控制模塊的數(shù)據(jù)輸出端口Q[7..0]在FPGA內(nèi)部與單片機核的P2口的輸入口P2I[7..0]相接。在ROM模塊中,可通過定制初始化文件LCD1602.HEX實現(xiàn)ASM程序的調(diào)用及運行。
圖3為ROM模塊初始化文件定制界面。LCD1602.HEX是LCD1602.ASM程序經(jīng)過匯編軟件編譯生成的可執(zhí)行文件。LCD1602.ASM的主要功能是將來自ADC0809采樣數(shù)據(jù)從P2口讀入,最后轉換為BCD碼顯示于液晶。以下是一段關于數(shù)據(jù)采集、轉換并顯示于液晶的部分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;最后轉換為BCD碼顯示于與液晶
……
在Quartus軟件設計環(huán)境下,對頂層文件編譯,然后下載到開發(fā)板上的FPGA芯片中,F(xiàn)PGA輸出數(shù)據(jù)端口連接LCD1602液晶顯示器,圖4為實測的液晶顯示數(shù)據(jù)。
圖4 實測的液晶顯示數(shù)據(jù)
基于FPGA的片上系統(tǒng)設計應用越來越廣泛,其中核心CPU核可以是一個51單片機核,也可以是其他類型的的單片機核,甚至是功能更強大的ASM處理器。目前基于Nios嵌入式核處理器的應用已經(jīng)成為現(xiàn)代處理器應用的一個重要方向?;贔PGA的SOC片上系統(tǒng)設計技術不論在功能、速度、成本、靈活性,還是開發(fā)效率、系統(tǒng)升級可行性等方面,對應電子工程師們來說都是一個上佳的選擇。本設計以8051核為例在FPGA芯片上設計了一個基于SOC的數(shù)字電壓表,其設計過程與方法適合其他類型的CPU核的設計,具有一定的設計參考價值。