新闻详情

新闻详情

首页 / 资讯中心 / 详情

03 xilinx除法IP核的使用

发布时间:2026/10/1 5:20:14来源:尧图网络
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核计算结果
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

基于YOLO的课堂行为检测实战:从数据标注到部署全流程解析 2026/10/1 23:52:08

基于YOLO的课堂行为检测实战:从数据标注到部署全流程解析

简介:基于YOLO的课堂行为检测系统完整项目包,面向计算机视觉方向毕业设计、课程设计及入门实践者,解决课堂场景中学生举手、听讲、阅读、写字等行为自动识别与实时分析问题。资源共27个文件,压缩包约26.85MB,核心包含P…

阅读更多 →
YOLOv8无人机交通监控实战:从数据集训练到部署全流程 2026/10/1 23:51:55

YOLOv8无人机交通监控实战:从数据集训练到部署全流程

简介:这是基于YOLOv8的无人机交通监控系统完整代码包,面向计算机视觉与交通管理方向的毕业设计开发者,也适合对目标检测实战有需求的深度学习初学者。系统利用无人机高清摄像头实时采集交通画面,通过YOLOv8模型对行人、自行车、汽…

阅读更多 →
模型优化实战:从量化剪枝到TensorRT部署提速指南 2026/10/1 23:51:55

模型优化实战:从量化剪枝到TensorRT部署提速指南

从"训得动"到"用得动",这是每个做深度学习落地的工程师都绕不过去的坎。我最早接触Model-Optimizer这个词,是在一个半夜上线的AI推理服务连续超时的故障现场。模型在训练机上跑得好好的,FPS高得感人,一上生产…

阅读更多 →
水印检测数据集:VOC格式构建与YOLO转换全流程 2026/10/1 23:51:55

水印检测数据集:VOC格式构建与YOLO转换全流程

简介:水印数据集以 PASCAL VOC 格式组织,面向计算机视觉算法研究人员、学生及开发者,聚焦水印检测、定位、识别与去除任务,可直接服务于目标检测和语义分割模型的训练与评估。压缩包共含 2004 个文件,包括 1000 张 JPE…

阅读更多 →
5G毫米波信道仿真中的快速射线追踪:原理、实现与验证 2026/10/1 23:51:55

5G毫米波信道仿真中的快速射线追踪:原理、实现与验证

简介:一份面向5G毫米波信道仿真的快速射线追踪MATLAB源码包,适用于通信工程、网络规划相关的研究者与工程师,帮助在密集城区环境下预测毫米波信号的传播路径、损耗与多径效应。压缩包共23个文件,其中15个.m源码文件为核心算法实现…

阅读更多 →
2024年TensorFlow实战指南:安装、建模与PyTorch选型对比 2026/10/1 23:51:54

2024年TensorFlow实战指南:安装、建模与PyTorch选型对比

前几天有个朋友问我:现在是不是已经没人用TensorFlow了,大家都转PyTorch了?我反问他:你说的“没人”是指论文里的引用率,还是生产环境服务器上真正在跑的模型?这个问题其实值得好好拆开聊一聊。如果你是一个…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉