靳 釗,喬麗萍,王聰華,郭 晨,劉 策
(1.長安大學信息工程學院,西安710064;2.西藏民族學院信息工程學院,陜西咸陽712082)
隨著VoIP產業的迅猛發展,與其相關的高品質音頻芯片發展空間巨大。USB是應用面最廣的PC外設接口,其實時同步數據傳輸模式適合于傳送高速實時音視頻數據流[1-2],因此USB音頻類設備具備較大的應用價值。MP3、MP4等設備的流行普及,使USB接口的應用更為廣泛,若能為這些便攜設備增加USB音頻功能,它們會成為集成語音聊天、網絡電話等功能的通信終端設備,這將大大提高設備的兼容性,擴展其應用領域。
串行接口引擎模塊[3]是USB音頻設備硬件結構中的一個重要的組成部分,負責完成底層數據的處理工作。本文根據有限狀態機理論,首先得到實現數據流功能的有限狀態機,進一步通過狀態機控制串行接口引擎,完成對音頻數據的處理。設計通過FPGA硬件平臺驗證,成本低、可靠性高及多點數據采集,既可作為獨立的產品,也可以方便地集成到其他多媒體采集卡上。
USB設備架構描述的是USB設備中間層的通用屬性與操作[4]。結合USB音頻類設備協議,圖1給出了本設計的一個包含錄音、放音功能的USB音頻設備架構。設備包含4個功能節點 IT1、OT3、IT4、OT5,3 個接口 IF0、IF1 和 IF2。
根據USB音頻類協議以及本文設計的音頻設備架構,可以確定USB描述符表,功能是將設備接口參數、結構及邏輯關系報告給主機驅動程序。USB設備驅動程序只有收到完整的描述符后,才能“理解”設備的各種接口、端點及功能節點的配置信息及其邏輯關系。從邏輯分析儀抓取的包數據可以分析該設備與主機之間是否正確建立通信[5]。

圖1 USB Audio設備架構

圖2 串行接口引擎框圖
傳統的USB音頻設備大多使用MCU+USB來構成[6],本設計以串行接口引擎完成USB通信系統的底層數據處理和鏈路的控制,使用狀態機取代MCU工作以降低成本。根據USB協議以及USB音頻類協議,串行接口引擎主要分成PHY接口、編碼器、編碼狀態機、譯碼器、譯碼狀態機等部分。圖2給出串行接口引擎的結構框圖,圖中的ROM存儲設備描述符表,RAM存儲耳機和麥克風的音頻數據。
USB Audio的PHY接口模塊直接與主機的物理PHY接口相連,接收來自主機的差分放大信號并向其發送NRZI差分信號,因此該模塊分成接收RX與傳送TX兩部分。Phy_dpi,phy_dmi是經過PHY接口轉換的D+、D-,phy_di是實際傳輸的數據??偩€工作的空閑態與工作態在邏輯上分別與J態(邏輯電平1)和K態(邏輯電平0)等價[6]。通過控制D+和D-線從空閑態到相反的邏輯電平,就可以實現源端口的包發送。dpllvalid信號為1表示USB包發送結束(EOP),串行輸入的數據有效,開始對主機發送數據進行處理。復位條件為EOP有效。NCVerilog仿真波形見圖3。PHY接口發送TX部分,以12MHz的速率將資料送給主機PHY??刂艱+和D-兩位同時為0到達SE0態,標志包發送結束;控制D+和D-線的一位,使D+為1后到達J態,可實現EOP信號的發送。

圖3 PHY RX仿真波形

圖4 解碼模塊仿真波形
解碼模塊分成NRZI解碼、解碼去‘0’、CRC校驗、串并轉換。在包傳送時,USB使用一種NRZI(None Return Zero Invert,無回零反向碼)編碼方案[7]。解碼過程中,若總線數據不變動(0->0,1->1),則檢出“1”;有變動(0->1,1->0),則檢出“0”。采樣信號dpllvalid有效時,得到NRZI解碼后的數據rxnrzidata。為了確保信號發送的準確性,傳送設備要進行位插入操作,即在數據被編碼前,在數據流每6個連續‘1’后插入一個‘0’,強迫NRZI碼發生變化。接收端通過CRC檢測包在傳輸過程中是否發生損壞[8]。令牌包采用5 bit CRC校驗,數據包采用16 bit CRC校驗。串并轉換模塊將串行數據轉換為8 bit的并行數據,計數器rxbitcnt對接收到的NRZI解碼數據進行計數,計數器rxbytecnt對接收到的字節數計數,產生有效命令解碼信息和數據,以供解碼狀態機使用。圖4給出了解碼仿真波形。編碼過程完全是解碼過程的逆過程,并串轉換模塊將8 bit并行數據轉成1 bit串行數據,之后產生CRC校驗位,經過插入0 bit,NRZI編碼后送出。
編碼及譯碼狀態機[9]是數據流處理部分的核心模塊,控制和協調其他各個功能模塊的正常工作。根據USB音頻設備所要發送接收的數據分組的基本格式,以及USB協議規定的總線傳輸方式,可以將USB音頻設備的數據分組的各個部分作為一個狀態,控制后面的模塊工作[10]。圖5給出了編碼及譯碼模塊的數據流狀態機。

圖5 數據流狀態機
解碼狀態機是由USB_IDLE,USB_RX,USB_TX 3個狀態組成;而編碼狀態機是由USB_TX、USBtx_start、USBtx_sync、USBtx_pid、USBtx_iso、USBtx_data、USBtx_crc、USB_EOP 8個狀態組成。USB任何操作都由主機發起,初始情況下狀態機處于IDLE狀態。當探測到數據由空閑態到相反的邏輯電平時,狀態機從USB_IDLE進入USB_RX,解碼狀態機開始接收數據包。當判斷為主機發起SETUP控制傳輸,收到DATA0包,此時USB Audio需回ACK給主機,狀態機跳入USB_TX;當判斷主機發起端點0的IN控制傳輸,收到IN包,此時USB Audio需回描述符給主機,狀態機跳入USB_TX;當判斷主機發起端點3的IN同步傳輸,收到IN包,此時USB Audio需輸出同步音頻數據給主機,狀態機跳入USB_TX。解碼狀態機主要功能用以處理控制傳輸和同步傳輸。狀態跳入USB_TX態時,解碼狀態機工作結束。在初始情況下,編碼狀態機處于USBtx_start態,輸出字節位計數器清0后,狀態機跳入USBtx_sync,輸出同步字段8'b0000_0001,輸出字節位計數器再次清0后,狀態機跳入USBtx_pid,之后根據輸出數據分組的具體情況跳轉狀態。例如:當接收到端點0的OUT包,USBtx_pid態輸出 PID為 ACK,狀態跳入USB_EOP;當接收到端點3的IN包,USBtx_pid態輸出PID為DATA0,狀態跳入USBtx_iso,同步數據輸出結束后,狀態跳入USBtx_crc,之后跳入USB_EOP。狀態機仿真波形如圖6所示。

圖6 狀態機仿真波形
提出的串行接口引擎電路由Verilog HDL編程實現,通過NC-Verilog軟件仿真后,采用Altera公司的QuartusⅡ開發環境綜合并下載cyclone2 EP2C35芯片驗證平臺上,DAC為PT8211,ADC使用HI5812。通過USB邏輯分析儀抓取數據分析,圖7列舉了USB Audio正確回復給主機設備的描述符。同時USB Audio可以正確回復配置描述符、音頻控制接口描述符、音頻數據流接口描述符等,此處不再逐一列舉。從分析儀抓取的數據中,我們看到USB Audio能夠正確回復設備描述符給主機,可以被主機識別檢測到的,并且在FPGA驗證平臺上,聲音經過ADC芯片采集后通過USB Audio正常實現錄音以及放音功能。

圖7 USB Audio設備描述符
本文在對USB協議中的串行接口引擎部分研究的基礎上,提出了一種USB Audio串行接口引擎模塊的設計方法,并用硬件描述語言加以實現。經FPGA硬件驗證,分析數據無誤,且錄放音功能正常實現。測試表明設計功能穩定,電路結構簡單,具備一定的通用性和可移植性。
[1]Sostari D,Vinko D,Svedek T.USB RF Front-End of the DRM Receiver under LabView API Environment[C]//Proceedings of the 35th International Convention of MIPRO.2012,218-221.
[2]曹玲芝,張恒.視頻處理系統高速USB接口設計[J].電子器件,2007,30(4):1337-1340.
[3]基于nRF2401無線USB串口轉換模塊[J].電子器件,2009,32(4):778-780.
[4]Universal Serial Bus Device Class Definition for Audio Device.Release 1.0[EB/OL].http://www.usb.org/developers/devclass_docs/audio10.pdf.March 18,1998.
[5]雍尚剛,鄧龍江,朱向東.USB設備控制器IP核系統設計及FPGA 實現[J].計算機工程與科學,2005,27(12):86-89.
[6]Xu Lijun,Gao Guohong,Li Xueyong et al.Video Collection System Based on Embedded System and USB Communication[C]//Second International Conference on Communication Systems Networks and Applications(ICCSNA).2010:112-114.
[7]Universal Serial Bus Specification.Revision1.1[EB/OL].http://esd.cs.ucr.edu/webres/usb11.pdf.1998.
[8]Universal Serial Bus Device Class Definition for Audio Data Formats.Release 1.0[EB/OL].http://www.usb.org/developers/devclass_docs/frmts10.pdf.March 18,1998.
[9]Ciletti M D.Verilog HDL高級數字設計[M].2版.北京:電子工業出版,2010:200-623.
[10]吳茶花.USB音頻系統設計[D].國防科學技術大學.2010:4-32.