打造国内最大的IC交易平台
技术资料 行业资讯 PDF资料 IC价格 IC替换 缩略语 IC供应 IC采购
对控制应用与数字信号处理要求共存其技术的解决方案(一)
类别:电子综合  
 
        

    

     叶云燕摘要:本文主要介绍用MAXQ微控制器与其乘法-累加单元(MAC)结合的新架构来解决控制应用与数字信号处理并存要求系统的技术方案,同时用以双音多频(DTMF)收发器为例对其应用作分析说明。 1、面临对控制应用与数字信号处理都有要求时出现的难题 众所周知,传统微控制器与数字信号处理器(DSP)有时被视作微型计算机领域中两个各自独特而不兼容的机种。应该说这二者都有功不可抹的优点,绝大多数微控制器的单周期指令使ALU(算术与逻辑单元)具有每次一项运算的特性,对在繁重算术应用是很不理想,但却适合于需要对非同步过程实现低延迟响应的控制与应用。当然DSP也可以勉强用于控制应用中,但是绝大多数DSP的内部架构在这种操作中会反映出代码与时间上的低效率,比较适合对信号的软件处理,在需要高强度数学计算的应用中,DSP表现出卓越的壮性能,这是因为采用的是先进的哈佛总线结构,并有一套专门为数学信号处理设计的指令系统,特别是专用DSP芯片就是其实现某种特定功能的软件算法已经在芯片内固化,可用硬件来实现。 然而当越来越多与控制有关的应用而只需要少量信号处理时,如工业实时控制系统与通信工程等,这样仅在DSP与传统微控制器之间进行选择就变得越来越困难。在这样的应用中,虽然采用将DSP代码挤进微控制器的解决方法是很有一定吸引力,但不过通常设计者会发现应用程序的大部分时间都花在执行DSP函数上了,而在控制应用不得不有较大牺牲又浪费了资源,这是令人失望的.怎么办?这是本文要重点讨论与解决的问题。 2、解决方案 MAC模块与MAXQ结合使用 这样两难的问题只有通过近年来己问世的现代的微控制器MAXQ架构来解决。 在模块化的MAXQ架构中,单周期乘法-累加单元(MAC)的加入使典型的信号处理技术所需的运算变得容易。 这是为什么?为此,应从MAXQ架构特征作一说明。 2.1 MAXQ架构优异的特征 Dallas Semiconductore的MAXQ系列处理器是是专门为低噪声操作而设计,它将高精度模拟功能与前沿微控制器数字元件集整合在一起,成为MAXQ RISC架构,这是一种全新的微控制器核,它结合了高性能和低功耗,以及多种复杂的模拟功能,得到了减少芯片数的解决方案。 MAXQ采用Harvard存储器结构,将数据、代码与寄存器空间安排在不同的总线上。这种存储器结构的主要优点是灵活的字长,允许系统与外设寄存器是8位或16位宽。 作为开发者来说,之所选用MAXQ架构是基于以下主要原因: *基于MAXQ架构上的简化 所有操作最终都用简单的传送操作来实现。全部33条指令中的每一条指令都可以简化为向目标寄存器/存储器单元中写一个立即数,或在寄存器与/或存储器单元之间传送数据。这架构上的简化对软件开发者很理想,可以在绝大多数应用中优化代码开发,并使用尽可能最小的存储器要求。另外,MAXQ中的每条指令都在单周期中完成,确保了尽可能最快的代码执行速度(1MIPS/MHz)。 *基于不浪费任何时钟周期 由于MAXQ架构的设计目标之一是赢得更高的性能-功耗比。而高效率设计的第一要素是最大限度地利用时钟周期来执行用户代码。执行单周期指令是MAXQ获得高时钟利用率的最基本方法。执行单周期指令可以使最终用户受益,这是因为增加指令带宽可以获得更高的性能,并且/或者由于可以降低时钟频率,使得降低功耗成为可能。需要指出的是,MAXQ架构之所以实现更高的时钟周期利用率,是因为它不借助指令流水线,实现单周期操作。 *基于40位累加器的16×16乘法运算 在模块化的MAXQ架构中,单周期乘法-累加单元(MAC)的加入使典型的信号处理技术所需的运算变得容易。 3 如何将MAC模块与MAXQ结合使用 在模块化的MAXQ架构中,可以很容易地将乘法-累加单元(MAC)加入到设计中,并集成到架构中。使用了硬件MAC后,16×16的乘法-累加运算出现在一个周期中,而不会影响在控制处理器上运行的应用。为此,将提供了一个实例,用来说明如何使用典型MAXQ微控制器中的MAC模块解决实际问题。 对DSP来说,最普通的应用是对模拟信号的滤波见如下所示: 在滤波应用中,将经过适当调理的模拟信号提供给ADC成数字量,而在数字域中对采样得到的数据流进行数字滤波。所谓数字滤波就是将输入的信号序按规定的算法处之后,得到所希望的输出序列的过程。常规滤波器的执行过程可以用如下差分方程实现: y[n]=∑bix[n-i]+∑aiy[n-i] 这里x[n] 为输入序列, y[n]为输出序列,bi和ai分别是滤波器系数.根据ai和bi的值,可以将数字滤波器分为两大类:有限冲击响应(FIR)与无限冲击响应(ⅡR)。 对于上式,如果所有的系数系统ai均为0,则有滤波器被称作FIR型: y[n]=∑bix[n-i] 那该式称为FIR滤波器的差分方程,则系统是FIR滤波器。 而当ai和bi滤波器系数码的元素都不为0时,则系统是IIR滤波器。 所谓FIR滤波器是用数学方法完成硬件制作的经典滤波器。使用数学方法实现滤波对工程实际具有重要价值,其FIR是有限冲激响应的缩写。 从上文FIR滤波器的公式中可以看到,主要的数学运算是将每个采样输入x与常数bi相乘然后将每个乘积累加(∑),共进行n次。这可以用如下C语言程序段来说明: y[n]=0; for(I=0; i SampleS move ptrl, #b ;Secondary DP 一> coefficients move ctr, #n ;Loop counter gets number of Samplesmove result, #0 ;clear result registerACC_LOOP: move acc, @ptro ;get a sample mul @ptrl ;Multiply by coeffiCient add result ;Add to previous result move result, acc ;...and save the result back inc ptr0 ;point to next sample inc ptrl ;Point to next coefficient dec ctr ;Decrement loop counter jump nz, ACC_LOOP;Jump if there are more samples end 这样,尽管有一个乘法器,乘法与累加的循环也需要12条指令以及(假定是单周期运行的单元与乘法器)4+8n个周期。 而MAXQ的乘法器是真正的乘法-累加单元。在MAXQ架构中完成相同的操作,代码空间将从12个字缩减到9个字,运行时间将减少到4+5n个周期。 move DP[0], #x ; DP[0] 一> x[0] move DP[1], #b ; DP[1] 一> b[0] move LC[0], #loop_cnt ; LC[0] 一> number of samples move MCNT, #INIT_MAC ; Initialize MAC unit MAC_LOOP: move DP[0], DP[0] ; Activate DP[0] move MA,@DP[0]++ ; get sample into MAC move DP[1], DP[1] ; Activate DP[1] move MB,@DP[1]++ ; get coeff into MAC and multiply djnz LC[0], MAC_LOOP 需要注意的是,在MAXQ乘法-累加单元中,当第二个操作数装入该单元时,请求的运算自动执行。其结果存储在MC寄存器中。与众不同的是,MC寄存器的长度是40位,在溢出前可以累加大量32位的乘法计算结果。这是对传统方法的改善,在传统方法中每个基本运算后都必须进行溢出检测。为了说明如何在信号处理流程中高效的使用MAC,值此给出一个用于双音多频(DTMF)收发器的简单应用。