田淑珍,全成斌,董代潔
(清華大學(xué) 計算機科學(xué)與技術(shù)系,北京 100084)
基于SOPC及USB鍵盤的簡易電子琴綜合設(shè)計實驗
田淑珍,全成斌,董代潔
(清華大學(xué) 計算機科學(xué)與技術(shù)系,北京 100084)
介紹了基于SOPC及USB鍵盤的簡易電子琴設(shè)計和實現(xiàn)。利用ML402多功能接口板作為實現(xiàn)平臺,在ML402接口板上的FPGA片內(nèi)實現(xiàn)一個帶有CPU、數(shù)據(jù)、指令存儲器和內(nèi)部總線的簡單片上系統(tǒng),并且增加USB接口、音頻接口等接口控制器,將USB鍵盤連到USB接口上作為電子琴琴鍵,以USB主設(shè)備的方式使用ML402接口板,通過編寫ML402上的FPGA片內(nèi)CPU指令代碼,控制USB鍵盤值的讀入和鍵盤音符的播放。
片上可編程系統(tǒng);USB接口;音頻接口;USB鍵盤
目前,市場上的電子產(chǎn)品設(shè)計越來越精密和復(fù)雜,大多數(shù)電子產(chǎn)品都集成了CPU、各種接口以及系統(tǒng)和應(yīng)用軟件,這種系統(tǒng)級的設(shè)計一般都是采用當(dāng)前流行的片上系統(tǒng)(Soc)或片上可編程系統(tǒng)(SOPC)來設(shè)計。SOPC系統(tǒng)設(shè)計是在FPGA片內(nèi)集成包括CPU、總線、數(shù)據(jù)、指令存儲以及輸入/輸出接口的綜合設(shè)計,需要設(shè)計人員具有底層軟硬件開發(fā)的綜合能力[1]。
xilinx公司的ISE Design Suite /EDK(embedded development ket)嵌入式開發(fā)平臺用于FPGA 的SOPC開發(fā),開發(fā)平臺包括了硬件設(shè)計和集成、仿真、固件設(shè)計與調(diào)試、下載等子平臺,具有軟硬件協(xié)同工作的功能[2]。
對于計算機硬件實驗課程,利用學(xué)過的微機及各種接口原理,結(jié)合SOPC設(shè)計技術(shù),做一些應(yīng)用方面的實驗,特別是設(shè)計一些多接口的綜合性實驗,能夠很好地訓(xùn)練學(xué)生的實際工作能力。綜合設(shè)計能力越強越能適應(yīng)目前社會對計算機硬軟件工程師的要求。
USB接口是PC機外設(shè)的主要接口,使PC機的外設(shè)接口統(tǒng)一了標(biāo)準(zhǔn)。USB協(xié)議代表了計算機外部接口的發(fā)展趨勢,接口體積變小,串行傳輸代替并行傳輸,速度不斷提高,USB協(xié)議具有層次結(jié)構(gòu)。音頻接口是人機交互的主要接口之一,目前的音頻播放技術(shù)可以采用多通道時分復(fù)用技術(shù),并且在利用各種編/解碼技術(shù)的情況下,可以用較少量的數(shù)據(jù)播放出更逼真的音質(zhì)。
下面將介紹一個基于SOPC的USB鍵盤電子琴綜合設(shè)計實驗。
實驗涉及的技術(shù)包括USB鍵盤控制,聲音數(shù)據(jù)的存儲與讀出,播放聲音,F(xiàn)PGA可編程和SOPC技術(shù)。實驗硬件平臺采用xilinx公司生產(chǎn)的ML402開發(fā)板,開發(fā)板的主芯片采用xilinx的FPGA器件,型號是VIRTEX-4系列的XC4VSX35,板上還包含了與FPGA相連的各種外部接口器件,其中USB器件采用CY7C67300,聲音器件采用LM4550,存儲器為Flash。軟件設(shè)計平臺采用Xilinx公司的ISE Design Suite /EDK。
整個實驗呈現(xiàn)出的效果是:當(dāng)按下USB鍵盤上指定的按鍵時,能播放出事先定義好的音符的聲音。按這個效果的設(shè)計,系統(tǒng)需要:(1)完成對ML402上CY7C67300的操作(讀寫),以完成接收USB鍵盤輸入的操作;(2)完成對ML402上LM4550的操作(讀寫),以完成聲音的播放和錄制;(3)完成對板上至少一個非易失性的存儲介質(zhì)的讀寫操作,以存放預(yù)先定義好的聲音播放數(shù)據(jù)。
設(shè)計方案是以USB主設(shè)備的方式使用ML402開發(fā)板,用一個USB接口鍵盤作為電子琴的琴鍵,事先將各個琴鍵對應(yīng)的聲音數(shù)據(jù)存入Flash,當(dāng)有鍵盤輸入時,通過FPGA的控制讀入鍵盤數(shù)據(jù),再根據(jù)鍵盤值到Flash查找聲音數(shù)據(jù),最后通過LM4550完成鍵盤音符的播放。
FPGA片內(nèi)硬件設(shè)計選用一個CPU軟核MicroBlaze,通過片內(nèi)總線配上對應(yīng)的外設(shè)控制器IP和外部接口器件配合工作。由于有了CPU,F(xiàn)PGA片內(nèi)需要設(shè)計固件,Xilinx公司的ISE Design Suite /EDK提供了C語言的編譯環(huán)境,因此,就可以采用C語言編程,使應(yīng)用程序的開發(fā)更為方便。圖1是USB鍵盤電子琴設(shè)計框圖。
圖1 硬件設(shè)計框圖
2.1 USB接口
在ML402開發(fā)板上使用的USB外部芯片是CY7C67300嵌入式控制芯片。該芯片具有寬泛的硬軟件功能,內(nèi)部具有一個RISC架構(gòu)的16位處理器CY-16;兩個串行接口引擎SIE1和SIE2,每個SIE有兩個USB接口:Port A和Port B,可以分別將其設(shè)置成主USB或從USB;還有幾個外部接口:RS232、I2C、HPI等;器件內(nèi)部ROM包含EZ-Host BIOS,內(nèi)部RAM能夠被用作存儲程序代碼和數(shù)據(jù)[3]。
USB協(xié)議的實現(xiàn)基本上是在處理器的軟件層面上進行的。CY7C67300的軟件結(jié)構(gòu)包含三個層次:BIOS、Framework、應(yīng)用程序。該BIOS的結(jié)構(gòu)專門針對USB,底層BIOS提供了啟動和一個等待硬軟件中斷的Idle環(huán)境;BIOS的上層是一個Framework,包括了一系列的子Framework,每個子Framework負(fù)責(zé)一個USB功能,為應(yīng)用層提供了軟件接口;應(yīng)用層通過調(diào)用Framework的接口函數(shù)來實現(xiàn)需要的USB功能[4],應(yīng)用程序需要設(shè)計人員來編寫。
CY7C67300有四種工作模式,在本實驗中使用的是HPI模式。在該模式下,內(nèi)部CPU被當(dāng)作協(xié)處理器,并通過四個端口(地址寄存器、數(shù)據(jù)寄存器、狀態(tài)寄存器、雙向郵箱)與外部設(shè)備通信。同時將USB鍵盤連接到SIE1上的Part A,并將其設(shè)置為主USB模式。
FPGA內(nèi)部通過一個系統(tǒng)提供的IP Core:EMC與外部CY7C67300的HPI端口連接,EMC是一個通用的存儲控制器,同樣也可用于對寄存器端口的訪問。在應(yīng)用EMC模塊時,需要對信號端口和一系列參數(shù)進行設(shè)置,設(shè)置參數(shù)需要以HPI端口的時序為依據(jù)[5]。表1是EMC模塊的參數(shù)設(shè)置和端口配置。
FPGA內(nèi)部的CPU軟件指令控制EMC與外部USB器件通信。在該實驗中,它的任務(wù)包括USB器件初始化,將編譯好的CY7C67300的應(yīng)用程序存入CY7C67300的內(nèi)部RAM,查詢,等待USB鍵盤輸入事件,鍵盤數(shù)據(jù)的讀入。
2.2 音頻接口(LM4550)
在ML402開發(fā)板上使用的音頻解碼芯片是LM4550,它符合AC97協(xié)議,能夠提供音頻系統(tǒng)所有模擬功能,具有4個立體聲和3個單聲道輸入,聲音的輸入和輸出采用PCM分時復(fù)用技術(shù),其中每一幀數(shù)據(jù)都有13個時槽(slot),幀同步信號由一個上升沿標(biāo)記。slot0為16位,其他的為20位。
在輸出(從微控制器輸出到LM4550)上,slot0是標(biāo)記槽,用于說明后面的slot是否有效,slot1用于控制讀寫LM4550寄存器,slot2為寫操作時的控制數(shù)據(jù),其他的slot分別用于PCM數(shù)據(jù)的傳遞。
在輸入(從LM4550到微控制器)上,slot0用于標(biāo)記,slot1和slot2用于尋讀寫寄存器的地址和數(shù)據(jù),其他的slot分別用于PCM數(shù)據(jù)的傳遞。因為電子琴主要是音頻輸出,表2列出了輸出PCM音頻流數(shù)據(jù)幀的定義[6]。
LM4550內(nèi)部一共有14個寄存器,通過向LM4550的寄存器發(fā)送控制命令,可以控制傳輸方式和質(zhì)量,還可以監(jiān)視傳輸狀態(tài)。但如果不做特殊的傳輸,大部分寄存器可以設(shè)置為默認(rèn)狀態(tài),但采樣速率控制寄存器(sample rate control registers (2Ch, 32h))必須設(shè)置,實驗中采用48 000 Hz,如果是輸出,聲源是自動識別的。
表1 EMC模塊的參數(shù)設(shè)置和端口配置
表2 PCM輸出時槽分配及定義
音頻接口需要在FPGA片內(nèi)設(shè)計一個AC97 Controller與LM4550接口,AC97 Controller在FPGA內(nèi)部與OPB總線連接,外部通過AC_LINK接口與芯片LM4550相連。AC_LINK是一種音頻串行數(shù)據(jù)流協(xié)議,可以PCM的方式處理多路輸入/輸出,同時也控制LM4550的寄存器,通過FPGA內(nèi)部CPU發(fā)出指令控制聲音的錄制、播放等。 LM4550與FPGA的連接非常簡單(AC_LINK接口),只需要五個管腳:BIT_CLK、SYNC、SDATA_IN、SDATA_OUT、RESET。BIT_CLK用于給出LM4550的數(shù)據(jù)時鐘信號,SYNC是同步信號,數(shù)據(jù)則是通過SDATA_IN和SDATA_OUT來傳輸?shù)?,連接圖如圖2所示[7]。
圖2 AC97 Controller與LM4550的接口
AC97 Controller是一個用VHDL設(shè)計的IP Core,參考設(shè)計來源于Xilinx 開發(fā)板ML402提供的例程。AC97 Controller包括三大模塊:頂層模塊AC97 Controller.vhdl、音頻時序處理模塊AC97_core.vhdl、聲音數(shù)據(jù)fifo 模塊srlfifo.vhdl,如圖3所示。
圖3 AC97 Controller框圖
AC97 Controller.vhdl是頂層文件,調(diào)用了其他兩個模塊和一些程序包,其作用是在總線上捕捉由CPU發(fā)出的控制音頻播放和錄制的命令,并將這些命令進行轉(zhuǎn)化,再傳送到音頻時序控制模塊AC97_core.vhdl。圖4是AC97 Controller.vhdl基本狀態(tài)圖。
圖4 AC97 Controller.vhdl 基本狀態(tài)圖
AC97_core.vhdl是音頻時序處理模塊,接受從AC97_controlle.vhdl發(fā)來的數(shù)據(jù)、寄存器地址和控制信號,并將這些信號進行轉(zhuǎn)化后發(fā)往LM4550,進行聲音播放,或者接受從LM4550來的音頻數(shù)據(jù),經(jīng)轉(zhuǎn)化后送到AC97 Controller.vhdl,進行聲音錄制[8]。圖5是AC97_Core.VHDL 的基本狀態(tài)圖。
2.3 存儲器接口及基本音符數(shù)據(jù)的存儲
基本音符數(shù)據(jù)是事先存入Flash的,可以通過錄音軟件以wave格式將諸如do、re、mi…等基本音符按48 000 Hz的采樣頻率錄制下來,設(shè)置為左右雙聲道(slot3、4有效)。錄音時的設(shè)置必須要和LM4550的設(shè)置一致,然后,將wave文件中的純聲音數(shù)據(jù)提取出來,并將聲音數(shù)據(jù)按等間隔寫入ML402的Flash內(nèi)。存儲器接口是在FPGA內(nèi)部總線上連接一個EMC作為存儲控制器。這里用了第二個EMC,參數(shù)設(shè)置和USB接口一致,端口配置是根據(jù)Flash的外部信號來確定,其中地址信號16位,數(shù)據(jù)信號32位,4位字節(jié)使能信號,還有讀、寫、片選信號。這樣當(dāng)有USB鍵盤輸入事件后,就從Flash調(diào)用不同的聲音數(shù)據(jù)輸入到LM4550,LM4550會將聲音數(shù)據(jù)插入PCM音頻流的有效數(shù)據(jù)時槽,從而實現(xiàn)一個基本的演奏系統(tǒng)。
圖5 AC97_Core.vhdl基本狀態(tài)圖
2.4 LCD接口
LCD液晶顯示屏是一個標(biāo)準(zhǔn)的字符顯示屏,具有4位數(shù)據(jù)信號加上3位控制信號,在FPGA內(nèi)部采用普通IO控制器GPIO做接口控制模塊。GPIO硬件結(jié)構(gòu)由一系列D觸發(fā)器構(gòu)成,液晶屏的7個信號都連在GPIO的數(shù)據(jù)端口,由CPU指令來指揮LCD控制信號和數(shù)據(jù)信號的變化。
3.1 CY7C67300片內(nèi)應(yīng)用程序的開發(fā)
CY7C67300片內(nèi)應(yīng)用程序的開發(fā)主要是在BIOS的上層Framwork提供的各種子程序框架上完成,應(yīng)用程序的開發(fā)實際上是調(diào)用各種Framwork的子程序[9]。本實驗中用到的功能比較簡單,采用了Xilinx 公司提供的示例程序app.c。主要功能就是發(fā)現(xiàn)USB接口有鍵盤值輸入時,將數(shù)據(jù)取回,再送到端口數(shù)據(jù)寄存器中,并設(shè)置郵箱和狀態(tài)寄存器,等待外部控制器將數(shù)據(jù)取走。
3.2 FPGA片內(nèi)CPU固件開發(fā)
FPGA片內(nèi)軟件在EDK提供的軟件開發(fā)平臺上開發(fā),用C語言編寫。程序先初始化,并將編譯好的用于CY7C67300的應(yīng)用程序通過EMC和HPI接口傳到CY7C67300的RAM中;然后,通過一個無限循環(huán)查詢HPI端口的鍵盤輸入狀態(tài),如有鍵盤輸入,則接收數(shù)據(jù),調(diào)用音頻播放子程序,并在LCD上顯示狀態(tài)。圖6是軟件設(shè)計流程圖。
圖6 軟件設(shè)計流程圖
該實驗通過簡易電子琴設(shè)計的實例,使學(xué)生學(xué)習(xí)了如何利用新的設(shè)計工具構(gòu)建SOPC系統(tǒng),并通過設(shè)計和增加不同的IP core對不同的接口進行控制。學(xué)生經(jīng)過該實驗,能夠?qū)τ嬎銠C系統(tǒng)及結(jié)構(gòu)、計算機接口原理、嵌入式系統(tǒng)應(yīng)用等有更深刻的認(rèn)識,是學(xué)習(xí)了計算機基本理論以后的一次綜合性的實驗,也是對理論基礎(chǔ)學(xué)習(xí)的一次檢驗。通過該實驗,能夠讓學(xué)生拓寬知識面,了解目前計算機軟硬件設(shè)計的新技術(shù),并通過對一兩個接口的控制,深入細(xì)致地學(xué)習(xí)接口及協(xié)議的相關(guān)理論,體會到計算機技術(shù)的發(fā)展趨勢[10]。
通過親身實踐,使學(xué)生體會到實踐與理論的差距,在設(shè)計與實現(xiàn)的過程中,讓學(xué)生提高分析能力、變通能力和動手解決實際問題的能力。學(xué)生在進行這個實驗的時候,對一些可能增加風(fēng)險的方案進行否決,對一些前景渺茫的嘗試進行終止,并在項目完整度和效果間進行博弈,從而確保實驗項目按時完成并實現(xiàn)核心功能。
這個實驗讓學(xué)生更能適應(yīng)團隊合作的過程,并在一定程度上消除面對未知領(lǐng)域的恐懼,能夠幫助學(xué)生更好地適應(yīng)并解決問題,從而在今后的工作崗位上發(fā)揮更大的作用。
[1] 董代潔,郭懷理,曹春雨.基于FPGA的可編程SoC設(shè)計[M].北京:北京航空航天大學(xué)出版社,2006.
[2] Xilinx.EDK concepts,tools,and techniques(UG683)[EB/OL].[2012-02-01]. http://www.xilinx.com/support/documentation/sw_manuals/xilinx12_1/edk_ctt.pdf.
[3] Cypress. EZ-host? programmable embedded USB host/peripheral controller(38-08015Rev) [EB/OL].[2012-02-01]. http://www.cypress.com/?docID=30079.
[4] Cypress.BIOS user’s manual[v1.1].[EB/OL].[2014-01-16].http://www.cypress.com/?docID=14346.
[5] 周悅芝,董代潔.微型計算機系統(tǒng)接口技術(shù)實驗教程—基于FPGA設(shè)計[M].北京:清華大學(xué)出版社,2011.
[6] National.LM4550 AC ’97 multi-channel audio codec with stereo headphone amplifier, sample rate conversion and national 3D sound(Rev 2.1) [EB/OL].[2014-01-15].http:// www.national.com
[7] 張良臣.數(shù)字助聽器芯片中單通道語音增強算法的研究與實現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2010.
[8] 本刊編輯部.邏輯分析儀在AC’97音頻解碼中的應(yīng)用[J].今日電子, 2011(12):1-2.
[9] Cypress.Frameworks reference guide for the CY7C67300/CY7C67200 family of products(V1.0) [EB/OL].[2014-02-03].http://www.analog.com/static/imported-files/data_sheets/ADV7125.pdf.
[10]謝偉.基于FPGA的微機接口實驗平臺的研究與實現(xiàn)[D].北京:北京工業(yè)大學(xué),2011.
USB Electronic Organ Design Experimental Based on SOPC
TIAN Shuzhen, QUAN Chengbin, DONG Daijie
(Department of Computer Science and Technology,Tsinghua University,Beijing 100084,China)
This paper introduces the design and realization of simple electronic organ based on SOPC and USB keyboard. Using the ML402 multi function interface board as the platform, a simple system on a programmable chip is achieved in the FPGA chip on the ML402. This system includes a CPU, data and instruction memories, and internal buses. On this basis, the USB interface and audio interface controller are added to the system. A USB keyboard is connected to a USB port as the keys of electronic organ, and the ML402 interface board is used as the USB host device. Through writing the CPU instruction codes in FPGA chip on the ML402, the USB keyboard value is read and keyboard notes are played.
SOPC; USB interfaces; audio interface; USB keyboard
2014-03-26
田淑珍(1966-),女,學(xué)士,工程師,主要從事計算機硬件實驗教學(xué)工作。
TP368.2;G
Adoi:10.3969/j.issn.1672-4550.2015.01.014