《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 基于USB主機(jī)結(jié)構(gòu)的數(shù)字錄音技術(shù)研究

基于USB主機(jī)結(jié)構(gòu)的數(shù)字錄音技術(shù)研究

2008-06-05
作者:閔信余,陸 陽(yáng)

  摘 要: 介紹了一種基于USB主機(jī)結(jié)構(gòu)的數(shù)字錄音" title="數(shù)字錄音">數(shù)字錄音系統(tǒng),提出了一種將大容量數(shù)據(jù)存儲(chǔ)技術(shù)應(yīng)用于數(shù)字錄音系統(tǒng)的新方法,重點(diǎn)介紹了語(yǔ)音PCM編碼電路和USB-HOST" title="USB-HOST">USB-HOST接口電路的硬件設(shè)計(jì)、由底向上的USB主機(jī)軟件設(shè)計(jì)框架以及實(shí)時(shí)語(yǔ)音文件的存儲(chǔ)。
  關(guān)鍵詞: 嵌入式系統(tǒng) 脈沖編碼調(diào)制 通用串行總線 Mass Storage類 FAT文件系統(tǒng)


  隨著數(shù)字技術(shù)的發(fā)展,錄音技術(shù)也進(jìn)入了數(shù)字化階段。目前數(shù)字錄音系統(tǒng)應(yīng)用已非常廣泛,如電力、鐵路、石油等行業(yè)的指揮調(diào)度,機(jī)場(chǎng)、港口、公安、軍事等要害部門的錄音和監(jiān)聽(tīng),金融行業(yè)授權(quán)指令的實(shí)時(shí)錄音,無(wú)線尋呼臺(tái)、電信局、服務(wù)行業(yè)的服務(wù)等。數(shù)字錄音系統(tǒng)為及時(shí)了解和發(fā)現(xiàn)事故原因以及提供準(zhǔn)確可靠的原始錄音記錄發(fā)揮了巨大作用。
  目前,很多數(shù)字錄音系統(tǒng)是基于PC實(shí)現(xiàn)的。語(yǔ)音數(shù)據(jù)采集后通過(guò)串口實(shí)時(shí)傳送到PC進(jìn)行數(shù)字語(yǔ)音" title="數(shù)字語(yǔ)音">數(shù)字語(yǔ)音的存儲(chǔ),再由PC對(duì)數(shù)字語(yǔ)音數(shù)據(jù)進(jìn)行后期處理。但是在很多應(yīng)用場(chǎng)合(如移動(dòng)裝置、野外作業(yè)、竊聽(tīng)等),由于受布線、成本、安裝空間及環(huán)境等影響,基于PC的數(shù)字錄音方案受到限制。這些應(yīng)用場(chǎng)合下,如何實(shí)現(xiàn)語(yǔ)音數(shù)據(jù)的存儲(chǔ)就成為關(guān)鍵。方案一是采用無(wú)線傳輸,實(shí)時(shí)將采集到的語(yǔ)音數(shù)據(jù)傳送。但是由于受無(wú)線數(shù)據(jù)傳輸?shù)木嚯x、速度以及實(shí)現(xiàn)成本的限制,這種方案的可行性不高;方案二是采用可移動(dòng)的存儲(chǔ)體。目前應(yīng)用較廣的有CF、SD等存儲(chǔ)卡和基于USB接口的移動(dòng)存儲(chǔ)設(shè)備" title="存儲(chǔ)設(shè)備">存儲(chǔ)設(shè)備。從單位字節(jié)存儲(chǔ)成本考慮,存儲(chǔ)卡的成本明顯高于基于USB接口的移動(dòng)存儲(chǔ)設(shè)備。另外,PC與存儲(chǔ)卡進(jìn)行數(shù)據(jù)交換時(shí)必須購(gòu)買相應(yīng)的讀卡器,這意味著要增加額外的成本且使用不靈活。隨著USB技術(shù)的發(fā)展與不斷成熟,目前幾乎所有PC主板都帶有多個(gè)USB接口,且操作系統(tǒng)對(duì)USB設(shè)備的支持也非常完備。這樣數(shù)字語(yǔ)音數(shù)據(jù)可與任意PC進(jìn)行數(shù)據(jù)交換,從而使應(yīng)用變得非常方便和靈活。因此,研究嵌入式環(huán)境下基于USB主機(jī)結(jié)構(gòu)的數(shù)字錄音技術(shù)就具有實(shí)際意義和應(yīng)用前景。
1 數(shù)字錄音系統(tǒng)的設(shè)計(jì)和工作原理
  整個(gè)錄音系統(tǒng)主要由兩大部分組成。一是語(yǔ)音數(shù)據(jù)的PCM編碼電路,實(shí)現(xiàn)語(yǔ)音的AD轉(zhuǎn)換;二是USB主機(jī)的接口電路。單片機(jī)P89C51RD2HBA實(shí)現(xiàn)USB-HOST主機(jī)協(xié)議和語(yǔ)音數(shù)據(jù)的采集功能,系統(tǒng)原理如圖1所示。


2 語(yǔ)音編解碼電路設(shè)計(jì)
2.1 MC14LC5480芯片簡(jiǎn)介

  語(yǔ)音的PCM編碼是將模擬語(yǔ)音信號(hào)轉(zhuǎn)變?yōu)閿?shù)字語(yǔ)音信號(hào)。它是語(yǔ)音數(shù)字化的第一步,也是語(yǔ)音壓縮的基礎(chǔ)。MC14LC5480是Motorola公司生產(chǎn)的μ/A律PCM芯片,具有以下特點(diǎn):低功耗;低噪聲的全差分模擬電路設(shè)計(jì);片內(nèi)集成有發(fā)送帶通濾波器和接收低通濾波器;具有RC預(yù)濾波器后濾波器;μ/A律可選擇。MC14LC5480的原理如圖2所示。
  圖2中,RO+、RO-和TI+、TI-分別是PCM模擬語(yǔ)音信號(hào)的差分輸出和輸入;PI、PO+、PO-用來(lái)放大模擬信號(hào)以驅(qū)動(dòng)模擬語(yǔ)音設(shè)備;同步控制部分主要用于控制幀同步和位同步,控制引腳主要用于μ/A律的選擇和低功耗模式的選擇[1]。
2.2 語(yǔ)音編解碼應(yīng)用電路設(shè)計(jì)
  基于MC14LC5480的語(yǔ)音編解碼應(yīng)用電路如圖3所示。其中輸入的8kHz時(shí)鐘源用于幀同步,2.048MHz的時(shí)鐘源用于位同步。PCM輸出即為編碼后的串行輸出數(shù)據(jù),再經(jīng)過(guò)SN74HC595轉(zhuǎn)換為并行數(shù)據(jù)與單片機(jī)的8位數(shù)據(jù)總線連接;PCM輸入則為串行輸入的數(shù)字語(yǔ)音數(shù)據(jù)。在圖3中,8kHz、2.048MHz時(shí)鐘源可用Motorola公司的MC74HC4060產(chǎn)生。具體實(shí)現(xiàn)如圖4所示。


3 USB主機(jī)接口電路設(shè)計(jì)
3.1 USB-HOST接口芯片SL811HS簡(jiǎn)介
  SL811HS是Cypress公司推出的一種遵從USB1.1協(xié)議的嵌入式USB Host/Slave芯片。該芯片既能與USB低速設(shè)備通信,也能與USB高速設(shè)備通信。由于提供了8位寬的數(shù)據(jù)總線及中斷支持,使得該芯片能方便地與微處理器、微控制器以及DSP連接。SL811HS可以在Host/Slave兩種模式下工作。該芯片具有以下特點(diǎn):
  (1)自動(dòng)探測(cè)所接設(shè)備是低速設(shè)備還是高速設(shè)備;
  (2)具有8位雙向數(shù)據(jù)總線及片上SIE、USB收發(fā)器;
  (3)自動(dòng)產(chǎn)生SOF令牌包及自動(dòng)生成令牌包、數(shù)據(jù)包中所需要的CRC5/CRC16數(shù)據(jù);
  (4)內(nèi)部256B RAM,支持乒乓操作;
  (5)支持SUSPEND/RESUME、WAKE UP、LOW-POWER模式。
3.2 USB-HOST接口電路設(shè)計(jì)
  SL811HS的接口電路原理如圖5所示。由于系統(tǒng)只需要具有USB主機(jī)的功能, 因此只需將控制SL811HS為主機(jī)或從機(jī)工作方式的M/S管腳接地。SL811HS的地址數(shù)據(jù)復(fù)用總線AD[7:0]與單片機(jī)P89C51RD2HBA的P0口連接。其中SL811HS的A0功能較為靈活。A0=0時(shí)表示數(shù)據(jù)線上的數(shù)據(jù)是SL811HS的RAM空間的地址指針;A0=1時(shí)則讀寫(xiě)指定地址的RAM數(shù)據(jù),從而實(shí)現(xiàn)數(shù)據(jù)的傳輸。而且它支持地址自增模式,即可讀寫(xiě)連續(xù)地址單元中的數(shù)據(jù),而不需要多次寫(xiě)入地址,從而大大提高傳輸速度。為了提高系統(tǒng)的抗干擾能力和穩(wěn)定性,VDD引腳的去耦電容采用103電容。并且在設(shè)計(jì)PCB時(shí)DATA+和DATA-的走線盡量短,整個(gè)PCB板做覆銅處理。


4 軟件設(shè)計(jì)與實(shí)現(xiàn)
4.1 USB主機(jī)對(duì)設(shè)備的枚舉軟件框架設(shè)計(jì)

  枚舉是任何USB設(shè)備使用前必經(jīng)的過(guò)程,因此枚舉作為整個(gè)USB通信的前提顯得非常關(guān)鍵。下面依照自底向上的軟件設(shè)計(jì)方法實(shí)現(xiàn)USB主機(jī)對(duì)設(shè)備的枚舉。整個(gè)USB主機(jī)系統(tǒng)的實(shí)現(xiàn)也是按照層次由底向上的設(shè)計(jì)思路,這樣便于系統(tǒng)移植。
  (1)MCU與SL811HST的底層通信。這是整個(gè)USB—Host模塊的基礎(chǔ),它主要包括對(duì)SL811HS字節(jié)的讀/寫(xiě)和字節(jié)串的讀/寫(xiě)等函數(shù)。
  (2)USB最底層數(shù)據(jù)包發(fā)送的實(shí)現(xiàn)。這是一個(gè)發(fā)送數(shù)據(jù)包的函數(shù),參數(shù)包括發(fā)送的數(shù)據(jù)包類型、端點(diǎn)地址、端點(diǎn)負(fù)載、傳輸長(zhǎng)度和數(shù)據(jù)緩存區(qū)地址指針。
  (3)控制傳輸和USB協(xié)議棧標(biāo)準(zhǔn)請(qǐng)求命令的實(shí)現(xiàn)。控制傳輸主要用于發(fā)送和接收與USB設(shè)備的配置信息相關(guān)的數(shù)據(jù),包括建立階段、可選數(shù)據(jù)階段和狀態(tài)階段。每個(gè)階段都由特定的事務(wù)(USB最底層數(shù)據(jù)包的發(fā)送)組成。建立階段發(fā)送規(guī)定格式的USB標(biāo)準(zhǔn)請(qǐng)求命令;數(shù)據(jù)階段是可選的,它根據(jù)建立階段指明的傳輸方向傳輸具有USB定義的數(shù)據(jù),該階段包含一個(gè)或多個(gè)IN/OUT事務(wù);狀態(tài)階段用于報(bào)告建立階段和數(shù)據(jù)階段的傳輸結(jié)果。
  (4)USB設(shè)備的枚舉。根據(jù)USB協(xié)議的規(guī)定,在調(diào)用標(biāo)準(zhǔn)請(qǐng)求命令函數(shù)的基礎(chǔ)上,實(shí)現(xiàn)主機(jī)對(duì)USB設(shè)備的枚舉。首先通過(guò)缺省地址0獲取設(shè)備描述符" title="描述符">描述符,如廠商ID、產(chǎn)品ID、設(shè)備類等信息;之后為設(shè)備分配新的地址;然后通過(guò)這個(gè)新地址與設(shè)備通信,獲取配置描述符、接口描述符、端點(diǎn)描述符等;根據(jù)獲取的配置描述符信息,為設(shè)備設(shè)定一個(gè)配置。
  (5)整個(gè)USB的協(xié)議框架。至此,整個(gè)USB主機(jī)的活動(dòng)特性已了解。從(1)~(4),層層遞進(jìn),一級(jí)比一級(jí)高級(jí)。最簡(jiǎn)單地說(shuō),就是(4)中宏觀的USB主機(jī)活動(dòng)是由最底層的(1)實(shí)現(xiàn)。而(1)中的函數(shù)是完全與硬件相關(guān)的部分,且越往上與硬件的關(guān)系越小,以至于在(4)中的層次就完全是與硬件無(wú)關(guān)的軟件平臺(tái)。這也為整個(gè)系統(tǒng)的移植奠定了基礎(chǔ),只需修改與硬件緊密相關(guān)的函數(shù)體即可[6]
4.2 主機(jī)與存儲(chǔ)設(shè)備之間的數(shù)據(jù)傳輸
  數(shù)字語(yǔ)音存儲(chǔ)應(yīng)用中采用的移動(dòng)存儲(chǔ)設(shè)備是Mass Storage類(海量存儲(chǔ)類)。Mass Storage類主要用于軟磁盤(pán)接口、ATA接口、IDE硬盤(pán)接口及Flash存儲(chǔ)器等設(shè)備建立的USB接口。不同的數(shù)據(jù)存儲(chǔ)載體接口構(gòu)成了Mass Storage類的子類,UFI即為實(shí)現(xiàn)軟磁盤(pán)接口的Mass Storage類的子類。各個(gè)子類都有一套自己的協(xié)議,并通過(guò)命令的形式實(shí)現(xiàn)各種功能。這些命令都是各子類所特有的,與USB沒(méi)有任何關(guān)系,只是在USB傳輸時(shí)被打包成一系列的命令包進(jìn)行傳輸。而真正與Mass Storage的傳輸方式相關(guān)的是其傳輸協(xié)議。
  BULK-ONLY協(xié)議沒(méi)有使用中斷和控制端點(diǎn),僅使用BULK(批量)端點(diǎn)進(jìn)行命令、數(shù)據(jù)和狀態(tài)的傳輸。批量傳輸方式不受時(shí)間限制并能保證數(shù)據(jù)的完整性。在這種傳輸方式下,有三種類型的數(shù)據(jù)在USB與設(shè)備之間傳送:CBW、CSW和普通數(shù)據(jù)。圖6描述了主機(jī)端數(shù)據(jù)傳輸方式。從圖6可以看到數(shù)據(jù)段一分為二,一個(gè)是數(shù)據(jù)輸出(主機(jī)發(fā)送數(shù)據(jù)到設(shè)備),另一個(gè)是數(shù)據(jù)輸入(主機(jī)從設(shè)備獲取數(shù)據(jù))。主機(jī)發(fā)送CBW,這個(gè)CBW本身作為描述符的負(fù)載數(shù)據(jù)傳輸?shù)皆O(shè)備。CBW的封包也包括封包頭和命令塊兩部分。封包頭表征了數(shù)據(jù)傳輸方向傳輸?shù)倪壿媶卧兔顗K長(zhǎng)度,命令塊是真正需要實(shí)現(xiàn)的命令。


4.3 數(shù)字語(yǔ)音數(shù)據(jù)存儲(chǔ)
  (1)單片機(jī)對(duì)移動(dòng)存儲(chǔ)設(shè)備的讀寫(xiě)
  對(duì)USB移動(dòng)存儲(chǔ)設(shè)備的讀寫(xiě)需要對(duì)存儲(chǔ)體的存儲(chǔ)格式有一定了解。FAT文件系統(tǒng)通過(guò)Mass Storage 類的UFI子類命令與U盤(pán)建立聯(lián)系,并在系統(tǒng)中建立一個(gè)U盤(pán)的空間結(jié)構(gòu)實(shí)現(xiàn)寫(xiě)文件、讀文件等功能。對(duì)于只有一個(gè)分區(qū)的FAT16格式的U盤(pán),其結(jié)構(gòu)依次是主引導(dǎo)記錄(MBR)、系統(tǒng)引導(dǎo)記錄(DBR)、文件分配表(FAT)、文件目錄表(FDT)和數(shù)據(jù)區(qū)(DATA)。MBR包括446字節(jié)的主引導(dǎo)代碼、64字節(jié)的DPT(Disk Partition Table,磁盤(pán)分區(qū)表)和“55,AA”的結(jié)束標(biāo)志。DBR是操作系統(tǒng)可以直接訪問(wèn)的第一扇區(qū),它包括一個(gè)引導(dǎo)程序和一個(gè)被稱為BPB(Bios Parameter Block)的本分區(qū)參數(shù)記錄表。BPB含有對(duì)文件系統(tǒng)操作的關(guān)鍵信息,因此非常重要。在對(duì)U盤(pán)進(jìn)行讀寫(xiě)前首先要讀取MBR扇區(qū)和DBR扇區(qū),以獲取DPT和BPB信息作為文件系統(tǒng)操作的基礎(chǔ);然后根據(jù)FAT表中簇的使用情況為相應(yīng)文件進(jìn)行分配(回收)并在FDT表中注冊(cè)(刪除)文件屬性等信息,即可實(shí)現(xiàn)對(duì)文件寫(xiě)、刪除等操作。
  (2)數(shù)字語(yǔ)音文件的實(shí)時(shí)存儲(chǔ)
  在本應(yīng)用系統(tǒng)中,把實(shí)時(shí)采集編碼后的數(shù)字語(yǔ)音按文件格式存儲(chǔ)到USB接口的移動(dòng)存儲(chǔ)設(shè)備上,以實(shí)現(xiàn)嵌入式環(huán)境下實(shí)時(shí)語(yǔ)音數(shù)據(jù)的存儲(chǔ)與交換。對(duì)于存儲(chǔ)后的數(shù)字語(yǔ)音文件可在PC環(huán)境下作后期處理,非常方便和靈活。整個(gè)系統(tǒng)的主循環(huán)程序設(shè)計(jì)流程如圖7所示。根據(jù)實(shí)際應(yīng)用需求,設(shè)計(jì)了兩路實(shí)時(shí)語(yǔ)音的采集編碼,每路語(yǔ)音的數(shù)據(jù)速率為8kbps。由于語(yǔ)音數(shù)據(jù)是恒定速率輸入且長(zhǎng)時(shí)間存儲(chǔ)的數(shù)據(jù)量比較大,因此如何提高存儲(chǔ)速度以保證語(yǔ)音數(shù)據(jù)的實(shí)時(shí)存儲(chǔ)就非常重要。為此系統(tǒng)采用前后臺(tái)操作方式,即語(yǔ)音數(shù)據(jù)的緩存在中斷服務(wù)程序中完成,并且每路語(yǔ)音數(shù)據(jù)均采用雙緩沖區(qū)形式。其中一個(gè)用于實(shí)時(shí)采集的語(yǔ)音數(shù)據(jù)緩存,另一個(gè)用于USB主機(jī)發(fā)送到U盤(pán)的數(shù)據(jù)緩存。在系統(tǒng)運(yùn)行中兩個(gè)緩沖區(qū)的角色動(dòng)態(tài)切換。在系統(tǒng)緩存容量允許的情況下,每個(gè)緩沖區(qū)大小盡可能大一些。因?yàn)閷?duì)U盤(pán)一次性寫(xiě)入的文件容量越大,平均字節(jié)的系統(tǒng)開(kāi)銷越小,速度越快。數(shù)字語(yǔ)音文件存儲(chǔ)到U盤(pán)的操作在后臺(tái)主循環(huán)中實(shí)現(xiàn),主循環(huán)對(duì)兩個(gè)緩沖區(qū)滿標(biāo)志進(jìn)行查詢來(lái)決定當(dāng)前待發(fā)送的緩沖區(qū),發(fā)送完畢后清除相應(yīng)的緩沖區(qū)滿標(biāo)志。所以通過(guò)有效分配緩沖區(qū)大小和雙緩沖方式能有效提高數(shù)據(jù)存儲(chǔ)速度,再通過(guò)采用前后臺(tái)的操作方式更好地保證數(shù)據(jù)存儲(chǔ)的實(shí)時(shí)性能。


  本文主要研究了嵌入式環(huán)境下基于USB-HOST結(jié)構(gòu)的數(shù)字錄音技術(shù)及其實(shí)現(xiàn),目前已通過(guò)系統(tǒng)調(diào)試。系統(tǒng)能夠完成設(shè)計(jì)預(yù)期的對(duì)兩路語(yǔ)音的實(shí)時(shí)存儲(chǔ),且長(zhǎng)時(shí)間運(yùn)行穩(wěn)定性較好。在設(shè)計(jì)中由于USB主機(jī)協(xié)議框架部分按自底向上的層次設(shè)計(jì)方法,因此系統(tǒng)具有很好的移植性,稍做修改即可移植到如數(shù)據(jù)采集系統(tǒng)、工控領(lǐng)域等應(yīng)用場(chǎng)合。
參考文獻(xiàn)
1 Motorola.MC14LC5480 Datasheet [Z].1996.
2 Cypress.SL811HS/SL811HST Application Notes [Z].2001.
3 Cypress.SL811HS Datasheet [Z].2001.
4 USB Specification 1.1 [S].1998.
5 王成儒,李英偉.USB2.0原理與工程開(kāi)發(fā)[M].北京:國(guó)防工業(yè)出版社,2004
6 馬偉.計(jì)算機(jī)USB系統(tǒng)原理及其主/從機(jī)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2004

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。