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