0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何实现FPGA中的除法运算

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-04-27 09:16 次阅读

FPGA中的硬件逻辑与软件程序的区别,相信大家在做除法运算时会有深入体会。若其中一个操作数为常数,可通过简单的移位与求和操作代替,但用硬件逻辑完成两变量间除法运算会占用较多的资源,电路结构复杂,且通常无法在一个时钟周期内完成。因此FPGA实现除法运算并不是一个“/”号可以解决的。

好在此类基本运算均有免费的IP核使用,本人使用的VIVADO 2016.4开发环境提供的divider gen IP核均采用AXI总线接口,已经不再支持native接口。故做除法运算的重点从设计算法电路转变成了调用AXI总线IP核以及HDL中有符号数的表示问题,极大降低了开发难度。以下就上述两个方面进行探讨。

VerilogHDL中默认数据类型为无符号数,因此需要数学运算的场合必须要用“signed”声明,如:reg signed [8-1:0] signal_a;wire signed [32-1:0] signal_b;需要注意一点,FPGA将所有有符号数视为二进制补码形式,运算的结果同样为补码。再来看看除法器IP核配置界面。

273b103a-c1da-11ec-bce3-dac502259ad0.png

27592b60-c1da-11ec-bce3-dac502259ad0.png

总共就两页,非常简单。需要重点关注的有三个地方:1 算法实现结构(algorithm type)2 被除数与除数的位宽 3 第二页flow control模式。现来一一说明:

就算法结构来说官方文档pg151 LogiCORE IP Product Guide中说得很详细:LUTMult结构操作数最好不要高于12bit,且充分利用DSP slice和BRAM以降低对FPGA 逻辑资源的消耗。Radix-2操作数不要超过16bit,且利用资源与LUTMulti相反,大量使用register和LUT从而将DSP slice和BRAM资源节省出来用在别的地方。最后一个High Radix结构支持超过16bit的大位宽操作数,利用DSPslice等专用硬件资源。根据自己的需求选择即可。

位宽问题没什么好说的,需要特别注意保留位宽满足计算范围,也就是运算之前的“补码符号位扩展”。至于flow control 模式与接口和AXI总线有关。

277277f0-c1da-11ec-bce3-dac502259ad0.png

接口划分得十分清晰,被除数 除数和商通道以及必要的时钟和复位逻辑接口。每个AXI总线通道总是包括tdata tuser tlast 和握手信号tvalid tready,其中tuser为附加信息,tlast表示流模式下最后一个数据,相当于数据包中的包尾处。数据传输仅在tvalid和tready同时拉高时有效并更新。

279c1038-c1da-11ec-bce3-dac502259ad0.png

而Non Blocking Mode在除法运算时较常用,一句话概括:IP核接口不带有FIFO缓存,输出通道数据必须被下游模块实时处理。上图就明白了:

27aace3e-c1da-11ec-bce3-dac502259ad0.png

这一模式实际上是对AXI总线的简化,很多场合下并不完全需要AXI总线强大的流控功能,特别是在AXI总线模块的上下游均为可进行实时处理的FPGA逻辑电路的情况下。AXI总线的另一个特点就是data packing,需要将不是8bit倍数位宽的数据高位填充从而确保数据最小单位是1byte,具体填充方式有所不同。很容易想到,这样的data packing 功能对SOC中PL与PS部分的交互是十分友好的。

总体来说,在FPGA中做基本的数学运算没什么难度,即使是指数 对数 开根号之类的复杂运算也有浮点IP Core的支持。本人后续用到复杂算法时,会采用HLS方式开发,仅用于算法验证,欢迎关注。

原文标题:FPGA中的除法运算及初识AXI总线

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21663

    浏览量

    601672
  • 除法运算
    +关注

    关注

    1

    文章

    5

    浏览量

    7636
  • AXI总线
    +关注

    关注

    0

    文章

    66

    浏览量

    14249

原文标题:FPGA中的除法运算及初识AXI总线

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于FPGA除法器纯逻辑设计案例

    除法运算。很多人觉得不就是除法嘛,直接打上/即可,但是,FPGA是不能正确综合这个除法器的,综合的结果只是一个固定数值,而不像其他微处理器。
    的头像 发表于 06-17 10:17 7397次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>除法</b>器纯逻辑设计案例

    除法运算

    标志实现不可恢复的加-减除法运算,运行的结果存在R3。如果要做有符号除法,首先应执行DIVS一次,从而得到商的符号位。然后多次执行DIVQ
    发表于 09-21 09:26

    基于ARM的除法运算优化策略

    指令流水线的优化、针对寄存器分配进行的优化等。   ARM在硬件上不支持除法指令,编译器是通过调用C库函数来实现除法运算的,有许多不同类型的除法
    发表于 07-14 14:48

    实现两个二进制除法运算

    实现两个二进制除法运算,并在八个七段数码管上进行显示实现两个二进制除法运算,并在八个七段数码管上
    发表于 11-01 20:34

    FPGA除法运算及初识AXI总线

    FPGA的硬件逻辑与软件程序的区别,相信大家在做除法运算时会有深入体会。若其中一个操作数为常数,可通过简单的移位与求和操作代替,但用硬件逻辑完成两变量间
    发表于 08-13 09:27

    FPGA怎么实现除法操作?

    FPGA,我们怎么实现除法操作?最简单的方法当然是调IP Core。在Divider Generator的IP Core,我们可以选择
    发表于 12-24 16:06

    FPGA实现高精度快速除法

    FPGA实现高精度快速除法
    发表于 07-17 16:33 25次下载

    除法和开方运算FPGA串行实现

    高精度的乘除法和开方等数学运算FPGA实现往往要消耗大量专用乘法器和逻辑资源。在资源敏感而计算时延要求较低的应用
    发表于 07-28 18:05 37次下载

    除法器对数运算电路的应用

    除法器对数运算电路的应用 由对数电路实现除法运算的数学原理是:
    发表于 04-24 16:07 2678次阅读
    <b class='flag-5'>除法</b>器对数<b class='flag-5'>运算</b>电路的应用

    ARM中用乘法代替除法的优化

    FPGA实现铁轨检测算法设计_本文将阐述如何用乘法运算代替除法运算,以及如何使除法的次数最少化。
    发表于 10-05 16:37 1.1w次阅读
    ARM中用乘法代替<b class='flag-5'>除法</b>的优化

    一文读懂FPGA除法运算及初识AXI总线

    FPGA的硬件逻辑与软件程序的区别,相信大家在做除法运算时会有深入体会。若其中一个操作数为常数,可通过简单的移位与求和操作代替,但用硬件逻辑完成两变量间
    发表于 05-18 01:15 4686次阅读

    基于StratixⅡEP2S30484C5芯片的乘除法和开方运算算法的实现

    FPGA的开发应用,大多数EDA软件(后面以altera QuartursII为例)都提供乘除法、开方运算的设计向导,或提供LPM宏函数,但普遍占用资源量大。而在许多信号处理应用
    发表于 07-29 17:48 1360次阅读
    基于StratixⅡEP2S30484C5芯片的乘<b class='flag-5'>除法</b>和开方<b class='flag-5'>运算</b>算法的<b class='flag-5'>实现</b>

    FPGA常用运算模块-除法

    本文是本系列的第四篇,本文主要介绍FPGA常用运算模块-除法器,xilinx提供了相关的IP以便于用户进行开发使用。
    的头像 发表于 05-22 16:20 3410次阅读
    <b class='flag-5'>FPGA</b>常用<b class='flag-5'>运算</b>模块-<b class='flag-5'>除法</b>器

    FPGA基于线性迭代法的除法器设计

    FPGA实现除法的方法有几种,比如直接用/来进行除法运算,调用IP核进行除法
    的头像 发表于 07-04 10:03 1279次阅读
    <b class='flag-5'>FPGA</b>基于线性迭代法的<b class='flag-5'>除法</b>器设计

    fpga实现加法和减法运算的方法是什么

    FPGA实现加法和减法运算非常简单,实现乘法和除法可以用IP,那实现对数和指数
    发表于 08-05 09:37 1382次阅读
    <b class='flag-5'>fpga</b><b class='flag-5'>实现</b>加法和减法<b class='flag-5'>运算</b>的方法是什么