時,軟件邏輯可以使處理器發(fā)出
應答信號,表示它將放棄對其外部總線的控制。根據(jù)
,外部地址信號(A15~A0)、數(shù)據(jù)信號(D15~D0)以及存儲器控制信號(
)被置為高阻狀態(tài)。從①、②可以看出,F206的HOLD操作允許對外部程序、數(shù)據(jù)以及I/O空間進行直接存儲器訪問,但該功能是在INT1中斷程序中實現(xiàn)的,因而中斷線INT1對下降沿和上升沿二者都應敏感。當F206檢測到下降沿時,它完成正在執(zhí)行的當前指令,然后迫使程序控制轉到中斷服務子程序,此子程序執(zhí)行IDLE(空閑)指令。根據(jù)IDLE,
變?yōu)橛行Ф獠靠偩被置為高阻狀態(tài)。只有在檢測到HOLD/INT1引腳上的上升沿之后,CPU才退出IDLE狀態(tài),
變?yōu)闊o效,并使外部總線返回到正常狀態(tài)。從以上分析可以看出,F206的DMA操作與PC機中的DMA操作的區(qū)別。在PC機中,CPU收到DMA請求信號后,迫使CPU在現(xiàn)行的總線周期結束后,使其地址、數(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)部結構和引腳信號可參閱文獻[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)結合圖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ù)交換完畢;
⑤DMA傳送結束后,自動撤消向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,F3,79,BC,5E,AF,57,2B,15,8A,C5,E2;
F1,F8,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的寄存器直接進行編程了。
結束語
在全數(shù)字化語言學習系統(tǒng)中,我們采用了聲效芯片CS4235來代替以前所用的語音錄放芯片MSM6588。盡管硬件電路設計和軟件操作復雜了許多,但語言學習系統(tǒng)的重要指標,如通頻帶、信噪比和失真度都達到了多媒體計算機的音質標準。實踐表明,微機中的許多關鍵技術和優(yōu)秀的設計思想都可以移植到嵌入式系統(tǒng)中去,使嵌入式系統(tǒng)更加豐富多彩。





