在多CPU的分布式信号处理系统中,往往涉及CPU间的通讯与数据交换,大数据量的数据传输一般采用DMA方式,而小数据量的数据交换采用并行接口则比较快速灵活。因此,对于传输速度要求较高的DSP间的小数据量的数据交换及通讯来说,要提高DSP的工作效率,不仅要求并行接口的响应快,而且必须采用异步方式以免相互等待。本文介绍了采用CYPRESS公司的FIFO芯片CY7C419来实现DSP间的双向并行异步通讯接口。该方法不仅比用TTL锁存器的方式速度快,而且译码逻辑简单,另外,由于FIFO芯片有一定的深度(256个),因此,在少于256个数据传输时,可实现零等待时间。
1 FIFO芯片简介
全满(FF)和全空(EF)标志用以防止数据溢出或不足;
扩展输入(XI)、扩展输出(X0)、首次装载(FL):用以实现无限的宽度及深度扩展,深度扩展技术可使操纵控制信号从一个元件并行传至另一个元件,因而消除了传输延迟的串行附加,其最高读、写速度可达50MHz,读写信号低电平有效;
当CY7C419独立使用或多片实现宽度扩展结构时,半空标志(HF)输出有效,在深度扩展结构中,该此脚输出扩展输出信息(XO)并告知下一个FIFO;
D0~D8为数据输入,Q0~Q8为数据输出。
R、W及MR分别为读、写及复位信号的输入端,它们均为低电平有效。
2 硬件结构与通讯流程
2.1 硬件结构
利用FIFO实现DSP间双向并行异步通讯的结构原理如图2所示。DSP56001和ADSP21020分别树熊美国Motorola和ADI公司的DSP芯片。两个CY7C419芯片U1、U2分别用于DSP56001和ADSP21020间双向并行接口的一个方向,其中U1用于完成DSP56001向ADSP21020的数据传送,U2则用于完成ADSP21020向DSP56001的数据传送。U1的全满标志(FF)与U2的全空标志(EF)通过缓冲器74LS245与DSP56001的数据总线相连,该缓冲器被映射为DSP56001数据区的一个地址单元(0x600),因此,DSP56001通过对该地址单元的读操作便可获知U1是否已写满以及U2是否有数所要读。同理,U2的全志(FF)与U1的全空标志(EF)通过一缓冲器74LS245连于ADSP21020的数据总线,该片74LS245补映射为ADSP21020数据区的一个地址单元(身份地址+0x100000),这样ADSP21020通过对该地址单元的读操作也可获知U2是否已写满以及U1是否有数据要读。另外,DSP56001对U1的写操作、对U2的读操作映射为对其数据存储区一个地址单元(0x200)的写、读操作;而ADSP21020对U2的写操作和对U1的读操作则被映射为对其数据存储区地址单元(身份地址+0x180000)的写、读操作。两个DSP芯睡均可同时对U1、U2进行复位操作。
DSP56001对双向口的读56FIFOR、写56FIFOW、复位56FIFORST及对标志口状态56FLGR的读信号可由DSP56001的地址线与读写信号译码获得;ADSP21020对双向口的读21FIFOR、写21FIFOW、复位56FIFORST及对标志口状态56FLGR的读信号则可由ADSP21020的地址线与读写信号译码获得。各译码输出的逻辑表达式如下:
56FIFOR=AdEn+Ma10+Ma9+MRD
(映射地址为:0x200)
56FIFOW=AdEn+Ma10+Ma9+MWR
(映射地址为:0x200)
56FIFOORST=AdEn+Ma10+Ma9+MWR
(映射地址为:0x400)
56FLGR=AdEn+Ma10+Ma9+MRD
(映射地址为:0x600)
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)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉