03 xilinx除法IP核的使用

发布时间:2026/9/30 2:06:32

03 xilinx除法IP核的使用 xilinx除法器IP核配置Algorithm Type算法类型可选High Radix、LutMult、Radix2一般常用Radix2Operand Sign有符号和无符号选择Dividend Width被除数宽度Divisor Width除数宽度Remainder Type 余数类型可以选择小数模式或者余数模式Fractional Width 余数模式为小数时选择小数宽度Clocks per Division 每多少个时钟周期处理一除法运算Flow Control流控选择可选Blocking和Non BlockingLatency Configuration输出延迟一般选择Automaticlmplementation Details配置细节如被除数位段、除数位段、商位段、小数或余数位段除法器IP核时序下面非阻塞模式下的时序需要除数和被除数同时有效才进行计算图中假设Latency为0实际使用中一般不为0下面是阻塞模式下的时序相当于在除数和被除数端口加了个FIFO除数和被除数不要求同时有效图中假设Latency为0实际使用中一般不为0除法器IP核小数格式xilinx 除法器IP核在将余数输出模式配置为小数模式时其输出结果分为商和小数两部分部分如下分别是有符号模式和无符号模式下小数输出规则。无符号模式FractRmd除法器IP核输出的小数IntRmd余数Divisor除数F输出小数位宽即除法器小数部分输出结果为真实小数放大了2^F倍取整有符号模式FractRmd除法器IP核输出的小数IntRmd余数Divisor除数F输出小数位宽即除法器小数部分输出结果为真实小数放大了2^(F-1)倍取整因为符号要占1位所以放大倍数为2^(F-1))除法器IP核在有符号模式下有以下几种输出可能商为0小数部分为0商和小数的符号位分别为2’b00商为0小数部分为正商和小数的符号位分别为2’b00商为0小数部分为负商和小数的符号位分别为2’b01商为正小数部分为0商和小数的符号位分别为2’b00商为正小数部分为正商和小数的符号位分别为2’b00商为负小数部分为0商和小数的符号位分别为2’b10商为负小数部分为负商和小数的符号位分别为2’b11xilinx 除法器IP核在有符号模式下商和小数合并为定点数的方法拼接合并法拼接规则如下当商和小数的符号位分别为2’b00时{商的符号位,商,小数去符号位}当商和小数的符号位分别为2’b01时{商取反,小数包含符号位}当商和小数的符号位分别为2’b10时{商的符号位,商,小数去符号位}当商和小数的符号位分别为2’b11时 ​{商的符号位,商-1,小数去符号位}如下是两个有符号相除采用符号位1位、整数位7位、小数位10位格式进行量化//浮点数等式-18.625/6.325-2.944664031620553//转换为定点格式(-18.625*2^10)/(6.325*2^10)-19072/647618b11_1011_0101_1000_0000/18b00_0110_0100_0111_0110//定点数相除结果商18‘b11_1111_1111_1111_1110-2小数11b100_0011_1001-967//将商和余数合并{1b1, 7‘b111 1110 - 1b1,10‘b0000111001}{1b1,7‘b1111101,10‘b0000111001}18‘b11_1111_0100_0011_1001-3015//将结果转换回浮点数-3015/2^10-2.9443359375相加合并法规则如下将商按小数的保留位宽进行放大然后再与小数部分相加相加时两边需要用符号位扩展到相同位宽如下是两个有符号相除采用符号位1位、整数位7位、小数位10位格式进行量化//浮点数等式-18.625/6.325-2.944664031620553//转换为定点格式(-18.625*2^10)/(6.325*2^10)-19072/647618b11_1011_0101_1000_0000/18b00_0110_0100_0111_0110 商18‘b11_1111_1111_1111_1110-2小数11b100_0011_1001-967//将商和余数合并(-210)(-967)18‘b11_1111_1000_0000_000018‘b11_1111_1100_0011_100118‘b11_1111_0100_0011_1001-3015//将结果转换回浮点数-3015/2^10-2.9443359375仿真验证在工程中添加一个除法IP核除数和被除数均为18位有符号数输出小数保留11位采用非阻塞时序。步骤1打开IP Catalog找到除法IP核步骤2打开除法IP核配置界面并进行配置步骤3生成除法IP核创建仿真激励文件后面弹出的define module页面直接关闭即可。在仿真激励文件中输入以下内容timescale1ns/1ps moduletb_div_gen_i18_i18_f11();//激励时钟reg aclk1b0;//被除数reg dividend_tvalid1b0;regsigned[23:0]dividend_tdatad0;//除数reg divisor_tvalid1b0;regsigned[23:0]divisor_tdatad0;//商和小数wiresigned[17:0]quotient;wiresigned[10:0]fractional;//采用加法合并的成定点数结果regsigned[17:0]add_q1018h0;//采用拼接合并的成定点数结果regsigned[28:0]splice_q10_temp29h0;wiresigned[17:0]splice_q10;//除法器输出包含商和小数wire div_dout_tvalid;wire[31:0]div_dout_tdata;//仿真结束标志reg sim_done_flag1b0;//仿真数据写入标志reg write_sim_flag1b0;//产生激励时钟initial begin aclk1b0;end always #10aclk~aclk;initial begin dividend_tvalid1b0;divisor_tvalid1b0;dividend_tdata0;divisor_tdata0;//商为0小数部分为0商和小数的符号位为2’b00//0/1.5---0/1536repeat(100)(posedge aclk);dividend_tvalid1b1;divisor_tvalid1b1;dividend_tdata0;divisor_tdata1536;(posedge aclk);dividend_tvalid1b0;divisor_tvalid1b0;//商为0小数部分为正商和小数的符号位为2’b00//0.5/1.5---512/1536repeat(100)(posedge aclk);dividend_tvalid1b1;divisor_tvalid1b1;dividend_tdata512;divisor_tdata1536;(posedge aclk);dividend_tvalid1b0;divisor_tvalid1b0;//商为0小数部分为负商和小数的符号位为2’b01//-0.5/1.5----512/1536repeat(100)(posedge aclk);dividend_tvalid1b1;divisor_tvalid1b1;dividend_tdata-512;divisor_tdata1536;(posedge aclk);dividend_tvalid1b0;divisor_tvalid1b0;//商为正小数部分为0商和小数的符号位为2’b00//1.5/0.5---1536/512repeat(100)(posedge aclk);dividend_tvalid1b1;divisor_tvalid1b1;dividend_tdata1536;divisor_tdata512;(posedge aclk);dividend_tvalid1b0;divisor_tvalid1b0;//商为正小数部分为正商和小数的符号位为2’b00//1.8/0.5---1843/512repeat(100)(posedge aclk);dividend_tvalid1b1;divisor_tvalid1b1;dividend_tdata1843;divisor_tdata512;(posedge aclk);dividend_tvalid1b0;divisor_tvalid1b0;//商为负小数部分为0商和小数的符号位为2’b10//-1.5/0.5----1536/512repeat(100)(posedge aclk);dividend_tvalid1b1;divisor_tvalid1b1;dividend_tdata-1536;divisor_tdata512;(posedge aclk);dividend_tvalid1b0;divisor_tvalid1b0;//商为负小数部分为负商和小数的符号位为2’b11//-1.8/0.5----1843/512repeat(100)(posedge aclk);dividend_tvalid1b1;divisor_tvalid1b1;dividend_tdata-1843;divisor_tdata512;(posedge aclk);dividend_tvalid1b0;divisor_tvalid1b0;//仿真结束repeat(100)(posedge aclk);sim_done_flag1b1;(posedge aclk);sim_done_flag1b0;end//商assign quotientdiv_dout_tdata[28:11];//小数assign fractionaldiv_dout_tdata[10:0];//采用加法合并成定点数其中符号位1位、整数位7位、小数位10位将商按小数的保留位宽进行放大然后再与小数部分相加相加时需要扩位always (posedge aclk)beginif(div_dout_tvalid1b1)add_q10{quotient[17],quotient[6:0],10h000}{{7{fractional[10]}},fractional};end//采用拼接合并成定点数其中符号位1位、整数位18位、小数位10位always (posedge aclk)beginif(div_dout_tvalid1b1)begincase({quotient[17],fractional[10]})2b00:splice_q10_temp{quotient[17],quotient,fractional[9:0]};2b01:splice_q10_temp{~quotient,fractional};2b10:splice_q10_temp{quotient[17],quotient,fractional[9:0]};2b11:splice_q10_temp{quotient[17],quotient-1b1,fractional[9:0]};endcase end end//将符号位1位、整数位18位、小数位10位转换为符号位1位、整数位7位、小数位10位assign splice_q10{splice_q10_temp[28],splice_q10_temp[16:0]};//产生仿真数据写入文件标志always (posedge aclk)begin write_sim_flagdiv_dout_tvalid;end//dout_tdata dividend_tdata/divisor_tdatadiv_gen_i18_i18_f11tb_div_gen_i18_i18_f11_inst0(.aclk(aclk),// input wire aclk.s_axis_divisor_tvalid(divisor_tvalid),// input wire s_axis_divisor_tvalid.s_axis_divisor_tdata(divisor_tdata),// input wire [23 : 0] s_axis_divisor_tdata.s_axis_dividend_tvalid(dividend_tvalid),// input wire s_axis_dividend_tvalid.s_axis_dividend_tdata(dividend_tdata),// input wire [23 : 0] s_axis_dividend_tdata.m_axis_dout_tvalid(div_dout_tvalid),// output wire m_axis_dout_tvalid.m_axis_dout_tdata(div_dout_tdata)// output wire [31 : 0] m_axis_dout_tdata);integer prtf;//创建仿真输出文件文件路径根据实际情况修改initial begin prtf$fopen(F:/AD9361/02-division/vivado_project/div_out.csv,w);$fwrite(prtf,divisor,dividend,quotient,fractional,add_q10,splice_q10\n);end//存储仿真输出数据always (posedge aclk)beginif(write_sim_flag1b1)$fwrite(prtf,%d,%d,%d,%d,%d,%d\n,dividend_tdata,divisor_tdata,quotient,fractional,add_q10,splice_q10);end//仿真结束关闭文件always (posedge aclk)beginif(sim_done_flag1b1)$fclose(prtf);end endmodule运行仿真仿真波形图如下计算结果验证仿真结束后会得到一个div_out.csv的文件可以通过excel表格验算结果是否正确excel表格计算结果xilinx除法IP核计算结果
延伸阅读

更多相关文章

2026/9/30 2:01:32

3ds Max到WebGL的三维交付链:gltf、TypeScript与性能实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 3:11:35

嵌入式开发AI agent环境搭建(arm-none-eabi / SDCC / OpenOCD)

推荐架构:Windows VSCode AI Agent,工具链覆盖 arm-none-eabi-gcc、SDCC、OpenOCD。 推荐架构 角色 工具 用途 编辑器 VSCode C/C 编辑、终端、任务管理 编译器 arm-none-eabi-gcc ARM Cortex-M / RTOS 项目 编译器 SDCC 51、STC、部分 8051 兼容 MCU …

2026/9/30 3:11:35

WiFi大师专业版4.0.5独立部署与流量主广告接入实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 3:11:35

从二进制数1开始:进制转换、位运算与工程实战复盘

1. 从“二进制数1”说起:为什么每日一题要从进制开始刷最早在牛客的每日一题列表里看到《二进制数1》这个标题时,我其实有点不以为然。心想二进制嘛,十进制转二进制、二进制转十进制,大一C语言课早就学过的东西,还需要…

2026/9/30 3:11:35

Cloud Functions WebSocket部署失败排查与迁移指南

如果你在一个Python项目里同时看到OperationError: code3的红色输出,和requirements.txt里躺着websockets这一行,那大概率已经踩到了Google Cloud Functions和长连接之间最深的那个坑。我最初是在一个实时聊天服务里遇到这个问题的:本地用Pyt…

2026/9/30 3:06:35

Spring Boot+Vue 3家具商城实战:数据库设计、库存扣减与Docker部署

1. 家具商城这个选题,难的不是商城而是家具先说个有意思的现象。每年到毕设季,或者想自己做点东西充实简历的时候,"商城系统"永远是出现频率最高的题目。书城、电商城、服装城、二手交易平台,改个名字就是一套新的。但如…

2026/9/29 11:07:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/29 21:48:03

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 0:01:22

MATLAB+Yalmip+CPLEX实战:综合能源系统优化调度全流程解析

做综合能源系统优化调度这活儿,最痛苦的不是建模本身,而是模型写完之后不知道该怎么求解。看论文里轻飘飘一句“采用Yalmip调用CPLEX求解”,自己上手时却往往卡在环境配置、变量声明、约束写法和求解状态判读上,一耗就是两三天。这…

2026/9/30 0:01:22

I3C比I2C快10倍?RK3576实战:速率、DTS配置与混合总线避坑指南

I3C 比 I2C 快 10 倍?这句话在嵌入式群里传了很久,每次都能吵出一堆截图。前段时间我正好在 RK3576 上调板级 I3C 接口,从控制器寄存器一路摸到 Linux DTS 配置,踩了不少坑,也把这笔速度账彻底算明白了。本文就用 RK35…

2026/9/30 0:01:22

字符串转对象:JSON.parse、new Function与URLSearchParams

“字符串转对象”这几个字,我在技术群里见过的问法至少有十几种:有人拿着一串{a:1,b:2}说 JSON.parse 直接报错,有人要从 URL 里抠出参数,还有人只是想把abc变成能挂属性的东西。js 这门语言里,字符串和对象之间的转换…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/29 9:46:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/29 6:36:14

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑