用FIFO實(shí)現(xiàn)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)
為區(qū)分兩個(gè)DSP的讀、寫信號(hào),在邏輯表達(dá)式中用MRD和MWR分別表示DSP56001的讀、寫信號(hào)RD和WR。ADSP21020作為主芯片同時(shí)與多個(gè)DSP56001(圖2僅畫出其中一個(gè))相連,因此每一個(gè)DSP56001均有一個(gè)不同的身份地址,表示該身份地址的地址線(A25~A22)的譯碼結(jié)果為IDNAT。為簡(jiǎn)化硬件電路,譯碼邏輯均采用PAL器件實(shí)現(xiàn)。
2.2 軟件流程
圖3所示為DSP56001對(duì)并口進(jìn)行讀、寫數(shù)據(jù)的軟件流程。ADSP21020向DSP56001傳送數(shù)據(jù)及從并行口讀取由DSP56001傳送過來(lái)的數(shù)據(jù)步驟與上述流程相同。對(duì)DSP56001和ADSP21020來(lái)說(shuō),并行接口均為異步雙向口。當(dāng)DSP56001要向ADSP21020傳送數(shù)據(jù)時(shí),首先讀狀態(tài)標(biāo)志口(口地址0x600),若標(biāo)志第0位為0(全滿),則重復(fù)讀狀態(tài)標(biāo)志口,直至標(biāo)志第0位為1(數(shù)據(jù)未滿,已被ADSP21020全部或部分讀出)時(shí),DSP56001才向接口(地址0x200)寫入數(shù)據(jù);當(dāng)DSP56001要讀取由ADSP21020傳送過來(lái)的數(shù)據(jù)時(shí),首先讀狀態(tài)標(biāo)志口(口地址0x600),若標(biāo)志第1位為0(全空),則重復(fù)讀狀態(tài)口,直至標(biāo)志第1位為1時(shí)(不空,已郵ADSP21020寫入數(shù)據(jù)),DSP56001讀接口(地址0x200)即可獲得所需數(shù)據(jù)。
該方法已成功應(yīng)用于一臺(tái)自動(dòng)研制的基于DSP的實(shí)時(shí)模擬及被頻信號(hào)采集與處理系統(tǒng)。實(shí)際運(yùn)行結(jié)果表明,該方法不僅速度較高,而且譯碼邏輯也十分簡(jiǎn)單。
評(píng)論