![]() |
|
||||||||||||||
| | 首页 | 新闻 | 文库 | 方案 | 技术 | 独家 | 座谈 | 下载 | 电路图 | 开发套件 | 仿真器 | 邮购 | 帮助 | VIP会员 | 芯片代购 | | ||
|
||
|
|||||
| ADSP-BF533应用中的注意事项及优化方法 | |||||
作者:admin 文章来源:本站原创 点击数: 更新时间:2008-3-19 ![]() |
|||||
|
引 言 随着多媒体技术的快速发展,DSP在各种电子消费品中的地位日益突出。多媒体应用正在逐步走向网络化、多样化、智能化。其中,ADSP处理器在嵌入式网络多媒体应用中有着显著的优点:性价比高,体积小,功耗低,外围接口电路设计简单。目前广泛应用的处理器之一是ADSP—BF533,它适合于数码相机、便携式多媒体播放机、网络媒体适配器、数据和多媒体网关、互联网协议(IP)机顶盒、2.5G和3G无线手机以及汽车信息娱乐与安全系统等各种应用。ADSP—BF533处理器使用方便,具有良好的代码兼容性以及极高的性能和极低的功耗。本文在介绍ADSP—BF533特点的同时,对其在设计应用中的注意事项及优化方法做了相应的论述。在设计过程中,多注意细节和优化方法可使设计更加顺利的实现,并为大规模算法的执行提供有效的时间。 1 ADSP—BF533处理器简介 ADSP—BF533是ADI公司推出的嵌入式多媒体处理器,拥有运算频率高达750 MHz的DSP内核;采用ADI公司与Intel公司共同开发的MSA体系结构[1](微信号结构),这种结构采用了一个综合的信号处理和控制指令集。这样处理器就不仅是带有增强指令集的DSP,也不仅是带有2个算术逻辑单元的MCU,而是为同时运行控制指令和算术指令而进行优化的处理器结构[2],集DSP和MCU功能于一身,从而消除了传统的多个不同处理器之间联系的复杂性。 从讨论C语言优化的角度出发,ADSP—BF533处理器具有以下特点: ①处理器支持与分级存储结构相结合的改进型哈佛结构,最高时钟频率为600 MHz,峰值处理能力为1.2GMIPS。通过对工作频率及电压的动态调节可实现极低的功耗。动态电源管理完全是由软件实时控制的,可以在运行时随时改变内核电源,以降低功耗,效果非常明显。 ②ADSP—BF533 DSP内核包括2个40位的算术逻辑单元(ALU)、2个乘法器累加器(MAC)、4个视频ALU和1个移位器。ADSP—BF533的硬件结构具有很高的并行性和运算能力,可以进行双16位数的加减、交叉和移位运算,在设计中可以提高运算速度,并使复数运算大大简化。 ③处理器的指令集[3]包含了大量的运算指令,可以快速执行固定点和小数运算,如乘加器和MAC shift指令等。 ④处理器可以实现零开销硬件循环,其效率比通过条件分支返回循环起点的方式高得多。 ⑤处理器将成组的寄存器与函数单元相关联,从而加快了运行速度、降低了功耗。例如,Blackfin处理器既有运算寄存器或d—reg寄存器,又有地址寄存器或preg寄存器。 、 ⑥DMA[4]数据的重排功能可以优化图像数据在内存中的存储,这不仅可以提高内部存储空间的利用效率,也可以提高数据的传输效率。虽然图像数据的传输也可由软件实现,但会消耗大量的CPU时钟周期,从而使DSP的高速性能难以发挥,而由DMA来完成同样的工作却不占用CPU的时钟周期。 2 硬件设计时的注意事项 采用ADSP—BF533处理器设计产品时,为了避免一般的错误,除了要熟悉相关的规格书、硬件参考手册[5]以及处理器的勘误表外,在元器件的选择、中断和复位的设置以及信号的完整性方面也要特别地关注。如果考虑周全,设计仔细,那么整个系统的设计将减少大量的重复工作,从而缩短设计周期。 (1)NMI极性 NMI全称为Non Maskable Interrupt,即非屏蔽中断请求信号。对于ADSP—BF531/532/533/535/561,NMI引脚激活为高电平;对于其他的处理器,NMI引脚激活为低电平。只有这样,才便于同标准的外围设备连接。同时,也要注意NMI引脚是否可用它的非激活状态,特别是不能让NMI引脚悬空。 (2)电压范围 直接将5 V电压连接到引脚可能会损坏引脚,并产生故障。当Blackfin处理器输出连接到5 V输入设备时,可能会引起引脚左漂移或被上拉到5 V,而大多数处理器引脚(除了两线接口引脚)是不能超过5 V电压的。所以,引脚的电压变化应当保证在其规定的电压值或小于其许可范围的最大值内,高电压中采用限流电阻是不能起到完全的保护作用的。 (3)信号完整性 破坏信号完整性将直接导致信号失真、定时错误,以及产生不正确的数据、地址和控制信号,从而导致系统延误甚至崩溃。快速的信号上升时间和下降时间是引起信号完整性的主要问题。处理器的每个引脚上升、下降斜率不同,一些引脚对噪声和其他引脚的信号反射具有很大的敏感性差异。采用简单的信号完整性处理方法可以防止线上传播反射信号干扰时钟和同步信号,其中短的走线和阻抗特性对以下的信号显得尤为重要: ①CLINK引脚应当有相应的驱动阻抗匹配; ②SPORT口信号(TCLK,BCLK,RFS,TFS)应当采用终结; ③PPI引脚(如PPI—CLK和同步信号)也同样受益于标准的信号完整性技术。 (4)复 位 Blackfin处理器的引脚没有滞后作用,因此需要一个单调的上升或下降过程。同时,复位引脚不能直接连接到R/C延时电路上,因为Blackfin处理器对这种电路噪声比较敏感,所以在设计复位电路时应当由一个复位芯片产生一个复位信号。 (5)旁路电容 当高速的电路对内部供电端加上适当的旁路电容时,对于电容的选择有两件事需要特别考虑: ①当处理器运行频率高于100 MHz时,电容要小,而且走线应当短以减小感应系数。如果选择0402的表贴电容,会比更大尺寸的电容效果要明显。 ②小电容值比大电容值更容易引起LC电路的自激。在低于50 MHz时应采用几个0.1μF的电容;在高于500MHz时则应采用VDD-INT旁加0.1 pF、0.01 pF、0.001pF和100 pF的组合电容。 3.C语言的优化方法 在对C程序进行性能优化时,主要包括编译器的自动优化和编译器无能为力的人为算法优化。在一般情况下,算法优化总是比编译器优化更为有效。因此,在设计时应当首先进行算法优化,检测评估当前的算法是否适合在Blackfin处理器上运行。在评估C程序时,应检查其一般运行情况以及“别名判别”特性,判断编译器是否能够始终理解正在调用的数据。 同时,在对C程序进行优化时,还必须结合所用处理器的处理能力。在处理能力方面,不同的目标处理器各有所长,各自具有针对某种数学运算特性而专门编写的指令,如维特比(Viteribi)运算、位多路复用、向量乘法和加法等。在设计时这些都必须考虑,采用自己选择的算法,以确定处理器是否能够实现这些运算。 最后,还要考虑不可移植部分的更改。之前讨论的优化都是维持一个可以在任何平台上运行的C程序。如果在程序中添加某些针对Blackfin处理器的代码,那么更改后的程序将不可导入其他处理器;否则,要重新编写部分的C代码、添加编译指示,或在代码行中添加汇编语句。为了修改方便,可以保留一个C模型备份,以便进行验证。 3.1 编译器优化 编译器是当今软件开发中最基本的工具。编译器的性能[1将直接影响生成的可执行程序的性能。其中,改善程序性能的最快捷、最简单的方法是使用具有优化功能的编译器。一个好的编译器可以充分利用处理器的特性,使优化工作自动化,而不必去翻阅厚厚的处理器手册。 编译器的优化设置是在Visual DSP++4.5开发环境界面的“编译(compile)”对话框中进行,也就是通过菜单“项目(project)”→“项目选项(project option)”,对该对话框进行设置。 在进行编译器自动优化设置时,可以对“输出列表文件”、“保存临时文件”、“产生调试信息”、“跳过预处理”等优化项进行适当的选择,使编译器的性能达到设计时的要求。 3.2 源码优化 算法优化是程序设计的关键,为了提高程序代码[7]的效率,必须对要处理的源码进行一定的优化。源码大部分是用C语言写成,所做的优化工作包括: ①使用寄存器变量代替局部变量。 ②尽量避免使用超过三重循环的运算,因为ADSP—BF533拥有2个硬件循环寄存器。充分利用这两个寄存器,可以实现零开销的硬件循环。 ③在编写循环时,应使得上一次循环与下一次循环没有相关性,并使用“#pragma VECTOR—FOR”标记内层循环。通知编译器生成向量指令,硬件可以并行执行2次循环。 ④尽量用定点运算。由于ADSP—BF533没有硬件浮点单元,所以用定点运算比浮点运算要快得多。 ⑤对于sin()和cos()这样的复杂函数,可将常数数组存储于内部全速SRAM中,用查表来代替。调用AN—SIC的sin()函数需要上百个周期,而用查表方法只需2个周期。 3.3具体优化过程 优化是有侧重点的,优化是一门平衡的艺术,它往往要以牺牲程序的可读性或者增加代码长度为代价。虽然有时可以通过优化程序代码来提高程序的运行速度,但在更多的时候,需要针对采用的特定硬件,对程序进行专用化来提高其运行速度。最终,将会构建一个速度更快,但也更大、更复杂,并且不适于导入其他处理器的专用程序。 下面分3个层面来重点讨论如何进行优化: ①首先是程序优化,即尽可能利用编译器的自动优化特性,实现代码优化。对于信号处理循环,编译器优化相当有效,可以实现近20倍的速度提升。但是,必须注意的是,编译器优化只对部分代码区域有效。编译器优化不能改变程序的算法,不会对程序进行全局更改,也不能大规模重新排列数据。就编译器而言,正确性始终比提高性能更重要。我们的目的就是为编译器提供一个安全的环境,让其放心大胆地生成运行速度更快的代码;否则,它将采取保守策略。 ②第2步就是修改程序。只有在不得已的情况下,才对程序进行必要的修改。要将导入处理器的现成的C程序精心构建成所谓的“优化C程序”,可以在其中添加一些编译指示,其他编译器会将这些编译指示当作代码注释,从而维持一定程度的可移植性;还可以在一定范围内,对内置函数和存储限定符等代码进行同样的修改。 ③最后可以有针对性地重新编写部分代码,针对采用的Blackfin处理器的特性,利用专门特定的程序指令进行修改程序,以提高效率。 为了最大限度地缩短设计周期和产品的上市时间,可以采用以下的优化模型:首先,确定性能目标;然后,将C程序导入Blackfin处理器;再依次执行上述优化步骤,最后逐渐实现预设的性能目标。 4优化实例 下面以去方块滤波模块为例,简要说明代码优化前后的差别。测试优化效果的方法:将参考代码JM8.6中的去方块滤波C程序模块凹3加到原有的解码器中进行测试,再与经过优化的程序模块的测试周期进行对比。选择的测试图像序列为Clarie.cif、Paris.cif、Mobile.cif,测试数据如表1所列。 从表1可以看出,与优化前的JM8.6中的C程序代码相比,经过优化后的去方块滤波汇编模块效率提高了7倍左右。 结语 本文针对多媒体处理芯片ADSP—BF533的结构特点,重点阐述了在设计过程中的注意事项和程序优化方法。随着Blackfin处理器的普及,ADSP—BF533已经广泛应用于各种电子工程,相信本文对ADSP—BF533的学习和应用开发能起到一定的帮助作用。 |
|||||
| 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| FPGA+DSP实时三维图像信息处 ADP-TS101 EzFlash示例程序 ADSP TS101EzFlash (C)源代码 ADI DSP双精度除法的例子 ADI GPS导航解决方案 用对数放大器实现射频功率控 ADI DSP的单精度随机斜率滤波 多路跟踪滤波同步数据采集系 基于单片机的车载超级电容测 设计面向高清电视的全数字音 |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 本站介绍 | 合作联络 | 欢迎投稿 | 广告业务 | 网站地图 | 设为首页 | 加入收藏 | 友情链接 | 网站公告 | 联系我们 | | |||
|