完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
在多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) 为区分两个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的实时模拟及被频信号采集与处理系统。实际运行结果表明,该方法不仅速度较高,而且译码逻辑也十分简单。 |
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2569 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2365 浏览 5 评论
3210 浏览 3 评论
2837 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2789 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
668浏览 1评论
905浏览 0评论
1026浏览 0评论
671浏览 0评论
499浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 09:11 , Processed in 1.110104 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号