原创 轻松体验DSP

2009-10-13 22:53 2183 5 5 分类: 处理器与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 冲突。


引自:http://www.bluedz.com/dsp/html/200908/20090822180105.htm

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /2 下一条