基于CPLD的DSP與聲卡接口技術(shù)
使用復(fù)雜可編程邏輯器件(CPLD)可提高系統(tǒng)集成度、降低噪聲、增強(qiáng)系統(tǒng)可靠性并降低成本,同時(shí)它不僅具有電擦除特性,而且出現(xiàn)了邊緣掃描及在線編程等高級(jí)特性,因而可用于狀態(tài)機(jī)、同步、譯碼、解碼、計(jì)數(shù)、總線接口等很多方面,在信號(hào)處理領(lǐng)域的應(yīng)用也非?;钴S。MAX7000系列是ALTERA公司采用先進(jìn)的0.8μmCMOSEEPROM技術(shù)制造的高性能、高密度的CPLD[1]。MAX7000的結(jié)構(gòu)可完全模仿TFL,并可將SSI,MSI,LSI和傳統(tǒng)PLD的邏輯函數(shù)高密度地集成。EPM7128S是MAX7000系列的高密度器件,它有128個(gè)邏輯宏單元和最大100個(gè)輸入,具有在系統(tǒng)編程(ISP)特性,非常適合輸入、輸出端要求較多的邏輯復(fù)雜的控制密集型系統(tǒng)。將EPM7128S用到DSP與ISA總線聲卡的接口電路中,不僅使整個(gè)系統(tǒng)體積顯著減小,且硬件故障率明顯降低,調(diào)試工作也變得很容易。DSP與ISA總線聲卡的接口原理聲卡的工作原理圖1示出了聲卡的基本工作原理:主機(jī)通過總線將數(shù)字化的聲音信號(hào)以PCM方式送到數(shù)模轉(zhuǎn)換器(D/A),將數(shù)字信號(hào)變成模擬的音頻信號(hào);同時(shí)又可以通過模數(shù)轉(zhuǎn)換器(A/D)將傳聲器或CD的輸入信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),送到計(jì)算機(jī)進(jìn)行各種處理。實(shí)際具體聲卡的硬件結(jié)構(gòu)請(qǐng)參閱有關(guān)資料和手冊(cè)。
2.2WSS兼容聲卡和ISA總線硬件接口
WSS是Microsoft公司為統(tǒng)一聲卡的標(biāo)準(zhǔn)、提供方便的應(yīng)用而提出的Windows環(huán)境下多媒體擴(kuò)展定義的音頻子系統(tǒng)標(biāo)準(zhǔn),它包括硬件平臺(tái)和軟件接口。該類聲卡的硬件結(jié)構(gòu)主要包括聲音處理芯片/組、功率放大器、總線連接端口、輸入輸出端口、MIDI及游戲桿接口、CD音頻連接器等m。根據(jù)實(shí)際需要,只需了解聲卡與ISA總線的接口信號(hào)及時(shí)序要求。要實(shí)現(xiàn)DSP對(duì)聲卡的直接操作,DSP系統(tǒng)必須提供上述ISA總線信號(hào)。
DSP一般可提供數(shù)據(jù)信號(hào)線、地址信號(hào)線、IO讀寫信號(hào)線和READY信號(hào)線,同時(shí)還有多個(gè)中斷輸入引腳,但并不直接具備DMA功能引腳,這給DSP與聲卡之間的接口帶來了不便,這也正是筆者所要解決的問題。
2.3TMS320C2XX使用HOLD操作的DMA
TMS320C2XX[~實(shí)現(xiàn)DMA功能的關(guān)鍵是,該類芯片提供了兩個(gè)信號(hào)引腳:HOLD/INTl和HOLDA,這兩個(gè)信號(hào)控制的HOLD操作過程為:
(1)HOLD,外部設(shè)備可以把該引腳驅(qū)動(dòng)到低電平從而請(qǐng)求對(duì)外部總線的控制。如果HOLD/INTl中斷線被允許,那么這將觸發(fā)中斷。
(2)HOLDA,在響應(yīng)HOLD中斷時(shí),軟件邏輯可以使處理器發(fā)出HOLDA應(yīng)答信號(hào),表示它將放棄對(duì)其外部總線的控制。根據(jù)百Z圃5五,外部地址信號(hào)(A15~A0)、數(shù)據(jù)信號(hào)(D15~D0)以及存儲(chǔ)器控制信號(hào)(P5,DS,BR,STRB,R/W,RD,WE)被置為高阻狀態(tài)。
從(1)、(2)可以看出C2XX的HOLD操作允許對(duì)外部程序、數(shù)據(jù)以及I/O空間進(jìn)行直接存儲(chǔ)器訪問,但該功能是在INTl中斷程序中實(shí)現(xiàn)的,因而中斷線INTl對(duì)下降沿和上升沿兩者都應(yīng)敏感。當(dāng)C2XX檢測(cè)到下降沿時(shí),它完成正在執(zhí)行的當(dāng)前指令,然后迫使程序控制轉(zhuǎn)到中斷服務(wù)子程序,此子程序執(zhí)行IDLE(空閑)指令。根據(jù)IDLE,HOLDA變?yōu)橛行Ф獠靠偩€被置為高阻狀態(tài)。只有在檢測(cè)到HOLD/INTl引腳上的上升沿之后,CPU才退出IDLE狀態(tài),HOLDA變?yōu)闊o效,并使外部總線返回到正常狀態(tài)。
從以上分析可以看出C2XX的DMA操作與PC機(jī)中的DMA操作的區(qū)別。在PC機(jī)中,CPU收到DMA請(qǐng)求信號(hào)后,迫使CPU在現(xiàn)行的總線周期結(jié)束后,使其地址、數(shù)據(jù)和部分控制引腳處于三態(tài),從而讓出總線的控制權(quán),并給出一個(gè)DMA響應(yīng)信號(hào);在DMA操作完成后,DMA請(qǐng)求信號(hào)無效以后,CPU再恢復(fù)對(duì)系統(tǒng)總線的控制。而在C2XX中,DMA申請(qǐng)信號(hào)將引起C2XX中斷,在中斷程序中發(fā)出軟件指令使C2XX各信號(hào)引腳處于三態(tài),同時(shí)也給出了一個(gè)DMA響應(yīng)信號(hào);在DMA操作完成后,C2XX檢測(cè)到DMA請(qǐng)求信號(hào)無效以后,雖然總線返回到正常狀態(tài),C2XX仍處在中斷程序中。從以上分析可知,盡管中斷需要保護(hù)斷點(diǎn)和現(xiàn)場(chǎng),使得C2XX的DMA的處理速度與PC機(jī)相比要低得多,但畢竟C2XX也實(shí)現(xiàn)了DMA操作,從而可借助DMA控制器8237實(shí)現(xiàn)對(duì)聲卡的DMA操作訪問[4]。
評(píng)論