Vivado(2017.1)中 除法 IP核的配置与使用

添加除法 IP核的方法和之前的BRAM方法相同,在IP Catalog → Math Functions → Divider Generator。

其中常用的关键选项配置解释如下:

        Algorithm Type:选择不同的算法模式,其中Radix2为常用的模式,LutMult当时数较小的时候使用,High Radix是当数很大的时候使用。常用的是Radix2,此处也是选择的为Radix2.

        Dividend Width:被除数的位数。

        Divisor Width:除数的位数。

        Remainder Type:选择余数的模式。有两种模式:Remainder:余数,以及Fractional分数模式。Remainder模式的余数模式位数固定,由系统根据除数自动设定,如上图中的就是5位,即Fractional Width那一栏。而选择Fractional Width模式,则可以在Fractional Width那一栏选择自己想要的余数位数。常用模式为Remainder模式。

        以上就是需要主要设置的配置。常用情况下,其他设置可以不用配置。

        同时我们发现作图的端口图上的被除数、除数以及结果的位数与我们设定的并不相同,所以我们以左边端口图的位数为准,来测试下,我们设置的位数与左边端口图位数的关系。

       Testbench的代码如下:

module test_1(
    );
    reg clk;
    reg s_axis_divisor_tvalid;
    reg [7:0] s_axis_divisor_tdata;
    reg s_axis_dividend_tvalid;
    reg [15:0] s_axis_dividend_tdata;
    wire m_axis_dout_tvalid;
    wire [23:0] m_axis_dout_tdata;
    
    always #5 clk = ~clk;
    
    initial
        begin
            clk = 0;
            s_axis_divisor_tvalid = 0;
            s_axis_dividend_tvalid = 0;
            s_axis_divisor_tdata = 0;
            s_axis_dividend_tdata = 0;
            #1000 s_axis_divisor_tvalid = 1;
            #0    s_axis_dividend_tvalid = 1;
            #0    s_axis_divisor_tdata = 13;
            #0    s_axis_dividend_tdata = 96;
            #10   s_axis_divisor_tvalid = 0;
            #0    s_axis_dividend_tvalid = 0;
        end
    

    div_gen_0 div_gen_0(
     .aclk                    (clk),
     .s_axis_divisor_tvalid   (s_axis_divisor_tvalid),
     .s_axis_divisor_tdata    (s_axis_divisor_tdata),
     .s_axis_dividend_tvalid  (s_axis_dividend_tvalid),
     .s_axis_dividend_tdata   (s_axis_dividend_tdata),
     .m_axis_dout_tvalid      (m_axis_dout_tvalid),
     .m_axis_dout_tdata       (m_axis_dout_tdata)
    );     
endmodule

    使用该IP核时,在数据送达时,被除数与除数的使能信号也要同时送达,从而才能输出结果,如功能仿真图所示(96/13):

           从上图可以看出,96/13所得到的结果即m_axis_dout_tdata的值并不是7,可以分析出,m_axis_dout_tdata的低八位是余数5,而剩下的第8到第23位是结果7.

        所以我们可以得到结论,除法的IP核的设置是以8位为单位的,如在此设置中我们设置的被除数为15位。但是可以看出在左边的模块图中,系统自动将被除数位数设置为16位,同理若我们将被除数设置为23位的话,那么系统会将被除数位数设置为24位,即8位的3倍。同理除数的5位,系统自动设置为了8位,然后结果就是24位,后八位(对应除数的位数)是余数,剩下的16位(对应被除数的位数)为商。所以我们在写verilog代码时,我们设置的位数,需要根据在设置界面左侧的电路显示的位数为准才可以。

       综上也就是说,当我们在使用除法的IP核时,我们可以先将除数与被除数的位数拓宽为8的整数倍的位数,如23→24,6→8等,即输出的位数要与除法IP核的位数相同,才能得到正确的结果。

  • 20
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
安装vivado 2017.1的教程如下: 1. 首先,下载vivado 2017.1的安装包。你可以在Xilinx国官网上注册一个账号,并使用该账号登录,然后下载安装包。安装包的大小约为20G左右,所以请确保你的磁盘空间足够。你可以选择在虚拟机Ubuntu里直接下载,或者在宿主机下载后通过共享文件夹传输到虚拟机。\[2\] 2. 下载完成后,最好先使用md5sum命令校验文件完整性。然后,解压安装包。使用以下命令解压:tar -xvzf ******.tar.gz。解压完成后,进入解压后的目录。 3. 在解压后的目录,运行安装脚本。使用以下命令运行:./xsetup。然后,按照提示选择安装的版本、目录以及需要的开发包等。等待安装完成即可。\[1\] 4. 安装完成后,你需要获取一个license来激活vivado 2017.1。在下载界面有一个"license help"按钮,点击进入后,在右侧可以找到"quick links"。根据你安装的vivado版本选择一个想要获得license。填写一些信息后,点击"generate"。然后,根据你的系统类型和Ethernet MAC地址(可以使用ifconfig -a命令获取)填写相关信息。完成后,你将获得一个激活license。\[3\] 这就是vivado 2017.1的安装教程。希望对你有帮助! #### 引用[.reference_title] - *1* *2* *3* [Ubuntu 16.04 安装vivado2017.1过程及详细步骤](https://blog.csdn.net/weixin_42284133/article/details/106072761)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值