前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >优秀的 Verilog/FPGA开源项目介绍(三十七)- MATH库

优秀的 Verilog/FPGA开源项目介绍(三十七)- MATH库

作者头像
碎碎思
发布2023-08-30 10:20:52
6890
发布2023-08-30 10:20:52
举报
文章被收录于专栏:OpenFPGAOpenFPGA

DSP介绍

数字信号处理( Digital Signal Processing)技术广泛地应用于通信与信息系统、信号与信息处理、自动控制、 雷达、军事、航空航天、医疗、家用电器等许多领域。DSP 技术可以快速地对采集的信号进行量化、变换、滤波、估值 、增强、压缩、识别等处理,以得到符合需要的信号形式。而用FPGA进行数字信号处理的核心就是数学运算,今天介绍几个和FPGA进行数学运算的相关开源项目。

Fixed Point Math Library for Verilog

❝https://opencores.org/projects/verilog_fixed_point_math_library ❞

❝https://opencores.org/projects/fixed_point_arithmetic_parameterized ❞

介绍

Verilog定点数学库

该库包括Verilog的基本数学函数,用于FPGA上的实现(Xilinx FPGA仿真和综合)。

这些数学例程使用带符号的数字N(Q)格式,其中N是总位数,Q是所使用的小数位数。例如,

15、32将表示具有15个小数位数、16个整数位数数,以及1个符号位,如下所示:

代码语言:javascript
复制
|1|||
|S|IIIIIIIIIIIIIIII|FFFFFFFFFFFFFFF|

此库包含以下模块:

  • qadd.v——加法模块;将任意的2个有符号数字相加。
  • qdiv.v-除法模块;
  • qmult.v——乘法模块;纯组合电路实现
  • qmults.v——乘法模块;时序电路实现
  • Test_add.v-qadd.v模块的测试模块
  • Test_mult.v-qmult.v模块的测试模块
  • TestDiv.v-qdiv.v模块的测试模块
  • TestMultS.v-qmults.v模块的测试模块

这些数学计算默认为(15,32)的(Q,N),但可以自定义。

代码语言:javascript
复制
qadd my_adder(
          .a(addend_a),
          .b(addend_b),
          .c(result)
   );

自定义N(Q):

代码语言:javascript
复制
     qadd #(8,23) my_adder(
          .a(addend_a),
          .b(addend_b),
          .c(result)
   );

CORDIC core

❝https://opencores.org/projects/cordic ❞

CORDIC算法是一种迭代算法,用于计算数学函数,如三角函数、双曲函数和平面旋转。

介绍

顾名思义,CORDIC算法是为旋转坐标而开发的,这是20世纪50年代用于实时导航计算的硬件。CORDIC使用类似序列的逐次逼近来获得其结果。优点就是它只通过加法/减法和移位来实现运算这一点。假设我们想将一个点(X,Y)旋转一个角度(Z)。新点(Xnew,Ynew)的坐标为:

Xnew=Xcos(Z)-Ysin(Z)Ynew=Ycos(Z)+Xsin

或者:

Xnew/cos(Z)=X-Y*tan(Z)Ynew/cos

可以将角度分成小块,这样这些小块的切线总是2的幂。导出以下方程式:

X(n+1) = P(n) * ( X(n) - Y(n) / 2^n) Y(n+1) = P(n) * ( Y(n) + X(n) / 2^n) Z(n) = atan(1/2^n)

...

不详细介绍了。。。

math of gplgpu

❝https://github.com/asicguy/gplgpu/tree/35a79805f5eb4c9da4d5928c2941ed09ca29fa47/hdl/math ❞

2D/3D 图形引擎中应用的数学库,里面的函数比OpenCores上更全面。

图书

❝https://github.com/suisuisi/FPGATechnologyGroup/tree/main/DSP ❞

最后,在数字信号处理方面有很多经典图书可以借鉴,里面再数学运算方面有很多经典算法讲解,所以对于一些不好理解的运算算法,大家可以参考上面的图书。

总结

最后还有一个和数学运算息息相关的DSP《优秀的 Verilog/FPGA开源项目介绍(二十八)- DSP(Digital Signal Processing)》。

最后,还是感谢各个大佬开源的项目,让我们受益匪浅。后面有什么感兴趣方面的项目,大家可以在后台留言或者加微信留言,今天就到这,我是爆肝的碎碎思,期待下期文章与你相见。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenFPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DSP介绍
  • Fixed Point Math Library for Verilog
    • 介绍
    • CORDIC core
      • 介绍
      • math of gplgpu
      • 图书
      • 总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档