Verilog乘法的实现——Xilinx Multiplier IP研究(1)

  • 实验目的

Verilog实现乘法用多种方法,可以直接使用官方现成的IP,也可以自己写RTL代码。本系列研究Xilinx乘法器IP核的配置使用方法、不同配置下资源占用情况,以及和自己设计的RTL多级流水乘法器对比,本文只针对Xilinx Multiplier IP的使用情况和不同配置下资源占用情况进行分析,下一篇文章将对比不同流水情况下的情况。

实验代码及测试代码:https://download.csdn.net/download/flypassion/11465193

  • 实验知识点

1、Multiplier的配置:对于Multiplier IP核的配置还是比较简单的,个人觉得注意以下几点就行了。

      Data Type:根据自己输入数据是符号数据还是无符号数据进行选择;

      Width:输入数据位宽,这个就根据自己的情况设置了;

      Multiplier Construction:这个选项是来设置Multiplier是用哪种片上资源来实现(DSP48 or LUT),这需要结合你自己的工程考虑了,如果片子里DSP资源比较紧张,那就选择LUT构成乘法器;LUT资源紧张则可考虑用DSP48来实现;

      Optimization Options:这个就牵扯到速度与面积的选择了,这个需要根据具体情况具体来说,本实验没有仔细研究,可参考IP的使用说明书。

       Output Product Range:这个可以默认就行,我觉得官方应该比你考虑的周到。

       Pipeline Stages:为了提高性能,这个值最好>1,本实验会研究不同配置下的资源及和自己编写的流水代码做对比。

  • 实验1: Multiplier Construction:Use Mults

1.IP配置情况:

     Data Type:signed

     Width:16

     Optimization Options:Speed optimization

     Output Product Range:31

     Pipeline Stages:1

2.代码仿真

代码端口:

    仿真波形:

    其中波形标红:o_data是IP核输出结果;result是仿真代码计算的结果,通过打印信息可以看出IP输出结果和仿真结果一直。

资源使用情况:综合后的结果

  • 实验2: Multiplier Construction:Use LUTs

1.IP配置情况:同上

2.代码仿真:同上

代码端口:同上

仿真波形:

资源使用情况:综合后的结果

  • 实验总结

1.使用DSP48和LUT构成乘法器计算在基本配置相同的情况下结果相同;

2.在使用Verilog乘法计算符(*)时,一定得定义清楚输入数据是signed还是unsigned,因为不指明的话默认是unsigned型乘法。

3.仿真时initial块中的代码是按顺序执行的,每行代码执行完才进行下一行的执行,虽然时间差很小(可忽略)但是一定得小心,如果不注意就会出现错误的结果。

4.仿真中一般都使用阻塞复制(每行代码执行都会占用有很小的时间),但是为了实现打一拍的作用可以使用非阻塞复制。

仿真代码中需要注意的部分:

 

  • 9
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值