DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1346|回复: 1
打印 上一主题 下一主题

[待整理] ADSP-21062与工控机数据交换电路设计

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-5 11:42:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ADSP-21062与工控机数据交换电路设计

摘    要:本文根据系统需要,在信号处理机和工控机之间使用双口SRAM,利用ADSP-21062的可编程FLAG引脚控制双口SRAM的左右端口高位地址,设计了高速数据交换电路。
关键词:PC104;双口SRAM;数据交换;CPLD
ADSP-21062是ADI公司的通用DSP芯片,它具有强大的浮点/定点数据运算能力和很高的处理速度。多片ADSP-21062可以以多种形式方便地联结成并行处理器系统,适合进行实时数据采集和处理。本文利用多片ADSP-21062设计了连续波雷达信号处理机,完成数据的处理和检测,相应的数据送到工控机,在显示器上显示数据处理结果。如果在ADSP-21062和工控机之间没有高速传输数据的接口,就会在数据传送时造成瓶颈堵塞,从而影响信号处理机的处理能力。所以ADSP-21062系统与工控机数据交换能力在该信号处理系统中很重要。
数据交换量及选定的方案
信号处理系统要求在每两个采样周期内,ADSP-21062向工控机传输一次数据。每次传送的数据约为1500个16bit字,信号处理系统的A/D采样频率为1KHz。因此信号处理系统的数据传输率约为1.5Mb/s。
工控机读取数据的速率也非常重要,必须高于信号处理系统的传输率,否则也会影响整个系统的数据处理能力。工控机采用的是研祥的EC3-1541,带有串口和并口,以及PC104总线供扩展。串口和并口的数据传输率太低难以满足系统的要求。工控机通过PC104总线访问SRAM时,数据吞吐率约为2.5Mb/s,满足系统要求。所以系统设计时采用了基于PC104总线的数据传输方式。
信号处理机和工控机通过PC104总线的数据传输方法有多种。例如,可以采用DMA方法,但是同时只能有一个系统访问存储器;还可利用并口锁存方法传输数据。但是这两种方法都不能获得高数据吞吐率。为了解决这个问题,可采用双口SRAM实现ADSP-21062向工控机进行高速数据传输。
系统设计时采用的双口SRAM可以是16bit或8bit。在本系统采用了8K×16bit的双口SRAM—IDT7025。系统以16bit的数据进行传输,相比8bit的方式而言,有更高的数据吞吐率。
双口SRAM的工作原理
双口SRAM的存储器阵列,有左右两套地址和数据总线。这样,位于两个端口的左右系统可以共享一个存储单元。当两个端口对双口SRAM进行读写时,存在下列可能情况:
a:不同时对相同地址单元读/写操作;
b:同时对相同地址单元读数据;
c:同时对相同地址单元写入数据。
IDT7025内部有8个独立于双端口存储单元的锁存逻辑单元,作为令牌使用,可将空间划分成1~8个区段。使用这些单元产生一个使用标志,向另一个端口表明正在使用共享的资源。左右端口在使用存取的存储单元前必须先申请令牌,获得后才可以访问相应的段。相同的逻辑锁存单元只能被一个端口使用,直到它使用完释放为止。这些锁存单元可以作为工控机的I/O口或存储单元,来实现令牌传送。
ADSP-21062系统与工控机数据交换电路
用双口SRAM的“/BUSY”信号,可以保证两个左右端口可靠的完成数据的交换。但是两个端口对相同的地址单元操作时,一个端口要插入等待周期,对于本系统而言,要求很高的数据吞吐率,插入等待周期降低了系统的吞吐率。根据令牌传送原理,可在ADSP-21062系统和工控机之间实现较快数据传送。数据的吞吐率速率一定程度上和使用双口SRAM的Semphore数目有关,数目多就能使左右两个端口同时申请相同段的概率降低,就避免了一方长时间等待令牌。但是左右双方同时想使用相同段的机会还是会出现,一方处于等待,这也会导致系统吞吐率下降。
若使左右两个端口永远不对相同的存储单元进行访问,就能提高系统的吞吐率。不能同时对相同的地址单元进行访问,只要左右两套地址的总线上的地址永不相同就可以了。基于这个思想,让左右两个端口的最高位地址AL12和AR12由DSP控制,并且互为相反。ADSP-21062处理器提供了4个可编程的FLAG3-0引脚,FLAG引脚是双向引脚,它的方向是输出还是输入,可以在ADSP-21062中的寄存器中配置。图1为ADSP-21062系统与工控机数据交换接口电路。FLAG0接双口SRAM的右边端口最高位地址AR12,把FLAG0反向后接AL11。就把双口SRAM分为上下4K×16bit的两个区,工控机和ADSP-21062对双口SRAM进行的地址空间为4K。当FLAG0=1时,ADSP-21062向双口SRAM的高半区写数据,而工控机可以从双口SRAM的低半区读数据;反之,当FLAG0=0时,ADSP-21062向双口SRAM的低半区写数据,而工控机可以从双口SRAM的高半区读数据。可见,工控机和ADSP-21062对双口SRAM的访问永远不会发生冲突。
使用一片CPLD可编程逻辑器件EPM7128S-15实现双口SRAM译码片选信号以及I/O地址选择,地址和数据选通信号。ADSP-21062的引脚FLAG2为输入脚,工控机把FLAG2作为一个I/O口对待。FLAG2占用工控机的一个I/O地址,把工控机A0~A9、/IOW和D0引入CPLD,在CPLD内部进行地址译码和I/O写信号,锁存数据实现向FLAG2脚写数据。
电路设计中应注意的问题及程序流程
图1中,工控机和双口SRAM的地址总线连接要特别注意。工控机和PC机一样,每个地址对应的存储单元只能存储一个字节的数据。若把工控机和双口SRAM的地址总线对应连接,即A11~A0分别和AL11~AL0连接,这会导致双口SRAM的一半空间不能被工控机访问。解决这个问题的方法是:使工控机只访问偶地址,即工控机的A12~A1和双口SRAM的AL11~AL0对应连接。8K字的双口SRAM地址最高位由DSP控制,分成了上下两个区,每区4K字节。DSP和工控机地址总线区分上下两个区,4K字节的双口SRAM映射到工控机系统内存的某一空间,占用8K字的地址空间。工控机对双口SRAM的访问采用16位方式,只对偶地址读写。FLAG2占用一个I/O口地址,它只需一根数据线,故采用8位I/O端口写方式。
ADSP-21062以DMA方式向双口SRAM写数据,DMA完成后,查询输入FLAG2脚,若为真,把FLGA0输出反向,同时通过编程FLAG1启动工控机的中断IRQ5,通知工控机读取数据,否则继续查询直到为真。图2和图3给出了ADSP-21062和工控机数据传输方面的程序流程图。DSP向双口SRAM写完一个区的数据后,要查询FLAG2引脚,看是否数据已被读走。所设计的信号处理系统是由多片DSP组成的并行系统,与工控机联系的DSP是其中的一片,它负责部分数据处理和向双口SRAM传输数据。该片DSP通知工控机读取数据后,等待其它的DSP向它发送数据并把接收到的数据做相应处理写入双口SRAM,根据前面分析工控机读取数据的能力,在这段时间内工控机应该读走了数据。因此,DSP查询FLAG2引脚时间极短。该方法可以实现很高的数据吞吐率。虽然使用双口SRAM本身的Semphore也可实现相应的功能,但是在双口SRAM的两端都要为Semphore分配地址空间,这增加了电路的复杂性。
结语
本文借助双口SRAM实现了ADSP-21062与工控机数据交换电路,满足系统需要。该方法数据传输率高、电路简单、可靠性高。
参考文献
1 Analog Device inc. ADSP-21062 datasheet
2 ADSP SHARC系列DSP应用系统设计. 电子工业出版社,2003.2
3 IDT7025 Data Sheet. IDT
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-29 01:24 , 耗时 0.090995 秒, 17 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表