引 言
聲卡技術是多媒體計算機技術的關鍵技術之一,
它的出現(xiàn)使得計算機更富表達力,。目前,,由于采用的錄放音芯片結(jié)構(gòu)簡單、采樣率過低而使得嵌入式系統(tǒng)中的音質(zhì)效果比較差,,遠遠滿足不了人們對高檔生活,、學習用嵌入式系統(tǒng)的要求。如果能將聲卡技術應用到嵌入式系統(tǒng)中,,由于聲卡的強大功能,,必將使整個系統(tǒng)的聲音質(zhì)量上升一個新的臺階。通過分析,,WSS(Windows Sound System)兼容聲卡和PC機ISA總線的接口原理,,我們將其中的聲效芯片CS4235應用到基于DSP的嵌入式系統(tǒng)中。不用現(xiàn)成的聲卡而利用其上的聲效芯片是因為這樣做設計起來更靈活方便,,可根據(jù)系統(tǒng)需要增刪相應的功能,;不用MCS51系列而采用DSP,是因為對聲卡操作需要太多的系統(tǒng)資源,,MCS51并不具備此能力,,否則硬件接口電路將相當復雜。
1 CS4235原理與結(jié)構(gòu)
1.1 聲卡工作原理
圖1示出了聲卡的基本工作原理:主機通過總線將數(shù)字化的聲音信號以PCM的方式送到數(shù)模轉(zhuǎn)換器(D/A),,將數(shù)字信號變成模擬的音頻信號,;同時又可以通過模數(shù)轉(zhuǎn)換器(A/D)將麥克風或CD的輸入信號轉(zhuǎn)換成數(shù)字信號,送到計算機進行各種處理,。
1.2 CS4235功能結(jié)構(gòu)
WSS是Microsoft公司為統(tǒng)一聲卡的標準,,最終為應用提供方便而提出的Windows 環(huán)境下多媒體擴展定義的一個音頻子系統(tǒng)標準,,包括硬件平臺和軟件接口[1]。CS4235就是一種適應于WSS并且提供了ISA總線接口的聲卡核心芯片,,除了聲音的采集和播放外,其它控制全部依賴于主機,;它占用較多的主機時間,,但成本比較低,。CS4235的功能框圖如圖2所示,。從圖2中可以看出,CS4235是一個完整的音頻子系統(tǒng)集成電路,,提供了16位立體聲ADC及DAC,、片內(nèi)可重構(gòu)數(shù)字濾波器、可編程增益值及衰減值的模擬和數(shù)字混合器,、可選串行接口,、具有同時錄音和播放能力的全雙工通道。CS4235的文檔說明見參考文獻[2],。
限于篇幅,這里不介紹CS4235的模擬硬件部分,,而主要研究CS4235與DSP的數(shù)字硬件接口問題,。由于TMS320F206(簡稱F206)是一種低價格、高性能的16位定點運算數(shù)字信號處理器(DSP),,性價比極高,,目前已成為高檔單片機的理想替代品,,在通信,、語音處理、軍事,、儀器儀表,、圖像處理等領域得到了廣泛的應用[3],因而系統(tǒng)中選用F206作為DSP,。CS4235提供的8位并行接口與ISA總線兼容,,是否也與DSP的外部擴展總線兼容呢?表1中列出了CS4235和ISA總線接口的信號引腳及簡單描述,,相應地也列出了F206的對應引腳,。從表1可以看出,要實現(xiàn)DSP對CS4235的直接操作,,DSP系統(tǒng)必須提供上述ISA總線信號,。DSP芯片一般可提供數(shù)據(jù)信號線、地址信號線,、I/O讀寫信號線和READY信號線,,同時還擁有多個中斷輸入引腳;但并不直接具備DMA功能引腳,,這給DSP與CS4235之間的接口帶來了不便,,也正是本文所要解決的主要問題。 表1 CS4235和ISA總線接口的信號引腳 信號引腳簡單描述 DSP(F206)對應引腳 SD<7:0> 雙向系統(tǒng)數(shù)據(jù)總線 D<7:0> SA<11:0> 系統(tǒng)地址總線 A<11:0> IOR I/O讀命令由IS和RD譯碼得到IQW=IS+WR IOW I/O寫命令無 AEN 地址使能信號 READY IOCHRDY I/O通道準備好 INT2(實際應用中,,只需選擇1根中斷線與DSP相連) IRQ 中斷申請信號:IRQA=IRQ5,,IRQB=IRQ7 IRQC=IRQ9,IRQC=IRQ11,IRQD=IRQ11 IRQE=IRQ12,IRQF=IRQ15,IRQG=IRQ10 無 DRQ DMA申請信號:DRQA=DRQ0 DRQB=DRQ1 DRQC=DRQ3 無 DACK DMA應答信號:DACKA=DACK0 DACK1=DAC中,DACKC=DACK3 RS RESET 聲卡復位信號
2 DSP與CS4235的硬件接口
2.1 F206使用HOLD操作的直接存儲器訪問
F206實現(xiàn)DMA功能的關鍵是該類芯片提供了2個信號引腳:HOLD/INT1和,,這2個信號控制的HOLD操作過程如下,。
① ,。外部設備可以把該引腳驅(qū)動到低電平從而請求對外部總線的控制。如果HOLD/INT1中斷線被允許,,那么這將觸發(fā)中斷。 ② ,,在響應中斷時,,軟件邏輯可以使處理器發(fā)出應答信號,表示它將放棄對其外部總線的控制,。根據(jù),,外部地址信號(A15"A0)、數(shù)據(jù)信號(D15"D0)以及存儲器控制信號()被置為高阻狀態(tài),。
從①,、②可以看出,F(xiàn)206的HOLD操作允許對外部程序,、數(shù)據(jù)以及I/O空間進行直接存儲器訪問,,但該功能是在INT1中斷程序中實現(xiàn)的,因而中斷線INT1對下降沿和上升沿二者都應敏感,。當F206檢測到下降沿時,,它完成正在執(zhí)行的當前指令,然后迫使程序控制轉(zhuǎn)到中斷服務子程序,,此子程序執(zhí)行IDLE(空閑)指令,。根據(jù)IDLE,變?yōu)橛行Ф獠靠偩€被置為高阻狀態(tài),。只有在檢測到HOLD/INT1引腳上的上升沿之后,,CPU才退出IDLE狀態(tài),變?yōu)闊o效,,并使外部總線返回到正常狀態(tài),。
從以上分析可以看出,F(xiàn)206的DMA操作與PC機中的DMA操作的區(qū)別,。在PC機中,,CPU收到DMA請求信號后,,迫使CPU在現(xiàn)行的總線周期結(jié)束后,,使其地址、數(shù)據(jù)和部分控制引腳處于三態(tài),,從而讓出總線的控制權,,并給出1個DMA響應信號;在DMA操作完成且DMA請求信號無效以后,,CPU再恢復對系統(tǒng)總線的控制,。而在C2XX中,DMA申請信號將引起F206中斷,在中斷程序中發(fā)出軟件指令使F206各信號引腳處于三態(tài),,同時也給出1個DMA響應信號,;在DMA操作完成后,但F206檢測到DMA請求信號無效以后,,雖然總線返回到正常狀態(tài),,但但F206仍處在中斷程序中。從以上分析可知,,盡管中斷需要保護斷點和現(xiàn)場,,使得F206的DMA的處理速度與PC機相比要低的多,畢竟F206也實現(xiàn)了DMA操作,,從而可借助DMA控制器8237實現(xiàn)對聲卡的DMA操作訪問,。 2.2 DSP與DMA控制器8237的接口電路
8237是一個高性能的可編程DMA控制器芯片,可以方便地與CPU相連,,實現(xiàn)外部設備與存儲器之間的直接數(shù)據(jù)交換,。其內(nèi)部結(jié)構(gòu)和引腳信號可參閱文獻[4]。該控制器通過編程可提供多種類型的控制特性,,以優(yōu)化系統(tǒng)性能,,增大數(shù)據(jù)吞吐量,最高數(shù)據(jù)傳輸速率可達1.6 MB/s,。圖3給出了F206與8237接口的主電路,,其中8237送給DSP的要求控制總線的DMA請求信號HRQ,經(jīng)GAL16V8譯碼后送到DSP的HOLD/INT1引腳,;同樣,,
DSP的DMA應答信號也經(jīng)GAL16V8譯碼送回8237的HLDA引腳。地址鎖存器74LS573的作用是鎖存8237在DMA服務周期通過數(shù)據(jù)線D0"7輸出的高8位地址A8"15,。由于DSP不直接提供,、、和信號,,故這些信號只能由GAL16V8譯碼得到,。
圖3所示電路提供了4個通道的外設請求DMA服務信號,并且8237直接擁有AEN引腳,,滿足了表1中的所有要求,,從而就能正確實現(xiàn)DSP與聲卡的接口。實際工作中,,我們根據(jù)聲卡在PC機中的使用情況設置8237的DREQ1和DACK1為聲卡的播放通道,,8237的DREQ3和DACK3為聲卡的采集通道,聲卡的中斷申請信號IRQ7經(jīng)GAL16V8反向后與DSP的引腳連接,。 2.3 系統(tǒng)工作原理及時序
圖3所示DSP系統(tǒng)對聲卡的DMA操作過程可用圖4來描述,,工作時序如圖5所示?,F(xiàn)結(jié)合圖4、圖5將系統(tǒng)工作原理及操作順序說明如下: ① CS4235向DMA控制器8237發(fā)出DMA請求信號DREQ,; ② 8237向DSP發(fā)出總線請求信號HRQ,; ③ DSP的引腳檢測到下跳沿后,進入INT1中斷,,保護完斷點和現(xiàn)場后,,發(fā)IDLE指令,DSP的引腳電平變低,,響應外部DMA請求,; ④ 8237接管總線后,先向CS4235發(fā)DMA請求的響應信號DACK,,表示允許CS4235進行DMA傳送,,然后按事先設置的初始地址和需傳送的字節(jié)數(shù),依次發(fā)送地址和讀寫命令,,使得在RAM CS4235之間直接交換數(shù)據(jù),,直至全部數(shù)據(jù)交換完畢;
?、軩MA傳送結(jié)束后,,自動撤消向CPU的總線請求信號HRQ,此時DSP檢測到引腳的上升沿,,DSP返回到IDLE指令的下一條指令,,DSP獲得總線的控制權,繼續(xù)在INT1中執(zhí)行程序,。
3 DSP與CS4235的軟件接口
CS4235的ISA總線接口是即插即用(PnP)的,,必須通過編程激活聲卡后,才能直接存取聲卡寄存器,,對聲卡進行配置,,以完成不同的工作。實際上,,針對非PnP的老ISA卡設計的ISA插槽同樣適用于PnP卡,,僅需在軟件上做出相應的改動而已。DSP對PnP卡的識別過程與微機對PnP卡的識別過程是一模一樣的,,圖6給出了DSP對PnP卡的識別程序流程,。從上述的PnP卡的識別與配置過程可見,如果是在PC機環(huán)境中,,那么這一過程可自動完成,;而在用戶所設計的系統(tǒng)中,,這一過程就顯得有些煩瑣,,且意義不是很大,。能不能避開PnP協(xié)議直接對每塊PnP卡進行編程,就像對老的ISA卡那樣操作呢,?實際上,,大多數(shù)芯片確實提供了這種簡潔、快速的方法,,統(tǒng)稱為"某某公司關鍵字"接口方法,。本文以CS4235為例介紹這種接口技術。下面所給出的5個步驟完成后,,該聲卡就和老的ISA聲卡操作過程一樣了,。唯一不足的是,如果系統(tǒng)中使用了2塊該類型的聲卡,,則該方法失效,。 ① DSP送32字節(jié)"Crystal Key"到地址端口279H,該PnP卡馬上進入配置狀態(tài),。這32字節(jié)數(shù)據(jù)為: 96,,35,9A,,CD,,E6,F(xiàn)3,,79,,BC,5E,,AF,,57,2B,,15,,8A,C5,,E2,; F1,F(xiàn)8,,7C,,3E,9F,,4F,,27,13,,09,,84,,42,A1,,D0,,68,34,,1A,。 ② DSP送句柄號到279H。
③ DSP直接配置每個邏輯器件的配置寄存器,,設置I/O端口基址,、中斷號和DMA通道選擇。 ④ DSP送79H到279H激活CS4235,。 ⑤ DSP禁止該PnP卡參與將來的PnP循環(huán),。
上述配置完成后,CS4235自動退出配置狀態(tài),,進入正常工作,,從而就可以根據(jù)具體的功能要求對CS4235的寄存器直接進行編程了。
結(jié)束語
在全數(shù)字化語言學習系統(tǒng)中,,我們采用了聲效芯片CS4235來代替以前所用的語音錄放芯片MSM6588,。盡管硬件電路設計和軟件操作復雜了許多,但語言學習系統(tǒng)的重要指標,,如通頻帶,、信噪比和失真度都達到了多媒體計算機的音質(zhì)標準。實踐表明,,微機中的許多關鍵技術和優(yōu)秀的設計思想都可以移植到嵌入式系統(tǒng)中去,,使嵌入式系統(tǒng)更加豐富多彩。
本文來源于與非網(wǎng) http://www.eefocus.com
原文地址:http://www.eefocus.com/article/11-08/2660031312292914.html