DSP与数据转换器协同工作所必须考虑的10大因素_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、dsp与数据转换器协同工作所必须考虑的10大因素假设您接到一项工作任务,设计一套由 与与等模拟器件组成的信号处理系统。假如您考虑到几个重要因素,工作就会十分容易。下面就来谈谈设计工作中应当考虑的这几个因素。具体了解应用类型第一步需要了解应用类型。对于控制型应用,既需要应对突发的大量数据处理情形,也要考虑间歇的闲置状态;而对于音频应用,则需要处理延续数据流的能力。了解应用的详细需求将有助于挑选适当的接口和正确的数据读取办法。评估系统速率其次步需要了解数据采样的速率。举例来说,音频系统可能是一部 cd 播放机,采样率为 96 khz,也可能是电话语音系统,采样率仅为 8 khz。固然,也可能是其他

2、系统,如 adsl 质量测量应用,采样速率高达 10 msps,或者是称重应用,每秒只要 16 次采样就足够了,但要求具备较高的辨别率(如 24 位)。了解此方面信息,将有助于开展下一步工作,即挑选正确的 dsp 接口。挑选正确的 dsp 接口了解了应用及速率要求后,就对采纳哪种 dsp 接口有了一定的熟悉。大多数音频设备均用法特定类型的串行接口,不过高速应用则要求并行接口。当采样速率为 10 msps、辨别率为 12 位时,假如采纳串行接口,其端口的速率要达到 120 mhz 才干从转换器向 dsp 发送数据。这一要求大大超过了大多数50 mhz 串行端口的处理能力。若用法并行接口,则上信号

3、交换的频率为 10 mhz,速率显著降低,因此处理起来十分容易。在挑选接口时,还要考虑的另一问题就是,并行总线能否满足所需的数据速率要求,或者说并行总线芯片在满足程序与系数要求后是否已经达到了满负荷。假如是的话,不妨考虑在 dsp 与转换器之间插入 fifo。确定握手模式一旦挑选了 dsp 接口,下一步就要考虑转换器与 dsp 之间的握手模式 (handshake mode)。大多数转换器在发出新的数据字之前都会给出某种类型的转换结束 (eoc) 信号。处理器用法上述信号的方式有两种:一是轮询 (poll);二是用其作为中断。用法 eoc 信号作为中断具有一定优势,由于 cpu 不会被轮询标志

4、占用,因此在获得数据前不会打断 cpu 的正常工作。不过,假如转换器等待处理特定的协议来读取数据,比如转换器发出转换结束信号后又需要读取指令来检索数据,每个读取指令都会触发新的中断,那么就会造成过多的开销,得不偿失。在这种状况下,轮询的办法就具有显然的优势了。假如中断时延十分重要的话,那么用法轮询方式就更具优势。轮询可确保信号响应速度更快,这比进入中断服务例程要快得多。假如数据检索有短临时隙 (narrow timeslot),那么采纳轮询方式也是有利的。确定传输模式下一步就是实际收集数据的工作了。收集数据有两种办法,各有千秋。第一种办法是采纳 dsp 的 dma(挺直存储器存取)控制器,可使

5、传输与转换器的转换结束标志同步,并使 cpu 不用担当传输工作,由于数据阵列的填充是在后台完成的,传输完成后再通知 cpu。不过,这种办法惟独在举行挺直传输的状况下才有效。假如数据转换器在检索数据时需要某些复杂的机制,那么 dma 就不太有效了。在这种状况下,应让 cpu 参加传输工作。尽管听从特别的协议相当容易,但必需用法大量的 cpu资源来收集数据。假如中断率十分高,那么 cpu 可能很难有时光再去执行数据收集之后的算法了。是否采纳数据猝发假设数据转换器衔接至 dsp 的并行总线,该并行总线在存储器存取(读取正在执行的数据)和 i/o 存取(读取采样)之间需要几个周期的转换,而且数据转换速

6、率十分高,因此,转换经常是必须的,几乎每次采样读取都要举行转换。假如一步就能读取多个数据字,且不用每次都举行数据总线交换,绝对是十分有价值的。在这种状况下,不妨考虑在数据转换器与 dsp 之间采纳 fifo。一旦 fifo 达到一定的水平即中断 dsp,达到一定数量的数据字一步完成传输,这就大大降低了总线转换的开销。针对变量挑选正确的数据类型数据转换器针对所用的数据采纳不同的格式。有的用法标准二进制(即无符号二进制)数据类型,有的则采纳带符号的二进制数据类型,这就是问题的复杂所在。假如有一个 12 位数据转换器,那么在带符号二进制数据状况下,如何用法将是一个问题。符号位占领最重要的位置,即第“

7、11”位(这里的起始位是第“0”位)。假如将此数据字给予“c”变量,宽度为“16”位,那么假定“c”符号位为第“15”位。假如从转换器读取的数字为负,那么 dsp 就不能识别其为负值,由于符号位的位置错误。如何解决这一问题呢?第一种办法是在读取数据时举行数据位移。不过,这惟独在 cpu 读取数据时才有可能,由于 dma 控制器不行能在传输时举行数据位移。另一种办法是在数据块彻低传输后在环路中将数据位移至正确的位置。不过这必需用法 cpu,并要求额外的 。假如转变衔接后转换器的第“11”位刚好衔接至 dsp 数据总线的第“15”位,那么符号位从首位算起刚好位于正确的位置,这就能实现基于dma 的

8、传输,而且也不用再举行数据位移。确保处理的是正确数据现在,数据已经进入系统,数据字存储在阵列中,数据大小也合适,于是开头处理数据,但没有获得预期的结果,这时需要思量到底出了什么问题。首先应当检查 dsp 的高速缓存,dma 传输数据进入存储器时是否启用高速缓存,在这种状况下,高速缓存很可能保留拷贝的旧数据,并在算法工作中用法它们。假如发生了此类问题,就必须注重高速缓存相关性与转储清除问题,或者是存储新数据的高速缓存区失效。这样就能确保 cpu 处理的数据是传输完成后的最新数据。假如用 c 语言编程应分配易失关键字在调试系统时,采纳变量查询外设的状态后,发觉 cpu 所用变量值是错误的,这时就要

9、思量到底哪里出了问题。先看看下面这个结构:unsigned int *pcontrol = (unsigned int *)0x00coffee; file:/错误while (*pcontrol = 0); file:/等待一个外部大事这里的 *pcontrol 指向一个外设。通过 while 循环,期望 eoc 能从“0”转换为“1”。但在大多数状况下,唯恐得向来等下去,由于编译器认为它已经彻低控制了变量及与其相关的存储器,只加载 *pcontrol 指向的存储器位置的内容一次,就会对其举行循环测试。但问题在于,因为不会重新读取存储器内容,也就不能结束循环。解决这一问题的办法就是将 *pcontrol 的声明作一下修改,通知编译器其指向的存储器位置可由外部大事修改,而每次用法该变量时都必需重新载入,如下所示:volatile unsigned int *pcontrol = (unsigned int *)0x00co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论