在多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的实时模拟及被频信号采集与处理系统。实际运行结果表明,该方法不仅速度较高,而且译码逻辑也十分简单。
上一篇:SOPC大规模可编程专用集成电路的快速开发
下一篇:Almalence将其图像处理软件移植到Tensilica新的IVP 图像/视频数字信号处理器上
推荐阅读最新更新时间:2024-05-02 22:33
- CGD和Qorvo将共同革新电机控制解决方案
- 是德科技 FieldFox 手持式分析仪配合 VDI 扩频模块,实现毫米波分析功能
- 贸泽开售可精确测量CO2水平的 英飞凌PASCO2V15 XENSIV PAS CO2 5V传感器
- 玩法进阶,浩亭让您的PCB板端连接达到新高度!
- 长城汽车研发新篇章:固态电池技术引领未来
- 纳芯微提供全场景GaN驱动IC解决方案
- 解读华为固态电池新专利,2030 叫板宁德时代?
- 让纯电/插混车抓狂?中企推全球首款-40℃可放电增混电池,不怕冷
- 智驾域控知多少:中低端车型加速上车,行泊一体方案占主体
- Foresight推出六款先进立体传感器套件 彻底改变工业和汽车3D感知
- 抢楼有礼|英飞凌天猫店有惊喜
- 全球首款Cortex-M23内核物联网芯片SAML10和SAM L11系列 闯关获取SAML10/SAML11法宝,拆除电子界安全危机,赢好礼!
- 看展闯关赢好礼|MPS 芯云展厅与您不见不散!
- EEWorld Datasheet 伴你同行!快来领取200芯积分福利啦~
- 调查 | 电机驱动的那些坎儿,我们帮你过!
- 看MPLAB® Harmony集成软件框架之学习篇 你来评论我送礼!
- 【迎新迎国庆】dcexpert带你“全栈”动手搞:基于ESP8266可充电的触控创意LED灯
- 看MPS干货视频,票选最痛EMI问题!
- 手机答题抽奖啦:Microchip高端千兆以太网专题知识
- 有奖直播:TI最新C2000实时控制器,在功率变换应用中实现高性能的成本优化型设计