用FIFO实现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)
为区分两个DSP的读、写信号,在逻辑表达式中用MRD和MWR分别表示DSP56001的读、写信号RD和WR。ADSP21020作为主芯片同时与多个DSP56001(图2仅画出其中一个)相连,因此每一个DSP56001均有一个不同的身份地址,表示该身份地址的地址线(A25~A22)的译码结果为IDNAT。为简化硬件电路,译码逻辑均采用PAL器件实现。
2.2 软件流程
图3所示为DSP56001对并口进行读、写数据的软件流程。ADSP21020向DSP56001传送数据及从并行口读取由DSP56001传送过来的数据步骤与上述流程相同。对DSP56001和ADSP21020来说,并行接口均为异步双向口。当DSP56001要向ADSP21020传送数据时,首先读状态标志口(口地址0x600),若标志第0位为0(全满),则重复读状态标志口,直至标志第0位为1(数据未满,已被ADSP21020全部或部分读出)时,DSP56001才向接口(地址0x200)写入数据;当DSP56001要读取由ADSP21020传送过来的数据时,首先读状态标志口(口地址0x600),若标志第1位为0(全空),则重复读状态口,直至标志第1位为1时(不空,已邮ADSP21020写入数据),DSP56001读接口(地址0x200)即可获得所需数据。
该方法已成功应用于一台自动研制的基于DSP的实时模拟及被频信号采集与处理系统。实际运行结果表明,该方法不仅速度较高,而且译码逻辑也十分简单。
评论