The Way of the great learning involves manifesting virtue, renovating the people, and abiding by the highest good.

2009年1月3日星期六

DSP微处理器

[编辑本段]数字信号处理  DSP数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。德州仪器、Freescale等半导体厂商在这一领域拥有很强的实力。
[编辑本段]DSP微处理器  DSP(digital signal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。
  DSP芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器器,其主要应用是实时快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片一般具有如下主要特点:
  (1)在一个指令周期内可完成一次乘法和一次加法;
  (2)程序和数据空间分开,可以同时访问指令和数据;
  (3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;
  (4)具有低开销或无开销循环及跳转的硬件支持;
  (5)快速的中断处理和硬件I/O支持;
  (6)具有在单周期内操作的多个硬件地址产生器;
  (7)可以并行执行多个操作;
  (8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。
  当然,与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。
[编辑本段]轻松体验DSP  第一种商品化的 IC 数字信号处理器是英特尔的 2920,早在 1979 年就在取代全双工、1200bps 数字硬调制解调器中的模拟滤波器组了。同时,迅速增多的微处理器和外设提高了处理以数字表示信号的可行性。那时几乎任何商业化信号处理任务都需要模拟计算,伴有复杂的反馈回路和补偿电路来维持稳定性。各种依赖位片处理器小型电脑和数据采集硬件的技术都极其昂贵,并且通常只适合于研究人员。能够经济地把信号数字化,并在数字领域进行数学计算,从而减少漂移和其它用模拟技术处理也很昂贵的不精确条件,这种逻辑很有吸引力,它直接导致今天市场上出现多种系列的 DSP。
  目前,某种形式的 DSP 安装在从自动应答电话机到洗衣机等各种产品的中心部位,很容易使人忘记这场变革就发生在最近。直到最近,通用微控制器和 DSP 芯片之间的巨大差别还使许多嵌入式系统工程师觉得:数字信号处理是门困难的学科。这种感觉来源于第一代 DSP 的架构和编程要求,这一代 DSP 往往设计用来实现数字滤波器。不过,在卷入 DSP 对比微控制器的争论之前,你也许要问,为什么使用数字滤波器?DSP 还适合于别的什么领域?使用数字滤波的经典理由是,你可以实现线性相位 FIR (有限脉冲响应)滤波器,它保持了音频处理等应用中的信号保真度。当你正在尝试处理传感器信号时,避免由于不相等的组延迟(由非线性相位-频率响应特性引起)导致的信号失真可能也是很关键的。正如任何已经尝试过的人所知道的那样,用模拟技术制造线性相位滤波器几乎是不可能的,相比之下,DSP 和软件滤波器工具箱使这种实现不费吹灰之力。
  假如你使用针对控制系统建模的仿真工具,你一定知道来自 Mathworks 的 Matlab 和 Simulink 等工具也可以建立 DSP 算法的模型,并自动生成代码,你可以把这些代码移植到各种硬件目标。不过,数字信号处理的能力其实起始于滤波器应用。例如,软件工具也可以毫不费力地实现 FFT(快速傅里叶变换)。然后,你可以对连续时间信号的快照做频率分析。假如你有很多传感器输出要处理,以得到关键的实时控制响应,那么 DSP 通常是惟一的答案。
  初学者工具包帮你建立信心
  假如你第一次接触数字信号处理,你很可能想得到更多背景信息。不过,阅读产品的相关资料无法取代亲自尝试它们,而初学者工具包提供了一种获得体验的轻松方式。今天,与微控制器最相像的 DSP 系列就是摩托罗拉的 DSP56F800,它主要针对实时控制应用。例如,F805 核心包括一个 16 比特定点引擎,该引擎运行在双哈佛架构上,以实现对程序和数据存储器的三路并行访问。
  摩托罗拉的片上仿真技术通过一个 JTAG 标准的端口来提供系统内调试能力。该器件是 144 引脚 LQFP 封装。
  开发支持来自 DSP56F805EVM,它包含一个 130mm×165mm 印制电路板、CodeWarrior IDE 和一个 SDK(软件开发工具包),价格为 299 美元。该印制电路板上装有处理器,还有一个 128k×16比特 SRAM(外部代码和数据各为 64k 字)、一个 RS-232 端口,以及一个“并口至 JTAG”接口,便于基于 PC 的调试。一个正交解码器/霍尔效应接口和专用的马达控制逻辑给伺服控制等应用带来了便利。各个跳线器选择不同的运行模式,多个起始码准备信号和 I/O,用于轻松连接。
  CodeWarrior 安装的文档很有用地包括了 56F805 的硬件参考手册和数据表,以及该 IDE 的用法说明和参考手册。要想迅速开始,请查看开发板的在线硬件手册,并确保所有跳线器都处在默认位置。接着,把并口连接到你的 PC,并尝试这些在线手册的“瞄准 DSP56F805”(Targeting DSP56F805) 部分。这部分包括一个简要的指南,它示范如何创建、编译和链接 F805 代码。在默认情况下,CodeWarrior 使用“项目用具” (project stationery) 来构造新的项目。这个方法自动创建和解开各种依赖处理器的功能、库、链接器命令和你的代码之间的依赖性。假如你正用 C 语言编程,用具还可以进行启动文件的创建,以分配和初始化系统内存;你可以选择“空项目”并自己控制这些进程。你可以在 CodeWarrior 的编辑器里无缝地混合和匹配 C 语言代码和汇编代码。
  假如你使用预制用具,那么项目窗口会打开,显示代码、支持和库子目录;把它们展开,就可以访问恰当的资源,然后你可以编辑这些资源。在项目窗口内选择“运行” (run) 图标,默认的设定就会编译、链接并下载模板程序到开发板的外部 SRAM。线程窗口会打开,让你查看栈、变量和源代码,还有执行控制,比如设置/清除断点、运行、终止以及多种单步运行选项。
  检查“视图” (View) 菜单下的可用工具,比如表达式视图、全局变量视图和寄存器视图。这些工具包括原始数据、反汇编、源和混合模式内存表示;你还可以从这儿直接编辑内存单元。不过,你不会找到正式的剖析工具,你只有自己计算时序要求严格的任务。一种替代办法是包含多个调用来启动和停止片上定时器,从而在关键点安插你的代码;除去调用开销,就得到了真实结果。当然,假如你的代码运行没有超出截止期限,并且安插的代码位置适当,那么除去这种开销应该不会对运行造成消极影响。由于片上内存使用和片外内存使用之间可能存在明显的性能差别,因此要确保测试的是真正的目标配置。
  CodeWarrior 只安装了一个 F805 例子,这个例子检测从板上开关到交替闪烁 LED 的中断。你可以使用这个例子作为使用 C 语言编译器 pragma 指令、编写中断服务例程以及保存并调用库函数的指导。不过,假如你想要 CAN(控制器区域网络)例子,那你真不走运——这项功能是额外费用高级包中的一个价格为 3000 美元的选项。其它高级功能包括安全例程,这其中含 RSA (Rivest、Shamir 和 Adleman)、DES (数据加密标准)和 3重 DES 算法,以及远程通信和语音处理函数,比如 G711 语音编码器。
  其它开发工具包括 200 美元的“并口至 JTAG”命令转换器;USB 至 JTAG 转换器目前正在开发中。你还可以指定 1999 美元的 PCI 至 JTAG 仿真器连接和 2999 美元的以太网同等品。另一方面,对于那些好奇心很重、不需要 F805 的 I/O 功能的用户来说,有一个选项也许更好,那就是 65 美元的 DSP56F801 开发工具包。该工具包还包括并列排线(parallel-cable)仿真、SDK以及 CodeWarrior 的一个免费版本,它局限于 16kB 程序内存。无限制的 IDE 价格为 495 美元。
  多媒体照亮实时控制
   模拟器件公司 (Analog Devices) 的 Blackfin 系列主要针对多媒体设备和便携式设备,包括三个代码兼容处理器,它们的不同之处仅在于速度和片上补充内存。
  从内部来看,Blackfin 内核包括一个双 MAC 定点处理引擎,该引擎把结果存储在两个 40 比特累加器里。在使用中,VisualDSP++ IDE 的编译器利用最适合该内核架构的 32 比特“长”的值,在软件中自动合成浮点运算;你可以选择改变这种行为,以符合 ANSII-C 规范。
  ADDS-BF533-EZlite 初学者工具包现已上市,价格为 295 美元,它包括一块 127mm×178 mm印制电路板,板上装有处理器、2MB 闪存和 32MB SDRAM。板上外设包括一个 AD1836 音频编解码器(带有四条输入声道和六条输出声道)、一个 ADV7171 视频编码器和 ADV7183 解码器(各带三个拾音插座、一个 ADM3202 RS-232 线路驱动器/接收器—用于片上 UART,它连接到一个 DB9 连接器、一个扩充接口—它承载并口、串口和 SPI 等各种 I/O、一个 JTAG 在线仿真器头,以及各种 LED 和按钮。该工具包依靠 VisualDSP++ IDE 的一个 20kB的代码有限版本,用于程序开发。调试通信采用板上“USB 至 JTAG”调试接口,该接口允许与主机 PC 之间的非侵入式通信,这是通过该环境的背景遥测通道进行的。
  不要理睬快速开始卡,遵照评估系统手册中的指示,VisualDSP++ IDE 就会顺利地安装好。
  头两个练习介绍了链接器等基本元件如何通过让你建造、运行和修改某个过程(它计算来自定点数组的三个乘积的各个和)来互动。有意思的是,C 源代码窗口中的“混合”控制视图使你能够同时比较例程的 C 语言实现和汇编器实现。某些 IDE 能够把源代码行拖到汇编器窗口中,或反过来,以找到相应的代码段,上述的同时比较功能是这种功能的替代方法。其它编辑器功能允许设置和清除断点、启用行编号,以及设置书签。假如你把第三课中的代码例子装载到前一课,你就能看到该 IDE 数据可视化能力的多个方面,比如正态图、正态图的 FFT 等价图,以及一份 FIR 滤波器响应分析。由于这个例子及目前的其它 Blackfin 例子是针对 535 处理器,因此你需要把目标改到 533。
  由于工具包许可证不允许仿真器会话,因此请你下载整个软件及其评估许可证,连同许可证管理器工具程序。运行该 60MB 的组合,就可以让你的安装升级。90 天后,它会回到最初的限制版。在选择单一仿真器会话选项之后,你现在可以看到线性剖析仿真工具,它专门分析处理器在某应用程序内的何处花了时间。双击某个例程,就会显示底层汇编器以及在该流程内部所花时间的百分比;双击某个程序计数器条目,就会高亮度显示相应的反汇编器输出。
  软件剖析工具一般在函数的开头和结尾插入侵入性的“包装代码”,以获得统计数据。VisualDSP++ 消除了这种开销,因为它用 PC 计数器的一个统计随机样本来记录指令地址,得到执行统计数据,并显示代码瓶颈。ADI还还表示,该仿真器具有几项尖端而独特的功能,比如高速缓存和流水线可视化。他指出,由于这些功能提供非常多的细节,因此它们是“只有仿真器才具有的功能” 。他说,在这个水平上,目前不可能不露痕迹地全速询问处理器,而又不往该部件“增加大量的逻辑和测试引脚” 。
  该环境在安装期间创建的 ADSP-BF533 文件夹包括多个针对 533 的例子,你可以把它们用作进一步开发的模板。对新手的一个主要障碍是 C 语言程序员倾向于隐藏关键组件,比如头文件,并模糊它们的交互;好消息是伴随工具包的这些例子是极其清晰的。你还将看到 VSCE(VisualDSP++ 的组合式软件工程)模块,它们是预先配置的例程,根据模拟器件公司的 VCSE 标准编写。这种做法使你能够把来自模拟器件公司和第三方厂商的符合标准的模块添加到你自己的项目中,不用担心各种冲突,比如内存冲突或 I/O 冲突。
  1GHz 的能力使并行 I/O 更快
  假如你想做实验,那么你可能想知道和一个真正复杂的处理器打交道涉及哪些内容,这样的处理器包括德州仪器公司的 TMS320C6000 系列,它有用地提供了定点微分和浮点微分之间的代码兼容性。一款新型初学者工具包展示了 16 比特定点 6416 的 600MHz 版本,它紧随该厂商的 256 比特甚长指令字型号之后。这种顶级的机器针对 I/O 密集型应用,比如通信基础设施。例如,该芯片把一个 ATM (异步传输模式)接口装入其 532 引脚、0.8mm间距 BGA 封装中,封装大小仅为 23 mm2;其它通信外设包括维特比(Viterbi)和 turbo 解码器协处理器。
  这种初学者工具包由 Spectrum Digital 公司制造,包括一个 115mm×225 mm印制电路板,板上装有 DSP、一个 TLV320AIC23 编解码器、16MB SDRAM、512kB 用户闪存和一个“USB 至 JTAG”仿真端口——所有这些的价格为 395 美元左右。四个 3.5 mm立体声 I/O 端口与编解码器连接;一些简单的用户 I/O 端口连接到四个 LED 和若干钢琴键开关;高密度的扩充连接器提供额外的存储器、外设和 PCI/HPI 连接;两个端口选项提供外部仿真器。尽管硬件很复杂,但用户友好的软件展示了德州仪器公司针对模块化软件开发的 eXpressDSP 理念。理想情况下,eXpressDSP 把应用程序抽象得足够好,非程序员可以通过在执行模板内部组合现成的算法来构造应用程序。实际上,你需要充分的 C 语言编程经验来充分利用可提供给你的功能。
  eXpressDSP 的内核是 DSP/BIOS 内核,这是一种实时调度程序,该程序包括各种模块以处理各项中断、传输数据的管道和周期性事件。事实上,DSP/BIOS 构成了支持 320C 系列的 RTOS 的基础。Code Composer Studio IDE 拥有一个 DSP/BIOS 配置工具,它使你能够在程序编译期间选择包括哪些模块,从而使该固件的内存占位(memory footprint)达到最小。非常关键的是,每个 DSP/BIOS 模块都包括代码安插机制,允许 Code Composer 通过 USB 仿真链接来调试运行中的应用程序。为了使对实时操作的影响最小,当 DSP 芯片处于代码线程执行之间的闲置状态时,安插代码才开始运行。你可以在它以图形格式在线程之间切换时查看执行图,这种格式帮助揭示被超过的截止期限。其它使时序要求严格的任务分析变得容易的工具包括一张 CPU 负载图和一个统计窗口,后者报告某个线程的平均情形和最差情形执行时间。你还可以从某个驻留在 PC 上的文件传送数据,比如来自 DSO 的输出,它代表了你想处理的真正信号。DSP/BIOS 提供了一组定义得非常好的 API,它们适用于整个 320Cxx 系列,这样你可以轻松地在各种平台之间移植代码。通过禁止直接访问外设和坚持可重入的可重定位码,eXpressDSP 算法标准允许你轻松集成来自德州仪器公司和第三方厂商的符合标准的算法。你可以下载免费的 DSP/BIOS 驱动程序开发工具包。
  你还可以免费下载一组共三个参考框架应用程序,作为德州仪器公司大多数初学者工具包的“初学者件”。全面的应用程序说明描述了这些模型的功能,包括其定制示例。RF1 针对的是约 3.5k 字大小的应用程序,它们需要一至三条通道和类似数量的 eXpressDSP 算法。其局限包括不支持动态内存分配、线程预占、阻塞、多速率操作或控制函数。由于这些原因, RF1 最适合较低端的 5xxx 硬件平台。中档的 RF3 一般适合 6xxx 芯片,这些芯片运行一至十条通道和一至十种算法。RF3 约为 11k 字的占位提供了 RF1 中没有的所有工具,但不包括任务阻塞。最后,RF5 版本提供了所有此类工具,并支持 100 多条通道和同样多种算法,代价是 28k 字内存。RF5 增强包括一个用于支持多处理器的单独线程。
  附文:通往 DSP 的最初几步
  假定你想首先从 DSP 开始,那么你将面临几个挑战。首先,如果你避开 C 语言,你将错过大量例子。你可以通过 www.cyberdiem.com/vin/learn.html 等门户网站来免费提高 C 语言方面的技巧,但你一定要弄到几本参考课本。
  其次,假如你想有效利用数字信号处理,你就不能逃避数学。其包括复数理论,以及卷积和离散傅里叶变换等基本知识。
  然后,你将需要选择一种处理器。你必须考虑在定点和浮点算术功能之间进行选择,以及传统的微控制器选择准则。总地说来,定点器件比同等的浮点器件需要更少的硅,并更便宜。假如你正在使用定点器件,并在设计自己的算法,那么你往往必须在可选数字格式表示法之间做选择,这些表示法有时需要仔细的软件设计,以避免舍入和截断误差,这些误差使数据失真。浮点芯片可以简化你的生活,因为它在硬件中实现了一致的数字表示系统,比如 IEEE-754 标准,它定义了 32 比特单精度和 64 比特双精度格式。浮点 DSP 一般采用单精度表示法,这些表示法把 23 比特小数尾数、8 比特指数和一个符号比特放入 32 比特的字中,使指数具有 ±127 的动态范围。
  厂商支持和工具链的提供情况是关键的考虑事项。模拟器件、摩托罗拉和德州仪器提供各种 DSP 初学者工具包,跨越多种应用,从简单的马达控制器到复杂的通信链路。不过,如果你想继续使用常规的微控制器,并且需要硬件乘法功能,请考虑英飞凌 (Infineon) 的新款 XC167CI。这种 16 比特处理器扩展了嵌入式 166 架构的功能,把 32/40 比特 MAC(乘法/累加)单元包括进来,这种单元在 25 ns(40MHz 时钟)内进行单周期乘法;其它增强包括一个柱形移位器。要想获得更强的功能,该公司的 32 比特 TriCore 系列增加了多种功能,比如反向比特寻址,用于恢复FFT算法的输出。
[编辑本段]DSP技术  基于DSP的智能视频监控系统
  传统的视频监视系统是简单的非智能闭路电视(CCTV)系统,其缺点十分明显。这样的系统或者需要安保人员实时监视画面以捕捉关键事件,或者需要在事后对视频记录进行回放并进行人工分析,耗时耗力,成本高而效率低。近几年,DSP在智能视频监控系统方面的应用不断完善,正在逐渐取代传统的模拟非智能系统。
  iSuppli公司2006年的一份分析报告曾指出,IP视频监控系统市场到2010年将增长近十倍。 IP监控的创新技术之一是“智能摄像机”,它拥有强大的数字信号处理器,能探测威胁并触发自动响应。可见,DSP芯片是智能监控的核心。
  提到DSP,多数人都会联想到TI公司。该公司的DSP开发历史悠久,它所占据的DSP市场份额遥遥领先。当然,TI公司也重视DSP在智能视频监控中的应用(见TI 达芬奇技术实现数字化智能视频监控http://www.21ic.com/news/n12583c8.aspx)。
  本文重点介绍ADI公司在智能监控领域的进展情况。本月初,笔者有幸和ADI上海公司的DSP和嵌入式处理器产品技术市场经理张铁虎、EP/DSP高级技术应用工程师魏宏伟两位先生进行了交流。他们介绍了ADI公司DSP智能监控技术、战略特点和计划等,在此向21IC用户做个汇报。
  虽然总体来说ADI公司DSP的名气不如TI的大,但该公司对DSP应用于智能视频监控相当重视。从产品角度来讲,ADI公司主要业务有三:模拟产品、MEMS和DSP。其中DSP应用包括工业测控、移动媒体和汽车电子,而监控则占据ADI工业测控业务的大部分。可见,智能监控对于ADI的DSP业务发展十分重要。
  据张铁虎介绍,ADI的DSP发展历程虽然不如TI的悠久,但拥有自己明显的特点或优势。首先,ADI的DSP架构和TI的不同。TI的DSP实际上是ARM+DSP,所以需要两套开发工具。ADI的DSP是基于1999年与Intel公司合作开发的Micro Signal Architecture(微信号架构),称作convergent processor,在一个核里既有数字信号处理功能,又有MCU功能,所以只需一套开发工具,为用户使用、学习提供了方便。其次,ADI的DSP开发工具是免费的,可在该公司网站上随时下载。据第三方评测机构BDTI称,ADI的DSP具有最高的性价比。此外,ADI的DSP还具有功耗低、稳定(工业/汽车级DSP工作温度范围为-40至+85摄氏度)的优点。
  ADI公司在智能视频监控方面的市场策略比较独特。有一些第三方设计单位为用户提供解决方案。尤其是,ADI同许多科研院所(如清华大学)进行合作,共同展开视频分析的开发工作。视频智能分析算法属于前沿技术,挑战性很强,而科研院所内的智力资源比较丰富,非常适合做这方面的研究。
  目前,ADI公司的一些DSP智能视频监控已经走向实际应用。在印度,人头清点(people counting)系统已经实现量产;在美国,车牌识别系统实现了小批量应用;在中国,人脸识别也实现了小批量应用。
  张铁虎介绍说,现在智能视频监控还主要应用在对安全要求很高的场合,如银行、监狱、水厂、政府机关等。随着技术的发展、成本的降低,智能视频监控将越来越普及,更广泛地取代传统的CCTV。
  张铁虎说,ADI公司非常看好智能监控市场,在这方面将持续投资,并在全球范围内同设计公司、科研院所展开合作开发。DSP技术也是ADI的长期计划,目前该公司正在设计下一代的指令集,并已经完成了其中一部分。ADI的DSP会特别注重视频分析,并为这方面的客户提供参考设计、算法模块等。
  关于DSP核FPGA的竞争问题,张铁虎说,DSP更适合视频分析,而FPGA的长处是并行处理。另外,FPGA还存在体积大、功耗大、价格高等问题。不过,根据BDTI的报告,FPGA正越来越多地涉入DSP的应用领域。在现今的很多设计中,DSP往往与FPGA配合使用。在很多情形下,这一组合对于下一代系统的设计仍然适合。但在另外一些情形下,设计者会考虑仅使用两者之一,而且通常是FPGA取代DSP的功能。然而,对于智能视频监控市场,虽然FPGA也在试图进入,但就目前情况来看,DSP似乎是比较现实的解决方案。
  基于DSP的语音实时变速系统设计
  引言
  在外语多媒体教学中,要求对语速进行快慢控制,以适应不同程度学生的需求。然而,传统的语音变速产品往往在教师改变语速的同时,也改变了原说话者的语调,不能达到教学的真正目的。因此,语音变速系统应当具备调整语速的同时,还需要保证原说话者语调保持不变的特点。本文介绍的就是一种基于TMS320C5409的语音实时变速系统。另外,考虑到在实际系统中语音的压缩存储和语音变速往往是同时需求的,因此本文提出一种基于LPC低比特率语音编码算法的语音变速算法,该算法能够任意调整语音语速。
  LPC算法
  LPC编码将语音信号s(n)看作一个时变的声道系统在声门的激励之下的输出信号。对浊音而言,声门激励为一周期脉冲串;而对清音而言,声门激励为随机噪声序列。
  在LPC编码中,可以将一帧的语音信号用简化模型的参数来表示,如浊音、清音判别,基音周期,增益G以及数字滤波器系数,这样就可以获得3kb/s的编码。解码时,由于在LPC编码中,浊音可以看作是一周期脉冲串的激励,其中,脉冲周期为基音周期,因此,为了改变语音的速率,我们将语音的帧长变长,在其中再加入若干的脉冲串的激励即可得到变速的语音信号。
  硬件系统设计
  本系统是一个完善的应用系统,主要完成对语音信号的实时LPC编解码及语音变速,此外,还具有键盘控制功能和语音录放功能。因此,本系统不但需要外部的SRAM存放语音数据,而且需要与DSP相连接的键盘控制设备。本系统主要由TMS320C5409、TLC320AD50、SST39VF400A和CY7C133等构成,系统框图如图2所示。TMS320C5409内部提供的32K字片内RAM用来存放实时运行的程序和数据,片外SRAM(CY7C133)用于存放编码后的语音数据。系统的工作过程如下:系统加电后,通过复位建使TMS320C5409复位。TMS320C5409复位后,由内部固化的自引导程序将Flash(SST39VF400A)上的程序和初始化数据搬移到片内RAM,然后TMS320C5409根据键盘的控制执行操作,运行LPC编码运算(录音)、LPC解码和语音变速(放音),调整语音变速速率。
  TMS320C5409用于实现语音的编解码算法,TLC320AD50用于完成语音信号的数/模和模/数转换功能。TMS320C5409与TLC320AD50之间通过McBSP串口通信。为了减轻CPU的负担,本系统中设计McBSP通过DMA收到或发送完一组单元后,再给CPU中断的方式跟CPU通信。TMS320C5409与TLC320AD50的接口。
  采用DMA的方式,即串口每收到或发送一组单元,都会自动触发DMA将其搬送到一个内部的Buffer中,等Buffer满了再通过中断方式告诉CPU处理。这时DMA最好采用ABU(Auto Buffering)模式,可以有效防止Buffer中的数据在串口速率较高时被新数据冲掉的问题。在进行语音变速时,只需要将13MA通道的帧长做相应的改变即可。
  SST39VF400A(256K×1 6位)作为TMS320C5409的外部数据存储器,地址总线和数据总线接至TMS320C5409的外部总线,CR接至TMS320C5409的DS。
  外部存储器采用的是CY7C133,它是高速的2K×16bit的静态异步双端口RAM,其存储速度为25ns。它有两套独立的地址线、数据线和控制信号线,允许两个控制器件中的数据通过共同连接的存储器来进行通信。该双端口RAM允许两个控制器同时读取任何存储单元(包括同时读同一单元),但不允许同时写或者一读一写统一地址单元。
  对于TMS 320VC5402,数据存储器CY7C133的对应地址为4000H~47FFH。
  系统软件
  本系统实现的目标是键盘控制功能和语音录放功能,并且能够将输入的语音信号以任意变速率播放而不改变语音的声调。系统采用C语言进行功能开发。
  本系统中将HPI口映射成为GPIO,并且将键盘连线通过"或"门接到INTO。当有按键按下时,INTO中断处理程序通过从GPIO中读出的数值判断此时是录音、放音、语速变快还是语速变慢。
  抗干扰设计
  本系统中既采用硬件抗干扰技术,也采用了软件抗干扰技术。下面简要介绍一下本系统所采用的硬件看门狗和数字滤波器的设计。
  利用硬件看门狗功能提高系统的抗干扰能力。由专用芯片MAX692构成的看门狗电路,系统所用外围元件少。MAX692是微系统监控电路芯片,具有后备电池切换、掉电判别、看门狗监控等功能。其中WDI是看门狗检测输入端,接到数字电路系统的一个专用I/O口或一个总线口上。RESET是复位信号输出端,接数字电路系统的复位端RST。MAX692的WDI定时周期为1.6 s,复位脉冲宽度是200ms。如果WDI保持高或低超过"看门狗"定时周期(1.6s),RESET端将发生200ms宽(最小140ms)的负脉冲使数字电路系统复位。
  数字滤波器的软件设计方法有:程序判断滤波法(限幅滤波法)、中位值滤波法、算术平均滤波法、递推平均滤波法、防脉冲干扰平均滤波法、一阶滞后滤波法等6种方法。根据需要,本系统选择程序判断滤波法。
  结浯
  实践证明,本系统在进行语音变速的同时,能够保证原说话者语调保持不变,且操作简单,系统延时小。
[编辑本段]中国DSP市场现状  2003年,我国DSP市场继续保持了快速增长,市场销量总计达到26628.8万片,总销售额达126.4亿元。我国DSP市场规模迅速扩大,主要得益于我国移动电话市场、数字消费市场以及自动控制市场规模的增长。
  三大领域带动DSP持续增长
  
  在我国市场上,移动电话、数码相机等DSP产品的主要应用领域走势良好,需求旺盛,推动着DSP市场持续增长。在无线领域,我国手机用户继续大规模增加,手机需求的大幅增加带动了我国DSP市场的高速增长。在数字消费领域,我国新兴的数字消费类电子产品进入增长活跃期,市场呈现高增长态势,用户认知率和普及率大幅提高,数码消费市场的高速增长推动了DSP市场的发展。此外,计算机、通信和消费类电子产品的数字化融合也为DSP提供了进一步的发展机会。
  目前,在VoIP、DSL、Cable Modem、3G、数字相机和马达控制等需要实时处理大量数字信息的应用中,都可见到DSP的身影,DSP无疑已经成为推动数字化进程的动力。
  新应用层出不穷
  DSP应用的快速发展为数字信息产品带来广阔的发展空间,并将支持通信、计算机和消费类电子产品的数字化融合。在无线领域,DSP遍及无线交换设备、基站、手持终端和网络领域,并涵盖从骨干基础设施到宽带入户的设备,包括VoIP网关和IP电话、DSL和Cable Modem等。面向群体应用,DSP在媒体网关、视频监控、专业音响、数字广播、激光打印等应用中表现出色;面向个人应用,DSP在便携式数字音频和影像播放器、指纹识别和语音识别等应用中表现不俗;针对嵌入式数字控制应用,DSP极大地满足了工业界的需求,如数字变频电力电源设备、工业缝纫机等;DSP也极大地满足了消费电子的需求,如空调、冰箱、洗衣机等。
  随着DSP生产技术和工艺的进步,新型的DSP产品将会不断涌现,并得到广泛应用。
  国内DSP厂商寻求突破
  在2003年我国DSP市场上,TI、摩托罗拉、杰尔、ADI四家厂商依然占据了国内市场85.6%的份额,其他国外厂商占据了14.4%的份额,产品完全依赖进口。我国是亚洲发展潜力最大的市场,数码相机、MMoIP电话和手持电子设备等数码产品在国内市场的迅速发展促进了高性能DSP的广泛使用。我国电子产品制造商众多,对低成本、易使用的DSP需求巨大,然而DSP市场由国外厂商所垄断的局面不利于国内厂商的发展,国内厂商生产所需的关键芯片仍控制在上述四家国外厂商手中,国外厂商的生产状况对国内市场的影响十分明显。
  虽然目前DSP的主要应用产品的市场都是由国际半导体大厂所控制,但在相关政策的扶植下,本土厂商积极投入研发资源,以消费性产品作为进入DSP市场的一个“敲门砖”,也必将在DSP市场上争得一席之地。
  尽管国内DSP厂商还没有真正进入市场,但是国内厂商在DSP上的突破必将在未来的市场上对国外厂商形成威胁,国内厂商的进入将使市场竞争更加激烈。
[编辑本段]DSP未来发展  自十多年前浮点数字信号处理器(DSP)诞生以来,便为实时信号处理提供了算术上更为先进的备选方案。不过,定点器件至今仍是业界的主流--当然低成本是主要原因。定点DSP每器件产品的价格很低,这对大规模大众市场应用而言是相当重要的优势。
  相比较而言,浮点DSP能够实现更快速而简便的开发,因此对开发成本比单位制造成本重要的小规模应用而言,更是最佳的选择。
  最近几年,高密度集成与支持改善使两种DSP在使用方便性与成本上都较为接近。目前,器件类型的选择越来越取决于应用数据集是否要求浮点格式的更多计算功能。因此,设计大规模量产信号处理应用的开发人员现在开始发现浮点格式更多的内在价值。他们将视线投向传统定点DSP开发模式之外的领域,并探索浮点 DSP 所带来的设计机遇。
  不同的数字格式
  定点与浮点DSP的基本差异在于它们各自对数据的数字表示法不同。定点硬件严格执行整数运算,而浮点 DSP 既支持整数运算又支持实数运算,后者以科学计数法进行了标准化。字长为 16 位的定点 DSP 实现 (rovide) 64K 的精度,带符号整数值范围为 -215 至 215-1。
  与此相对比,浮点DSP将数据路径分为两部分:一是可用作整数值或实数基数的尾数,二是指数。在支持业界标准单一精确运算的32位浮点DSP中,尾数为24位,指数为8位。由于其较长的字长与取幂范围,该器件支持 16M 的精度范围,这样的动态范围大大高于定点格式可提供的精确度。实施业界标准双精度(64 位,包括一个 53 位的尾数与 11 位的指数)的器件还可实现更高的精确度。
  成本与方便易用性
  浮点 DSP 提供的计算能力更高,这也是其区别于定点 DSP 功能的最大差异所在。但在浮点 DSP 刚刚出现的20世纪90年代初期,其它因素往往掩盖了基本的数学计算问题。浮点功能需要的内部电路多,而 32位数据路径比当时可用的定点器件要宽一倍。晶片面积越大,引脚数量就越多,封装也越大,这就大大提高了新款浮点器件的成本,因此数字化语音与电信集成卡(concentration card)等高产量应用仍更倾向于采用较低成本的定点器件。
  当时,方便易用性抵消了成本问题带来的不利影响。浮点器件是最早支持 C 语言的 DSP 之一,而定点 DSP则仍须在汇编代码级上进行编程。此外,对浮点格式而言,实数运算可直接通过代码加入硬件运算中,而定点器件则必须通过软件才能间接执行实数运算,这就增加了算法指令并延长了开发时间。由于浮点 DSP 易于编程,因此其最初主要用于开发工作强度较大的情况,如研究、原型开发、影像识别、工作站的三维图像加速器以及雷达等军用系统。
  逐渐趋同
  目前,早先的成本与易用性间的差异已经不那么明显了。总体说来,定点DSP仍然在成本上有优势,而浮点 DSP 仍然在易用性上有优势,但差别已经缩小很多,因此上述因素已经不再起决定作用了。
  成本日益成为片上系统(SoC)集成与产量的问题,而不是DSP内核本身大小的问题。在十年前还只能放置单个晶体管的空间,目前可放置数十个晶体管。目前,占据晶片面积最多的是存储器,而不是逻辑,而且许多基于DSP的产品都充分利用再扩展(rescaling)的优势,针对具体市场的需求集成了不只一个内核。定点DSP的成本仍然较低,因为其针对大众市场应用的产量很高;但是,如果大规模量产的需求出现,那么浮点器件也将受益于规模效益带来的同样的成本降低。
  早期在易用性方面的差异也已经减小。高效的C编译程序与工具早已能支持定点DSP,为代码执行带来了可视性。直接采用浮点硬件实施实数运算仍有优势;但目前先进的建模工具、完整的数学函数库以及现成的算法降低了为定点器件开发复杂应用的难度。
  浮点的精确度
  目前,选用定点DSP还是浮点DSP归根结底在于应用数据集是否需要浮点算术功能。总体说来,设计人员应解决两个问题:数据集要求多高的精确度?数据集的可预见度有多大?
  三个因素影响着浮点格式的内在高精度。首先,浮点DSP的24位I/O字长在整数与实数值方面可实现比定点器件中常用的16位字长更高的精确度。第二,取幂大幅提高了应用可用的动态范围,较大的动态范围对处理极大数据集以及难以方便预计数据集范围的情况相当重要。第三,浮点硬件内部的数据表示法比定点器件更为精确,这就保证了最终结果的精确度更高。
  最后一点应稍做解释。在DSP的内部架构中,三种数据字长相当重要,应当考虑。第一是I/O信号字长,正如我们已经说过的那样,其就浮点而言为24位,就定点DSP而言通常为16位。第二就是用于乘法的系数字长。定点系数为16位,与信号数据相同;但浮点系数则可能为24位或53位,这取决于所用的是单宽度精度还是双宽度精度。如果指数表示有意义的零,则精确度实际上会超过上述位数。
  最后,就是保存乘加器(MAC)运算中间结果的字长,通常称作寄存器文件。对单一16位乘以16位的乘法而言,将需要32位的乘积;而就单一24位乘以24位的尾数乘法而言,则需48位的乘积(指数有不同的数据路径)。但是,MAC 需要额外的位用于溢出空间 (overflow headroom)。在16位定点器件中,溢出空间通常为 8 位,这就使总的中间结果字长为 40 位(16 个信号+16 个系数+8 个溢出)。
  将相同大小的溢出空间集成到浮点DSP中将需要60个中间结果位(24个信号+24个系数+12个溢出),这将超过大多数应用对精度的要求。但就取幂而言,我们将结果标准化,这样所有24位或53位都有效,溢出位就不必要了。TI的TMS320C67x系列等浮点DSP允许开发人员在双精度内部运算与单精度I/O结合的模式下优化精确度与性能。其结果是得到的精确度比定点或单精度浮点运算提供的精确度高得多,但又不会产生完全双精度 I/O 带来的周期问题。
  视频与音频数据集要求
  将视频与音频应用的数据集要求加以对比,就很容易看出使用浮点格式的优势。视频的采样率很高,其像素数据采样率相当于每秒数十乃至数百个兆位 (Mbps),具体的值决于应用。像素数据通常以 8 至 12 位的短字表示,每一位代表影像的红、绿、蓝(RGB)位面。业界标准的MPEG视频压缩算法的关键数学运算包括离散余弦变换(DCT)与量化,且过滤有限。DCT与量化采用整数运算就能有效处理,它与短数据字相结合使得视频成为定点DSP很自然的应用,特别对那些设计有大量并行数据路径与片上视频接口的情况更是如此。
  另一方面,音频的数据流更为有限,对 24 位采样且每秒 48 千个采样 (ksps) 的速度而言,约为1Mbps的速度。新兴的采样率为192ksps,为该数据速率的四倍,但其数据流仍然大大低于视频流。不过音频数据的处理必须比视频精确得多。眼睛很容易就被欺骗,特别当影像运动时更是如此;但耳朵就很难欺骗了。因此音频需要浮点硬件提供的更大的字长。
  使用完全24位浮点I/O精度来进行声音采样,这就得到144dB的动态范围,大大超出了声音复制所需的全振幅范围。此外,音频还要求宽系数与中间结果提供的精确度,其原因有二。首先,音频应用通常使用串联无限脉冲响应滤波器(IIR)以实现最低时延与最高性能。但串联过滤每一级都会传播上一级的错误。信号与系数字长越长,精确度越高,上述传播错误的影响就越小。
  第二,在接近于零时必须保持信号精确度,以避免人耳可以分辨的谐波失真。浮点格式从本质上说与人耳的敏感度配合得很好,因为它在分数趋近于零时会变得更精确。相反,定点系统在分数极小的情况下会取近似值等于零,这就降低了精确度。所有上述浮点实数算法方面都对真实复制音频信号至关重要。
  尽管过去常用定点器件实现高保真音频,但目前则转向采用精确度更高的浮点格式。某些浮点DSP集成了多通道音频串行端口(McASP),从而简化了音频系统的设计,这就为上述发展趋势提供了支持。随着最新型音频创新在消费类电子产品中的日益普及,对浮点DSP的需求也将上升,这也有助于让其成本更接近于定点 DSP。
  其他数据集
  其它类型应用的数据集也可受益于浮点的精确度。在医疗影像识别中,更高的精确度能够支持许多层次的信号输入,包括光、X射线、超声波与其它来源的输入等,它们都必须进行定义与处理,以生成提供有用诊断信息的输出影像。动态范围较大对雷达至关重要,这种情况下,系统应能够在从零到无穷大的范围内进行跟踪,而只用整个范围的一个较小的子集进行目标捕获与识别。动态范围较大也有助于让机器人处理不可预见的情况,如在机器人正常有限的运动范围中遇到的障碍等。与上述应用形成对比的是,定点器件为巨大的通信市场提供更好的服务,因为大多数通信数据都是以八位字节串行传输,随后进行内部扩展以根据整数运算进行 16 位处理。
  近年来,随着数字信号处理领域不断发展,DSP也由应用推动发展。SoC集成意味着更多的存储器和不同的内核与专用外设一起均能集成到同一器件上,这就使DSP产品能够按特定市场的需求进行定制。在此环境中,浮点功能已成为整体 DSP 产品组合中的另一要素。
  定点DSP与浮点 DSP
  之间在成本与易用性方面仍有某些差异,但随着时间的推移,上述差异已经不大。对设计人员最具重要性的特性在于浮点格式具有更高的算术灵活性与精确度。对高保真音频以及需要实数运算、更高精确度与较大动态范围的其它数据集应用而言,浮点 DSP 是最佳的解决方案。

没有评论: