CN104834502A - 一种dsp中高效cordic指令实现方法 - Google Patents

一种dsp中高效cordic指令实现方法 Download PDF

Info

Publication number
CN104834502A
CN104834502A CN201510236473.6A CN201510236473A CN104834502A CN 104834502 A CN104834502 A CN 104834502A CN 201510236473 A CN201510236473 A CN 201510236473A CN 104834502 A CN104834502 A CN 104834502A
Authority
CN
China
Prior art keywords
instruction
cordic
dsp
implementation method
computing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201510236473.6A
Other languages
English (en)
Inventor
王和国
陶建平
刘勇
韩景通
孙振玮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Grand Cloud Co Ltd
Original Assignee
Jiangsu Grand Cloud Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jiangsu Grand Cloud Co Ltd filed Critical Jiangsu Grand Cloud Co Ltd
Priority to CN201510236473.6A priority Critical patent/CN104834502A/zh
Publication of CN104834502A publication Critical patent/CN104834502A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

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

Description

一种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的符号函数:
S n = - 1 if Z n < 0 + 1 if Z n &GreaterEqual; 0
经过N次迭代后,CORDIC公式的输出变为:
XN=K[X0cos(Z0)-Y0sin(Z0)]
YN=K[X0sin(Z0)+Y0cos(Z0)]
ZN=0
其中:
K = &Pi; n = 0 N 1 + 2 - 2 n
若: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公式的输出变为:
X N = K ( ( X 0 ) 2 + ( Y 0 ) 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。
上述说明示出并描述了本发明的优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应当看作是对其他实施例的排出,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

Claims (7)

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的运算结果。
CN201510236473.6A 2015-05-11 2015-05-11 一种dsp中高效cordic指令实现方法 Pending CN104834502A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510236473.6A CN104834502A (zh) 2015-05-11 2015-05-11 一种dsp中高效cordic指令实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510236473.6A CN104834502A (zh) 2015-05-11 2015-05-11 一种dsp中高效cordic指令实现方法

Publications (1)

Publication Number Publication Date
CN104834502A true CN104834502A (zh) 2015-08-12

Family

ID=53812414

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510236473.6A Pending CN104834502A (zh) 2015-05-11 2015-05-11 一种dsp中高效cordic指令实现方法

Country Status (1)

Country Link
CN (1) CN104834502A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651200A (zh) * 2016-04-26 2020-09-11 中科寒武纪科技股份有限公司 一种用于执行向量超越函数运算的装置和方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CHIH-HSIU LIN, ET.AL: "Mixed-Scaling-Rotation CORDIC (MSR-CORDIC) Algorithm and Architecture for High-Performance Vector Rotational DSP Applications", 《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS I: REGULAR PAPERS》 *
RAY ANDRAKA: "A survey of CORDIC algorthims FPGA based computers", 《FPGA "98 PROCEEDINGS OF THE 1998 ACM/SIGDA SIXTH INTERNATIONAL SYMPOSIUM ON FIELD PROGRAMMABLE GATE ARRAYS》 *
SANG YOON PARK. ET.AL: "Fixed-Point Error Analysis of CORDIC Processor", 《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS—I: REGULAR PAPERS》 *
孙明革: "CORDIC 算法在定点DSP 中的应用", 《吉林化工学院学报》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651200A (zh) * 2016-04-26 2020-09-11 中科寒武纪科技股份有限公司 一种用于执行向量超越函数运算的装置和方法
CN111651200B (zh) * 2016-04-26 2023-09-26 中科寒武纪科技股份有限公司 一种用于执行向量超越函数运算的装置和方法

Similar Documents

Publication Publication Date Title
CN109478139B (zh) 用于共享存储器中的访问同步的装置、方法和系统
US9851970B2 (en) Method and apparatus for performing reduction operations on a set of vector elements
CN117349584A (zh) 实行16位浮点矩阵点积指令的系统和方法
CN110879724A (zh) 用于深度学习和其它算法的fp16-s7e8混合精度
CN117407058A (zh) 用于执行用于复数的融合乘-加指令的系统和方法
US10929127B2 (en) Systems, methods, and apparatuses utilizing an elastic floating-point number
US20140089634A1 (en) Apparatus and method for detecting identical elements within a vector register
US10761849B2 (en) Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction
US10909259B2 (en) Instruction execution that broadcasts and masks data values at different levels of granularity
US20140052968A1 (en) Super multiply add (super madd) instruction
US10860315B2 (en) Systems, apparatuses, and methods for arithmetic recurrence
CN116009814A (zh) 用于经融合的乘加的系统、装置和方法
CN108804137A (zh) 用于双目的地类型转换、累加和原子存储器操作的指令
EP3398057A1 (en) Systems, apparatuses, and methods for strided loads
TW201717052A (zh) 用以提供向量包裝之直方圖功能的方法,裝置,指令及邏輯
US10437562B2 (en) Apparatus and method for processing sparse data
CN110909882A (zh) 用于执行水平铺块操作的系统和方法
CN108351782A (zh) 用于跨步访问的系统、装置和方法
CN104834502A (zh) 一种dsp中高效cordic指令实现方法
CN109643235B (zh) 用于多源混合操作的装置、方法和系统
US20170192789A1 (en) Systems, Methods, and Apparatuses for Improving Vector Throughput
KR101539173B1 (ko) 단 정수 곱셈들의 수를 감소시키기 위한 시스템들, 장치들 및 방법들
US10241794B2 (en) Apparatus and methods to support counted loop exits in a multi-strand loop processor
CN109328334B (zh) 用于累积式求和的系统、装置和方法
CN109328333B (zh) 用于累积式乘积的系统、装置和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20150812

WD01 Invention patent application deemed withdrawn after publication