馬 俊
(上海海事大學(xué)信息工程學(xué)院,上海 201306)
MP3的全稱是Moving Picture Experts Group Audio Layer III,它是利用 MPEG Audio Layer 3技術(shù),將音樂以1∶10甚至1∶12的壓縮率壓縮成容量較小的文件。換句話說,它能夠在音質(zhì)丟失很小的情況下把文件壓縮到更小的程度,而且還非常好地保持了原來的音質(zhì)。正是因為MP3具有體積小、音質(zhì)高的特點,使得MP3格式幾乎成為網(wǎng)上音樂的代名詞。
MP3播放器,顧名思義也就是可播放MP3格式的音樂播放工具。它通常由微控制器、存儲器、解碼芯片、音頻放大電路、按鍵及LCD顯示屏等幾個部分組成。MP3播放器通過USB接口與電腦建立通訊聯(lián)系,將MP3編碼格式的文件存儲于存儲器中。播放時,在微控制器系統(tǒng)的作用下,提取存儲器中的音樂文件通過解碼芯片進(jìn)行解碼。解碼后的數(shù)字信號再進(jìn)行數(shù)模轉(zhuǎn)換,形成模擬音頻信號,然后經(jīng)過音頻放大器放大,再由耳機(jī)信號端口輸出,最后就可以通過接在音頻端口的耳機(jī)聽到動聽的音樂。
作為一個完整MP3播放系統(tǒng),其系統(tǒng)將會涉及到硬件和軟件2方面。其中,硬件系統(tǒng)的設(shè)計主要包括硬件系統(tǒng)的結(jié)構(gòu)、器件選擇和相互間的接口設(shè)計,各模塊的劃分、相互關(guān)系以及具體功能的設(shè)定等[1]。軟件系統(tǒng)的設(shè)計包括外部總線的實現(xiàn),以及在此基礎(chǔ)上對各外設(shè)的驅(qū)動,并通過C語言編程控制數(shù)據(jù)流的走向和各組件的協(xié)調(diào)工作[2]。
音樂播放器的特點是實用性、便攜性和穩(wěn)定性。正是因為如此,在設(shè)計上盡量讓電路精簡、體積小、功耗低。為了方便對系統(tǒng)進(jìn)行修改、功能升級以及進(jìn)行測試和調(diào)試,系統(tǒng)采用了模塊化設(shè)計的思想[3]。從功能方面來看,本系統(tǒng)可以分為音頻解碼模塊、微控制器模塊、液晶模塊、鍵盤模塊、電源模塊、JTAG編程接口模塊幾個部分。整個系統(tǒng)框圖如圖1所示。
本系統(tǒng)采用Silicon Laboratories公司的SOC型單片機(jī)C8051F020。C8051F系列單片機(jī)是完全集成的混合信號系統(tǒng)級芯片,具有與傳統(tǒng)MCS-51單片機(jī)完全兼容的指令內(nèi)核。除此之外,它采用了流水線處理技術(shù),不再區(qū)分時鐘周期和機(jī)器周期,能在執(zhí)行指令期間預(yù)處理下一條指令,提高了指令的執(zhí)行效率,且大部分指令都能在一個時鐘周期內(nèi)完成,最大處理速度達(dá)到25MIPS[4]。該單片機(jī)包括豐富的模擬和數(shù)字外設(shè),如AD、DA、PGA、比較器、電壓基準(zhǔn)、溫度傳感器、WDT、定時器、PCA、PWM接口,以及多種串行接口,如UART、I2C、SPI,同時集成有 JTAG,方便在線編程和調(diào)試。此外,該單片機(jī)的存儲器資源豐富,集成有256B的片內(nèi)RAM和4k的片外RAM,以及64k的FLASH。因此,總的說來該單片機(jī)完全可以滿足一般的系統(tǒng)設(shè)計要求。
圖1 系統(tǒng)框圖
音頻編解碼模塊是本設(shè)計的核心之一。為了使系統(tǒng)對MP3、WMA、MIDI等格式的音頻文件均能進(jìn)行播放,本設(shè)計選用 VLSI公司出品的VS1003B這款音頻編解碼芯片。該芯片是一款單芯片的MP3、WMA、MIDI音頻解碼和ADPCM編碼芯片,其擁有一個高性能低功耗的DSP處理器核VS_DSP,5k的指令 RAM,0.5k的數(shù)據(jù) RAM,串行的數(shù)據(jù)輸入接口,4個通用I/O口,1個UART口,同時片內(nèi)帶1個可變采樣率的ADC,1個立體聲DAC以及音頻耳機(jī)放大器,非常符合本系統(tǒng)的設(shè)計要求。
VS1003對電源的要求較高,正常工作時需要2種不同的電壓2.5 V和3.3 V同時對其供電,且同一電源電壓下模擬電源和數(shù)字電源之間為免相互之間發(fā)生干擾要用電感相隔[5]。其供電電路如圖2所示。
圖2 VS1003供電電源原理
如圖3所示,系統(tǒng)的輸入電源是9 V,經(jīng)過LM7805穩(wěn)壓后變?yōu)? V。LM7805的輸出端并有2個電容到地,起濾波作用。其后5 V電壓分成2路,一路給AMS117-3.3V,穩(wěn)壓后輸出3.3 V電壓,另一路給AMS117-2.5 V,穩(wěn)壓后輸出2.5 V電壓。2路輸出電壓后面分別經(jīng)過∏型濾波,進(jìn)一步降低電壓紋波,最后再給芯片供電。圖中為避免AVDD和IOVDD之間相互干擾,二者之間使用0歐姆電阻R1起加以隔離。另外,VS1003B除了電源引腳之外,其他引腳都可以與單片機(jī)的通用I/O口相連。它與單片機(jī)的連接可參見其典型應(yīng)用。
圖3 NOKIA5110顯示模塊與單片機(jī)的連接
本設(shè)計中的音頻文件存取模塊電路以美國SanDisk公司生產(chǎn)的SD卡為核心。該SD卡支持SPI總線[6],只需要3根線和單片機(jī)相連,使用起來非常方便。除此之外,SD卡通過外接SD卡專用的USB讀寫控制芯片AU6331可以方便地實現(xiàn)SD卡與上位機(jī)之間的USB通信。
SD卡的內(nèi)部結(jié)構(gòu)主要包括片上控制器、FLASH存儲模塊、控制和狀態(tài)寄存器、內(nèi)部時鐘、電源管理以及引腳接口部分。SD卡上所有單元由內(nèi)部時鐘發(fā)生器提供時鐘,接口驅(qū)動單元同步外部時鐘的DAT和CMD信號到內(nèi)部所用時鐘。SD卡共有6個寄存器,通過讀寫這些寄存器可對SD卡進(jìn)行設(shè)置并獲得其狀態(tài)。SD卡有2個可選的通信協(xié)議:SD模式和SPI模式。SD模式下總共需要6條線,1條時鐘線,1條命令線,4條數(shù)據(jù)線。此模式下的數(shù)據(jù)傳輸是受保護(hù)的。SPI模式下共需要4條線,3條SPI總線(時鐘,數(shù)據(jù)輸入,數(shù)據(jù)輸出),1條片選信號線。此模式下的數(shù)據(jù)傳輸是不受保護(hù)的。SD卡以塊為單位對數(shù)據(jù)進(jìn)行讀寫。在設(shè)定塊大小為512字節(jié)時,一次可以讀寫1個扇區(qū)。本系統(tǒng)中單片機(jī)讀寫SD卡采用的是SPI總線。
本系統(tǒng)屬于便攜式設(shè)備,在系統(tǒng)的使用中,液晶顯示模塊除了能夠滿足顯示要求之外,還應(yīng)當(dāng)具有體積小、功耗低等特點。LPH7366是NOKIA公司生產(chǎn)的可用于該公司的5110系列移動電話的液晶顯示模塊,所以習(xí)慣稱該顯示模塊為NOKIA5110液晶顯示模塊。與類似產(chǎn)品相比較,NOKIA5110顯示模塊具有如下特點:①84×48的點陣LCD,可以顯示4行漢字、字符及圖片;② 采用串行接口與控制器進(jìn)行通訊,對I/O口資源的占用大大減少,傳輸速率高達(dá)4Mb/s,可全速寫入顯示數(shù)據(jù),無需等待時間;③ LCD控制器/驅(qū)動器芯片(PCD8544)已經(jīng)綁定到LCD晶片上,模塊體積進(jìn)一步減小;④采用低電壓供電,正常顯示時工作電流在200 μA以下,且具有掉電模式。正是由于NOKIA5110有以上特點,所以非常適合應(yīng)用在電池供電的便攜式設(shè)備中。NOKIA5110顯示模塊采用串行口與控制器進(jìn)行通訊。它與微控制器的連接如圖3所示。
在一個完整的系統(tǒng)設(shè)計中,除了硬件之外,軟件設(shè)計也是一項非常重要的內(nèi)容。本系統(tǒng)的軟件設(shè)計主要分為4個部分,即 SD卡讀取軟件,VS1003B解碼單元軟件,液晶顯示軟件,鍵盤控制軟件。
要想成功從SD卡中讀取所需文件或把外界文件存儲在SD卡中,除了按照規(guī)定的通信方式和SD卡通信外,還要遵從SD卡中已有的文件存儲方式來進(jìn)行,即按照通常所說的文件系統(tǒng)來存取文件。在本系統(tǒng)中,單片機(jī)對SD卡的讀寫采用SPI總線模式,所選SD卡采用FAT32文件系統(tǒng)進(jìn)行數(shù)據(jù)的存儲。因此,從SD卡中讀取文件的實現(xiàn)主要分為2個部分:單片機(jī)與SD卡間SPI通信的實現(xiàn)和FAT32文件系統(tǒng)讀寫的實現(xiàn)。
本設(shè)計中所選用的單片機(jī)C8051F020含有一個串行外設(shè)接口SPI0[7],對它的訪問和控制是通過系統(tǒng)控制寄存器中的配置寄存器SPI0CFG、控制寄存器SPI0CN、數(shù)據(jù)寄存器SPI0DAT和時鐘頻率寄存器SPI0CKR這4個特殊功能寄存器來實現(xiàn)的。而在SD卡內(nèi)部包含1個片上控制器[8],它通過9腳和外部微控制器通信,接口可采用SPI模式或SD模式。當(dāng)SD卡收到復(fù)位命令(CMD0)時,并且CS信號有效(低電平),SPI模式將啟動。
操作系統(tǒng)中負(fù)責(zé)管理和存儲文件信息的軟件機(jī)構(gòu)稱為文件管理系統(tǒng),簡稱文件系統(tǒng)。文件系統(tǒng)由3部分組成:與文件管理有關(guān)的軟件、被管理的文件以及實施文件管理所需的數(shù)據(jù)結(jié)構(gòu)。從系統(tǒng)角度來看,文件系統(tǒng)是對文件存儲器空間進(jìn)行組織和分配,負(fù)責(zé)文件的存儲并對存入的文件進(jìn)行保護(hù)和檢索的系統(tǒng)[9]。具體地說,它負(fù)責(zé)為用戶建立文件,存入、讀出、修改、轉(zhuǎn)儲文件,控制文件的存取,當(dāng)用戶不再使用時撤銷文件等。其中,常見的文件系統(tǒng)有FAT和NTFS。在本系統(tǒng)中,SD卡內(nèi)的數(shù)據(jù)存儲采用的FAT32文件系統(tǒng)。對FAT32文件統(tǒng)讀寫的軟件實現(xiàn)是本系統(tǒng)軟件設(shè)計部分的難點和核心內(nèi)容。為了能更為直觀的了解這些分區(qū)中數(shù)據(jù)的存儲,可以借助一款專門用于磁盤數(shù)據(jù)保護(hù)和恢復(fù)的軟件WinHex。從SD卡中讀取文件流程如圖4所示。
圖4 讀取FAT32文件系統(tǒng)數(shù)據(jù)流程
如前所述,VS1003B用SPI總線來與單片機(jī)進(jìn)行通信,其解碼過程的實現(xiàn)是通過單片機(jī)操作其內(nèi)部相應(yīng)寄存器的值來完成的。VS1003B的解碼初始化的流程:①將XRESET引腳電平置為0,對VS1003B進(jìn)行硬件復(fù)位;② 延時一段時間后,將XDCS、XCS、XRESET引腳電平置為1;③ 等待DREQ引腳電平變高,即表示VS1003B可以接收數(shù)據(jù);④ 設(shè)置 SPI總線為低速模式;⑤ 將 SPI_MODE寄存器值設(shè)為0X0804,對VS1003B進(jìn)行軟件復(fù)位;⑥等待DREQ引腳電平變高,表示軟件復(fù)位結(jié)束;⑦ 給 SCI_CLOCKF寄存器賦值,設(shè)置VS1003B的時鐘頻率;⑧給SPI_AUDATA寄存器賦值,設(shè)置VS1003B的采樣率;⑨ 給SCI_VOL寄存器賦值,設(shè)置音量;⑩ 設(shè)置 SPI總線為高速模式。
至此,VS1003B的解碼初始化結(jié)束,接下來只要按正確的方式將音頻文件數(shù)據(jù)發(fā)送給VS1003B,就能自動識別其碼率,然后通過一定的解碼速率進(jìn)行解碼[10]。由于解碼的速率已經(jīng)確定,為了能流暢地播放出音樂,VS1003為用戶準(zhǔn)備了0.5k的數(shù)據(jù)緩沖區(qū)作為音頻數(shù)據(jù)的緩沖。另外,為了實時確定數(shù)據(jù)緩沖區(qū)里有無數(shù)據(jù)[10],VS1003專門設(shè)定了一個中斷腳DREQ,只需要判斷其引腳電平的高低即可。解碼電路單元的程序設(shè)計流程如圖5所示。
圖5 VS1003解碼流程
液晶顯示模塊選用的是NOKIA5110,它的控制器是PCD8544。由于該控制器無內(nèi)部字庫,因此全部西文及中文字庫均需自制,由于可通過字模軟件自由生成字模代碼,因此顯示字體可靈活多變。關(guān)于顯示程序,主要包括基本的讀寫操作和初始化操作。
PCD8544的初始化過程分為幾部分:給復(fù)位電平,復(fù)位電平的脈寬最多為100 ms;設(shè)置顯示模塊的工作模式;設(shè)置顯示模塊的工作偏置電壓;配置功能寄存器,進(jìn)行溫度校正;清屏;開顯示(CE引腳置為低電平)。
給出了一款高音質(zhì)MP3播放器的設(shè)計方案。經(jīng)過實際制作和測試,該系統(tǒng)完成了對 MP3、WMA、MIDI等格式音頻文件的播放,且音質(zhì)較好。系統(tǒng)設(shè)有矩陣鍵盤輸入,可供多種不同的播放形式的選擇,從而實現(xiàn)了人機(jī)交互。顯示屏選用NOKIA5110,界面友好??偟恼f來,該方案具有便于攜帶、電路簡單、成本低廉的特點,性價比較高。
[1]何立民.單片機(jī)高級教程[M].北京:北京航空航天大學(xué)出版社,2007.
[2]馬忠梅.單片機(jī)的C語言應(yīng)用程序設(shè)計[M].4版.北京:北京航空航天大學(xué)出版社,2007.
[3]潘永雄,劉殊.單片機(jī)原理與應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2000.
[4]張培仁.基于C語言C8051F系列微控制器原理與應(yīng)用[M].北京:清華大學(xué)出版社,2007.
[5]康華光,鄒壽彬.電子技術(shù)基礎(chǔ)數(shù)字部分[M].4版.北京:高等教育出版社,2000.
[6]SanDisk Corporation.SanDIsk Secure Digital Card Product Manual[M].[S.l.]:[s.n.],2004.
[7]萬光毅.SOC單片機(jī)試驗、實踐與應(yīng)用設(shè)計—基于C8051F系列[M].北京:北京航空航天大學(xué)出版社,2006.
[8]SanDisk Corporation.SanDIsk Secure Digital Card Product Manual[M].[S.l.]:[s.n.],2004.
[9]Microsoft Corporation.Microsoft Extensible Firmware Initiative FAT32 File System Specification[M].[S.l.]:[s.n.],2000.
[10]VLSI Solution Oy.VS1003MP3/WMA AUDIO CODEC[Z].[S.l.]:VLSI Solution Oy,2005.