Vivado IP核之浮点数乘除法 Floating-point

这篇具有很好参考价值的文章主要介绍了Vivado IP核之浮点数乘除法 Floating-point。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Vivado IP核之浮点数乘除法 Floating-point

目录

前言

一、浮点数乘除法示例

二、Floating-point IP核配置步骤

1.乘法器配置

2.除法器配置

三、仿真

1.顶层代码

2.仿真代码

四、仿真结果分析

总结


前言

         随着制造工艺的不断发展,现场可编程逻辑门阵列(FPGA)的集成度越来越高,应用也越来越广,其中在对数字信号进行处理时必然要用到一些数学处理类的IP核。最近正在研究空域自适应抗干扰技术研究的FPGA硬件实现,其中不免要用到一些IP核,今天就从浮点数乘除法出发详细介绍一下vivado当中的Floating-point这个IP核吧,希望对各位的学习能起到一定的帮助作用。


提示:以下是本篇文章正文内容,均为作者本人原创,写文章实属不易,希望各位在转载时附上本文链接。

一、浮点数乘除法示例

         为了后面仿真便于分析结果,在此我们就列举浮点数乘除法的例子,仿真时直接用下面的例子进行仿真,来验证仿真结果是否正确。

        example:设浮点数a=32'b1100_0000_1101_0011_0011_0011_0011_0011,即a=-6.6,浮点数b=32'b0100_0001_0000_1100_1100_1100_1100_1101,即b=8.8,则a*b=32'b1100_0010_0110_1000_0101_0001_1110_1100,即a*b=-58.08,a/b=32'b1011_1111_0100_0000_0000_0000_0000_0000,即a/b=-0.75。

二、Floating-point IP核配置步骤

1.乘法器配置

1.首先配置Operation Selection界面,如图1所示。

vivado浮点数乘法器ip核,Vivado的学习之路,fpga开发,硬件工程,tcp/ip
图1 Operation Selection界面的配置

 2.其次配置Precision of Inputs界面,如图2所示。

vivado浮点数乘法器ip核,Vivado的学习之路,fpga开发,硬件工程,tcp/ip
图2 Precision of Inputs   界面的配置

  3.然后配置Optimizations界面,如图3所示。

vivado浮点数乘法器ip核,Vivado的学习之路,fpga开发,硬件工程,tcp/ip
图3 Optimizations   界面的配置

 4.最后配置Interface Options界面,如图4所示。

vivado浮点数乘法器ip核,Vivado的学习之路,fpga开发,硬件工程,tcp/ip
图4 Interface Options   界面的配置

  以上4个界面都配置完成后即可点击右下角OK按钮生成乘法器IP核

2.除法器配置

在vivado中搜索Floating-point,找到该IP核后即可按照以下操作完成相应的配置。

1.首先配置Operation Selection界面,如图5所示。

vivado浮点数乘法器ip核,Vivado的学习之路,fpga开发,硬件工程,tcp/ip
图5 Operation Selection界面的配置

  2.其次配置Precision of Inputs界面,如图6所示。

vivado浮点数乘法器ip核,Vivado的学习之路,fpga开发,硬件工程,tcp/ip
图6 Precision of Inputs   界面的配置

 3.然后配置Optimizations界面,如图7所示。

vivado浮点数乘法器ip核,Vivado的学习之路,fpga开发,硬件工程,tcp/ip
图7 Optimizations   界面的配置

 4.最后配置Interface Options界面,如图8所示。

vivado浮点数乘法器ip核,Vivado的学习之路,fpga开发,硬件工程,tcp/ip
图8 Interface Options   界面的配置

 以上4个界面都配置完成后即可点击右下角OK按钮生成除法器IP核。

三、仿真

1.顶层代码

建立一个顶层模块,命名为float_mul_div,用来例化刚才生成的IP核。

代码如下:

`timescale 1ns / 1ps
//
// Company: cq university
// Engineer: clg
// Create Date: 2022/07/23 16:40:34
// Design Name: 
// Module Name: float_mul_div
// Project Name: 
// Target Devices: 
// Tool Versions: 2017.4
// Description: 
// Dependencies: 
// Revision:1.0
// Revision 0.01 - File Created
// Additional Comments:
// 
//

module float_mul_div(
    input clk,
    input a_tvalid,
    input [31:0] a_tdata,
    input b_tvalid,
    input [31:0] b_tdata,
    output mul_result_tvalid,
    output [31:0] mul_result_tdata,
    output div_result_tvalid,
    output [31:0] div_result_tdata
    );
    
float_multiply u1_float_multiply(                       //乘法器
    .aclk(clk),
    .s_axis_a_tvalid(a_tvalid),
    .s_axis_a_tdata(a_tdata),
    .s_axis_b_tvalid(b_tvalid),
    .s_axis_b_tdata(b_tdata),
    .m_axis_result_tvalid(mul_result_tvalid),
    .m_axis_result_tdata(mul_result_tdata)
);
 
 float_divide u1_float_divide(                         //除法器
    .aclk(clk),
    .s_axis_a_tvalid(a_tvalid),
    .s_axis_a_tdata(a_tdata),
    .s_axis_b_tvalid(b_tvalid),
    .s_axis_b_tdata(b_tdata),
    .m_axis_result_tvalid(div_result_tvalid),
    .m_axis_result_tdata(div_result_tdata)
 );

endmodule

2.仿真代码

建立一个仿真模块,命名为float_mul_div_tb,用来仿真刚才顶层模块例化的IP核。

代码如下:

`timescale 1ns / 1ps
//
// Company: cq university
// Engineer: clg
// Create Date: 2022/07/23 17:03:52
// Design Name: 
// Module Name: float_mul_div_tb
// Project Name: 
// Target Devices: 
// Tool Versions: 2017.4
// Description: 
// Dependencies: 
// Revision:1.0
// Revision 0.01 - File Created
// Additional Comments:
// 
//

module float_mul_div_tb();
     reg clk;
     reg a_tvalid;
     reg [31:0] a_tdata;
     reg b_tvalid;
     reg [31:0] b_tdata;
     wire mul_result_tvalid;
     wire [31:0] mul_result_tdata;
     wire div_result_tvalid;
     wire [31:0] div_result_tdata;
     
float_mul_div u1_float_mul_div(
      .clk(clk),
      .a_tvalid(a_tvalid),
      .a_tdata(a_tdata),
      .b_tvalid(b_tvalid),
      .b_tdata(b_tdata),
      .mul_result_tvalid(mul_result_tvalid),
      .mul_result_tdata(mul_result_tdata),
      .div_result_tvalid(div_result_tvalid),
      .div_result_tdata(div_result_tdata)
);
always #5 clk=~clk;

initial begin
    clk=1'b0;
#15;     a_tvalid<=1'b1;
            a_tdata<=32'b1100_0000_1101_0011_0011_0011_0011_0011;    //-6.6
            b_tvalid<=1'b1;
            b_tdata<=32'b0100_0001_0000_1100_1100_1100_1100_1101;    //8.8
end

endmodule

四、仿真结果分析

仿真结果如图9所示,对比前面所列举浮点数乘除法的例子,可知该模块成功实现了浮点数的乘除法。

vivado浮点数乘法器ip核,Vivado的学习之路,fpga开发,硬件工程,tcp/ip
图9 仿真结果

总结

本次介绍了怎么使用vivado中的Floating-point IP核实现浮点数的乘除法。文章来源地址https://www.toymoban.com/news/detail-780190.html

到了这里,关于Vivado IP核之浮点数乘除法 Floating-point的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vivado 下 IP核之FIFO 实验

    目录 Vivado 下 IP核之FIFO 实验 1、FIFO IP 核简介 2、实验任务 3、程序设计 3.1、FIFO IP 核配置 3.1.1、“Basic” 选项卡下各参数配置 3.1.2、“Native Ports”选项卡下各参数配置 3.1.3、“Status Flags” 选项卡下各参数配置 3.1.4、“Data Counts(数据计数)”选项卡下各参数配置 3.2、时序图讲

    2024年02月09日
    浏览(45)
  • Vivado 下 IP核之 PLL实验

    目录 实验任务:Vivado 下 IP核之 PLL实验 1、实验简介     2、实验环境 3、实验原理 3.1、PLL IP核简介 3.2、MMCM 和 PLL 各自的含义以及两者的区别 3.3、PLL 分频 和 倍频 的工作原理 3.4、实验任务 4、建立工程 4.1、PLL IP 核配置 4.2、模块设计 4.3、编写代码 4.4、Vivado 自带仿真器的使

    2024年02月09日
    浏览(34)
  • 数字信号处理篇之浮点数与定点数的转换(MATLAB)

      对于计算机等数字信号处理器件,数字和信号变量都是用二进制进行表示的。在本文中,我们学习了定点数的概念、浮点数与定点数的转换以及在MATLABZ中实现浮点数与定点数的转换。   对于二进制数,大家应该都很熟悉,在学习数电的过程中,我们知道,十进制转二

    2024年02月11日
    浏览(47)
  • 孩子都能学会的FPGA:第十八课——用FPGA实现定点数的除法

    (原创声明:该文是 作者的原创 ,面向对象是 FPGA入门者 ,后续会有进阶的高级教程。宗旨是 让每个想做FPGA的人轻松入门 , 作者不光让大家知其然,还要让大家知其所以然 !每个工程作者都搭建了全自动化的仿真环境,只需要双击 top_tb.bat 文件就可以完成整个的仿真(前

    2024年02月04日
    浏览(35)
  • IP核之fifo

    FIFO (First In First Out,即先入先出),是一种数据缓冲器,用来实现数据先入先出的读写方式。 FIFO是采用一种先入先出的实现原理 就如图按照D1到D10的顺序输入那么读取的时候也是按照D1到D10的顺序读取. FIFO存储器主要是作为缓存,应用在同步时钟系统和异步时钟系统中,在很

    2024年02月14日
    浏览(29)
  • Altera FPGA 储存单元IP核之RAM、FIFO

         只读存储器,系统上电后数据就被写入ROM,运行过程中只能从ROM中读取数据,而不能改变ROM中的数值。      随机存取储存器,可以随时把数据写入任一指定地址的储存单元,也可以随时从任一指定地址中读取数据。其读写速度是由时钟频率决定的。RAM主要用来存放程

    2023年04月08日
    浏览(33)
  • vivado 添加现有IP文件、生成IP

    添加现有IP文件 作为从AMD IP目录添加和自定义IP的替代方案,您可以直接添加XCI或XCIX文件。此过程不同于从按以下方式编目: •XCI或XCIX文件可能是早期版本,也可能是相同或完全自定义的版本AMD IP目录中发现的类似IP。 •XCI或XCIX文件可能包括必要的文件或输出产品,以支持

    2024年02月01日
    浏览(29)
  • Vivado时钟IP核

    本文以Xilinx ZYNQ为例对FPGA的时钟资源进行介绍。 时钟资源主要有以下几方面: 全局时钟 (Global clocks)为整个设备提供时钟; 区域时钟 (Regional clocks)为一个区域(和相邻区域)的时钟提供时钟; IO 时钟 (IO clocks)为 IO 结构提供时钟; 时钟管理模块 (Clock management tiles)

    2024年02月02日
    浏览(25)
  • Vivado IP核解锁

    Vivado工程中有IP核被锁住的情况,主要原因有用新版本的Vivado去打开旧版本的工程、Vivado工程导入IP核的原工程和当前工程的FPGA开发板不一致等。 可以通过如下步骤解锁IP核: 1、Tools–Report–Report IP Status 2、默认情况下被锁住的IP核会被自动勾选,如未勾选,则自己点击相应

    2024年02月14日
    浏览(25)
  • windows ipv4 多ip地址设置,默认网关跃点和自动跃点是什么意思?(跃点数)

    在今天的网络世界中,IP地址是任何设备需要在线通信的重要组成部分。它们允许我们将数据发送到正确的目的地,就像邮政编码一样。但是,有时一个设备可能需要配置多个IP地址来执行特定任务,比如在Windows环境下。同时,理解如何有效地管理这些IP地址,包括理解默认网

    2024年02月12日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包