8

关于投票
DSP与数据转换器协同工作所必须考虑的10大因素

假设您接到一项工作任务,设计一套由 DSP 与DAC与ADC等模拟器件组成的信号处理系统。如果您考虑到几个重要因素,工作就会非常简单。下面就来谈谈设计工作中应该考虑的这几个因素。

详细了解应用类型
第一步需要了解应用类型。对于控制型应用,既需要应对突发的大量数据处理情形,也要考虑间歇的闲置状态;而对于音频应用,则需要处理连续数据流的能力。了解应用的具体需求将有助于选择适当的接口和正确的数据读取方法。

评估系统速率
第二步需要了解数据采样的速率。举例来说,音频系统可能是一部 CD 播放机,采样率为 96 kHz,也可能是电话语音系统,采样率仅为 8 kHz。当然,也可能是其他系统,如 ADSL 质量测量应用,采样速率高达 10 MSPS,或者是称重应用,每秒只要 16 次采样就足够了,但要求具备较高的分辨率(如 24 位)。了解此方面信息,将有助于开展下一步工作,即选择正确的 DSP 接口。

选择正确的 DSP 接口
了解了应用及速率要求后,就对采用哪种 DSP 接口有了一定的认识。大多数音频设备均使用特定类型的串行接口,不过高速应用则要求并行接口。当采样速率为 10 MSPS、分辨率为 12 位时,如果采用串行接口,其端口的速率要达到 120 MHz 才能从转换器向 DSP 发送数据。这一要求大大超过了大多数50 MHz 串行端口的处理能力。若使用并行接口,则总线上信号交换的频率为 10 MHz,速率显著降低,因此处理起来非常简单。
在选择接口时,还要考虑的另一问题就是,并行总线能否满足所需的数据速率要求,或者说并行总线芯片在满足程序与系数要求后是否已经达到了满负荷。如果是的话,不妨考虑在 DSP 与转换器之间插入 FIFO。

确定握手模式
一旦选择了 DSP 接口,下一步就要考虑转换器与 DSP 之间的握手模式 (handshake mode)。大多数转换器在发出新的数据字之前都会给出某种类型的转换结束 (EOC) 信号。处理器使用上述信号的方式有两种:一是轮询 (poll);二是用其作为中断。
使用 EOC 信号作为中断具有一定优势,因为 CPU 不会被轮询标记占用,因此在获得数据前不会打断 CPU 的正常工作。不过,如果转换器等待处理特定的协议来读取数据,比如转换器发出转换结束信号后又需要读取命令来检索数据,每个读取命令都会触发新的中断,那么就会造成过多的开销,得不偿失。在这种情况下,轮询的方法就具有明显的优势了。
如果中断时延非常重要的话,那么使用轮询方式就更具优势。轮询可确保信号响应速度更快,这比进入中断服务例程要快得多。如果数据检索有短暂时隙 (narrow timeslot),那么采用轮询方式也是有利的。

确定传输模式
下一步就是实际收集数据的工作了。收集数据有两种方法,各有千秋。第一种方法是采用 DSP 的 DMA(直接存储器存取)控制器,可使传输与转换器的转换结束标记同步,并使 CPU 不用承担传输工作,因为数据阵列的填充是在后台完成的,传输完成后再通知 CPU。不过,这种方法只有在进行直接传输的情况下才有效。如果数据转换器在检索数据时需要某些复杂的机制,那么 DMA 就不太有效了。
在这种情况下,应让 CPU 参与传输工作。尽管服从特殊的协议相当简单,但必须使用大量的 CPU资源来收集数据。如果中断率非常高,那么 CPU 可能很难有时间再去执行数据收集之后的算法了。

是否采用数据猝发
假设数据转换器连接至 DSP 的并行总线,该并行总线在存储器存取(读取正在执行的数据)和 I/O 存取(读取采样)之间需要几个周期的转换,而且数据转换速率非常高,因此,转换常常是必需的,几乎每次采样读取都要进行转换。
如果一步就能读取多个数据字,且不用每次都进行数据总线交换,肯定是非常有价值的。在这种情况下,不妨考虑在数据转换器与 DSP 之间采用 FIFO。一旦 FIFO 达到一定的水平即中断 DSP,达到一定数量的数据字一步完成传输,这就大大降低了总线转换的开销。

针对变量选择正确的
数据类型
数据转换器针对所用的数据采用不同的格式。有的使用标准二进制(即无符号二进制)数据类型,有的则采用带符号的二进制数据类型,这就是问题的复杂所在。如果有一个 12 位数据转换器,那么在带符号二进制数据情况下,如何使用将是一个问题。符号位占据最重要的位置,即第“11”位(这里的起始位是第“0”位)。如果将此数据字赋予“C”变量,宽度为“16”位,那么假定“C”符号位为第“15”位。如果从转换器读取的数字为负,那么 DSP 就不能识别其为负值,因为符号位的位置错误。如何解决这一问题呢?第一种方法是在读取数据时进行数据位移。不过,这只有在 CPU 读取数据时才有可能,因为 DMA 控制器不可能在传输时进行数据位移。另一种方法是在数据块完全传输后在环路中将数据位移至正确的位置。不过这必须使用 CPU,并要求额外的 MIPS。
如果改变连接后转换器的第“11”位刚好连接至 DSP 数据总线的第“15”位,那么符号位从首位算起刚好位于正确的位置,这就能实现基于DMA 的传输,而且也不用再进行数据位移。

确保处理的是正确数据
现在,数据已经进入系统,数据字存储在阵列中,数据大小也合适,于是开始处理数据,但没有获得预期的结果,这时需要思考到底出了什么问题。首先应该检查 DSP 的高速缓存,DMA 传输数据进入存储器时是否启用高速缓存,在这种情况下,高速缓存很可能保留拷贝的旧数据,并在算法工作中使用它们。如果发生了此类问题,就必需注意高速缓存相关性与转储清除问题,或者是存储新数据的高速缓存区失效。这样就能确保 CPU 处理的数据是传输完成后的最新数据。

如果用 C 语言编程
应分配易失关键字
在调试嵌入式系统时,采用变量查询外设的状态后,发现 CPU 所用变量值是错误的,这时就要思考到底哪里出了问题。先看看下面这个结构:
unsigned int *pControl = (unsigned int *)0x00COFFEE; file://错
while (*pControl == 0); file://等待一个外部事件
这里的 *pControl 指向一个外设。通过 while 循环,期望 EOC 能从“0”转换为“1”。但在大多数情况下,恐怕得一直等下去,因为编译器认为它已经完全控制了变量及与其相关的存储器,只加载 *pControl 指向的存储器位置的内容一次,就会对其进行循环测试。但问题在于,由于不会重新读取存储器内容,也就不能结束循环。
解决这一问题的方法就是将 *pControl 的声明作一下修改,通知编译器其指向的存储器位置可由外部事件修改,而每次使用该变量时都必须重新载入,如下所示:
volatile unsigned int *pControl = (unsigned int *)0x00COFFEE; file://正
while (*pControl == 0); file://等待一个外部事件

确保采样等距
如果要在频域中处理采样数据,那么还要提到一点:不是所有转换器都有启动新转换的自身时基。在这种情况下,应采用外部时基或 DSP 定时针 (timer pin) 。

系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 转贴
发表评论 阅读全文(1259) | 回复(1)

17

关于投票
《电子科技大学DSP技术》视频下载.
不错的DSP视频教材,与大家分享,用eMule 下载。应该没过期。
下载地址:ed2k://|file|DSP%E6%8A%80%E6%9C%AF.rar|3120870672|130d6f1a7caa734e879028217e3c37b6|h=B4WKSHXGTJ764MC5BNDCJYD2KB2JTLL4|/
中文名称:电子科技大学DSP技术
地区:大陆
语言:普通话
学时:28学时
大学:电子科技大学
教学内容:彭这套课程软件是电子科技大学的经典教程讲得十分详细,无论是用来期末备考还是用来考研或者自学都足够了,主讲人:彭启琮教授

 
系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 转贴
发表评论 阅读全文(1646) | 回复(6)

10

关于投票
采用DSP控制器的4个误解

马达控制设计人员近来在家用电器产品与伺服驱动器等各种应用中的发展都遇到了障碍,必须在控制器性能或昂贵的价格之间进行选择。大多数马达控制应用本身成本较低。获得市场接受的必需条件之一就是产品价格要有吸引力,这就意味着必须选择能够实现工作目的的、从事其他作用有限的最廉价控制器。基于 DSP 的智能控制器正在改变这种情况,僵局被打破,基于 DSP 的新型控制器在相当适中的价格上实现了显著的性能提高。

如电压赫兹常量以及六步通信 (six step commutation) 等简单的控制算法难以实现高效率与优化机身大小所需的性能。基于 DSP 的智能控制器在两个方面改变了上述情况。

首先,其添加了计数能力。这使得设计人员能够实施性能更高的控制算法,如磁场定向控制。其次,计算强度更高的算法还使设计人员能够使用更高效的马达。举例来说,我们可用永磁马达替代 AC 感应马达,这就进一步提高了效率与动态性能。

当然,性能也有助于设计人员去除机械组件,采用适当的马达大小,并在控制器上集成更多功能,从而优化其系统成本。能够集成诸如速度、定位、转矩断面生成 (torque profile generation)、功率因素校正等更多功能的能力使设计人员能够以更低的成本做更多的事情。

计算强度较大的矢量控制等先进技术的所谓“问题”在于乘法与累加 (MAC) 运算占据了算法的大部分。标准的 8、16 或 32 位微控制器不能处理上述运算,因为缺少适当的总线架构来实现数学效率。最终,这就意味着我们必须将设计从根本上进行转变,不是转变到 DSP,而是发展到基于 DSP 的 32 位控制器。

人们对采用 DSP 控制器有许多常见的误解,这丝毫不足为奇,例如:

  • DSP 控制器不具备马达控制外设;
  • 代码密度问题使基于 DSP 的 32 位系统难以让人接受;
  • DSP可能会较好地适合控制算法,但却不能很好地处理其他控制任务;
  • DSP 软件很困难,设计人员必须忍受无实时操作系统与良好的工具支持之苦。

我们不妨来讨论一下上述误解。

外设集成

在提到重载 (heavy-duty)数字信号处理时,马达控制工程师头脑里最先出现的想法可能就是善于进行数字计算工作的 DSP 控制器了--但是如何处理通用集成的外设功能呢?

今天的马达控制 DSP 就马达控制应用进行了优化,片上集成脉宽调制器 (PWM)、编码器接口、通信端口以及模数转换器 (ADC) 等功能。其还包括了大量的快闪存储器和 RAM,这就消除了对外部存储器设备的需求。

代码密度

事实上,传统的 32 位微控制器架构在代码密度上有内在的弱点,这对存储器容量有限的低成本应用而言是关键性问题。

新型 32 位 DSP 架构采用经过认真选择的 16 位与 32 位指令混合,实现了最佳的代码密度。仅在需要时才使用 32 位指令。

以控制为导向的架构

最佳的 32 位 DSP 控制器带有原子读取-修改-写入指令等功能,可简化编程,其中断等待时间也较短,不足 100 纳秒,从而实现了响应性超强的 CPU。

软件支持

DSP 汇编程序已发展到了几乎很少要求编写汇编代码的高级水平。此外,算法开发也变得简单得多。例如,德州仪器 (TI) 提供了庞大的常用算法库,可立即运行在其处理器上,还有 BIOS?,一种专为 DSP 优化的实时操作系统。

如果需要定制算法,我们还将提供帮助。为了创建自己的算法,工程师可利用IQMath? 工具,该工具能够简化定点计算的数学函数开发。

TI 正在实践着摩尔定律,开展创新性工作,使马达控制设计人员的任务变得更为轻松简单。

系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 转贴
发表评论 阅读全文(604) | 回复(0)

11

关于投票
TMS320F240EVM技术资料
pdf
系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 整理
发表评论 阅读全文(549) | 回复(2)

11

关于投票
上传一些C2000的原理图

TMS320F24X DSK原理图  pdf

TMS320F240 DSK板原理图  pdf

TMS320LF2407 DSK原理图  pdf

以后接着发!

系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 整理
发表评论 阅读全文(586) | 回复(1)

25

关于投票
DSP外部电路设计的经典著作
rarrar
系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 整理
发表评论 阅读全文(1517) | 回复(2)

17

关于投票
TMS320F2812原理图
pdf
系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 整理
发表评论 阅读全文(864) | 回复(1)

20

关于投票
AnalogDevice的DSP评诂板线路与电路
rarrar
系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 整理
发表评论 阅读全文(687) | 回复(0)

29

关于投票
收集的精华问答帖,全是DSP工程师遇到的问题

如何选择外部时钟?

DSP的内部指令周期较高,外部晶振的主频不够,因此DSP大多数片内均有PLL。但每个系列不尽相同。
1)TMS320C2000系列:
TMS320C20x:PLL可以÷2,×1,×2和×4,因此外部时钟可以为5MHz-40MHz。
TMS320F240:PLL可以÷2,×1,×1.5,×2,×2.5,×3,×4,×4.5,×5和×9,因此外部时钟可以为2.22MHz-40MHz。
TMS320F241/C242/F243:PLL可以×4,因此外部时钟为5MHz。 TMS320LF24xx:PLL可以由RC调节,因此外部时钟为4MHz-20MHz。
TMS320LF24xxA:PLL可以由RC调节,因此外部时钟为4MHz-20MHz。
2)TMS320C3x系列:
TMS320C3x:没有PLL,因此外部主频为工作频率的2倍。
TMS320VC33:PLL可以÷2,×1,×5,因此外部主频可以为12MHz-100MHz。
3)TMS320C5000系列:
TMS320VC54xx:PLL可以÷4,÷2,×1-32,因此外部主频可以为0.625MHz-50MHz。
TMS320VC55xx:PLL可以÷4,÷2,×1-32,因此外部主频可以为6.25MHz-300MHz。
4)TMS320C6000系列:
TMS320C62xx:PLL可以×1,×4,×6,×7,×8,×9,×10和×11,因此外部主频可以为11.8MHz-300MHz。
TMS320C67xx:PLL可以×1和×4,因此外部主频可以为12.5MHz-230MHz。
TMS320C64xx:PLL可以×1,×6和×12,因此外部主频可以为30MHz-720MHz

 

软件等待的如何使用?

DSP的指令周期较快,访问慢速存储器或外设时需加入等待。等待分硬件等待和软件等待,每一个系列的等待不完全相同。
1)对于C2000系列: 硬件等待信号为READY,高电平时不等待。 软件等待由WSGR寄存器决定,可以加入最多7个等待。其中程序存储器和数据存储器及I/O可以分别设置。
2)对于C3x系列: 硬件等待信号为/RDY,低电平是不等待。 软件等待由总线控制寄存器中的SWW和WTCNY决定,可以加入最多7个等待,但等待是不分段的,除了片内之外全空间有效。
3)对于C5000系列: 硬件等待信号为READY,高电平时不等待。 软件等待由SWWCR和SWWSR寄存器决定,可以加入最多14个等待。其中程序存储器、控制程序存储器和数据存储器及I/O可以分别设置。
4)对于C6000系列(只限于非同步存储器或外设): 硬件等待信号为ARDY,高电平时不等待。 软件等待由外部存储器接口控制寄存器决定,总线访问外部存储器或设备的时序可以设置,可以方便的同异步的存储器或外设接口。

 

仿真工作正常对于DSP的基本要求

1)DSP电源和地连接正确。 2)DSP时钟正确。 3)DSP的主要控制信号,如RS和HOLD信号接高电平。 4)C2000的watchdog关掉。 5)不可屏蔽中断NMI上拉高电平。

CCS或Emurst运行时提示“Can't Initialize Target DSP”

1)仿真器连接是否正常? 2)仿真器的I/O设置是否正确? 3)XDSPP仿真器的电源是否正确? 4)目标系统是否正确? 5)仿真器是否正常?6)DSP工作的基本条件是否具备。
建议使用目标板测试。

为什么CCS需要安装Driver?

CCS是开放的软件平台,它可以支持不同的硬件接口,因此不同的硬件接口必须通过标准的Driver同CCS连接。

Driver安装的常见问题?

请认真阅读“安装手册”和Driver盘中的Readme。 1)对于SEED-XDS,安装Readme中的步骤,将I/O口设为240/280/320/340。 2)对于SEED-XDSPP,安装Readme中的步骤,将I/O口设为378或278。3)对于SEED-XDSUSB,必须连接目标板,安装Readme中的步骤,将I/O口设为A,USB连接后,主机将自动激活相应的Driver。 4)对于SEED-XDSPCI,安装Readme中的步骤,将I/O口设为240,PCI接口板插入主机后,主机将自动激活相应的Driver。 5)对于Simulator,需要选择不同的CFG文件,以模拟不同的DSP。 6)对于C5402 DSK,将I/O口设为请认真阅读“安装手册”和Driver盘中的Readme。 1)对于SEED-XDS,安装Readme中的步骤,将I/O口设为240/280/320/340。 2)对于SEED-XDSPP,安装Readme中的步骤,将I/O口设为378或278。注意主机BIOS中并口的型式必须同xds510pp.ini中一致。 3)对于SEED-XDSUSB,必须连接目标板,安装Readme中的步骤,将I/O口设为240/280/320/340,USB连接后,主机将自动激活相应的Driver。 4)对于SEED-XDSPCI,安装Readme中的步骤,将I/O口设为240/280/320/340,PCI接口板插入主机后,主机将自动激活相应的Driver。 5)对于Simulator,需要选择不同的CFG文件,以模拟不同的DSP。 6)对于C5402 DSK,将I/O口设为378或278。 7)对于C6211/6711 DSK,将I/O口设为378或278。 8)对于C6201/C6701 EVM,将I/O口设为0。

 

Link的cmd文件的作用是什么?

Link的cmd文件用于DSP代码的定位。由于DSP的编译器的编译结果是未定位的,DSP没有操作系统来定位执行代码,每个客户设计的DSP系统的配置也不尽相同,因此需要用户自己定义代码的安装位置。以C5000为例,基本格式为:
-o sample.out
-m sample.map
-stack 100
sample.obj meminit.obj
-l rts.lib
MEMORY {
PAGE 0: VECT: origin = 0xff80, length 0x80
PAGE 0: PROG: origin = 0x2000, length 0x400
PAGE 1: DATA: origin = 0x800, length 0x400
}
SECTIONS {
.vectors : {} >PROG PAGE 0
.text : {} >PROG PAGE 0
.data : {} >PROG PAGE 0
.cinit : {} >PROG PAGE 0
.bss : {} >DATA PAGE 1
}

如何将OUT文件转换为16进制的文件格式?

DSP的开发软件集成了一个程序,可以从执行文件OUT转换到编程器可以接受的格式,使得编程器可以用次文件烧写EPROM或Flash。对于C2000的程序为DSPHEX;对于C3x程序为HEX30;对于C54x程序为HEX500;对于C55x程序为HEX55;对于C6x程序为Hex6x。以C32为例,基本格式为:
sample.out
-x
-memwidth 8
-bootorg 900000h
-iostrb 0h
-strb0 03f0000h
-strb1 01f0000h
-o sample.hex
ROMS {
EPROM: org = 0x900000,len=0x02000,romwidth=8
}
SECTIONS {
.text: paddr="boot"
.data: paddr="boot"
}

系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 无分类
发表评论 阅读全文(6152) | 回复(9)

18

关于投票
DSP的USB接口芯片固件程序开发
PDF
系统分类: DSP
用户分类: DSP
标签: 无标签
来源: 整理
发表评论 阅读全文(820) | 回复(2)
23下一页总共 , 当前 /