Vivado_除法器 IP核

本文介绍使用Vivado中除法器Divider Generator(5.1)的使用方法。
参考资料:pg151

文章目录

  • Divider Generator
  • 仿真测试

Divider Generator

在这里插入图片描述
Channel Settings选项卡

#Common Options:
Algorithm Type:
一共有三种类型,分别是High Radix、LutMult、Radix2。用户可根据除数和被除数数位宽大小和延迟需求选择不同算法类型。
Opeand sign:
在High Radix类型下,仅支持Signed;在LutMult类型下,支持Unsigned和Signed;在Radix2类型下,支持Unsigned和Signed。

#Divivend Channel
Dividend Width: 设置被除数位宽,在不同算法类型下,支持的最大位宽不同。在High Radix类型和Radix2类型下,最大支持64位宽;在LutMult类型下,最大支持17位宽。
TLAST和TUSER端口,IP核不使用此端口信息,但会以与数据路径相同的延迟传输到输出通道。用户可以设置TUSER端口宽度。

#Divisor Channel
Divisor Width: 设置除数位宽,在不同算法类型下,支持的最大位宽不同。在High Radix类型和Radix2类型下,最大支持64位宽;在LutMult类型下,最大支持11位宽。
TLAST和TUSER端口,IP核不使用此端口信息,但会以与数据路径相同的延迟传输到输出通道。用户可以设置TUSER端口宽度。

#Output Channel
Remainder Type:设置余数类型。
设置为Remainder时,商和余数被认为是分开的,因此在连接成m_axis_dout_tdata信号之前是面向字节的。
设置为Fractional时,小数部分被认为是商的扩展,因此这两个字段在填充到下一个字节边界之前被连接起来。
在这里插入图片描述
如果勾选Detect Divide_By_Zero,则会多出一个m_axis_dout_tuser端口,以便在执行除0操作时发出信号。
在这里插入图片描述

注意:
商(Quotient)的位宽等于被除数(Dividend)的位宽。
整数余数(Remainder)的位宽度等于除数(Divisor )的宽度。
对于Fractional类型输出,余数位宽与被除数和被除数无关。
使用AXI4接口的输入输出端口在对应的数据字段都会拓展对齐到字节边界。
在这里插入图片描述

Options选项卡

Clocks Per Division: 确定Radix-2解决方案的吞吐量(输入(或输出)之间的时钟间隔)。此参数的值越低,吞吐量越高,但资源使用量也越大。

#AXI4-Stream Options
Flow Control: Blocking or NonBlocking。
具体区别参考Blocking阻塞模式与NonBlocking非阻塞模式

#Latency Configuration:
**Latency Configuration:**支持手动或自动配置延迟。
**Latency:**手动指定从输入到输出的延迟。
在不同算法类型下,不同配置有不同的延迟,具体可在PG151手册中查看。

仿真测试

module div_sim;
reg aclk;
reg s_axis_divisor_tvalid;
reg s_axis_dividend_tvalid;
reg [15:0] s_axis_divisor_tdata;
reg [15:0] s_axis_dividend_tdata;
wire m_axis_dout_tvalid;
wire [31:0] m_axis_dout_tdata;
wire [15:0] quotient;
wire [15:0] remainder;assign quotient = m_axis_dout_tdata[31:16];
assign remainder = m_axis_dout_tdata[15:0];initial beginaclk = 1'b1;forever #10 aclk = ~aclk;
endinitial begins_axis_dividend_tdata = 16'd0;s_axis_dividend_tvalid = 1'b0;s_axis_divisor_tvalid = 16'd0;s_axis_divisor_tdata = 1'b0;# 40;s_axis_dividend_tdata = 16'd12345;s_axis_dividend_tvalid = 1'b1;s_axis_divisor_tdata = 16'd100;s_axis_divisor_tvalid = 1'b1;# 60;s_axis_dividend_tdata = -16'd12345;s_axis_dividend_tvalid = 1'b1;s_axis_divisor_tdata = 16'd100;s_axis_divisor_tvalid = 1'b1;# 60;s_axis_dividend_tdata = 16'd12345;s_axis_dividend_tvalid = 1'b1;s_axis_divisor_tdata = -16'd100;s_axis_divisor_tvalid = 1'b1;# 60;s_axis_dividend_tdata = -16'd12345;s_axis_dividend_tvalid = 1'b1;s_axis_divisor_tdata = -16'd100;s_axis_divisor_tvalid = 1'b1;
enddiv_gen_0 inst0 (.aclk(aclk),                                      // input wire aclk.s_axis_divisor_tvalid(s_axis_divisor_tvalid),    // input wire s_axis_divisor_tvalid.s_axis_divisor_tdata(s_axis_divisor_tdata),      // input wire [15 : 0] s_axis_divisor_tdata.s_axis_dividend_tvalid(s_axis_dividend_tvalid),  // input wire s_axis_dividend_tvalid.s_axis_dividend_tdata(s_axis_dividend_tdata),    // input wire [15 : 0] s_axis_dividend_tdata.m_axis_dout_tvalid(m_axis_dout_tvalid),          // output wire m_axis_dout_tvalid.m_axis_dout_tdata(m_axis_dout_tdata)            // output wire [31 : 0] m_axis_dout_tdata
);endmodule

设置算法类型为Radix-2,设置除数和被除数为16位有符号数,输出设置为Remainder类型,延迟手动设置为10。
则输出dout[31:16]为商(Quotient),dout[15:0]为余数(Remainder)。
在这里插入图片描述
仿真图结果显示,输入tvalid到输出dout_tvalid的时间差为200ns,即延迟为10。
12345 ÷ 100 = 123 ⋯ 45 − 12345 ÷ 100 = ( − 123 ) ⋯ ( − 45 ) 12345 ÷ ( − 100 ) = ( − 123 ) ⋯ 45 − 12345 ÷ ( − 100 ) = 123 ⋯ ( − 45 ) \begin{matrix} 12345 \div 100 = 123 \cdots 45 \\-12345 \div 100 = (-123) \cdots (-45) \\12345 \div (-100) = (-123) \cdots 45 \\-12345 \div (-100) = 123 \cdots (-45) \end{matrix} 12345÷100=1234512345÷100=(123)(45)12345÷(100)=(123)4512345÷(100)=123(45)

输出设置为Fractional类型,设置为Fractional Width为16时,仿真结果和前一次相同。
为了体现两种输出模式的区别,设置为Fractional Width为12。
在这里插入图片描述
在这里插入图片描述
设置fractional的数据格式为实数,11位小数。
在这里插入图片描述
在这里插入图片描述
小数余数结果为0.4497、-0.4497、0.4497。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/352630.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

地震勘探基础(九)之地震速度分析

速度分析 在地震资料数字处理中,速度分析是动校正和水平叠加和地震偏移的基础。 在水平界面情况下,共中心点时距曲线方程是一条双曲线。在共中心点时距曲线中,炮检距 x x x 和时间 t 0 t_0 t0​ 都是已知的,只有速度 v v v 是…

C++算法:排序之二(归并、希尔、选择排序)

C算法:排序 排序之一(插入、冒泡、快速排序) 排序之二(归并、希尔、选择排序) 文章目录 C算法:排序二、比较排序算法实现4、归并排序5、希尔排序5、选择排序 原创文章,未经许可,严禁…

生活小技能

win10 屏幕亮度调节不了怎么办? 1、winr 输入:regedit ,打开注册表 2、HKEY_LOCAL_MACHINE 3、SYSTEM 4、ControlSet001 5、Control 6、Class 7、{4d36e968-e325-11ce-bfc1-08002be10318} 8、右侧栏目添加 KMD_EnableBrightnesslnterface2 …

剑灵服务器延迟时间在哪看,《剑灵怎么看延迟》,剑灵怎么显示ping

在【环境设置】→【游戏】→【界面】里面。功能 下面的第一个就是了 剑灵怎么显示ping 答:剑灵内置并没有设置显示ping一项。如果你想看的话,可以通过打开任务管理器——性能——(位于下方的)资源监视器——网络选项卡——TCP连接 中就有延迟一栏可以...…

剑灵服务器名修改,“名”动服务器!你想要的剑灵名字都在这

一款游戏能不能让人着迷,其实最主要的是你身边够不够多人在玩,如果身边的朋友都在玩剑灵,那么自己就一定也会被其所吸引,你在剑灵中用的是什么剑灵名字,以下这些名字有没有更适合你的,一起来看看吧。 梦非梦…

【每日算法】【171. Excel 表列序号】

☀️博客主页:CSDN博客主页 💨本文由 我是小狼君 原创,首发于 CSDN💢 🔥学习专栏推荐:面试汇总 ❗️游戏框架专栏推荐:游戏实用框架专栏 ⛅️点赞 👍 收藏 ⭐留言 📝&…

上海亚商投顾:沪指小幅震荡微涨 AI应用端持续活跃

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 大小指数今日走势分化,沪指全天窄幅震荡,创业板指低开低走,盘中一度跌超1.6%&a…

程序员——毕业年薪28w真的不可能吗?

我是一名来自湖南的普通应届毕业生。目前就职于杭州的一家电商经营的公司,做数据开发工程师,工资是20k*14薪,并且是每周三发一次工资。 在大学期间,我选择了学习计算机相关专业,但是课堂上所学的知识常常让我觉得晦涩…

从vue2到vue3的生命周期

1.vue2 在vue2.x中的生命周期为 beforeCreate created beforeMount mounted beforeUpdate updated beforeDestroy destroyed activated deactivated errorCaptured 在vue3中,新增了一个setup生命周期函数,setup执行的时机是在beforeCreate生命函数之前…

数据结构与算法系列之堆排序

💗 💗 博客:小怡同学 💗 💗 个人简介:编程小萌新 💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞 堆的概念和结构 如果有一个关键码的集合K { , , &…

Linux之tar归档命令

目录 Linux之tar归档命令 定义 语法格式 参数及作用 常用选项 创建(非压缩的)包文件 ​编辑 创建带压缩的包文件 列出包文件中的文件列表 提取包文件到指定目录 tar打包时排除 --exclude -X或--exclude-from Linux之tar归档命令 定义 用于打…

替换jar包中的yml,class等文件的方法

文章目录 1.使用场景2.先准备好待替换的文件3.下载服务器上的jar包4.解压出来指定的文件5.将文件打入jar包6.查看是否替换成功 1.使用场景 由于线上项目中突然爆出一个bug问题,影响到用户使用,但是 线上的jar包版本,已经是很久的了&#xff…

密码学

第四章:安全性和电子商务 安全性在商业系统中是非常重要的,不管这些系统是基于物理交易还是电子交易。在现实世界中,我们在很大程度上依赖于物理的安全性,而在电子商务中,我们必须更加依赖于用电子的方式来保护数据&a…

在网站添加客服QQ,打开临时会话框(不用加为好友)

转自 : https://blog.csdn.net/wbbott/article/details/53107009 我们是不是经常在浏览网站的时候,会发现有一个联系客服QQ的功能,但是这个具体的功能应该怎么做呢? 有些同学可能会说,在网页代码加上一段代码就OK了。但是你发现没有&#xf…

在网站添加客服QQ,打开临时回话框(不用加为好友)

我们是不是经常在浏览网站的时候,会发现有一个联系客服QQ的功能,但是这个具体的功能应该怎么做呢? 有些同学可能会说,在网页代码加上一段代码就OK了。但是你发现没有,这时候会出现一个加为好友的QQ对话框! 然后呢&am…

oracle删除临时会话表,新一代QQ群机器人

新一代QQ群机器人是一款集论坛QQ机器人、QQ群互联管理功能、支持市场主流数据库对接机器人问答库为一体多功能的QQ群辅助机器人工具,能够实时通知QQ、QQ群,发帖、回帖通知,图文消息,自定义转发格式强大的QQ群管理,支持…

发送临时文件被服务器拒绝,临时会话说服务器拒绝了您发送离线文件的请求 - 卡饭网...

qq 服务器拒绝了您发送离线文件请求的解决方法 qq 服务器拒绝了您发送离线文件请求的解决方法 qq服务器拒绝了您发送离线文件的原因?在我们日常工作中,因工作需要会用上qq离线文件接收、发送。而前面小编也讲解了这方面的问题,但是有的时候qq…

iOS调用QQ客户端发起临时会话

一.前言: 前段时间项目中有个需求,在App内调用QQ客户端,在不是好友前提下,向指定的客服QQ发起临时会话,很简单的一个需求,但是实际实现起来却碰到很多问题. 1.QQ开发者平台,并没有找到App调用QQ客户端发起临时会话方法,(只提供了网页端接入方法) 2.网上搜到的一些方法,大部分都…

QQ临时会话框运用

最近公司项目要用到QQ临时会话功能,在网上有很多文章都提到这个东西怎么去做,经过实践,具体做法可以分为以下几步: 1)准备一个QQ账号A用于临时会话。客户QQ账号B将与该账号建一个立起临时会话,进行离线留言…

设置QQ支持临时会话

转自:http://www.54kefu.net/linshi/201202/391.html 没设置临时会话,一般都会出现下面的状况。QQ放在网站上作为客服,必须设置临时会话。 (1) (2) (3)或者点击之后&…