【FPGA】:ip核--Divider(除法器)

本文转自:【FPGA】:ip核–Divider(除法器)

二、 Divider(除法器)

概述

除法器顾名思义,用来做除法运算。

端口说明

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ip核的生成

(1)在ip catalog里面选择Divders

(2)channel setting,具体如下所述:

  • Algorithm type: 选择不同的算法模式,其中Radix2为常用的模式(位宽12到16时优先考虑),LutMult当时数较小的时候使用(数据宽度小于等于12时,优先考虑),High Radix是当数很大的时候使用(数据位宽大于16时)。常用的是Radix2。

  • Dividend Width:被除数的位数。

  • Has TLAST: 指定此通道是否具有 tlast 端口。 除法器不使用此信息。 该项用于简化系统设计。tlast信息以和数据路径相同的延迟传送到输出通道。

  • Has TUSER: 指定此通道是否具有 tuser 端口。 与 tlast 一样, 除法器不使用此信息。 该项用于简化系统设计。 tuser 位以和数据路径相同的延迟传送到输出。

  • TUSER Width: 当 Has tuser 为 TRUE 时可用,这将设置此通道的 tuser 端口的宽度。

  • Divisor Width:除数的位数。

  • Remainder Type:选择余数的模式。有两种模式:Remainder:余数,以及Fractional分数模式。

    • Remainder模式的余数模式位数固定,由系统根据除数自动设定。,计算公式为
      在这里插入图片描述
      比如:6/-4 = -1 REMD 2 -6/4 = -1 REMD –2。 其中商的位宽和被除数的位宽一致,位于高位,余数的位宽和除数的位宽一致,位于低位。

    • Fractional Width(f分数模式)模式,则可以在Fractional Width那一栏选择自己想要的余数位数。对于带分数输出的带符号模式,符号位同时存在于商和分数域中。例如,对于一个5位被除数、除数和分数输出:
      − 9 / 4 = 9 / − 4 = − ( 21 / 4 ) ,对应的为 10111 / 00100 o r 01001 / 11100 -9/4 = 9/-4 = -(2 1/4),对应的为10111/00100 or 01001/11100 9/4=9/4=(21/4),对应的为10111/00100or01001/11100
      其结果为 Quotient(商) = 11110 (= -2) Remainder (余数)= 11100 (= -1/4)
      在这里插入图片描述

常用模式为Remainder模式。本文也应选则Remainder模式。
在这里插入图片描述

(3)option的设置,具体如下所述:
在这里插入图片描述

2.4 测试代码

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2022/01/16 15:00:44
// Design Name: 
// Module Name: divider_tb
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module divider_tb();


	reg               aclk;
	reg               s_axis_divisor_tvalid;
	reg   [15:0]     s_axis_divisor_tdata;
	reg   [23:0]     s_axis_dividend_tdata;
	reg              s_axis_dividend_tvalid; 
	wire             m_axis_dout_tuser;
	wire             m_axis_dout_tvalid;
	wire  [39:0]     m_axis_dout_tdata;
  
	
	wire [23:0] quoeitnt;  //除数
	wire [15:0]  intrmd ;  //余数

  assign quoeitnt = m_axis_dout_tdata[39:16];
  assign intrmd   = m_axis_dout_tdatac[15:0];




div_gen_0 div_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 [23 : 0] s_axis_dividend_tdata
  .m_axis_dout_tvalid(m_axis_dout_tvalid),          // output wire m_axis_dout_tvalid
  .m_axis_dout_tuser(m_axis_dout_tuser),            // output wire [0 : 0] m_axis_dout_tuser
  .m_axis_dout_tdata(m_axis_dout_tdata)            // output wire [39 : 0] m_axis_dout_tdata
);

initial aclk=1;
always #5 aclk=~aclk;

initial begin
	s_axis_dividend_tvalid=0;
	s_axis_divisor_tvalid =0;
	#20;
	s_axis_dividend_tdata = 24'd6;
	s_axis_divisor_tdata  = 16'd4;
	s_axis_dividend_tvalid=1;
	s_axis_divisor_tvalid =1;
	#50;
	s_axis_divisor_tdata  = 16'd0;
end


endmodule

仿真结果

在这里插入图片描述

从图中可以看出,输出m_axis_dout_tdata滞后于输入2个时钟周期,这与ip核设置的一致,当除数位0时,发现m_axis_dout_tuser信号拉高,说明输入的除数为0,此时输出结果无效。

参考资料

数字信号处理-04- FPGA常用运算模块-除法器
vivado 除法器ip核的使用

### starRC、LEF 和 DEF 文件的 EDA 工具使用教程 #### 关于 starRC 的使用说明 starRC 是由 Synopsys 开发的一款用于寄生参数提取 (PEX) 的工具,在 detail routing 完成之后被调用,以提供精确的电阻电容延迟分析数据[^2]。该工具能够处理复杂的多层互连结构并支持多种工艺节点。 对于 starRC 的具体操作指南,通常可以从官方文档获取最权威的信息。访问 Synopsys 官方网站的技术资源页面,可以找到最新的产品手册以及应用笔记等资料。此外,还可以通过在线帮助系统获得交互式的指导和支持服务。 #### LEF 和 DEF 文件格式解析及其在 Cadence 中的应用 LEF(Library Exchange Format)和 DEF(Design Exchange Format)是两种广泛应用于集成电路布局布线阶段的标准文件格式之一[^3]。前者主要用于描述标准单元库中的元件几何形状;后者则记录了整个芯片版图的设计信息,包括但不限于各个模块的位置关系、网络连接情况等重要细节。 当涉及到这些文件类型的编辑或读取时,Cadence 提供了一系列强大的平台级解决方案,比如 Virtuoso Layout Editor 就可以直接打开并修改 LEF/DEF 格式的项目工程。为了更好地理解和运用这两种文件格式,建议参阅 Cadence 发布的相关培训材料或是参加其举办的专项课程学习活动。 ```bash # 示例命令:查看 LEF 或 DEF 文件内容 cat my_design.lef cat my_design.def ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值