一种高稳定性的CORDIC算法实现电路的制作方法

文档序号:16324960发布日期:2018-12-19 05:52阅读:199来源:国知局
一种高稳定性的CORDIC算法实现电路的制作方法
本发明涉及集成电路
技术领域
,特别涉及一种高稳定性的cordic算法实现电路,尤其适用于工作在低电压下。
背景技术
数字信号处理中的很多变换如快速傅氏变换fft和离散余弦变换dct通常都涉及到三角函数的计算。一般来说,在芯片中可以用rom查找表或者多项式近似等方法来计算三角函数,但rom查找表存在着精度问题,并且需要大量的存储空间,而多项式近似需要进行大量的浮点运算。坐标旋转数字计算(coordinaterotationdigitalcomputer,cordic)算法就是为了解决三角函数运算的计算量与精度的问题而提出来的。cordic算法的核心思想是利用反复迭代逐次逼近正确的结果,当达到系统所要求的精度就可以终止。它的一个显著的优势是可以只需要移位和相加结构就可以计算出所需精度的坐标旋转结果,因此广泛用于数字信号处理和无线通信的硬件设计中。cordic算法的常规实现方式如图1所示,由n个cordic单元级联组成,每个cordic单元的功能是将其输入端输入的坐标值进行一次固定角度的旋转得到旋转后的坐标值并输出给下一个cordic单元,每个cordic单元需要旋转的角度依次减小,通过不断判断和修正,最终让经过n个cordic单元后完成的总旋转角度接近输入的目标旋转角度z0,从而达到计算任意旋转角度的目的。在无线传感网络和便携式设备中,系统对数字信号处理模块的功耗有相当严格的限制。为了降低电路的功耗,降低电路的电源电压往往最有效的方法。但是随着电源电压的降低,电路的关键路径延迟会变大,并且会更容易受到外界噪声干扰、工艺偏差等因素的影响,导致电路的稳定性大大降低。由于关键路径延迟的增加可能会导致电路结果出错,一般在集成电路设计的时候,为了保证电路的稳定性,设计者需要考虑到电路工作的最坏情况。考虑到工艺的偏差、电压温度的变化以及串扰等因素,为了确保电路在各种情况下均能正确工作,设计人员一般会保留大量的时序裕量以保证关键路径的延迟小于时钟周期。而这个时间的裕量往往是通过电压的裕量来体现的,所以电压会设计得相当保守。因此,电路在低压下的稳定性问题限制了电源电压的进一步降低。如图2所示的容噪技术可以用来减小电路的电压裕量,进一步降低电路的工作电压,从而降低电路的功耗,该容噪技术通常用在阵列乘法器或加法器中。该容噪技术由一个主计算模块,一个估计器,一个加法器,一个比较器和一个选择器组成。输入x经过主计算模块后得到了所需的精确值,又通过估计器得到一个主计算模块的估计值,估计器的关键路径比主计算模块要小。当整个系统电源电压下降,主计算模块的关键路径可能会大于时钟周期,导致输出不确定的值。但是估计器的关键路径要小得多,它可以确保输出一个正确的估计值。通过将主计算模块的输出和估计器的输出进行对比就可以判断主计算模块是否输出了正确的值。然后可以通过选择器来选择是将主计算模块的输出或者是估计器的输出作为整个电路的最终输出。这样做的好处是,在大部分情况下,主计算模块仍然能输出正确的值,但是电源电压却可以更低;小部分情况下主计算模块出错,此时可以选择估计器的值作为最终的结果,这样只是结果的精度差了一点,这在数字信号处理应用中是完全可以接受的。通过牺牲某些情况下的电路精度来减小这个电压设计裕量,可以让电路工作在更低的电压下,并且保证合理的输出。但是容噪技术为了提高电路在低压下的稳定性,当电路出错的时候需要进行相应的补偿。所以容噪技术需要一个额外的电路作为估计器用于检错和纠错,这样导致容噪技术的硬件开销比较大。技术实现要素:针对上述cordic算法的常规实现方式存在的在低压下的稳定性问题,本发明提出一种cordic算法实现电路,将容噪技术应用于cordic算法中使得本发明能够工作在更低的电压下;且相对于传统使用容噪技术需要额外电路作估计器从而增大硬件开销的问题,本发明将cordic算法中的中间值作为估计值,避免了额外电路的引入。本发明的技术方案为:一种高稳定性的cordic算法实现电路,包括cordic算法运算模块和检错纠错模块;所述cordic算法运算模块包括n个级联的cordic运算单元,n为大于1的正整数;每个所述cordic运算单元的输入端连接前一个所述cordic运算单元的输出端,第1个所述cordic运算单元的输入端连接外部输入信号;所述外部输入信号包括初始坐标值和目标旋转角度;所述检错纠错模块包括第一寄存器组、第二寄存器组、第一加法器、比较器和选择器,所述第一寄存器组的输入端连接所述n个级联的cordic运算单元中的第m个cordic运算单元的输出端,其输出端连接所述第一加法器的第一输入端和所述选择器的第一输入端,其中m为正整数且m<n;所述第二寄存器组的输入端连接所述n个级联的cordic运算单元中的最后一个cordic运算单元的输出端,其输出端连接所述第一加法器的第二输入端和所述选择器的第二输入端;所述比较器的输入端连接所述第一加法器的输出端,其输出端连接所述选择器的选择控制端;所述选择器根据其选择控制端的输入信号选择将其第一输入端或第二输入端的输入信号作为所述cordic算法实现电路的输出信号。具体的,第i个所述cordic运算单元的输入信号包括第i-1坐标值和第i-1剩余旋转角度,第i个所述cordic运算单元将所述第i-1坐标值旋转第i个所述cordic运算单元设定的角度后得到第i坐标值,旋转的方向由第i-1剩余旋转角度的符号决定,并将第i-1剩余旋转角度根据其符号加上或减去第i个所述cordic运算单元设定的角度值后得到第i剩余旋转角度,当所述第i-1剩余旋转角度的符号位正号时,将第i-1剩余旋转角度减去第i个所述cordic运算单元设定的角度值得到第i剩余旋转角度,当所述第i-1剩余旋转角度的符号位负号时,将第i-1剩余旋转角度加上第i个所述cordic运算单元设定的角度值得到第i剩余旋转角度,其中i为正整数且1<i≤n;第1个所述cordic运算单元将所述初始坐标值旋转第1个所述cordic运算单元设定的角度后得到第1坐标值,旋转的方向由目标旋转角度的符号决定,并根据所述目标旋转角度的符号将所述目标旋转角度加上或减去第1个所述cordic运算单元设定的角度值后得到第1剩余旋转角度。具体的,所述第i个所述cordic运算单元设定的角度的正切值为2i-1。具体的,所述第一加法器用于将所述第一寄存器组和第二寄存器组的输出信号相减后输出。具体的,所述比较器用于将所述第一加法器的输出信号取绝对值后与阈值信号进行比较,当所述第一加法器的输出信号的绝对值小于或等于阈值信号时,所述比较器的输出信号控制所述选择器输出所述第二寄存器组的输出信号作为所述cordic算法实现电路的输出信号;当所述第一加法器的输出信号的绝对值大于阈值信号时,所述比较器的输出信号控制所述选择器输出所述第一寄存器组的输出信号作为所述cordic算法实现电路的输出信号。本发明的工作原理和工作过程为:由于传统使用本发明中容噪技术的运算电路,如阵列乘法或加法器是要运算要等到最高位才能得到正确的值,中间结果不是最终结果的近似值,所以需要引入一个额外的电路用于产生估计值;而又因为越往后的运算越重要,如果要用中间结果,必须要将计算器的设计分成高位和低位两部分进行运算,相当于重新设计计算过程,增大了运算步骤和难度。本发明利用cordic算法中越往后的运算误差越小的特点引入容噪技术,复用前m个cordic单元作为估计器,n个级联的cordic单元按照常规cordic算法工作产生各自的输出值,将第n个cordic单元的输出值作为精确值,将第m个cordic单元的输出值作为估算值,通过比较精确值和估算值之差的绝对值选择是将精确值或估算值作为整体电路的输出信号,当精确值和估算值之差的绝对值在设定的阈值信号的范围内时输出精确值,否则输出估算值。既解决了传统cordic实现电路在低压下的稳定性问题,又解决了传统使用本发明中容噪技术的运算电路存在的硬件开销大的问题。本发明的有益效果为:本发明通过将容噪技术引入到cordic算法的实现当中,解决了传统cordic实现电路在低压下不稳定的问题;同时相比其他使用容噪技术的结构能够减少额外电路的引入,减小了容噪技术的硬件开销。附图说明图1为n个级联的cordic单元的整体连接示意图及cordic单元的内部电路示意图。图2是为减小精度冗余的容噪技术系统框图。图3为本发明提出的一种高稳定性的cordic算法实现电路的结构示意图。具体实施方式下面结合附图和具体实施例对本发明进行详细的描述。本发明为改进cordic算法传统实现电路在低压下稳定性不足的问题,将容噪技术引入cordic算法中,利用cordic逐步逼近最终值的特点,复用了级联的cordic单元的前半部分硬件,去掉了传统使用容噪技术设计中的部分冗余模块,相对减小了硬件开销。如图3所示,本发明提出的cordic算法实现电路,包括cordic算法运算模块和检错纠错模块,cordic算法运算模块采用n个级联的cordic运算单元的形式,n为大于1的正整数,如图1和图3所示,其中第i个cordic单元的输入xi-1为待旋转点的横坐标,输入yi-1为待旋转点的纵坐标,输入zi-1为当前剩余需要旋转的角度的值,zi-1的符号位表示旋转方向,旋转的方向由当前剩余需要旋转角度zi-1的正负来确定;θi表示第i个cordic单元设定的旋转角度,第i个cordic单元会将待旋转点(xi-1,yi-1)旋转θi角度后产生(xi,yi)。第1个cordic运算单元的输入端连接外部输入信号(x0,y0,z0);其中(x0,y0)为初始坐标值,z0为目标旋转角度,第1个cordic运算单元将初始坐标值(x0,y0)旋转其设定的旋转角度θ1后得到第一坐标值(x1,y1),旋转的方向由目标旋转角度z0的正负来确定;同时第1个cordic运算单元根据目标旋转角度z0的符号选择将目标旋转角度z0加上或减去其设定的旋转角度θ1后得到第1剩余旋转角度z1,当目标旋转角度z0为正号时,将目标旋转角度z0减去第1个cordic运算单元设定的旋转角度θ1得到第1剩余旋转角度z1,当目标旋转角度z0为负号时,将目标旋转角度z0加上第1个cordic运算单元设定的旋转角度θ1得到第1剩余旋转角度z1,,然后第1个cordic运算单元将第一坐标值和第1剩余旋转角度作为其输出信号(x1,y1,z1)连接至第2个cordic运算单元的输入端;第2个cordic运算单元将第1个cordic运算单元输出的第一坐标值(x1,y1)旋转其设定的旋转角度θ2后得到第二坐标值(x2,y2),旋转的方向由第1剩余旋转角度z1的正负来确定;同时第2个cordic运算单元根据第1剩余旋转角度z1的符号选择将第1个cordic运算单元输出的第1剩余旋转角度z1加上或减去其设定的旋转角度θ2后得到第2剩余旋转角度z2,判断方式同上,然后第2个cordic运算单元将第二坐标值和第2剩余旋转角度作为其输出信号(x2,y2,z2)连接至第3个cordic运算单元的输入端;按照这个规律经过m次运算得到的中间结果是第m个cordic运算单元的输出信号(xm,ym,zm),其中m取值越大得到的估计值越准确继续运算直到n次运算之后产生第n个cordic运算单元的输出信号(xn,yn,zn),随着运算的进行,每个cordic运算单元输出的剩余需要旋转的角度会从目标旋转角度z0开始慢慢变小,直到经过n个cordic运算单元后产生接近于0的zn。考虑到硬件实现,本实施例按照下表所示的方法,将每一个运算单元设定的旋转角度的正切值都取2的幂,其中第i个cordic运算单元设定的旋转角度的正切值为2i-1,这样每一阶的旋转运算都可以用移位器和加法器来简单的实现,并且仍然可以达到逐步逼近的效果。角度θi(弧度)正切值tan(θi)i0.7854110.4636480.520.2449790.2530.1243550.12540.0624190.062550.0312400.0312560.0156240.01562570.0078120.0078138………………其中单个cordic运算单元的一种内部实现结构如图1所示,以第i个cordic运算单元为例,包括第二加法器a1、第三加法器a2、第四加法器a3、第一移位器m1、第二移位器m2和取符号模块,第i个cordic运算单元的输入信号为第i-1坐标值(xi-1,yi-1)和第i-1剩余旋转角度zi-1,第i-1坐标值的x轴坐标值xi-1一方面连接第二加法器a1的第一输入端,另一方面通过第二移位器m2后连接第三加法器a2的第一输入端;第i-1坐标值的y轴坐标值yi-1一方面连接第三加法器a2的第二输入端,另一方面通过第一移位器m1后连接第二加法器a1的第二输入端;第四加法器a3的第一输入端连接第i个cordic运算单元设定的旋转角度θi,其第二输入端连接第i-1剩余旋转角度zi-1;取符号模块根据第i-1剩余旋转角度zi-1的正负判断第i-1坐标值(xi-1,yi-1)的旋转方向,从而产生控制信号用于控制第二加法器a1、第三加法器a2和第四加法器a3应该做加法运算还是减法运算,产生第i坐标值(xi,yi)和第i剩余旋转角度zi。其中第i-1坐标值(xi-1,yi-1)为第i个cordic运算单元需要旋转的坐标值,第i-1剩余旋转角度zi-1为第i个cordic运算单元需要旋转的角度,第i坐标值(xi,yi)为第i个cordic运算单元旋转之后的坐标值,第i剩余旋转角度zi为经过第i个cordic运算单元旋转之后的剩余旋转角度。如图3所示,检错纠错模块包括第一寄存器组d1、第二寄存器组d2、第一加法器、比较器和选择器,将级联的n个cordic运算单元中第m个cordic运算单元的输出信号(xm,ym,zm)作为估算值输入到第一寄存器组d1的输入端,其中m为正整数且m<n;将第n个cordic运算单元的输出信号(xn,yn,zn)作为精确值输入到第二寄存器组d2的输入端。第一加法器用于得到第一寄存器组d1和第二寄存器组d2输出信号的差值,比较器将第一加法器的输出信号取绝对值后与设定的阈值信号th进行比较并产生比较器的输出信号,根据第一加法器的输出信号的符号位取绝对值,如果是正号取第一加法器的输出信号做其绝对值,如果是负号则将第一加法器的输出信号按位取反并加一,随后选择器根据比较器的输出信号选择将第一寄存器组d1或者第二寄存器组d2的输出信号作为最终的输出信号(xout,yout,zout),当第一加法器的输出信号的绝对值小于或等于阈值信号th,即精确值(xn,yn,zn)和估算值(xm,ym,zm)的x轴坐标差值的绝对值|xn-xm|、y轴坐标差值的绝对值|yn-ym|和剩余旋转角度差值的绝对值|zn-zm|均在阈值范围之内时,比较器的输出信号控制选择器输出第二寄存器组d2的输出信号(即精确值)作为cordic算法实现电路的输出信号,此时输出信号的精度更高;当第一加法器的输出信号的绝对值大于阈值信号th,即精确值(xn,yn,zn)和估算值(xm,ym,zm)的x轴坐标差值的绝对值|xn-xm|、y轴坐标差值的绝对值|yn-ym|和剩余旋转角度差值的绝对值|zn-zm|中任意一个在预设的阈值范围之外时,比较器的输出信号控制选择器输出第一寄存器组d1的输出信号(即估算值)作为cordic算法实现电路的输出信号,以保证结果和真实值差别不会太大。由于基于cordic的坐标旋转是逐步逼近正确的值,并且阶数越往后,每一个cordic单元需要旋转的角度θ越小,因此本发明将前m阶cordic运算单元的输出作为该cordic运算模块的一个估计值,此时最坏情况下的旋转角度偏差值是剩余的cordic单元朝同一个方向旋转角度的累加值,这个值也可以作为阈值判断模块的阈值。如果应用的精度要求高,那么可以选择更多的阶数来作为估计器。阈值信号th中的中x坐标值和y坐标值可以根据应用指标来调节,当这三个值的差同时均不超过相应的阈值,cordic运算模块的主计算模块的输出才是可靠的,否则均选择估计器部分的输出作为电路的最终输出。通过阈值和电压的合理调节,可以让本发明提出的cordic算法实现电路根据应用指标在精度和功耗之间进行折衷,并且整个电路的稳定性会比较好。这样,即使cordic算法运算模块输出偶尔出错,通过这种容噪技术进行补偿之后,结果的偏差也不会太大,这样偶尔的一些精度的损失在数字信号处理应用中是完全可以接受的。综上所述,本发明通过添加相应的阈值判断模块和选择器将容噪技术应用到cordic电路结构上,利用容噪技术和cordic算法的特点,复用cordic算法运算模块中前m个cordic单元做估计器,不需要额外的电路做估计器,减小了容噪技术的硬件开销;本发明可以让电路工作在关键路径的临界电压,由于输入变化、工艺偏差等因素导致的关键路径延迟变化引起的电路软错误都可以通过容噪技术进行合理的补偿,因此提高了该电路在低压下的稳定性,可以应用于低电压的数字信号处理,如用于便携式设备中的fft或dct等。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1