介紹了音頻編解碼芯片WM8731基于FPGA的接口電路的設(shè)計,包括芯片配置模塊與音頻數(shù)據(jù)接口模塊等,使得控制器只通過寄存器就可以方便地對其進行操作。整個設(shè)計以VHDL和Verilog HDL語言在Max+Plus Ⅱ里實現(xiàn),并進行了驗證。
1 概 述
WM873l是一款功能強大的低功耗立體聲24位音頻編解碼芯片,其高性能耳機驅(qū)動器、低功耗設(shè)計、可控采樣頻率、可選擇的濾波器使得WM8731芯片廣泛使用于便攜式MP3,CD,PDA的場合。其結(jié)構(gòu)框圖如圖1所示。
WM8731包含2個線路輸入和1路麥克風(fēng)輸入并可以進行音量調(diào)節(jié);內(nèi)置片上ADC(模擬數(shù)字轉(zhuǎn)換器)及可選擇的高通數(shù)字濾波器;采用高品質(zhì)過采樣率結(jié)構(gòu)的DAC(數(shù)字模擬轉(zhuǎn)換器);線路輸出和耳機輸出;內(nèi)置晶體振蕩器以及可配置的數(shù)字音頻接口和2或3線可選的微處理器控制接口等??刂破骺赏ㄟ^控制接口(Control Interface)對WM8731進行配置,然后通過數(shù)字音頻接口(Digtal Audio Interface)讀寫數(shù)據(jù)音頻信號。本文設(shè)計了一種基于FPGA的驅(qū)動模塊,將WM8731的控制接口與數(shù)字音頻接口轉(zhuǎn)換為控制器通用的總線接口,使控制器可以像讀寫外部寄存器一樣對WM8731芯片進行控制使用。
2 WM8731芯片接口時序介紹
2.1 控制接口時序
WM8731的控制接口有4根引腳,分別為:MODE(控制接口選擇線)、CSB(片選或地址選擇線)、SDIN(數(shù)據(jù)輸入線)和SCLK(時鐘輸入線)。它具有2線和3線兩種模式。2線為MPU接口,3線為兼容SPI接口。對控制接口的配置選擇可通過設(shè)置MODE腳的狀態(tài)完成。選擇MODE為0時為2線模式,1時為3線模式。本文采用2線模式對WM8731進行控制。其時序圖如圖2所示。
2.2 數(shù)字音頻接口時序
WM8731的數(shù)字音頻接口有5根引腳,分別為:BCLK(數(shù)字音頻位時鐘)、DACDAT(DAC數(shù)字音頻數(shù)據(jù)輸入)、DACIRC(DAC采樣左/右聲道信號)、ADC-DAT(ADC數(shù)字音頻信號輸出)、ADCLRC(ADC采樣左/右聲道信號)。
數(shù)字音頻接口可以工作在主模式和從模式下。地址為0000111的寄存器的第6位設(shè)置數(shù)據(jù)的主/從模式:“1”為主模式,“0”為從模式。ADCDAT、/DACDAI和ADCLRC/DACLRC與位時鐘BCIK同步,在每個BCLK的下降沿進行一次傳輸。BCLK和ADCLRC/DACLRC在主模式時為輸出信號,從模式下為輸入信號。DAC-DAT始終為輸入信號,ADCDAT始終為輸出信號。
數(shù)字輸出支持4種音頻數(shù)據(jù)模式:右對齊、左對齊、I2S和DSP模式。通過對寄存器的不同配置,可以設(shè)置傳輸?shù)臄?shù)據(jù)格式。寄存器配置值如下:
寄存器地址0000111的1~0位設(shè)置音頻格式:“11”時為DSF’格式,“10”為I2S格式,“01”為左對齊格式,“00'’為右對齊格式。
3~2位設(shè)置字長:“11”時為32位,“10”為24位,“01”為20位,“00'’為16位。
這四種音頻格式都是高位(MSB)在前,16~32位。但32位數(shù)據(jù)不支持右對齊模式。
本文采用主模式的左對齊數(shù)據(jù)格式,左對齊數(shù)據(jù)格式傳輸如圖3:左對齊格式時,MSB在BCLK的第一個上升沿有效,緊接著是一個ADCLRC或DACLRC傳輸。
3.1 驅(qū)動器的總體設(shè)計方案
本文設(shè)計驅(qū)動器在使用時的框圖如圖4所示。雙口RAM和驅(qū)動器一同連接在控制器的數(shù)據(jù)總線和地址總線上,控制器只需提供少量的控制線即可完成對音頻編解碼芯片wM8731的控制及數(shù)據(jù)交換功能。
驅(qū)動器內(nèi)部結(jié)構(gòu)框圖如圖5所示??刂撇糠痔峁?qū)動器與控制器之間的接口(包含有數(shù)據(jù)總線信號、地址總線信號和控制信號),同時產(chǎn)生控制字轉(zhuǎn)換單元和數(shù)字音頻接口單元的控制信號;內(nèi)部寄存器緩存控制字和狀態(tài)字;控制字轉(zhuǎn)化單元負(fù)責(zé)將控制字串行發(fā)送給WM8731,同時效驗傳送信號;數(shù)據(jù)音頻接口單元完成WM8731與外部雙口RAM的串并轉(zhuǎn)換,實現(xiàn)對數(shù)字音頻信號的發(fā)送和接收功能。
驅(qū)
表l 狀態(tài)寄存器控制字的對應(yīng)定義
3.2.2 控制字轉(zhuǎn)換單元
當(dāng)START控制位置‘1’時,將控制字寄存器中的數(shù)據(jù)串行發(fā)送給WM8731,當(dāng)傳輸出現(xiàn)錯誤時,將狀態(tài)寄存器中的ACK位置1。如圖6所示。
3.2.3 數(shù)字音頻接口單元
當(dāng)讀入數(shù)字音頻標(biāo)志位C1為‘1’,接收WM873l芯片傳來的數(shù)字音頻數(shù)據(jù)并將其存入外部雙口RAM中,當(dāng)輸出數(shù)字音頻數(shù)據(jù)標(biāo)志位C2為‘1’時,將雙口RAM中的音頻數(shù)據(jù)發(fā)送給wM8731。如圖7所示。
下面給出控制器通過該驅(qū)動模塊對WM8731寫控制字的時序仿真如圖8所示。圖中各引腳定義如表2所示。
4 結(jié) 語
利用FPGA對音頻編解碼芯片WM8731進行接口電路的設(shè)計,實現(xiàn)了控制接口與數(shù)字音頻接口的統(tǒng)一控制,簡化了對音頻編解碼芯片WM8731的使用步驟,具有擴展性好、使用簡單方便、易于升級等優(yōu)點,對其他芯片的接口設(shè)計也有一定的參考意義。