其他分享
首页 > 其他分享> > Verilog乘法的实现——Xilinx Multiplier IP研究(1)

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

作者:互联网

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

实验代码及测试代码:

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.IP配置情况:

     Data Type:signed

     Width:16

     Optimization Options:Speed optimization

     Output Product Range:31

     Pipeline Stages:1

2.代码仿真

代码端口:

    仿真波形:

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

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

1.IP配置情况:同上

2.代码仿真:同上

代码端口:同上

仿真波形:

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

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

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

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

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

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

 

标签:仿真,LUT,IP,代码,配置,Verilog,Multiplier
来源: https://blog.csdn.net/flypassion/article/details/98225029