基于XC166单片机的DSP优化方法

发布者:Harmonious88最新更新时间:2014-11-10 来源: 21ic关键字:XC166  DSP  单片机 手机看文章 扫描二维码
随时随地手机看文章

       引言

       与专用数字信号处理器(DSP)相比,英飞凌的C166单片机的DSP性能相当差,为了提高C166单片机的DSP处理能力,英飞凌推出了新的16位单片机系列XC166,XC166系列单片机与C166单片机的最主要的区别在于,XC166中的CPU核加入了乘法-累加(MAC)单元,用于提高DSP的功能。MAC单元在XC166中是以一个算法处理单元出现的,类似于CPU中的算术逻辑(ALU)单元。这种结构的优点是可以保持XC166与C166的兼容性。

       MAC单元有自己的寻址模式和指令集,MAC指令集是专为开发DSP程序而设计的。独立的寻址模式是为了保证MAS指令能在1个机器周期内完成对2个操作数的间接寻址。与XC166中的一般寻址模式不同,MAC寻址模式有2个地址指针(IDX0/IDX1)及2对地址偏移指针(QX0/QX1,QR0/QR1)用于对双操作数寻址。另外,单机器周期的MAC指令还要求MAC单元具有Harvard结构,也即代码与数据独立寻址。但英飞凌的16位单片机的存储器地址都是线性的,采用的是Von Neumann结构,代码与数据在一个线性存储空间。为了在线性空间中实现Harvard结构,XC166专门把MAC指令的两个操作数中的一个定义在DPRAM中,所以,在使用MAC单元时要特别注意,有些操作数只能存在DPRAM中,否则,指令无法正常运行。目前,XC166系列单片机配有2KB的DPRAM,从地址0xF600到0xFDFF。

       由于硬件的要求,XC166单片机的指令流水线存在着不可避免的阻塞现象,MAC单元指令也一样。尽管在硬件设计时已经采用了专用模块来减少阻塞,但有些阻塞是不可避免的,从程序优化的角度来说,可以充分利用指令流水线阻塞现象,通过重排指令流水线上的指令,消除阻塞,以使得程序的运行时间缩短,从而达到优化的目的。

       通常DSP优化方法可以分为两类:一类是与芯片相关的,另一类是与芯片无关的。与芯片无关的优化方法独立于单片机硬件,适用于所有单片机及DSP处理器,下面根据使用XC166单片机的经验总结一些优化DSP程序的方法。

       1 通用优化方法

       1.1 数据组处理

       数据组处理的基本思想是通过成组的处理数据,以节约每次调用处理子程序所需的附加指令。数据组处理可以在C语言或汇编语言程序中实现。一般而言,对于开发DSP程序,最常用的程序语言为C和汇编。下面分别介绍如何在C和汇编程序中使用数据组处理优化方法。

       (1)C程序

       在C环境中开发DSP程序,通常算法本身由汇编编写,以便优化实现。C主程序通过调用汇编实现的核心处理子程序来完成对数据的处理。核心处理子程序有两种实现方法,一种是数组处理,另一种是单值处理,假设单值处理子程序的核心部分与数组处理子程序的核心部分所需机器周期相同,并且调用子程序的前期处理需M个机器周期,后期处理需要N个机器周期,如果子程序被调用K次,那么理想情况下,数据组处理可以节约(K-1)(M+N)个机器周期,如图1所示。

                             单值处理子程序
 

 

       (2)汇编程序

       在汇编程序中实现数据组处理有多种方法,比如数组操作,数组读入/写出等。

       1、数组操作。数组操作是将多个不同的短操作数装入一个长位数的寄存器,然后进行运算操作。比如,1个16位的寄存器可以装入2个8位的来自A/D转换器的数据。下面举例说明数据组处理在汇编程序中的应用。

      数据组处理在汇编程序中的应用

       2、数组读入写出。这种方法是将多个短操作数合并为一个长操作数后进行读入/写出操作,如上面例子中的输入/输出部分。

       1.2 数据存储器交织 

       数据存储器交织的目的是通过重新排列数据在存储器中的位置,以使得程序读写数据的时间最短,比如有2个8位的复数x和y,一般情况下,复数将按下列顺序存入内存:real(x),image(x),real(y),image(y)。但如果想使得读取复数的实部更容易,可以把数据重新排列如下:real(x),real(y),image(x),image(y),如图2所示。

 

                          数据存储器交织
 

       1.3 循环展开

       循环展开是一种非常传统的程序优化方法,可以用于所有程序优化中,循环展开的目的是通过重复循环中的程序,减少循环次数,从而减少循环判断指令的执行次数,以此来降低程序执行所需的机器周期,下面举一个例子来说明循环展开在XC164CS单片机中的应用。 [page]

 循环展开在XC164CS单片机中的应用

微循环展开程序流程图
 

       1.4 指令流水线重排

 

       指令流水线重排的意思是通过软件程序中的指令重排来改变指令流水线,以此来排除由于硬件引起的指令堵塞,从而加快程序的运行时间。这种优化操作通常用在汇编程序中,指令流水线重排是一个一般的优化原理,把这个原理用于不同类型的单片机可以导出不同的与单片机硬件相关的优化方法。下面介绍的基于XC166单片机的优化方法主要是应用这个优化原理得到的。

       2 与芯片相关的优化技术

       2.1 XC166指令流水线

       XC166单片机指令流水线共有7级,前两级为取指令流水线,后5级为执行流水线,所有指令都必须经过5级执行流水线的每一级。

       第1级--指令预取。这一级根据预测顺序,把指令从程序管理单元(PMU)取出,取出的指令在跳转检测单元进行前期处理,以检测是否有跳转,预测逻辑决定是否接收转移。

       第2级--取指令。根据转移预测规则计算出下一条被取指令的指针。对于零机器周期转移,转移合并单元先预处理,并将检测到的转移与正在执行的指令结合起来。预取出的指令存在FIFO缓存器中,同时,下一条要执行的指令输出FIFO缓存器,进入执行流水线。

       第3级--译码。指令被译码,如需要,在间接寻址模式中,寄存器文件将被访问,以读取通用寄存器GPR。

       第4级--寻址。计算所有操作数地址,对于所有隐含访问系统堆栈的指令,堆栈指针递减或增加。

       第5级--存储。所有需要的操作数被取出。

       第6级--执行。使用已取出的操作数进行MAC单元操作。对于非MAC单元指令,在这一级中,指令将由算术逻辑单元(ALU)执行。条件标志被更新,执行所有直接对CPU特殊功能寄存器CPU_SFRs进行写操作的指令,在间接寻址时,作为地址指针的GPRs自动递减或增加。

 

       第7级--写回。所有外部操作数以及剩余的,在内部DPRAM空间内的操作器被写回。定位在内部SRAM中的操作数进入写回缓冲区。

       下面给出一个具体例子:
     具体例子

        指令流水线
       上面程序的指令流水线如表1所列,(Tn表示机器周期) 

       2.2 数据相关性排除

       在XC166的CPU中,由于指令流水线的设计要求,在使用通用寄存器(GPRs)的指令之间存在一些数据相互依赖的情况,尽管XC166单片机已经使用了专用硬件来检测及解决数据相关性,但仍然有一些不可避免的数据相关性。在编程时,可以充分利用数据相关性来达到程序优化的目的,比如,在用GPR作为间接寻址指针时,如果PGR中的地址值被改变,间接寻址操作必须等待2个机器指令周期后,才能使用GPR作为地址指针寻址。在这种情况下,可以在这2个等待机器周期内插入2条其他单机器周期指令,充分利用这2个周期的等待时间以便程序更优化。

       下面举一个例子: 

     例子

 

       另外一种数据相关性发生在间接寻址访问内存时,XC166单片机中的地址产生单元使用推测原理,在地址译码前,数据的读取路经将根据历史记录表中选出;在历史记录表中,每个GPR都有一个入口。这些入口记录了用相应GPR所访问的内存空间情况。如果这种预测发生错误,读取操作必须重新开始。[page]

       因此,如果用GPR作为间接寻址,GPR最好能指向相同内存空间。如果更新后的GPR指向不同内存空间,下一个操作将出现访问错误,读操作必须重复,这就产生了指令流水线堵塞。例如:

      汇编程序

       2.3 内存带宽冲突排除

       如果在流水线上的指令在同一时间访问同一内存,就会发生内存带宽冲突,MAC单元的CoXXX指令是特别为实现DSP设计的。为了避免在DPRAM中发生带宽冲突,CoXXX指令的其中一个操作数必须放在SRAM中,以保证在单个机器周期内执行MAC单元指令。例如:

     内存带宽冲突排除

       2.4 指令重排

       在用MAC单元指令编程时,经常要改变MAC单元的特殊功能寄存器,比如IDX0,IDX1、QX0、QX1、QR0以及QR1等,在XC166单片机中,有一些指令将会阻塞在译码阶段,如果这些指令正好在一条修改特殊功能寄存器(SFR)指令之后执行,这种阻塞将引起3个机器周期的延时。

       这些指令包括:

       ◇使用长地址模式的指令;
       ◇使用间接寻址的指令,除JMPS和CALLI外; 
       ◇所有MAC单元指令(CoXXX指令)。 

       为了避免指令阻塞,在使用上述指令时,如有阻塞情况发生,应该重新重排指令,以消除延时,例如:

      指令重排

       3 结论

       用于英飞凌XC166单片机的DSP优化技术分为两类:与硬件相关的优化技术和独立于硬件的优化技术。独立于硬件的优化技术也可以用于其他的单片机或专用数字信号处理器。

关键字:XC166  DSP  单片机 引用地址:基于XC166单片机的DSP优化方法

上一篇:进入家庭自动化的连网技术
下一篇:便携式心电监护系统的设计

推荐阅读最新更新时间:2024-03-16 13:45

STM8单片机ADC单次扫描模式
  当STM8单片机使用ADC功能读取多个通道的值时,可以使用单次模式,采样完一个通道之后,重新初始化另一个通道,然后采样,采样完成后继续重新初始化切换下一个通道。但是这样采样起来太麻烦。STM8单片机提供了一个扫描模式,可以依次按照顺序采样多个通道的值,多个通道全部采样完成后,会置位标志位,这样就可以一次性将多个通道的值全部读出来。   其中官方文档介绍如下:   从文档中可以看出,采样都是从0通道开始的,比如想采样3个通道值,那么采样的通道号就为0—3。如果想采样3、4通道,那么也得从0通道开始,也就是说要从0通道开始扫描到4通道,就算0、1、2通道不用,它也会扫描,就这一点不好。   单次采样的时候,ADC_CS
[单片机]
STM8<font color='red'>单片机</font>ADC单次扫描模式
单片机小白学步(23) 知识补充:双向IO口、互补推挽、高阻态
由于之前考虑不周,本篇在IO口原理知识的基础上,进一步补充一些知识。 ================================================= 双向IO口的输出:互补推挽 在51单片机的P0口工作在普通IO口模式下,为准双向IO口。而工作在第二功能状态下时,则为标准的双向IO口。由于双向IO口的输出,要求能输出高低电平,通常会采用互补推挽电路。 在第二功能状态下,51单片机P0口采用的是互补推挽的输出方式。何为互补推挽呢?下面是它的等效电路图。 当P0第二功能作为输出时,K1和K2两个开关轮流打开。K2闭合K1打开,就会输出高电平,并且其驱动能力很大,因为电子开关的阻值小(不像上拉电阻
[单片机]
<font color='red'>单片机</font>小白学步(23)  知识补充:双向IO口、互补推挽、高阻态
高速DSP系统的电路板级电磁兼容性设计
0 引言   印制线路板(PCB)提供电路元件和器件之间的电气连接,是各种电子设备最基本的组成部分,它的性能直接关系到电子设备质量的好坏。随着电子技术的发展,各种电子产品经常在一起工作,它们之间的干扰越来越严重,所以电磁兼容问题成为一个电子系统能否正常工作的关键。同样,随着PCB的密度越来越高,PCB设计的好坏对电路的干扰及抗干扰能力影响很大。要使电子电路获得最佳性能,除了元器件的选择和电路设计之外,良好的PCB布线在电磁兼容性中也是一个非常重要的因素。   随着高速DSP技术的广泛应用,相应的高速DSP的PCB设计就显得十分重要。由于DSP是一个相当复杂、种类繁多并有许多分系统的数、模混合系统,所以来自外部的电磁辐射以及内
[嵌入式]
TI 扩展Code Composer Studio集成开发环境的实用程序缩短达芬奇技术与DSP应用的开发时间
2007 年 3 月 9 日,北京讯 日前,德州仪器 (TI) 宣布推出全新 Code Composer Studio集成开发环境 (IDE) 白金版。全新 Code Composer Studio 3.3 (CCStudio v3.3) 白金版支持多处理器运行将分析特性提高到新的水平,可不断满足高级嵌入式系统开发发展的需求。统一的新型断点管理器、缓存状态可视化工具,完全集成的分析系统和代码覆盖功能,CCStudio v3.3 为 DSP 开发人员提供了强大的工具,能更高效地分析系统运行状态,减少开发工作,从而加速新产品上市场进程。更多详情,敬请访问: www.ti.com/ccstudionew 。 一直以来,CCStudio
[新品]
MCS-51单片机指令系统概述 2
MCS-51逻辑运算及移位指令 杭州电子元件邮购网地址:www.hpoo.net 逻辑运算和移位指令共有25条,有与、或、异或、求反、左右移位、清0等逻辑操作,有直接、寄存器和寄存器间址等寻址方式。这类指令一般不影响程序状态字(PSW)标志。 . 循环移位指令(4条) 这4条指令的作用是将累加器中的内容循环左或右移一位,后两条指令是连同进位位CY一起移位。 RL A ;累加器A中的内容左移一位 RR A ;累加器A中的内容右移一位 RLC A ;累加器A中的内容连同进位位CY左移一位 RRC A ;累加器A
[单片机]
单片机与液晶显示器的接口应用介绍
引言    液晶显示器 (LCD)具有工作电压低、微功耗、显示信息量大和接口方便等优点,现在已被广泛应用于计算机和数字式仪表等领域,成为测量结果显示和人机对话的重要工具。液晶显示器按其功能可分为三类:笔段式液晶显示器、字符点阵式液晶显示器和图形点阵式液晶显示器。前两种可显示数字、字符和符号等,而图形点阵式液晶显示器还可以显示汉字和任意图形,达到图文并茂的效果,其应用越来越广泛。   GTG240128液晶显示模块:   1 模块特点   GTG240128图形点阵式液晶显示器的点阵的大小为240×128,带背光功能。内置1片T6963C液晶显示控制器和5片KS0086驱动器。该液晶显示模块具有如下特点。   ● 8
[单片机]
艾迈斯半导体推出适用于高速电机的新型位置传感器,助力汽车行业的电气化发展
全球领先的高性能传感器解决方案供应商、移动市场3D脸部识别领域领导者艾迈斯半导体(ams AG)近日宣布,推出两款新型位置传感器 — AS5147U和AS5247U,可降低系统成本,同时提高安全关键型汽车功能(如动力转向、主动减振器控制和制动)的电气化水平,有助于实现更安全、更智能、更环保的汽车。 这两款新型位置传感器能够为汽车行业带来多种性能优势,并可降低系统成本。艾迈斯半导体AS5147U是一款智能旋转磁性位置传感器芯片,可用于转速高达28,000rpm的电机。新型AS5247U是一款双堆叠式裸片,可提供要求最苛刻的ASIL D级功能性安全应用所需的冗余。 ● 新型AS5147U和AS5247U旋转位置传感器可提高测量
[汽车电子]
艾迈斯半导体推出适用于高速电机的新型位置传感器,助力汽车行业的电气化发展
想要单片机顺手,搞懂这些三极管知识!
实际上,只要你了解了三极管的特性对你使用单片机就顺手很多了。大家其实也都知道三极管具有放大作用,但如何去真正理解它却是你以后会不会使用大部分电子电路和1C的关键。 我们一般所说的普通三极管是具有电流放大作用的器件。其它的三极管也都是在这个原理基础上功能延伸。三极管的符号如下图左边,我们就以NPN型三极管为例来说说它的工作原理。由于三极管是由二极管演化而来的,所以大家记住PN结永远都是P指向N的,这样PNP还是XPN—下就很清楚了. 它就是一个以b(基极)电流lb来驱动流过CE的电流Ic的器件,它的工作原理很像一个可控制的阀门。 左边细管子里藍色的小水流冲动杠杆使大水管的阀门开大,就可允许较大红色的水流通过这个阀门。当蓝色
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved