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

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

3天内不再提示

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

姚小熊27 来源:电路城论坛 作者:yiqizhenshanhe 2020-06-17 10:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前边写了很多关于板上外围器件的评测文章,这篇是FPGA纯逻辑设计,是FPGA的另一部分——算法实现,上篇文章做了HDC1000传感器的使用,当时说FPGA是不支持小数的,本篇记述的是FPGA如何去做除法运算。很多人觉得不就是除法嘛,直接打上/即可,但是,FPGA是不能正确综合这个除法器的,综合的结果只是一个固定数值,而不像其他微处理器。可以这么说,用FPGA实现除法运算是比较麻烦的。

用软件编程的时候,用到除法器的时候,一个/就能求商,一个%就能求余,很简单。但是,如果使用硬件来实现除法运算,就需要了解计算机存储结构,二进制的除法和平常使用的十进制除法是一样的,都是通过辗转相除的原理,

基于FPGA的触发器纯逻辑设计

原理如上所述,现在需要把这个原理转换成可实现的设计方案,从图可以看出,首先是将除数与被除数的最高3位做比较,如果除数(110)大于被除数(101),则将商赋值为0(最高位是0可以省略),被除数向右增加1位再进行比较;当被除数增加1位,除数(110)小于被除数(1010),则将商赋值为1,接着进行二进制减法运算,被除数(1010)减去除数(110),变成100;然后被除数向右再增加1位,变成1001,再与除数(110)比较,以此类推,最后输出结果。

设计好代码,用Modelsim仿真验证,

基于FPGA的触发器纯逻辑设计

用$random产生随机数,实现效果如下:

i_dividend为被除数,i_divisor为除数,o_quotient为商,o_remainder为余数(下同)。

基于FPGA的触发器纯逻辑设计

$random是不能综合的,所以,只能用其他的进行代替,被除数用一个计数器,除数用数字3,再进行Modelsim仿真验证:

基于FPGA的触发器纯逻辑设计

由2个图可知,除法器设计满足需求。

进行板上调试,

基于FPGA的触发器纯逻辑设计

综合后的RTL图,

基于FPGA的触发器纯逻辑设计

Quartus ii软件查看结果,一切与预期一致,设计成功。

总结:用FPGA实现除法器真麻烦!

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

    关注

    1655

    文章

    22286

    浏览量

    630296
  • 除法器
    +关注

    关注

    2

    文章

    15

    浏览量

    14111
  • 逻辑设计
    +关注

    关注

    1

    文章

    41

    浏览量

    11919
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用Xilinx 7系列FPGA的四位乘法器设计

    (Shinshu University)研究团队的最新设计中,一个专为 Xilinx 7 系列 FPGA 量身打造的 4 位乘法器使用了仅 11 个 LUT + 2 个 CARRY4 块,关键路径延迟达到 2.75 ns。这是一次令人印象深刻的工艺优化实践。
    的头像 发表于 11-17 09:49 2730次阅读
    使用Xilinx 7系列<b class='flag-5'>FPGA</b>的四位乘<b class='flag-5'>法器</b>设计

    基于FPGA的高效除法器设计

    FPGA可以通过除号直接实现除法,但是当除数或被除数位宽较大时,计算会变得缓慢,导致时序约束不能通过。此时可以通过在除法IP中加入流水线来提高最大时钟频率,这种方式提高时钟频率也很有限。如果还不能达到要求,就只能把
    的头像 发表于 10-28 14:56 1774次阅读
    基于<b class='flag-5'>FPGA</b>的高效<b class='flag-5'>除法器</b>设计

    E203在基于wallace树+booth编码的乘法器优化后的跑分结果

    优化思路 E203为了实现低功耗的要求,乘法器为基于booth编码和移位加法器结合的思路,优点是只需要一个加法器,而且该加法器还和除法器复用
    发表于 10-27 07:54

    一个提升蜂鸟E203性能的方法:乘除法器优化

    蜂鸟E203内核内建多周期硬件乘除法器 MDV 模块只进行运算控制,并没有自己的加法器法器与其他的ALU子单元复用共享的运算数据通路,硬件实现非常节省面积,是一种相当低功耗的实现方式,但
    发表于 10-27 07:16

    E203V2长周期乘法器核心booth算法解读

    E203V2乘法器所在模块为e203_exu_alu_muldiv.v,其中包含乘法和除法两大块,这里仅对乘法模块进行解读。 乘法模块首先进行booth编码,其目的为方便两个有符号数相乘,有关
    发表于 10-24 09:33

    如何对蜂鸟e203内核乘除法器进行优化

    控制逻辑除法器控制逻辑设计合理与否直接影响到除法器的性能表现,因此可以优化除法器控制逻辑,如增
    发表于 10-24 06:47

    e203乘除法模块(e203_exu_alu_muldiv.v)中的back2back和special case信号的含义

    首先我们知道,对于e203的乘除法器,为了实现低功耗,低面积、高资源利用率,乘除法过程复用了alu数据通路,没有设计单独的乘除法器。 其中乘法采用基4booth编码得到部分积,并通过移位相加,复用
    发表于 10-24 06:37

    基于 SRT4 的整数除法器的优化

    主要的除法运算优化方法是使用基本的SRT-4算法进行除法运算,以模拟SRT-64除法运算: 为了减少时钟周期并提高运算频率,极大基法是SRT算法中提出的一种方法。在该方法中,每次迭代的位数取决于所
    发表于 10-23 07:23

    蜂鸟乘法器设计分享

    蜂鸟的乘法器主体设计在ALU模块的子单元MDV模块中,MDV模块包括乘除法器逻辑设计,它只包含运算控制,但并不包含具体运算,它们都需要将部分积或者部分余数传入数据通路(dpath模块)中,从而实现
    发表于 10-22 08:21

    e203除法器算法改进(一)

    e203内部除法操作使用加减交替迭代法进行运算,除几个特殊运算外,正常的除法操作需要33个周期才能输出运算结果,极大程度地影响了系统的性能。我们对e203的除法器进行了新的算法实现并改进。目前高性能
    发表于 10-22 07:13

    e203除法器算法改进(二)

    e203内部除法操作使用加减交替迭代法进行运算,除几个特殊运算外,正常的除法操作需要33个周期才能输出运算结果,极大程度地影响了系统的性能。我们对e203的除法器进行了新的算法实现并改进。目前高性能
    发表于 10-22 06:11

    两种常见的除法器工作原理

    二进制除法器的本质是多次减法,直到余数小于除数为止。对应的两个N bit二进制数的除法算法如下。 1、设置2N bit寄存器A的低N位存放被除数,设置2N bit寄存器B的高N位存放除数,设置N
    发表于 10-21 13:28

    除法器工作原理介绍

    二进制除法器的本质是多次减法,直到余数小于除数为止。对应的两个N bit二进制数的除法算法如下。 1、设置2N bit寄存器A的低N位存放被除数,设置2N bit寄存器B的高N位存放除数,设置N
    发表于 10-21 08:32

    数字IC设计中的除法器的工作原理

    除法器介绍 二进制除法器的本质是多次减法,直到余数小于除数为止。对应的两个N bit二进制数的除法算法如下。 1、设置2N bit寄存器A的低N位存放被除数,设置2N bit寄存器B的高N位存放除数
    发表于 10-21 07:20

    CPLD 与 FPGA 的区别

    的数字逻辑设计FPGA(Field-Programmable Gate Array) :FPGA是一种更为复杂和灵活的可编程逻辑器件,由大
    的头像 发表于 01-23 09:46 2469次阅读