跳转至

运算部件

进阶功能

本章节属于拓展功能,其主要目的是给大家一个做一个简单的进阶参考。进阶实验的目的是锻炼大家的自学能力。因此对本章节内容的答疑可能不会被接受。特此声明。

引入 IP 核 - 乘法器

  1. 在 IP 目录中找到 Multiplier, 双击开始配置 IP 核。

  2. 配置两个乘数的类型(有符号/无符号),以及位数。

    剩下的配置不需要更改。

  3. 在第二页配置乘法器的延迟和输出。

    一般输出配置不需要更改。

    Pipeline Stages 即为流水线级数,右侧会显示最优级数,在此配置下生成的乘法器占用资源最少。乘法器的内部是流水的。一般配置为最优级数,若更少,则乘法器会占用大量资源,增加时序违约的可能性。

    关于流水线级数

    这里的流水线级数可以设置为 0,即可以综合为组合逻辑。设置级数为 1,则为延迟一拍,下一个周期才能够获得结果。更多的级数以此类推。

    Synchronous Clear 即为同步复位信号,该复位信号将清空乘法器流水线。

乘法器信号和时序

  • CLK : 时钟信号
  • A, B : 输入,两个乘数
  • P : 输出,乘积
  • SCLR : 同步复位信号

下面假定 Pipeline Stages 为 3,一个乘法器时序如下:

CLKSCLRA91011B123Px91003033

注意到每周期输出的结果都是 3 个周期之前的乘积,即内部使用一个 3 个阶段的流水线来计算乘法。

同步复位会在 CLK 上升沿到来且 SCLR 为 1 时清空乘法器内流水线,即从当前周期开始连着 3 个周期输出 0,之后恢复。

更详细的说明和使用方法可以去 Xilinx 官方文档网站查看:乘法器文档

AXI Stream 握手协议

请先回顾 自研总线的设计 一节,然后再来看本节的握手协议。

AXI Stream 总线只有以下几个信号:

  • aclk : 时钟信号
  • tdata : 数据
  • tvalid : 高表示 master 想要发送请求
  • tready : 高表示 slave 完成请求处理

同学们可以与自研总线以及 Wishbone 总线中的信号对比,理解这几个信号的意义。

引入 IP 核 - 除法器

  1. 在 IP 目录中找到 Divider Generator, 双击开始配置 IP 核。

  2. Operand Sign: 配置被除数和除数是否带有符号位

    Dividend Channel 中配置被除数的位数,其余设置不要修改。

    Divisor Channel 中配置除数的位数,其余设置不要修改。

    Output Channel 中选择 Remainder 模式,这样输出的是商和余数。

    记除数和被除数中位数较多者的位数为 x ,则输出 tdata 有 2x 位, 高 x 位为商,低 x 位为余数。

    选择 Detect Divide-by-Zero, 这样在除 0 时, 输出端的 tuser 会输出 1。

  3. 第二页中选择工作模式为阻塞还是非阻塞。非阻塞的模式与乘法器的工作模式类似。如为阻塞模式,一般要选择 output has tready ,否则 valid 信号将在输出结果后拉低,使结果只有一个周期有效。

    选择 ARESETN 则会向除法器中加入 0 使能的复位信号。

    更详细的说明和使用方法可以去 Xilinx 官方文档网站查看:除法器文档

引入 IP 核 - 浮点运算器

  1. 在 IP 目录中找到 floating-point, 双击开始配置 IP 核。

  2. 在之后的几页中可以配置操作数精度,运算类型,以及工作在阻塞模式还是非阻塞模式。同时还会有是否输出上溢、下溢等标志,以及是否使用复位信号等等。在此不多赘述。

  3. 更详细的说明和使用方法可以去 Xilinx 官方文档网站查看:浮点运算器文档


最后更新: 2023年8月31日
作者:Jiajie Chen (4.59%), cuibst (95.41%)