跳转到主要内容

XilinxFloating-Point IP

demi 提交于

<font color="#FD8900">作者:OpenSLee</font>

<font size="4" color="red" style="line-height: 45px;"><strong>1、Floating-Point IP支持的运算操作</strong></font>

1)Multiply—乘法

2) Add/subtract—加法和减法

3)Accumulator—累加

4) Fused multiply-add--融合乘加

5) Divide—除法

6)Square-root—平方根

7) Comparison—比较

8) Reciprocal—倒数

9)Reciprocal square root—倒数平方根

10)Absolute value—绝对值

11) Natural logarithm—自然对数

12)Exponential—指数

13)Conversion from floating-point to fixed-point—浮点转定点

14)Conversion from fixed-point to floating-point—定点转浮点

15) Conversion between floating-point types—浮点类型之间的转换

<font size="4" color="red" style="line-height: 45px;"><strong>2、Floating-Point IP接口</strong></font>

如下图所示,Xilinx Floating-Point IP主要分为操作数s_axis_a,s_axis_b,s_axis_c,可编程操作s_axis_operation和输出结果m_axis_result。

<center><img src="http://xilinx.eetrend.com/files/2020-02/wen_zhang_/100047729-90751-1.jp…; alt=""></center><br>

<strong>2.1 s_axis_operation_tdata</strong>

当我们同时选择加法和减法运算或选择可编程比较器时,将存在s_axis_operation通道。s_axis_operation_tdata的具体含义如下表所示。

<center><img src="http://xilinx.eetrend.com/files/2020-02/wen_zhang_/100047729-90752-2.pn…; alt=""></center><br>

<strong>2.2 m_axis_result_tdata</strong>

如果是比较操作,则结果中的有效位取决于所选的比较操作。

<center><img src="http://xilinx.eetrend.com/files/2020-02/wen_zhang_/100047729-90753-3.pn…; alt=""></center><br>

<font size="4" color="red" style="line-height: 45px;"><strong>3、AXI4-Stream Protocol</strong></font>

使用AXI4-Stream接口带来了标准化,并增强了Xilinx IP LogiCORE™解决方案的互操作性。除了诸如aclk,acclken和aseten之类的常规控制信号外,所有往返于浮点运算符核心的输入和输出均使用AXI4-Stream通道进行传输。通道始终由TVALID和TDATA以及几个可选的端口和字段组成。在浮点运算符中,支持的可选端口为TREADY,TLAST和TUSER。 TVALID和TREADY一起执行握手以传输消息,其中有效负载为TDATA,TUSER和TLAST。浮点运算符对TDATA字段中包含的操作数进行运算,并将结果输出到输出通道的TDATA字段中。浮点运算符本身并不使用TUSER和TLAST输入,但是内核提供了以与TDATA相同的延迟来传送这些字段的功能。预期该功能可简化系统中浮点运算符的使用。例如,浮点运算符可能正在处理流式打包数据。在此示例中,核心可以配置为通过分组数据通道的TLAST,从而节省了系统设计人员为该信息构建旁路路径的工作。

<strong>Basic Handshake:</strong>

如下图所示,在AXI4-Stream通道中的数据传输。 TVALID由通道的源(主)侧驱动,而TREADY由接收器(从属)驱动。 TVALID指示有效负载字段(TDATA,TUSER和TLAST)中的值有效。 TREADY表示从机已准备好接收数据。当TVALID和TREADY在一个周期中都为TRUE时,将发生传输。主机和从机分别为下一次传输分别设置TVALID和TREADY。

<center><img src="http://xilinx.eetrend.com/files/2020-02/wen_zhang_/100047729-90754-4.pn…; alt=""></center><br>

参考:pg060-floating-point.pdf

文章转载自: <a href="https://mp.weixin.qq.com/s/0n85iuoWC6uwZD1hmiUyng">FPGA开源工作室</a&gt;(leezym0317)
*本文由作者授权转发,如需转载请联系作者本人