任何一种自动控制系统都离不开数据采集装置,它的性能直接影响整体系统的工作性能。数据采集装置向着高速、实时方向发展,对数据的传输和控制速度也提出了较高要求。dsp(数字信号处理器)是一种适合于实现各种数字信号处理运算的微处理器,具有哈佛结构、支持流水线处理、快速的指令周期等优点,因而在嵌入式系统中得到广泛的应用。事实上,以dsp为核心来构建数据采集装置也已经成为一种常用的有效方法。
在多任务信号处理系统中,考虑到设计系统的复杂性,经常需要使用双dsp协同工作来构成系统。双dsp系统的优点在于,可以通过计算能力的均匀分布,使系统具有较好的冗余能力、更快的处理速度、模块化的体系结构。正因为双dsp系统的应用越来越广泛,如何解决好双dsp间的数据共享也变得越来越重要。如果需要进行大量数据的高速交换,依靠控制器自带的串口实现数据的串行传输已很难满足需求,必须寻求一种能进行高速数据通信的方法。而采用双端口ram是解决双dsp之间高速数据通信的有效办法,该方法能够方便地构成各种工作方式下的高速数据传送介质,很好地解决因数据传输速度低所引起的瓶颈问题。
随着信息技术的飞速发展,数字信号处理器(dsp)得到了广泛的应用,基于a/d,dsp,d/a的数据采集模式已经被大多数人所接受。在现代生物信号采集方案中,人们不仅要求系统有高速的数据处理能力,而且还要求其有高速的数据处理能力和高精度、多通道的d/a转换能力。
基于 ti 公司的 tms320vc5509 为核心的数据采集系统 ,着重介绍了如何利用 dsp5509 的 dma 控制器 ,实现系统中图像数据的传输功能。
基于 dsp5509 的数据采集系统
系统采用了 dsp + fp ga 的双核结构 ,由 cmos 感光芯片 ov7620 采集图像 , 得到数据源 , fp ga 作为辅助处理器 ,控制部分外围器件并协助采集数据 ,dsp 芯片 tms320vc5509 作为核心芯片 ,主要负责数据处理。系统结构如图 1 所示:
dsp 芯片除了连接电、时钟和j ta g 等其工作所必须电路外 ,还外接了一块 flash 作为程序存储器 ,一块sdram 作为数据存储器。f ifo 作为 cmos 所采集的图像数据的暂存器 ,待 dsp 发出特定信号 ,便可把其内部存储的数据传至 dsp 。
用 dma 控制器实现数据传输的思想
硬件电路接口
dsp 与 f ifo 的接口系统中 ,f ifo 采用的是 al422b ,这是一款由averlogic 公司专门推出的视频帧存储器 ,它的容量大小为 384 k 3 8bit ,其电路连接如图 2 所示。此款 f ifo 的容量比较大 , 可以完整存放由ov7620 所采集的一帧图像。f ifo 的具体工作方式为 ,当系统发出采集信号 ,dsp 的/ awe 和/ ce2管脚都输出低电平 , 通过 fp ga 所实现的或门 , 使得 al422b 的/ w 管脚为低 , 此时 f ifo 可写 , 图像数据由ov7620 进入 f ifo ;当采集完一帧图像后 ,dsp 的/ are 和/ ce2 管脚都输出低电平 ,通过 fp ga 所实现的或门 ,使得 al422b 的/ r 管脚为低 ,此时 f ifo 可读 ,图像数据由 f ifo 进入 dsp 。 31112 dsp 与 sdram 的接口
通过外部存储器接口 ( em if) dsp 可与 sdram 实现无缝连接 , 系统 sdram 采用的是 h yn ix 公司的h y57v641620 ,其存储容量为 4 3 1m ,连接电路如图 3 所示。
dsp 的 ce0 为片选信号 ,b e02b e1 为字节使能信号 ,cl km em 为同步时钟信号 ,行选通信号/ sdras ,列选通信号/ sdcas 和写使能信号/ sdwe 分别于sdram 的/ ras 、/cas 、/we 管脚相连 , dsp 的地址线 a 和数据线 d 直接与 sdram 的相连。
tms320 vc5509 的 dma 控制器的特点
dma 可独立于 cpu 工作; 有 4 个标准端口与内部 daram 、saram 、外部存储器和外设相连;有一个辅助端口用于 hpi 和存储器之间的数据传输; 具有 6个通道;可以设置每个通道的优先级;每个通道的传输可以由选定事件触发; 当操作完成后 ,dma 控制器可向 cpu 发出中断。
dma 传输
tms320vc5509 的存储空间包括统一的数据/ 程序空间和 i/ o 空间 ,数据空间地址用于访问存储器和内存影射寄存器。dsp5509 的内部地址线为 24 位 ,但当访问数据空间时使用 23 位地址 ,并将 23 位地址左移一位 ,最低有效位置 0 ,使得地址总线传输 24 位地址。故 dsp 在数据空间的寻址范围为 8m ,其 m emro y ma p 如图 4所示。
由图 4 可以看到 ,以 ce0 为片选信号的 4m 容量 sdram 占用了 dsp 数寻址空间的 ce02ce1 两个片区 ,以 ce2 为读写控制信号的 f ifo 始终为 ce2 片区的起始地址0x800000 。f ifo 是作为数据源 ,且地址固定不变 ,sdram 是作为数据传输的目的 ,其起始地址为 0x040000 ,且每接收一个数据单元后 ,地址增加 1 。
dma 通道传输的目的端口和源端口由参数寄存器 dmacs2dp 中的 dst ( src) 字段来确定:
当 dst ( src) = xx00 时 ,目的(源) 端口为 saram ;
当 dst ( src) = xx01 时 ,目的(源) 端口为 daram ;
当 dst ( src) = xx10 时 ,目的(源) 端口为 em if ;
当 dst ( src) = xx11 时 ,目的(源) 端口为 perip heral 。
dma 通道在数据传输过程中的地址修改方式由 dmaccr
寄存器中的 dst ( src) amode 字段来确定:
当dst ( src) amode = 00 时 ,目的(源) 地址为固定地址 ,用于单元传输;
当dst ( src) amode = 01 时 ,目的(源) 地址再每个单元传输完后自动增加 ,根据数据的位数是 8 位、16 位还是 32 位 ,地址分别增加 1 、2 或 4 。
当dst ( src) amod e = 10 时 ,目的(源) 地址再每个单元传输完后自动增加一个索引值 ,索引值由单元索引寄存器 dmacei/ dmacsei 确定。
当dst ( src) amod e = 11 时 ,目的(源) 地址再每个单元传输完后按单元索引和帧索引自动增加 ,索引值由单元索引寄存器 dmacei/ dmacsei 和帧索引寄存器 dmacf i/ dmacsf i 确定 ,又称为双索引。
4 程序加载
调用 dma 库函数首先要在头文件中包含 csl - dma. h 文件 ,文件中定义了一名为 dma - config 的结构体如:
typedef st ruct {
uint16 dmacsdp ; dma 通道控制寄存器
uint16 dmaccr ; dma 通道中断寄存器
uint16 dmacicr ; dma 通道状态寄存器
dma - adr pt r dmacssal ; dma 通道源起始地址(低字段)
uint16 dmacssau ; dma 通道源起始地址(高字段)
dma - adr pt r dmacdsal ; dma 通道目的地址(低字段)
uint16 dmacdsau ; dma 通道目的地址(高字段)
uint16 dmacen ; dma 通道数据单元数量寄存器
uint16 dmacf n ; dma 通道帧数寄存器
# if dma dst and src index su ppor t
- - - - - -
对于 5509a ,5510 p g2
uint16 dmacsfi ;
uint16 dmacsei ;
uint16 dmacdfi ;
uint16 dmacdei ;
# else 对于 5509 ,5510 p g1
uint16 dmacfi ; dma 通道帧索引寄存器
uint16 dmacei ; dma 通道单元索引寄存器
# endif
} dma - config ;
在定义了结构体 dma - config 后 ,便可以在主程序中声明所需的配置:
dma - config myconfig = {
。。。。。。
}
声明配置结构后 ,需调用 dma - open 函数初始化 dma 句柄:
dma - handle myhdma ;
然后打开 dma 通道 0 :
myhdma = dma - open (dma - cha0 , 0) ;
调用 dma - config 函数对 dma 进行配置:
myconfig. dmacssal =
(dma - adr pt r) ( ( ( uint32) ( myconfig. dmacssal) 《 《 1)
&0xffff) ;
myconfig. dmacdsal =
(dma - adr pt r) ( ( ( uint32) ( myconfig. dmacdsal) 《 《 1)
0xffff) ;
配置通道:
dma - config ( myhdma , &myconfig) ;
调用 dma - start 函数开始 dma 传送:
dma - start ( myhdma) ;
等待 dma 状态寄存器的帧状态位指示传输结束:
while ( ! dma - f geth ( myhdma ,dmacsr ,fram e) ) {
}
关闭句柄:
dma - close ( myhdma) ;
着重介绍了如何利用 dsp 的 dma 控制器在系统中从 f ifo 向 sdram 传输数据 ,经实践检验 ,此方法结构简单、可靠性高 ,并实现了 dsp 对并行数据的高速采集 ,不仅在系统中得到了很好的应用 ,在其它需要实时数据采集系统中也有很广泛的应用前景。
华成工控公布了2020年年度业绩,驱控一体进入回报期
别被电压基准长期漂移和迟滞所蒙蔽
在法国5G电信网络的推出中,不会完全禁止使用华为提供的设备
iCooling,数据中心AI系统级节能专家
为什么说EDA工具是可以比肩光刻机的重要设备?
DSP数据采集系统在DMA控制器中的应用
识别0.04℃温差+6秒开机!艾睿C200+红外热成像仪重磅上市
骁龙660和821哪个省电_骁龙660和821对比
SIP封装技术,我国发展迫切需要
普渡大学的研究人员发现蓝光可以削弱一种特别令人讨厌的“超级细菌”
量化对冲跨平台搬砖系统开发_自动交易软件开发
高频应急日光灯,High Frequency Emergency Light
电连接器选型影响因素
如何制作一个简易的水开报警器?
显示驱动IC:需求增长但忧虑挥之不去
怎样通过USB将数据从Arduino发送到Python
盘点引领全球人工智能革命的公司
台积电看好2019年首季营运 预估首季营收73亿美元到74亿美元
华微电子持续加大研发力度
智能硬件离不开稳健、实时的云服务