超越函数装置以及用该装置实现超越函数的方法 【技术领域】
本发明涉及一种超越函数装置。还涉及用这种超越函数装置实现超越函数的方法。
背景技术
文献1“专利号为US20060200510的美国专利”公开了一种CORDIC角度处理装置,该装置中存在一个缩放单元,在CORDIC变换之前,该装置先对输入的数据做左移变换,处理结束,再采用相反的变换过程。该装置通过左移操作减少处理中的舍入误差,可以提高CORDIC角度的处理精度。但是CORDIC变换中由于定点数据表示引起的误差非常大,该改进措施获得的精度提高比较有限。
文献2“专利号为US20060233284的美国专利”公开了一种CORDIC旋转装置,该装置采用定点CORDIC变换实现角度旋转,在CORDIC的迭代过程中,采用了随机进位。该装置为了提高处理的精度,将传统的就近舍入改进为随机舍入。但是,随机舍入在极端情况下的误差非常大,影响系统的不稳定性。
文献3“专利号为US20030097388的美国专利”公开了一种向量旋转CORDIC装置,该装置采用两个单精度数的和,该单精度数的指数是以2为底的有符号数。通过采取和的形式,可以减少角度处理的误差。但是,在以浮点数为处理对象的CORDIC装置中,该结构并不能减少浮点处理的延迟。
参照图5及图6,公知的超越函数装置包括预处理单元,处理单元及后处理单元。在浮点CORDIC装置中,处理单元包含指数部分和尾数部分,由于采用了浮点结构,处理精度高,但是每次迭代需要进行指数对阶、尾数相加、浮点数的规格化及舍入,电路延迟大,而且实现复杂。在定点CORDIC装置中,处理单元由整数结构组成,处理所需的硬件代价及延迟都非常小,但是造成的舍入误差比较大。因此,在超越函数装置中,浮点CORDIC装置及定点CORDIC装置都存在缺陷需要克服。
【发明内容】
为了克服浮点CORDIC结构电路延迟大、定点CORDIC结构处理精度低的不足,本发明提供一种超越函数装置,采用高精度、顺序迭代的HPOR CORDIC硬件结构生成超越函数,该硬件结构将处理中产生的中间变量的指数变化映射到迭代次数上,消除了浮点超越函数装置的指数操作,同时不会引入不必要的舍入误差。该HPOR CORDIC超越函数装置同时具备低延迟、低硬件代价、高处理精度的特点。
本发明还提供利用这种超越函数硬件装置实现超越函数的方法。首先对输入值进行预处理,将输入值转化到一定范围。生成预处理后输入值的指数值,将输入值的指数值、尾数值作为输入量输入到HPOR CORDIC单元,HPOR CORDIC经过初始化后开始工作,最后再将处理结果进行规格化,并转换为浮点数输出。
本发明解决其技术问题所采用的技术方案:一种超越函数装置,包括预处理单元、处理单元和后处理单元,其特点是:所述处理单元由计数寄存器1、计数寄存器2、X寄存器及其处理通路、Y寄存器及其处理通路、Z寄存器及其处理通路、控制状态机组成,向X寄存器、Y寄存器以及Z寄存器输入初始值,控制状态机发出处理命令,X寄存器处理通路、Y寄存器处理通路及Z寄存器处理通路在每个时钟周期分别对其对应的寄存器数值进行处理,将处理结果再次保存到对应的寄存器中,每处理一次,计数寄存器1加1,计数寄存器2加1,计数寄存器1及计数寄存器2的值等于预设值时,控制状态机发出停止命令,X寄存器及Y寄存器输出处理结果。
一种利用上述超越函数装置实现超越函数的方法,其特点是包括以下步骤:
(a)输入值预处理,实现三角函数时,将输入值换算到[-π/4,π/4],实现双曲函数时,将输入值换算到[-1/2,1/2];
(b)处理预处理后的输入值的指数,并分别在尾数最高位及最低位扩展三位;
(c)将输入值的指数值作为计数器初值,输入值的尾数作为Z寄存器初值,根据指令对X寄存器,Y寄存器赋初值;
(d)处理单元工作;
处理中,仅对尾数部分进行处理,指数部分不参与处理;
(e)根据计数器值生成处理结果的指数部分,根据X寄存器,Y寄存器的值生成尾数部分,并对处理结果做规格化,返回步骤(a)。
本发明的有益效果是:由于采用HPOR CORDIC装置,将处理中产生的中间值的指数与计数器的变化建立一一对应关系,计数寄存器2的变化代表了指数的变化,因此在处理中仅有尾数部分参与处理,消除了浮点CORDIC中的指数处理及尾数对阶,该装置同时克服了浮点CORDIC装置处理延迟大、定点CORDIC装置处理精度差的缺点,而且硬件实现代价非常小。
下面结合附图和实施例对本发明做详细说明。
【附图说明】
图1是本发明超越函数装置的结构框图。
图2是图1中预处理单元的详图。
图3是图1中处理单元的详图。
图4是图1中后处理单元的详图。
图5是公知地浮点超越函数装置的结构框图。
图6是公知的定点超越函数装置的结构框图。
【具体实施方式】
参照图1~4,本发明在构造上采用了HPOR CORDIC结构的超越函数装置。整个装置由预处理单元、处理单元及后处理单元三大部分组成。预处理单元用于对超越函数的输入值进行变换,处理单元负责实施具体的处理,后处理单元对处理单元的输出结果做规格化处理。预处理单元接收处理器发出的处理指令及浮点源操作数,预处理单元的选择器及除法器可根据处理器指令的不同对源操作数做规格化处理:如果处理器指令为双曲函数,将源操作数规格化到[-1/2,1/2]内,如果处理器指令为三角函数,将源操作数规格化到[-π/4,π/4]。预处理单元将规格化后的源操作数分解为符号位S、指数位及尾数位,处理规格化后源操作数的指数E,并将该源操作数的尾数由64位扩展为70bit数Man,预处理单元将处理后的S、E、Man输出到处理单元。处理单元将S及Man组合并保存到Z寄存器中,将E保存到计数器2中,同时根据指令对计数寄存器1、X寄存器、Y寄存器做初始化。初始化完成后,在状态机的控制下,处理单元开始工作,总共迭代64次,处理中所需的参数保存在ROM中,由状态机控制存取。处理完成后输出处理结果X、Y及ES。后处理单元根据ES、X、Y生成中间结果,对中间结果进行规格化及舍入处理并输出。
整个电路的信息流向为:处理器发出超越函数指令及源操作数,预处理模块接收处理器指令及源操作数,根据处理器指令将源操作数规格化到设定的数据域,并将源操作数分解为S、Man及E,这三个数作为处理单元的输入保存在Z寄存器、计数寄存器2中。处理单元经初始化、64次迭代后输出处理结果X、Y及ES,后处理单元接收这三个数及符号位,将其组合成浮点数,最后做规格化、舍入操作并输出。
超越函数装置实现超越函数的方法具体如下:
(1)预处理单元接收处理器的超越函数指令及80位IEEE754浮点格式的源操作数。
(2)预处理单元根据处理器指令对源操作数做规格化处理:如果处理器指令为三角函数,将源操作数换算到[-π/4,π/4],如果处理器指令为双曲函数,将源操作数换算到[-1/2,1/2]。
(3)预处理单元对规格化的源操作数按照符号位S、指数位、尾数位做分解,处理预处理后源操作数的指数E,并分别在尾数Man最高位及最低位扩展三位。
(4)处理单元初始化:处理单元接收S、E、Man,分别将S及Man保存在Z寄存器及计数寄存器2中,置计数寄存器1为0,从ROM中输出初值到X寄存器,置Y寄存器为0。
(5)处理单元开始工作,处理中只有尾数参与处理,指数位不参与处理,每个时钟周期迭代一次,总共迭代64个时钟周期。
(6)后处理单元接收处理单元处理结果:X、Y及ES,并根据符号位S组成浮点数。
(7)后处理单元对浮点格式的处理结果做规格化及舍入处理。
(8)输出处理结果,返回到步骤(1)。
从执行流程上可以看出,该装置有以下几个特点:首先,在预处理单元中对浮点源操作数进行分解,将源操作数分解为符号位、指数位及尾数位,符号位及指数位不参与处理过程,仅作为计数器的初值,在处理单元的迭代过程中,X寄存器、Y寄存器及Z寄存器的移位操作、加法操作仅有浮点数的尾数参与处理,消除了浮点CORDIC装置的指数对阶及尾数规格化操作,减少了电路延迟,同时不损失电路的处理精度。