一种DSP中高效CORDIC指令实现方法.pdf

上传人:a3 文档编号:22078 上传时间:2018-01-12 格式:PDF 页数:8 大小:548.36KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510236473.6

申请日:

2015.05.11

公开号:

CN104834502A

公开日:

2015.08.12

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 9/302申请日:20150511|||公开

IPC分类号:

G06F9/302; G06F17/15

主分类号:

G06F9/302

申请人:

江苏宏云技术有限公司

发明人:

王和国; 陶建平; 刘勇; 韩景通; 孙振玮

地址:

215634江苏省苏州市张家港市保税区新兴产业育成中心A幢301B室江苏宏云技术有限公司

优先权:

专利代理机构:

常州市维益专利事务所32211

代理人:

陆华君

PDF下载: PDF下载
内容摘要

本发明涉及一种用于DSP中高效CORDIC指令实现方法,该方法规范一种CORDIC运算的DSP指令,该指令内嵌至DSP内核流水线中,给出一套DSP内部模块化实现CORDIC计算三角函数的方法。通过内嵌至DSP内核流水线的CORDIC指令来实现CORDIC运算,简化了软件编程复杂度,降低了软硬件交互的损耗,可以高效的完成三角函数的计算。并且基于模块化设计的CORDIC运算,极大的降低了硬件的损耗,节省了芯片的成本,同时使得基于DSP实现的CORDIC运算达到相当高的精度。

权利要求书

1.  一种DSP中高效CORDIC指令实现方法,其特征在于,所述方法包括:
定义一种CORDIC运算的DSP指令,用于三角函数的计算,给出该指令内嵌至DSP内核流水线中的方法,详细说明一套DSP内部模块化实现CORDIC计算三角函数的方法。

2.
  根据权利要求1所述的指令实现方法,其特征在于,所述DSP指令编码内容包括指令识别码、模式选择以及输入参数通用寄存器序号。

3.
  根据权利要求2所述的方法,其特征在于,基于指令实现的CORDIC运算,内嵌至DSP内核的流水线(pipeline)中,无需进行如中断或查询的方式来获取结果。

4.
  根据权利要求2所述的指令实现方法,其特征在于,CORDIC指令所运算得到的结果,可以被下一条指令直接使用,指令与指令之间无需插入等待周期。

5.
  根据权利要求1所述的指令实现方法,其特征在于,指令的实现方法通过分解CORDIC运算的过程,使得复用一套资源实现CORDIC多种模式的计算。

6.
  根据权利要求5所述的指令实现方法,其特征在于,CORDIC运算分解实现包括几大主要的组成部分:模式选择、输入归一化、CORDIC内核、结果归一化。

7.
  根据权利要求6所述的指令实现方法,其特征在于,定义了一种迭代次数为I,内部位宽为N,来得到三角函数精度为E的运算结果。

说明书

一种DSP中高效CORDIC指令实现方法
技术领域
本发明涉及DSP处理器的CORDIC指令集,尤其是为实现该指令集所需的硬件实现架构。
背景技术
常用的三角函数,尤其是正余弦,在各种信号处理系统中有着广泛的应用,且一般有实时性的要求。实现三角函数常用的近似计算方法主要有迭代法、级数法、查表法以及CORDIC法,相对于其他算法,CORDIC算法可以达到很高的精度。
在集成电路中,实现CORDIC算法有两种方法:DSP软件编程实现方法和硬件加速器的方法。尽管DSP编程可以实现CORDIC运算,但是DSP软件编程实现存在编程复杂、软件开销大、实时性不强、精度不高等不利因素。硬件加速器的方法,克服了软件的部分问题,但是软硬件之间存在交互,效率受限。本发明为针对这两种现有实现方法的不足,以CORDIC指令嵌入到DSP内核的流水线中,实现了编程简单、软件开销小,实时性强,精度高,无需软硬件交互等优点。
发明内容
本发明的目的在于提供一种DSP中高效CORDIC指令实现方法,以克服现有技术中的不足。
为实现上述目的,本发明提供如下技术方案:
本申请实施例公开了一种DSP中高效CORDIC指令实现方法,其特征在于,所述方法包括:
定义一种CORDIC运算的DSP指令,用于三角函数的计算。给出该指令内嵌至DSP内核流水线中的方法,详细说明一套DSP内部模块化实现CORDIC计算三角函数的方法。
优选的,其特征在于,包括指令识别码、模式选择以及输入参数通用寄存器序号。
优选的,其特征在于,基于指令实现的CORDIC运算,内嵌至DSP内核的流水线(pipeline)中,无需进行如中断或查询的方式来获取结果,简化了软硬件交互,提高了运算效率。
进一步的,其特征在于CORDIC指令所运算得到的结果,可以被下一条指令直接使用,指令与指令之间无需插入等待周期。
优选的,其特征在于,给出了该指令的实现方法,该方法通过分解CORDIC运算的过程,使得复用一套资源实现CORDIC多种模式的计算。
进一步的,其特征在于,CORDIC运算分解实现包括几大主要的组成部分:模式选择、输入归一化、CORDIC内核、结果归一化。
进一步的,其特征在于,定义了一种迭代次数为I,内部位宽为N,来得到三角函数精度为E的运算结果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为DSP架构整体框图。
图2为本法明具体实施例DSP CORDIC指令流水线图。
图3为本法明具体实施例16bit DSP CORDIC指令编码示例。
图4为本法明具体实施例CORDIC指令的实现框图。
图5为本法明具体实施例CORDIC指令实现的运行内核图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更佳清楚、明白,以下结合附图和实施例,对本发明进行进一步的详细说明,应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
本发明的整体思路为:定义一种CORDIC运算的DSP指令,给出该指令内嵌至DSP内核流水线中的方法,详细说明一套DSP内部模块化实现CORDIC计算三角函数的方法。
CORDIC迭代在圆周系统的迭代算法为:
Xn+1=Xn-SnYn2-n
Yn+1=Yn+SnXn2-n
Zn+1=Zn-Sntan-1(2-n)
在旋转模式中(正余弦模式),Sn为Zn的符号函数:
Sn=-1ifZn<0+1ifZn&GreaterEqual;0]]>
经过N次迭代后,CORDIC公式的输出变为:
XN=K[X0cos(Z0)-Y0sin(Z0)]
YN=K[X0sin(Z0)+Y0cos(Z0)]
ZN=0
其中:
K=Πn=0N1+2-2n]]>
若:Y0=0,Z0=α,α∈[-pi/2,pi/2]
那么N次迭代后CORDIC公式的输出变为:
[XN,YN,ZN]=[cos(α),sin(α),0]
在向量模式中(反正切模式),Sn与Xn、Yn的相乘的符号数相关:
Sn=-sign(Xn*Yn)
CORDIC经过N次迭代后,CORDIC公式的输出变为:
XN=K((X0)2+(Y0)2)]]>
YN=0↓
ZN=Z0+tan-1(Y0/X0)
若:Z0=0,那么N次迭代后CORDIC计算得到的ZN为角度,XN为开根号。
下文将以16bit的一个DSP内核为例,来说明CORDIC指令内嵌处理器流水线的方式以及指令的编码方式,本发明所述的CORDIC指令不限于所内嵌的处理器内核,不限于处理器的位宽数,也不限于指令编码每BIT所代表的含义。
如图1所示为DSP架构,108为DSP内核,和内核相连接的有程序存储器(PM)101、数据存储器0(DM0)102、数据存储器1(DM1)103以及程序总线104、数据总线105、数据总线106。DSP内核主要的模块107有PC 控制、通用寄存器Register File以及运算模块(ALU、MAC、DIV、CORDIC),CORDIC也即为本发明添加至DSP内核中的模块。
DSP的CORDIC指令需要几个组成部分:指令识别码、模式选择、通用寄存器序号部分。指令识别码和通用寄存器序号部分为必须,模式选择部分可以单独提取出来,也可以通过在指令识别码来区分所计算的模式。以一个16DSP处理器为例来说明CORDIC指令的编码:设该DSP处理器高3bit为指令识别码,高3bit为101来指示该指令为CORDIC指令;通过第6bit来指示该CORDIC计算的模式,为计算正余弦模式或者反正切模式;低3bit和次低3bit为输入通用寄存器序号,指示CORDIC运算输入参数所使用的内部通用寄存器,不同的模式,这两个寄存器所代表的含义不尽相同。针对正余弦模式,低3bit代表计算正余弦角度Z0所对应的通用寄存器。针对反正切模式,低3bit代表向量(X0,Y0)的X0,所对应的通用寄存器的序号,次低3bit代表向量(X0,Y0)的Y0所对应的通用寄存器的序号。
DSP内核通过CORDIC指令实现CORDIC运算,首先DSP从PM中取出CORDIC指令202,CORDIC指令经过译码203之后,CORDIC指令进入执行阶段。CORDIC指令运算需要M个cycle即可得到结果,在M个cycle之后即可使用CORDIC的运算结果。CORDIC指令译码的同时,已经把下一条指令(指令2)205从PM中读出,在CORDIC指令执行的第一个cycle,指令2完成译码过程,待CORDIC指令执行完之后,即可立即执行指令2。另外,在CORDIC指令执行的最后一个cycle,完成接下来一条指令的读取209。从整个DSP处理的流水来看,CORDIC指令插入DSP处理器的流水线中,并且也无需插入等待周期,下一个指令即可使用CORDIC的结果。
为支持上面所述圆周系统的正余弦和反正切两种模式,CORDIC指令的实现分为几大部分,输入归一化模块408、CORDIC内核模块409、结果归一化模块410、模式选择401、输入参数402/403/404、输出结果411/412/413。模式选择用于选择是正余弦计算还是反正切计算,通过模式选择来控制归一化、运算内核、输出结果处理等在不同模式下,差异化处理的不同处理方式。输入归一化模块用于在不同模式下可以复用CORDIC内核,这样就可以使用同一套内核资源完成不同模式的运算,极大的节省了硬件的开销,降低了芯片 的成本。CORDIC内核模块完成CORDIC的迭代运算,迭代完成之后把结果送至结果归一化模块。归一化模块在不同的模式下,对CORDIC迭代之后的结果进行不同的处理。
CORDIC内核409实现的内容也即上文中的迭代过程,分为XN/YN/ZN三部分迭代。实现的过程中,需要内部存储tan^(-1)(2^(-n))508定点化之后的数据以备迭代,其中501/504/507/508实现ZN的迭代,502/505/510/511/512实现XN的迭代,503/506/513/514/515实现了YN的迭代。516/517/518为迭代的过程数据,同时在完成最后一次迭代之后,也为迭代完成的数据,输入结果归一化处理。
CORDIC迭代次数与指令执行周期数成正比,与计算结果的精度成反比。CORDIC迭代的内部数据宽度与所消耗的资源成正比,与计算结果的精度成反比。迭代次数少,则执行周期数少,精度低;迭代次数多,则执行周期数多,精度高。内部数据位宽少,则所消耗资源少,精度低;内部数据位宽多,则所需资源多,精度高。
使用误差的均方根来表示CORDIC的精度,如下公式:

为得到精度为E的计算,需要迭代次数为I,内部位宽为N来配合完成。
假设内部使用16次迭代完成CORDIC算法来计算三角函数,同时把内部数据宽度扩展至33BIT进行迭代操作,CORDIC所计算的三角函数达到了相当高的精度:
CORDIC指令计算得到的正余弦和理论的正余弦(SIN/COS)误差的均方根E=Xrms=9.25e-5。
CORDIC指令计算得到的向量反正切(atan)和理论的反正切误差的均方根E=Xrms=6.45e-5。
上述说明示出并描述了本发明的优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应当看作是对其他实施例的排出,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和 变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

一种DSP中高效CORDIC指令实现方法.pdf_第1页
第1页 / 共8页
一种DSP中高效CORDIC指令实现方法.pdf_第2页
第2页 / 共8页
一种DSP中高效CORDIC指令实现方法.pdf_第3页
第3页 / 共8页
点击查看更多>>
资源描述

《一种DSP中高效CORDIC指令实现方法.pdf》由会员分享,可在线阅读,更多相关《一种DSP中高效CORDIC指令实现方法.pdf(8页珍藏版)》请在专利查询网上搜索。

本发明涉及一种用于DSP中高效CORDIC指令实现方法,该方法规范一种CORDIC运算的DSP指令,该指令内嵌至DSP内核流水线中,给出一套DSP内部模块化实现CORDIC计算三角函数的方法。通过内嵌至DSP内核流水线的CORDIC指令来实现CORDIC运算,简化了软件编程复杂度,降低了软硬件交互的损耗,可以高效的完成三角函数的计算。并且基于模块化设计的CORDIC运算,极大的降低了硬件的损耗,节。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1