用FIFO實(shí)現DSP間的雙向并行異步通訊
AdEn=DS+Ma15+Ma14+Ma13+Ma12+Ma11
21FIFOR=IDMAT+A21+A20+A19+RD
(映射地址為:身份地址+0x180000)
21FIFOW=IDMAT+A21+A20+A19+WR
(映射地址為:身份地址+0x180000)
FIFORST=(IDMAT+A21+A20+A19+WR)56FIFORST
?。ㄓ成涞刂窞椋荷矸莸刂?0x200000)
21FLGR=IDMAT+A21+A20+A19+RD
(映射地址為:身份地址+0x100000)
為區分兩個(gè)DSP的讀、寫(xiě)信號,在邏輯表達式中用MRD和MWR分別表示DSP56001的讀、寫(xiě)信號RD和WR。ADSP21020作為主芯片同時(shí)與多個(gè)DSP56001(圖2僅畫(huà)出其中一個(gè))相連,因此每一個(gè)DSP56001均有一個(gè)不同的身份地址,表示該身份地址的地址線(xiàn)(A25~A22)的譯碼結果為IDNAT。為簡(jiǎn)化硬件電路,譯碼邏輯均采用PAL器件實(shí)現。
2.2 軟件流程
圖3所示為DSP56001對并口進(jìn)行讀、寫(xiě)數據的軟件流程。ADSP21020向DSP56001傳送數據及從并行口讀取由DSP56001傳送過(guò)來(lái)的數據步驟與上述流程相同。對DSP56001和ADSP21020來(lái)說(shuō),并行接口均為異步雙向口。當DSP56001要向ADSP21020傳送數據時(shí),首先讀狀態(tài)標志口(口地址0x600),若標志第0位為0(全滿(mǎn)),則重復讀狀態(tài)標志口,直至標志第0位為1(數據未滿(mǎn),已被ADSP21020全部或部分讀出)時(shí),DSP56001才向接口(地址0x200)寫(xiě)入數據;當DSP56001要讀取由ADSP21020傳送過(guò)來(lái)的數據時(shí),首先讀狀態(tài)標志口(口地址0x600),若標志第1位為0(全空),則重復讀狀態(tài)口,直至標志第1位為1時(shí)(不空,已郵ADSP21020寫(xiě)入數據),DSP56001讀接口(地址0x200)即可獲得所需數據。
該方法已成功應用于一臺自動(dòng)研制的基于DSP的實(shí)時(shí)模擬及被頻信號采集與處理系統。實(shí)際運行結果表明,該方法不僅速度較高,而且譯碼邏輯也十分簡(jiǎn)單。
評論