【经验】如何在FPGA上实现低成本开根号运算?

2020-07-22 智多晶
FPGA,西安智多晶 FPGA,西安智多晶 FPGA,西安智多晶 FPGA,西安智多晶

开根号运算是科学计算和工程应用中基本而重要的运算之一,在QuartusII和ISE开发软件中,都集成了开根号的ip核,这些底层源码对于用户来说是不可见的,那么如何在西安智多晶FPGA中实现开根号运算,是本文要探讨的课题。


开根号运算介绍

开根号运算属于非线性运算,无法用解析的方程来求解,常利用迭代法来逐次逼近求解,常用的开方算法有牛顿-莱福森算法、逐次逼近算法和非冗余开方算法等。这几种算法,单纯从FPGA应用的角度来看,逐次逼近算法是最适合在FPGA上实现。利用FPGA的流水线结构,可以实现全并行数据吞吐的开方运算,其资源开销较大。然而在很多应用场合,开方运算并不需要实时的吞吐,有些应用仅仅需要在某一个时刻对一个数值进行开根号,取其结果用在另一个物理量上的运算。因此这里我们将实现一种非实时数据吞吐的开根号运算,在输入有效使能拉高后,数据进入开根号模块,若干周期后,输出使能拉高,并输出开方运算结果,资源占用率低,适合大多数应用场景。


逐次逼近算法原理

逐次逼近算法简单些讲,就是假定一个输出暂存值,先取MSB为‘1’,其余为‘0’。用其平方值与被开方数比较,如果前者大于后者,则把MSB置零,取次高位为‘1’,再进行比较;若前者小于后者,则次高位不变,次次高位再取‘1’,再进行比较。以此类推,直到最后LSB也判别完毕。这样对于一个n bit输入的数据,理论需要判断n/2次。这里我们进行了改进,首先把输入数据的符号位去除,再进行迭代,这样可以缩短迭代次数。但是有一点需要注意,平方运算需要用到一个乘法器,为了让系统时钟能跑高,乘法运算总的打3级流水。因此迭代次数要算上乘法带来的延迟,对于非实时吞吐的应用,迭代次数的额外开销不会对整体应用带来多大的影响。迭代流程如下图所示:

程序Modelsim仿真

根据上述迭代过程,编写sqrt_serial.v程序,设计输入待开方数据为36bit位宽,输出数据18bit位宽,余数19bit:

接下来先在Modelsim里进行仿真,先编写相应的testbench,部分测试程序:

//--------------------------------------------------------------------------------

 

         sqrt_serial  sqrt_serial

         (

                   .clk             (        clk                        ),

                   .rst             (        rst                        ),

                   .i_vaild       (        i_vaild                 ),

                   .i_data                 (        i_data                  ),

                   .o_vaild      (        o_vaild                ),

                   .o_data                (        o_data                 ),

                  .r_data                (        r_data                 )

         );

//--------------------------------------------------------------------------------

         initial begin

                   // Initialize Inputs

                   clk = 0;

                   rst = 1;

                   // Wait 100 ns for global reset to finish

                   #100;

        rst = 0;                 

 

         end

   

         always #5 clk  = ~ clk ;        

         reg    [7:0]  cnt ; 

         reg x;

//--------------------------------------------------------------------------------

         always@(posedge       clk or posedge     rst)

                   begin

                            if(rst)

                                     begin

                                               i_vaild <= 0;

                                               i_data <= 0;

                                               cnt <= 0;

                                               x <= 1'b0;

                                     end

                            else if(!x)

                                     begin

                                               i_vaild <= 1;

                                               i_data <= i_data + 1'b1;

                                               cnt <= 0;

                                               x <= 1'b1;

                                     end

                            else if(x)

                                     begin

                                               if (o_vaild)

                                                        begin x <= 1'b0; end

                                               i_vaild <= 0;                                             

                                               cnt <= cnt + 1'b1;

                                     end

                   end

//--------------------------------------------------------------------------------

在testbench里,让i_data从1开始,sqrt计算完毕就让i_data加1再输入,观察开方运算的结果,仿真之后验证了设计的可行性:

资源消耗

在海麟软件里编译,其资源消耗小,不过需要额外消耗一个乘法器:


授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 8

本文由天安云谷门面担当转载自智多晶,原文标题为:如何在FPGA上实现低成本开根号运算,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关研发服务和供应服务

评论

   |   

提交评论

全部评论(8

  • 伟大大 Lv5. 技术专家 2020-11-18
    学习
  • 人生浮云 Lv6. 高级专家 2020-11-05
    学习了
  • 本尼 Lv7. 资深专家 2020-09-17
    不错,学习
  • 用户43004597 Lv7. 资深专家 2020-09-16
    谢谢分享
  • Jackie0078 Lv8. 研究员 2020-09-14
    谢谢分享
  • 男儿当自强 Lv8. 研究员 2020-09-12
    学习
  • 用户56369433 Lv5. 技术专家 2020-09-11
    分享
  • maomao Lv8. 研究员 2020-07-22
    分享了~~~
没有更多评论了

相关推荐

【经验】西安智多晶5000系列FPGA内嵌MCU调试测试指南

西安智多晶推出的Seal 5000 FPGA SA5Z-30系列内部合封Cortex M3硬核,最高主频可达200Mhz,32KB数据RAM和128KB指令RAM。本文针对FPGA内嵌M3硬核的使用做简洁的开发过程。

2022-10-10 -  设计经验 代理服务 技术支持 现货查询 批量订货

【经验】智多晶FPGA上实现LTE削峰算法PC-CFR

CFR算法是一种直接在数字域上面处理的方法,对于超出设定门限值的信号,直接在数字域上进行处理和消除。目前CFR算法有PW-CFR、NS-CFR和PC-CFR,常用的还是PC-CFR,其削峰能力最佳,本文就针对PC-CFR算法,在智多晶AD9365射频开发板上进行测试和实现。

2020-09-19 -  设计经验 代理服务 技术支持 现货查询 批量订货

【经验】解析智多晶合封系列FPGA中DDR2的应用

合封系列FPGA可以应用在需要大量缓存数据的场合,比如工业数据采集卡、视频处理应用以及无线通信中的数据采集板,如果各位读者朋友们有需要用到FPGA+DDR2架构的,可以联系智多晶,智多晶会提供完整的DDR2 Control IP,甚至亲手为用户写好应用层部分的程序,并为用户调试好。

2021-05-26 -  设计经验 代理服务 技术支持 现货查询 批量订货

【选型】国产FPGA SL2-25E-8U324替代XC6SLX16 CSG324用于工业伺服控制器,有效应对交期问题

客户在工业伺服控制器中用到一款Xilinx FPGA,但因为交期问题需要国产化替代,使用型号是XC6SLX25-CSG324,主要用于做逻辑控制和与MCU交互数据、进行数据处理,给客户推荐了西安智多晶SL2-25E-8U324,可以兼容替代。

2021-09-01 -  器件选型 代理服务 技术支持 现货查询 批量订货

SL2S-25E FPGA 器件概述

型号- SL2S-25E-U213,SL2S-22E-8FA256C,SL2S-25E

20240930  - 智多晶  - 商品及供应商介绍  - Version 1.7 代理服务 技术支持 现货查询 批量订货 查看更多版本

【应用】国产海狮系列FPGA SL2E-5E用于扩展外设接口,集成flash,工作频率高达300MHz

西安智多晶的SL2E-5E是一款集成了5K逻辑单元的小规模FPGA,但是比CPLD容量更大,能实现更多的逻辑设计,同时该FPGA内部集成了Flash,不需要再外接配置用的Flash,简化了电路设计。

2022-03-08 -  应用方案 代理服务 技术支持 现货查询 批量订货

SL2S-22E FPGA 器件概述

型号- SL2S-22E-UA324,SL2S-22E-8FA256C,SL2S-22E-FA256,SL2S-22E

20241008  - 智多晶  - 商品及供应商介绍  - Version 1.0 代理服务 技术支持 现货查询 批量订货

Seal(海豹)SA5Z-30 FPGA 产品手册

型号- 海豹5000系列,SA5Z-30-D2,SA5Z-30-ES,SA5Z-30-D0-UBGA324,SA5Z-30-D0,SA5Z-30-D1,SA5Z-30-D1-UBGA213,SA5Z-30-D2-8U213C5,SA5Z-30,SA5Z-30-D1-8U213C4,SA5Z-30-D2-8U213C6,SA5Z-30-D2-UBGA213,SEAL 5000系列,SA5Z-100-D1-8U324C,SA5Z-30-D0-8U324C6,SA5Z-30 系列,SA5Z-30-D1-8U213C,SA5Z-30-D2-8U213C

2021/07  - 智多晶  - 数据手册  - 版本1.2 代理服务 技术支持 现货查询 批量订货 查看更多版本

SA5Z-30 FPGA 器件概述

型号- SA5Z-30-D3-U256,SA5Z-30,SA5Z-30-D0-U324,SA5Z-30-D1-U213,SA5Z-30-D0-U324C,SA5Z-30-D2-U256,SA5Z-30 系列,SA5Z-30-D2,SA5Z-30-D3,SA5Z-30-D0,SA5Z-30-D1

20241014  - 智多晶  - 商品及供应商介绍  - Version 1.17 代理服务 技术支持 现货查询 批量订货 查看更多版本

【IC】智多晶28nm FPGA家族SEAL5000系列新发SA5Z-100,采用低功耗28nm@LUT6工艺

2022年的下半年,西安智多晶28nm SEAL5000家族系列喜迎重量级新成员SA5Z-100,采用先进低功耗的28nm@LUT6工艺,集成高达8个通道13.1Gbps的高速SerDes,支持PCIe2.0 x4以及HDMI2.1等接口协议。

2022-12-19 -  新产品 代理服务 技术支持 现货查询 批量订货

SA5Z-30 FPGA 数据手册

型号- SA5Z-30,SA5Z-30-D2,SA5Z-30-D0-8U324C,SA5Z-30-D3,SA5Z-30-D0,SA5Z-30-D1

20241012  - 智多晶  - 数据手册  - Version 1.14 代理服务 技术支持 现货查询 批量订货 查看更多版本

【应用】基于智多晶Sealion 2000系列FPGA的工业控制解决方案,具有低功耗优势

智多晶Sealion 2000系列FPGA基于低功耗工艺设计,旨在满足低成本高性价比客户的需求,使系统设计师在降低成本的同时又能够满足不断增长的应用要求,在低成本、低功耗FPGA市场处于领导地位。

2021-03-25 -  应用方案 代理服务 技术支持 现货查询 批量订货

SA5Z-50 FPGA 器件概述

型号- SA5Z-50-D0-7F484,SA5Z-50,SA5Z-50-D0-U324,SA5Z-50-D0-F484,SA5Z-50-D0-7U196,SA5Z-50-D0-U196,SA5Z-50-D0-8U324C,SA5Z-50-D0,SA5Z-50 系列,SA5Z-50-D1

20240929  - 智多晶  - 商品及供应商介绍  - Version 1.6 代理服务 技术支持 现货查询 批量订货 查看更多版本

Sealion(海狮)SL2E-7E/V FPGA产品手册

型号- SL2E-7V-UBGA400,SEALION 2000 系列,SL2E-7V,SEALION 2000,SL2E-7V-E144,SL2,SL2E-7E,SEALION SL2E-7E,SEALION SL2E-7V,SL2S-12E-8F256C,SL2E-7V-U256

2021.11  - 智多晶  - 数据手册  - 版本1.1 代理服务 技术支持 现货查询 批量订货 查看更多版本
展开更多

电子商城

查看更多

品牌:智多晶

品类:FPGA

价格:¥72.0000

现货: 5,151

品牌:智多晶

品类:FPGA

价格:¥64.0000

现货: 5,005

品牌:智多晶

品类:FPGA

价格:¥48.0000

现货: 5,001

品牌:智多晶

品类:FPGA

价格:

现货: 5,000

品牌:智多晶

品类:FPGA

价格:¥118.0000

现货: 3,018

品牌:智多晶

品类:FPGA

价格:¥184.0000

现货: 3,005

品牌:智多晶

品类:FPGA

价格:¥118.0000

现货: 3,000

品牌:智多晶

品类:FPGA

价格:¥240.0000

现货: 3,000

品牌:智多晶

品类:FPGA

价格:¥164.0000

现货: 3,000

品牌:智多晶

品类:FPGA

价格:¥52.0000

现货: 2,331

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:LATTICE

品类:嵌入式-FPGA(现场科编程门阵列)

价格:¥15.0000

现货:420,988

品牌:LATTICE

品类:可编辑逻辑集成电路

价格:¥25.0000

现货:13,385

品牌:XILINX

品类:FPGA芯片

价格:¥109.3800

现货:6,594

品牌:Actel

品类:FPGA

价格:¥386.5165

现货:650

品牌:Altera

品类:可编程逻辑器件(CPLD/FPGA)

价格:¥560.0000

现货:360

品牌:高云

品类:FPGA芯片

价格:¥45.0000

现货:200

品牌:INTEL

品类:ASIC

价格:¥1,265.2800

现货:130

品牌:Actel

品类:FPGA

价格:¥202.5347

现货:95

品牌:Actel

品类:FPGA

价格:¥1,700.6726

现货:60

品牌:INTEL

品类:ASIC

价格:¥585.4700

现货:43

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面