權(quán)震華,羅 亮
(西南科技大學(xué) 信息工程學(xué)院,四川 綿陽621010)
數(shù)碼電子音樂相冊形式新穎、展示信息豐富,在商場、站臺、家庭有著廣泛的應(yīng)用。本文提出了一種基于SoPC技術(shù)的數(shù)碼電子音樂相冊設(shè)計方案,在FPGA內(nèi)部定制一個Nios II軟核處理器,再以其為核心,配以一定的外圍電路和驅(qū)動程序設(shè)計,通過軟硬件協(xié)同設(shè)計實現(xiàn)了一個人機接口友好的音樂相冊。
本系統(tǒng)以在Altera FPGA產(chǎn)品內(nèi)定制的Nios II軟核作為處理器,外圍電路包括外圍存儲器驅(qū)動、MP3音頻解碼、TFT液晶屏控制、觸摸屏驅(qū)動和SD卡驅(qū)動等電路。外圍存儲器和SD卡的驅(qū)動部分在FPGA內(nèi)部實現(xiàn),而MP3音頻解碼、TFT液晶屏控制、觸摸屏驅(qū)動則分別選用了VS1003B、HX8347和UH78430芯片來實現(xiàn)。系統(tǒng)硬件框圖如圖1所示。
圖1 系統(tǒng)硬件框圖
SoPC,即片上可編程系統(tǒng),是Altera公司提出來的一種靈活高效的SoC解決方案,是指將處理器、存儲器、定時器、總線控制器、通信接口、I/O端口等系統(tǒng)設(shè)計需要的功能模塊集成到一個FPGA上,構(gòu)建成一個可編程的片上系統(tǒng)。本設(shè)計基于Nios II處理器組建的SoPC系統(tǒng)框圖如圖2所示。
圖2 SoPC系統(tǒng)框圖
系統(tǒng)需在FPGA上添加Flash存儲器和SDRAM存儲器,分別用于存儲應(yīng)用程序代碼和運行應(yīng)用程序。Flash選中的應(yīng)用程序代碼在系統(tǒng)運行前將被拷貝到SDRAM中執(zhí)行。本設(shè)計中的Flash存儲器選用S29AL032D芯片,SDRAM存儲器選用具有8 MB字節(jié)容量的A2V64S40CTP芯片。Flash存儲器和SDRAM存儲器都是使用Altera SoPC Builder工具中免費提供的Avalon總線IP掛接到片上Avalon總線上,以實現(xiàn)Nios II對它們的訪問。
VS1003B是芬蘭VLSI公司出品的單芯片MP3/WMA/MIDI音頻解碼和ADPCM編碼芯片,支持MP3、MP3+V、WMA、WAV、MIDI和SP-MIDI格式的音頻解碼播放,內(nèi)部擁有高性能、低功耗DSP處理器核和緩存,且外圍接口豐富。
本設(shè)計使用7個IO口用于操作VS1003B,其端口連接圖如圖3所示。其中,各端口功能分別為:XRESET,復(fù)位;XDCS,數(shù)據(jù)片選;XCS,芯片片選;SCLK,SPI通信接口時鐘輸入;MOSI,SPI通信接口數(shù)據(jù)輸出;MISO,SPI通信接口數(shù)據(jù)輸入;DREQ,數(shù)據(jù)處理完中斷輸出。
圖3 VS1003B硬件接口設(shè)計
VS1003B芯片內(nèi)部共有16個16位控制寄存器,地址分別為0x0~0x0F,可通過SPI接口使用SCI通信協(xié)議來配置控制寄存器。需解碼的數(shù)據(jù)也是通過SPI接口使用SDI通信協(xié)議傳送到緩存,讓芯片正確播放音頻文件。
在使用VS1003B之前,需要對VS1003B的控制寄存器進(jìn)行初始化配置;完成配置后,即可往VS1003B的緩存中寫入解碼數(shù)據(jù),實現(xiàn)音頻解碼。
HX8347芯片是TFT液晶屏專用驅(qū)動芯片,最大支持320×240分辨率的TFT液晶屏。其內(nèi)置173 KB的RAM,色彩模式支持最高26萬色的顯示。HX8347具有4種接口方式:8/9/16/18 bit系統(tǒng)總線方式、SPI總線方式、寄存器接口方式和RGB接口方式。
本設(shè)計采用16 bit系統(tǒng)總線方式,端口連接如圖4所示。需使用21個IO口,各端口功能分別為:RST:復(fù)位;CS:片選;RS:指令/數(shù)據(jù)選擇;WR:寫使能;RD:讀使能;DATA[15:0]:16 bit數(shù)據(jù)。
圖4 HX8347硬件接口設(shè)計
HX8347內(nèi)部共有132個寄存器,地址從0x00~0x93。在使用液晶屏前,需對其中大部分寄存器初始化。寄存器操作要使用CS、RS、RD、WR、DATA[7:0]端口。在正確配置寄存器后,就可進(jìn)行顯示數(shù)據(jù)的傳送。數(shù)據(jù)傳輸與寄存器配置使用的端口是一樣的,只是寄存器配置使用的是數(shù)據(jù)總線的低8 bit,而數(shù)據(jù)傳送要使用全部16 bit數(shù)據(jù)總線。
對TFT液晶屏的操作,首先進(jìn)行初始化操作,主要包括對液晶內(nèi)部參考電壓、開啟晶振、顯示緩沖區(qū)和RGB色彩等寄存器的設(shè)置。在完成初始化之后即可進(jìn)行顯示操作,先在液晶的RAM中開辟一個顯示緩沖區(qū),然后再向顯示緩沖區(qū)填入顯示數(shù)據(jù)即可實現(xiàn)TFT屏的顯示與更新。
UH7843是TI公司生產(chǎn)的4線電阻觸摸屏轉(zhuǎn)換接口芯片,具有同步串行12位取樣數(shù)模轉(zhuǎn)換器,功耗低,轉(zhuǎn)換速率高。
本設(shè)計使用了6個IO口來操作UH7843芯片,端口連接如圖5所示。其中,各端口功能分別為:CS:芯片片選;SCLK:SPI通信接口時鐘輸入;DIN:SPI通信接口數(shù)據(jù)輸入;DOUT:SPI通信接口數(shù)據(jù)輸出;BUSY:芯片忙信號輸出;IRQ:芯片中斷信號輸出。
圖5 UH7843硬件接口設(shè)計
當(dāng)觸摸屏上有觸摸動作時,觸摸屏的X+、X-、Y+、Y-端會產(chǎn)生不同的模擬電壓并送入UH7843。UH7843會對輸入電壓產(chǎn)生一個轉(zhuǎn)換過程,轉(zhuǎn)換完成后用中斷通知處理器,處理器便會去讀取此時的AD采樣值,再調(diào)用程序計算實現(xiàn)觸摸點的定位。
SD卡支持兩種總線方式:SD方式與SPI方式。本設(shè)計采用IO口模擬SPI模式通信,使用4個IO口實現(xiàn)SD卡的控制。端口連接如圖6所示。
圖6 SD卡硬件接口設(shè)計
本設(shè)計采用CMD0、CMD1、CMD17和CMD24 4個命令組合操作SD卡。CMD0為SD卡復(fù)位指令,設(shè)置SD卡工作于SPI接口模式;CMD1初始化SD卡,激活SD處于工作狀態(tài);CMD17讀SD卡扇區(qū),讀取一個扇區(qū)512 B數(shù)據(jù),在讀取時需要給出地址信息;CMD24寫SD卡扇區(qū),給出寫入扇區(qū)地址以及數(shù)據(jù)后即可往SD卡指定扇區(qū)寫入512 B數(shù)據(jù)。
通過復(fù)位SD卡、初始化SD卡、讀取SD卡扇區(qū)數(shù)據(jù)3個步驟完成對SD卡的操作,實現(xiàn)從卡中讀取數(shù)據(jù)的工作。
在Altera Quartus II軟件中建立工程,啟動SoPC Builder工具定制Nios II處理器,進(jìn)行SoPC系統(tǒng)的構(gòu)建。本SoPC系統(tǒng)包括Nios II處理器模塊、存儲器接口模塊、UART模塊和PIO口總線模塊等部分。
(1)Nios II/s CPU
結(jié)合本設(shè)計所需資源,選用標(biāo)準(zhǔn)型,如圖7所示。
圖7 SoPC構(gòu)建
完成軟核類型的選擇之后,再進(jìn)行JTAG Debug Module的設(shè)置,以便于調(diào)試。所得到的CPU配置如圖8所示。
圖8 CPU構(gòu)建
(2)SDRAM、Flash等存儲器接口模塊
使用SRAM作為系統(tǒng)的通用數(shù)據(jù)存儲器。SDRAM空間較大,可作為應(yīng)用程序的運行空間;Flash作為程序存儲器,用于存放應(yīng)用程序代碼。
(3)UART模塊和PIO口總線模塊
UART串口模塊用于調(diào)試,系統(tǒng)也可以在此基礎(chǔ)上擴展串口外設(shè)。將串口波特率設(shè)置為最大的115 200 bit/s。PIO口則用于控制SD卡、TFT液晶、觸摸芯片以及音頻模塊這幾個外部設(shè)備。
在添加完各個模塊后,還需要為各個模塊指定名稱、類型、存儲器地址映像和系統(tǒng)外設(shè)的中斷設(shè)置,如圖9所示。為了方便起見,通常將Flash的首地址設(shè)置為0,其他模塊地址由系統(tǒng)自動分配。
整個應(yīng)用軟件需要設(shè)計3大模塊程序:MP3音樂播放程序、數(shù)碼相冊程序和觸摸控制程序。整體軟件流程圖如圖10所示。
圖9 SoPC整體配置
圖10 系統(tǒng)軟件流程圖
為了方便對MP3文件和圖像文件的訪問,應(yīng)用程序需要提供對文件系統(tǒng)的支持。本設(shè)計采用了znFAT32文件系統(tǒng)。
znFAT32是于振南為小型嵌入式設(shè)備完全獨立編寫且源代碼開放的FAT32文件系統(tǒng)解決方案。znFAT32能夠支持眾多 的存儲設(shè)備 (SD卡、CF卡、Flash、U盤等),支持多個存儲器共同工作以及同時訪問多個存儲器對文件的操作;其對硬件資源要求低,代碼完全由C語言編寫,能夠方便地移植到51單片機、AVR、ARM、Nios II等處理器上,占用資源極少,非常適合嵌入式開發(fā)中文件系統(tǒng)的嵌入。
znFAT32其中的一個主要實現(xiàn)是文件打開函數(shù),該函數(shù)原型如下:
其中,入口參數(shù)的意義分別為:pfi,文件信息結(jié)構(gòu)體;filepath,文件名稱;item,文件類型;is_file,確定是一個文件。
本設(shè)計首先使用文件打開函數(shù)打開文件,然后按需要對文件使用MP3處理函數(shù)和相冊處理函數(shù)進(jìn)行處理。
MP3播放音樂程序流程如圖11所示。
圖11 MP3播放流程圖
當(dāng)進(jìn)入MP3播放程序以后,首先讀取出歌曲目錄表,等待用戶選擇歌曲,超時等待后即刻進(jìn)入目錄表第一首歌曲播放。通過文件系統(tǒng)打開第一首歌曲,解析歌曲后,進(jìn)入歌曲數(shù)據(jù)區(qū)按扇區(qū)讀出數(shù)據(jù)進(jìn)行解碼播放。每個扇區(qū)讀取完成后,查閱觸摸緩沖區(qū)是否有需要處理的觸摸信息,如果有換歌信息則換到相應(yīng)歌曲播放,同時液晶顯示界面切換;如果有退出播放信息,則執(zhí)行退出播放狀態(tài)切換到主界面;如果沒有觸摸信息,則繼續(xù)播放,播放完一首歌后自動切換到下一首歌,直到所有音樂播放完成,最后返回主界面。在每個扇區(qū)讀取完成后處理觸摸信息,這樣能實時響應(yīng)觸摸狀態(tài)。
數(shù)碼相冊是另一個主要功能。當(dāng)系統(tǒng)進(jìn)入到圖片瀏覽功能后,會讀取第一張圖片顯示,然后等待用戶觸摸選擇顯示圖片或者退出。程序流程圖如圖12所示。
圖12 圖片顯示主流程
在顯示圖片過程中,首先是通過文件系統(tǒng)讀取圖片數(shù)據(jù)區(qū)的第一個扇區(qū),然后取出文件頭、文件信息頭、色彩表等信息,對圖片的有效性進(jìn)行檢測,包括圖片大小、圖片格式、圖片色彩模式以及圖片的壓縮類型。當(dāng)檢測到有效BMP圖片時,即可進(jìn)入圖片顯示,每顯示一個扇區(qū)的數(shù)據(jù),就檢測觸摸緩沖區(qū)是否有需要處理的數(shù)據(jù),如果檢測到選擇下一張的觸摸信息則跳入下一張圖片顯示,如果檢測到上一張的觸摸信息則退回上一張,如果是選擇退出的觸摸信息則返回主界面。
觸摸控制程序流程圖如圖13所示。
圖13 觸摸控制程序流程圖
本設(shè)計在友晶科技的DE2開發(fā)板上進(jìn)行調(diào)試驗證。首先在DE2實驗開發(fā)板上構(gòu)建Nios II處理器;在測試構(gòu)建的Nios處理器正確之后,再對各個外設(shè)的底層編寫驅(qū)動,并一一進(jìn)行測試;最后在底層驅(qū)動編寫好的前提下,編寫應(yīng)用程序。
對SD卡讀寫模塊、VS1003B音頻模塊、TFT顯示模塊、觸摸芯片模塊以及文件系統(tǒng)加載模塊等外設(shè)底層驅(qū)動進(jìn)行測試,可利用JTAG UART串口輸出調(diào)試信息來進(jìn)行正誤驗證。圖14是當(dāng)正確掛載FAT32文件系統(tǒng),插上SD卡讀取出SD卡的扇區(qū)信息后,在主機側(cè)使用串口調(diào)試助手接收到的信息。
圖14 FAT32文件系統(tǒng)加載測試圖
本文給出了一種基于SoPC的數(shù)碼電子音樂相冊的設(shè)計方案。使用SoPC Builder開發(fā)工具在DE2開發(fā)板上構(gòu)建Nios II處理器和SoPC系統(tǒng),搭建了外圍音頻解碼、TFT液晶驅(qū)動和觸摸屏驅(qū)動等電路,編寫了各外設(shè)的底層驅(qū)動以及應(yīng)用程序,最終實現(xiàn)了數(shù)碼電子音樂相冊的設(shè)計。使用SoPC技術(shù)進(jìn)行系統(tǒng)設(shè)計具有開發(fā)周期短、設(shè)計靈活、可將若干外部模塊綜合設(shè)計到一片高密度FPGA中等優(yōu)點,同時設(shè)計更小巧,成本更低,更便于系統(tǒng)升級。目前SoPC技術(shù)的應(yīng)用正在迅速擴大,具有廣闊的應(yīng)用空間和突出的市場競爭力。
[1]周立功.SoPC嵌入式開發(fā)系列教程[M].北京:北京航空航天大學(xué)出版社,2006.
[2]蔡偉剛.Nios II軟件構(gòu)架解析[M].西安:西安電子科技大學(xué)出版社,2007.
[3]武景濤,史大光,高龍,等.FPGA和Nios II軟核的SD卡文件系統(tǒng)實現(xiàn)方法[J].單片機與嵌入式系統(tǒng)應(yīng)用,2012(12):22-25.
[4]HAMBLEN J O,HALL T S,F(xiàn)URMAN M D.Rapid prototyping of digital systems:SoPC edition[M].Springer,2007.
[5]Gao Kun,Cai Junbo.A SoPC-based mini VGA video capture and storage system[C].2010 3rd International Conference on Biomedical Engineering and Informatics(BMEI 2010),2010.