CN104765713A - 基于分段查表三角函数实现fpga数字信号处理的方法 - Google Patents

基于分段查表三角函数实现fpga数字信号处理的方法 Download PDF

Info

Publication number
CN104765713A
CN104765713A CN201410808364.2A CN201410808364A CN104765713A CN 104765713 A CN104765713 A CN 104765713A CN 201410808364 A CN201410808364 A CN 201410808364A CN 104765713 A CN104765713 A CN 104765713A
Authority
CN
China
Prior art keywords
trigonometric function
look
fpga
value
signal processing
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
CN201410808364.2A
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.)
XiAn Institute of Optics and Precision Mechanics of CAS
Original Assignee
XiAn Institute of Optics and Precision Mechanics of CAS
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 XiAn Institute of Optics and Precision Mechanics of CAS filed Critical XiAn Institute of Optics and Precision Mechanics of CAS
Priority to CN201410808364.2A priority Critical patent/CN104765713A/zh
Publication of CN104765713A publication Critical patent/CN104765713A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)
  • Image Processing (AREA)

Abstract

本发明提出了基于分段查表三角函数实现FPGA数字信号处理的方法,包括以下步骤:将FPGA分为3部分:索引值计算模块、三角函数查找表和线性插值模块;三角函数查找表包含角度和三角函数的对应关系,固化在FPGA中的ROM存储资源中;索引值计算模块根据输入的角度值计算出所对应三角函数查找表中的索引位置;线性插值模块对查表所得的三角函数值进行线性插值得到精度更高的三角函数计算值;本发明基于分段查表三角函数实现FPGA数字信号处理的方法,利用分段式查找表解决了利用FPGA计算三角函数值精度和查找表深度的矛盾,节约了FPGA有限的存储空间。

Description

基于分段查表三角函数实现FPGA数字信号处理的方法
技术领域
本发明涉及FPGA进行数字信号处理领域,尤其涉及基于三角函数实现FPGA数字信号处理的方法。
背景技术
在利用FPGA进行数字信号处理中常会利用三角函数。常用FPGA三角函数实现方法有查表法和CORDIC模块法。其中查表法具有延迟小的特点,但会占用FPGA较多的存储资源。利用CORDIC模块法具有占用存储资源少,但会有较长的计算延迟,在专利CN 102542336中利用CORDIC模块需要大约20个时钟周期计算延迟。本发明采用基于查找表的方法计算三角函数,常规的查表方法需要较大的内存不利于在FPGA中实现,根据要求的精度不同查找表的深度不同,例如计算0°-70°度之间精度为0.01°的sin三角函数,需要查找表的深度为7000,将占用FPGA有限的存储资源。
发明内容
为了解决背景技术中所存在的技术问题,本发明提出了基于分段查表三角函数实现FPGA数字信号处理的方法,利用分段式查找表解决了利用FPGA计算三角函数值精度和查找表深度的矛盾,节约了FPGA有限的存储空间。
本发明的技术解决方案是:基于分段查表三角函数实现FPGA数字信号处理的方法,其特征在于:所述方法包括以下步骤:
1)将FPGA分为3部分:索引值计算模块、三角函数查找表和线性插值模块;三角函数查找表包含角度和三角函数的对应关系,固化在FPGA中的ROM存储资源中;索引值计算模块根据输入的角度值计算出所对应三角函数查找表中的索引位置;线性插值模块对查表所得的三角函数值进行线性插值得到精度更高的三角函数计算值;
2)区间划分:根据三角函数曲线斜率的变化对角度区间进行划分;
3)根据所划分的角度区间生成查找表;
4)按照IEEE-754将浮点型查找表转换为定点的查找表,具体表示方法与浮点查找表的范围和计算精度相关;将定点查找表固化在FPGA的ROM中;
5)根据输入的角度值进行索引,索引值的计算采用索引值=基地址+偏移量;设定查找表划分为K个区间,每个区间采样点的数量为p(n)n=1,2…K;当前角度值θ属于区间m,则 其中运算符表示向下取整计算出索引值 
6)根据索引值查表得出查表值。
上述步骤2)中区间划分为4个区间:0°-30°;30°-50°,50°-70°,70°-90°。
上述步骤3)中查找表利用数值计算工具matlab生成。
上述步骤4)对sin(x)函数的查找表,取值范围是0-1不需要量化整数部分,用十位量化小数部分,量化误差≤1/210
本发明的优点是:利用分段式查找表解决了利用FPGA计算三角函数值精度和查找表深度的矛盾,节约了FPGA有限的存储空间;利用线性插值提高了三角函数计算精度;FPGA实现结构简单;采用全流水结构输出延时小,只需输入角度经过10个周期左右可计算出结果。
附图说明
图1是基于FPGA的三角函数实现框图;
图2是区间划分0°-90°曲线示意图;
图3是区间划分0°-30°曲线示意图;
图4是区间划分30°-50°曲线示意图;
图5是区间划分50°-70°曲线示意图;
图6是区间划分70°-90°曲线示意图;
图7是线性差值示意图;
图8是FPGA实现流水结构图;
具体实施方式
本发明利用三角函数曲线斜率的变化规律,将需要计算的角度区间划分为 不同的区间,不同区间查找表的精度不同。划分的依据是将曲线斜率近似的曲线段划分为同一区间段,曲线斜率大的区间段因曲线变化率大曲线较陡峭需要有较多采样点。曲线斜率小的区间段曲线变化率小曲线较平缓查找表包含较少的采样点。为进一步提高计算精度采用线性插值方法。整个计算过程可以划分为多级流水线来保证计算的实时性。实现结构图如图1所示FPGA中包含3部分处理模块:索引值计算模块、三角函数查找表和线性插值模块。三角函数查找表包含角度和三角函数的对应关系,固化在FPGA中的ROM(只读存储器)存储资源中。索引值计算模块根据输入的角度值计算出所对应三角函数查找表中的索引位置。线性插值模块对查表所得的三角函数值进行线性插值得到精度更高的三角函数计算值。
本发明的实现步骤是:
1、首先区间划分:根据三角函数曲线斜率的变化对角度区间进行划分。以sin(x)0-90度为例,如图2所示随角度增加,sin(x)曲线变化趋平缓。根据这一特点将曲线划分为4个区间:0°-30°,30°-50°,50°-70°,70°-90°。
2、按照下表1生成查找表,查找表的生成可借助数值计算工具如matlab。
表1 角度区间划分表
3、按照IEEE-754将浮点型查找表转换为定点的查找表,具体表示方法与浮点查找表的范围和计算精度相关。例如对sin(x)函数的查找表,取值范围是0-1不需要量化整数部分,用十位量化小数部分,量化误差≤1/210。将定点查找表固化在FPGA的ROM中。
4、根据输入的角度值进行索引,索引值的计算采用索引值=基地址+偏移量。设定查找表划分为K个区间,每个区间采样点的数量为p(n)n=1,2…K。当前角 度值θ属于区间m,则 其中运算符表示向下取整由上述方法可以计算出索引值 
5、根据索引值查表得出查表值,为提高计算精度减少计算误差利用线性插值计算出最终结果。其具体过程如图7所示。由过程4计算的索引值可得θ位于θi和θi+1之间,且三角函数值在θi和θi+1之间可近似于线性变化,由线性插值计算公式可得 y = y i + ( y i + 1 - y i ) θ - θi θi + 1 - θi , 因采样间隔为其中 θi + 1 - θi = 1 2 k , 可将除法运算简化为移位运算,在FPGA的实现插值计算模块时只需通过加减法、乘法和移位运算计算实现。
为提高计算的实时性,可将FPGA实现电路划分为四级流水线如图8所示。其中第一级流水线计算输入角度落入划分的区间段。第二级流水线依据第一级流水的结果可计算出当前角度对应的基地址和偏移量从而得出对应查找表的地址i。第三级流水利用查找表的地址读取相应的值yi+1和yi。第四级流水利用线性插值公式计算出角度对应的三角函数值。

Claims (5)

1.基于分段查表三角函数实现FPGA数字信号处理的方法,其特征在于:所述方法包括以下步骤:
1)将FPGA分为3部分:索引值计算模块、三角函数查找表和线性插值模块;三角函数查找表包含角度和三角函数值的对应关系,固化在FPGA中的ROM存储资源中;索引值计算模块根据输入的角度值计算出所对应三角函数查找表中的索引位置;线性插值模块对查表所得的三角函数值进行线性插值得到精度更高的三角函数计算值;
2)根据所划分的角度区间生成查找表;
3)按照IEEE-754将浮点型查找表转换为定点的查找表,具体表示方法与浮点查找表的范围和计算精度相关;将定点查找表固化在FPGA的ROM中;
4)根据输入的角度值进行索引,索引值的计算采用索引值=基地址+偏移量;设定查找表划分为K个区间,每个区间采样点的数量为p(n)n=1,2…K;当前角度值θ属于区间m,则 其中运算符表示向下取整计算出索引值 
5)根据索引值查表得出查表值;
6)对查表所得的三角函数值进行线性插值得到精度更高的三角函数计算
值。
2.根据权利要求1所述的基于分段查表三角函数实现FPGA数字信号处理的方法,其特征在于:所述步骤2)中区间划分,根据三角函数曲线斜率的变化对角度区间进行划分。
3.根据权利要求2所述的基于分段查表三角函数实现FPGA数字信号处理的方法,其特征在于:所述步骤3)中查找表利用数值计算工具matlab生成。
4.根据权利要求3所述的基于分段查表三角函数实现FPGA数字信号处理的方法,其特征在于:所述步骤4)对三角函数的查找表量化,量化误差≤1/2n,n为采样点的量化位数。
5.根据权利要求4所述的基于分段查表三角函数实现FPGA数字信号处理的方法,其特征在于:对查表所得的三角函数值采用线性插值。
CN201410808364.2A 2014-12-20 2014-12-20 基于分段查表三角函数实现fpga数字信号处理的方法 Pending CN104765713A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410808364.2A CN104765713A (zh) 2014-12-20 2014-12-20 基于分段查表三角函数实现fpga数字信号处理的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410808364.2A CN104765713A (zh) 2014-12-20 2014-12-20 基于分段查表三角函数实现fpga数字信号处理的方法

Publications (1)

Publication Number Publication Date
CN104765713A true CN104765713A (zh) 2015-07-08

Family

ID=53647553

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410808364.2A Pending CN104765713A (zh) 2014-12-20 2014-12-20 基于分段查表三角函数实现fpga数字信号处理的方法

Country Status (1)

Country Link
CN (1) CN104765713A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106370186A (zh) * 2016-09-18 2017-02-01 时瑞科技(深圳)有限公司 传感器的快速低功耗融合系统及方法
CN109239736A (zh) * 2018-07-28 2019-01-18 上海航天电子有限公司 一种相控阵天线波束指向误差修正方法
CN109308520A (zh) * 2018-09-26 2019-02-05 阿里巴巴集团控股有限公司 实现softmax函数计算的FPGA电路及方法
CN110633447A (zh) * 2019-08-30 2019-12-31 中国人民解放军军事科学院国防科技创新研究院 基于fpga的球面距离定点计算方法及其计算装置
CN111178516A (zh) * 2019-12-11 2020-05-19 浙江大学 一种基于分段查找表的softmax函数计算方法及硬件系统
CN116185126A (zh) * 2022-09-08 2023-05-30 重庆位图信息技术有限公司 一种基于查找表的复杂函数输出方法及其装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102096844A (zh) * 2011-03-07 2011-06-15 哈尔滨工业大学 基于fpga的rbf函数计算模块
CN102542336A (zh) * 2011-12-23 2012-07-04 西安奇维科技股份有限公司 一种基于fpga 的三角函数实现方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102096844A (zh) * 2011-03-07 2011-06-15 哈尔滨工业大学 基于fpga的rbf函数计算模块
CN102542336A (zh) * 2011-12-23 2012-07-04 西安奇维科技股份有限公司 一种基于fpga 的三角函数实现方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
唐利翰: "《多天线信号合并中相位加权值的修正查表算法及FPGA实现》", 《数字通信》 *
黄聚永: "《基于查找表和Newton插值算法的正余弦函数的FPGA实现》", 《继电器》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106370186A (zh) * 2016-09-18 2017-02-01 时瑞科技(深圳)有限公司 传感器的快速低功耗融合系统及方法
CN106370186B (zh) * 2016-09-18 2019-12-20 时瑞科技(深圳)有限公司 传感器的快速低功耗融合系统及方法
CN109239736A (zh) * 2018-07-28 2019-01-18 上海航天电子有限公司 一种相控阵天线波束指向误差修正方法
CN109308520A (zh) * 2018-09-26 2019-02-05 阿里巴巴集团控股有限公司 实现softmax函数计算的FPGA电路及方法
CN109308520B (zh) * 2018-09-26 2022-05-13 创新先进技术有限公司 实现softmax函数计算的FPGA电路及方法
CN110633447A (zh) * 2019-08-30 2019-12-31 中国人民解放军军事科学院国防科技创新研究院 基于fpga的球面距离定点计算方法及其计算装置
CN111178516A (zh) * 2019-12-11 2020-05-19 浙江大学 一种基于分段查找表的softmax函数计算方法及硬件系统
CN116185126A (zh) * 2022-09-08 2023-05-30 重庆位图信息技术有限公司 一种基于查找表的复杂函数输出方法及其装置

Similar Documents

Publication Publication Date Title
CN104765713A (zh) 基于分段查表三角函数实现fpga数字信号处理的方法
US10489113B2 (en) Quick operation device for nonlinear function, and method therefor
CN104484703A (zh) 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路
CN102722352A (zh) 一种Booth乘法器
CN103970718A (zh) 一种快速傅里叶变换实现装置及方法
CN103677737A (zh) 基于进位节省加法器的低延时cordic三角函数实现的方法及装置
CN103559019A (zh) 一种通用浮点全流水fft运算ip核
CN109521992B (zh) 一种无乘法器的基于cordic算法的线性调频信号生成方法
CN102799411B (zh) 浮点数累加电路及其实现方法
CN102096844A (zh) 基于fpga的rbf函数计算模块
CN103901405B (zh) 实时块浮点频域四路脉冲压缩器及其脉冲压缩方法
CN102566965B (zh) 一种误差平坦的浮点数对数运算装置
CN103809931A (zh) 一种专用高速浮点指数运算器的设计
CN103092559B (zh) 用于hevc标准下dct/idct电路的乘法器结构
CN103365827A (zh) 一种高精度正弦/余弦函数的计算方法
CN103645883A (zh) 基于fpga的高基模乘器
CN101551790B (zh) 应用于通信领域的快速傅立叶变换实现方法及装置
CN102789446A (zh) 基于cordic算法的dds信号杂散抑制方法及系统
CN107657078B (zh) 基于fpga的超声相控阵浮点聚焦发射实现方法
CN101854172A (zh) 一种基于二维正弦表的数控振荡器并行设计方法
CN105204003A (zh) 一种新型的基于fpga的波控运算方法
CN102654574B (zh) 基于fpga的多普勒中心估计方法
CN111984057B (zh) 基于gpu的数字nco高精度并行实现方法
CN103365826A (zh) 一种小面积的基-3fft蝶形单元
CN103761074B (zh) 一种流水结构定点fft字长配置方法

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20150708

RJ01 Rejection of invention patent application after publication