MICROCHIP 徽标

MICROCHIP CoreFPU 核心浮点单元

MICROCHIP-CoreFPU-Cor-浮点单元产品

 

介绍 

  • 核心浮点单元 (CoreFPU) 专为单精度和双精度浮点数的浮点运算和转换操作而设计。CoreFPU 支持定点到浮点、浮点到定点的转换以及浮点加法、减法和乘法运算。IEEE® 浮点运算标准 (IEEE 754) 是浮点计算的技术标准。
  • 重要:CoreFPU 仅支持使用规范化数字进行计算,并且仅支持 Verilog 语言;不支持 VHDL。

概括
下表总结了 CoreFPU 的特性。

表 1. CoreFPU 特性 

核心版 本文档适用于CoreFPU v3.0。
支持的设备系列
  • PolarFire® SoC
  • PolarFire
  • RTG4™
支持的工具流程 需要 Libero® SoC v12.6 或更高版本。
许可 CoreFPU 没有许可证锁定。
安装说明 CoreFPU 必须通过 IP Catalog 更新功能自动安装到 Libero SoC 的 IP Catalog 中。或者,也可以从目录中手动下载 CoreFPU。IP 核安装完成后

安装后,它会在 SmartDesign 中配置、生成和实例化,以包含在项目中。

设备利用率和性能 设备资源利用率和性能中列出了 CoreFPU 的利用率和性能信息摘要。

CoreFPU 变更日志信息
本节提供了一个全面的view 从最新版本开始,新增功能已包含在内。有关已解决问题的更多信息,请参阅“已解决的问题”部分。

版本 什么是新的
v3.0 实施额外的输出标志来增强 IP 的准确性
v2.1 增加了双精度功能
v2.0 更新了时序波形
v1.0 CoreFPU 的第一个生产版本

1. 特点

CoreFPU具有以下主要特点:

  • 支持符合 IEEE-754 标准的单精度和双精度浮点数
  • 支持列出的转换:
    • 定点到浮点的转换
    • 浮点到定点的转换
  • 支持下列算术运算:
    • 浮点加法
    • 浮点减法
    • 浮点乘法
  • 仅为算术运算提供舍入方案(四舍五入到最接近的偶数)
  • 为浮点数提供溢出、下溢、无穷大(正无穷大、负无穷大)、安静 NaN(QNaN)和信号 NaN(SNaN)的标志。
  • 支持算术运算的完全流水线实现
  • 提供配置核心以满足设计要求

功能描述

  • IEEE 浮点运算标准 (IEEE 754) 是浮点计算的技术标准。术语“浮点”指的是数字的基数点(小数点或二进制小数点),该小数点相对于数字的有效数字位于任意位置。
    浮点数通常以科学计数法表示,由分数 (F) 和特定基数 (r) 的指数 (E) 组成,形式为 F × r^E。十进制数以 10 为基数 (F × 10^E);而二进制数以 2 为基数 (F × 2^E)。
  • 浮点数的表示形式并不唯一。例如amp例如,55.66 表示为 5.566 × 10^1、0.5566 × 10^2、0.05566 × 10^3,依此类推。小数部分已标准化。标准化后,小数点前只有一个非零数字。例如amp例如,十进制数 123.4567 标准化为 1.234567 × 10^2;二进制数 1010.1011B 标准化为 1.0101011B × 2^3。
  • 值得注意的是,浮点数用固定位数表示时会损失精度(例如ample,32 位或 64 位)。这是因为实数的数量是无限的(即使在 0.0 到 0.1 的小范围内也是如此)。另一方面,
    n 位二进制模式表示有限的 2^n 个不同数字。因此,并非所有实数都能被表示出来。取而代之的是使用最接近的近似值,这会导致精度损失。

单精度浮点数表示如下:

  • 符号位:1位
  • 指数宽度:8位
  • 有效数字精度:24 位(其中 23 位是显式存储的)

图 2-1. 32 位帧

MICROCHIP-CoreFPU-Cor-浮点单元- (2)双精度浮点数表示如下:

  • 符号位:1位
  • 指数宽度:11位
  • 有效数字精度:53 位(其中 52 位是显式存储的)

图 2-2. 64 位帧 MICROCHIP-CoreFPU-Cor-浮点单元- (3)CoreFPU 是两个转换模块(定点转浮点和浮点转定点)和三个算术运算模块(浮点加法、浮点减法和浮点乘法)的顶层集成。用户可以根据需求配置任意一种运算,以便将资源用于所选的运算。
下图显示了带有端口的顶层 CoreFPU 框图。

图 2-3. CoreFPU 端口框图

MICROCHIP-CoreFPU-Cor-浮点单元- (4)下表列出了输入和输出端口的宽度。表2-1. 输入和输出端口宽度

信号 单精度宽度 双精度宽度
艾因 [31:0] [63:0]
垃圾桶 [31:0] [63:0]
[31:0] [63:0]
[31:0] [63:0]

定点到浮点(转换)

配置为定点转浮点的 CoreFPU 会推断出定点转浮点转换模块。CoreFPU 的输入 (ain) 是包含整数和小数位的任意定点数。CoreFPU 配置器可以选择输入整数和小数的宽度。输入在 di_valid 信号上有效,输出在 do_valid 信号上有效。定点转浮点运算的输出 (aout) 为单精度或双精度浮点格式。
Examp定点到浮点转换运算的 le 如下表所列。
表 2-2。 前任ample 用于定点到浮点的转换

定点数 浮点数
艾因 整数 分数 符号 指数 尾数
0x12153524(32 位) 00010010000101010 011010100100100 0x4610a9a9 0 10001100 00100001010100110101001
0x0000000000008CCC

(64 位)

0000000000000000000000000000000000000000000000001 000110011001100 0x3FF199999999999A 0 01111111111 0001100110011001100110011001100110011001100110011010

浮点到定点(转换) 
配置为浮点转定点的 CoreFPU 会推断浮点转定点转换模块。CoreFPU 的输入 (ain) 可以是任意单精度或双精度浮点数,并产生包含整数和小数位的定点格式的输出 (aout)。输入在 di_valid 信号上有效,输出在 do_valid 信号上有效。CoreFPU 配置器提供选择输出整数和小数位宽度的选项。
Examp浮点到定点转换运算的 le 如下表所列。

表 2-3。 前任ample 用于浮点到定点的转换

浮点数 定点数
艾因 符号 指数 尾数 整数 分数
0x41bd6783(32 位) 0 10000011 01111010110011110000011 0x000bd678 00000000000010111 101011001111000
0x4002094c447c30d3

(64 位)

0 10000000000 0010000010010100110001000100011111000011000011010011 0x0000000000012095 0000000000000000000000000000000000000000000000010 010000010010101

浮点加法(算术运算)
配置为 FP ADD 的 CoreFPU 会推断浮点加法模块。它将两个浮点数(ain 和 bin)相加,并以浮点格式提供输出 (pout)。输入和输出均为单精度或双精度浮点数。输入在 di_valid 信号上有效,输出在 do_valid 信号上有效。核心会根据加法运算生成 ovfl_fg(溢出)、qnan_fg(非数字静默)、snan_fg(非数字信号)、pinf_fg(正无穷)和 ninf_fg(负无穷)标志。
Examp浮点加法运算的文件如下表所列。
表 2-4。 前任ample 用于浮点加法运算(32 位)

浮点值 符号 指数 尾数
浮点输入1 ain(0x4e989680) 0 10011101 00110001001011010000000
浮点输入2 bin(0x4f191b40) 0 10011110 00110010001101101000000
浮点加法输出pout(0x4f656680) 0 10011110 11001010110011010000000

表 2-5。 前任ample 用于浮点加法运算(64 位)

浮点值 符号 指数 尾数
浮点输入 1

ain (0x3ff4106ee30caa32)

0 01111111111 0100000100000110111011100011000011001010101000110010
浮点输入 2

bin (0x40020b2a78798e61)

0 10000000000 0010000010110010101001111000011110011000111001100001
浮点加法输出pout(0x400c1361e9ffe37a) 0 10000000000 1100000100110110000111101001111111111110001101111010

浮点减法(算术运算) 
配置为 FP SUB 的 CoreFPU 会推断浮点减法模块。它将两个浮点数(ain 和 bin)相减,并以浮点格式提供输出 (pout)。输入和输出均为单精度或双精度浮点数。输入在 di_valid 信号上有效,输出在 do_valid 信号上有效。内核会根据减法运算生成 ovfl_fg(溢出)、unfl_fg(下溢)、qnan_fg(非数字静默)、snan_fg(非数字信号)、pinf_fg(正无穷)和 ninf_fg(负无穷)标志。
Examp浮点减法运算的文件如下表所列。
表 2-6。 前任ample 表示浮点减法运算(32 位)

浮点值 符号 指数 尾数
浮点输入1 ain(0xac85465f) 1 01011001 00001010100011001011111
浮点输入 2 bin(0x2f516779) 0 01011110 10100010110011101111001
浮点减法输出pout(0xaf5591ac) 1 01011110 10101011001000110101011
浮点值 符号 指数 尾数
浮点输入 1

艾恩 (0x405569764adff823)

0 10000000101 0101011010010111011001001010110111111111100000100011
浮点输入 2

bin (0x4057d04e78dee3fc)

0 10000000101 0111110100000100111001111000110111101110001111111100
浮点减法输出pout(0xc02336c16ff75ec8) 1 10000000010 0011001101101100000101101111111101110101111011001000

浮点乘法(算术运算)
配置为 FP MULT 的 CoreFPU 可推断浮点乘法模块。它将两个浮点数(ain 和 bin)相乘,并以浮点格式提供输出 (pout)。输入和输出均为单精度或双精度浮点数。输入在 di_valid 信号上有效,输出在 do_valid 信号上有效。核心根据乘法运算生成 ovfl_fg(溢出)、unfl_fg(下溢)、qnan_fg(非数字静默)、snan_fg(非数字信号)、pinf_fg(正无穷)和 ninf_fg(负无穷)标志。
Examp浮点乘法运算的文件如下表所示。
表 2-8。 前任ample 用于浮点乘法运算(32 位)

浮点值 符号 指数 尾数
浮点输入1 ain(0x1ec7a735) 0 00111101 10001111010011100110101
浮点输入2 bin(0x6ecf15e8) 0 11011101 10011110001010111101000
浮点乘法输出 pout (0x4e21814a) 0 10011100 01000011000000101001010
浮点值 符号 指数 尾数
浮点输入 1

ain (0x40c1f5a9930be0df)

0 10000001100 0001111101011010100110010011000010111110000011011111
浮点输入 2

bin (0x400a0866c962b501)

0 10000000000 1010000010000110011011001001011000101011010100000001
浮点乘法输出pout(0x40dd38a1c3e2cae9) 0 10000001101 1101001110001010000111000011111000101100101011101001

 加法和减法真值表 
以下真值表列出了加法和减法运算的值。表 2-10. 加法真值表

数据A 数据B 符号位 结果 溢出 下溢 斯纳恩 问题NaN PINF NINF
QNaN/SNaN x 0 POSQNaN 0 0 0 1 0 0
x QNaN/SNaN 0 POSQNaN 0 0 0 1 0 0
0 波兹泽罗 0 0 0 0 0 0
正有限(y) 0 正有限(y) 0 0 0 0 0 0
负有限(y) 1 负有限(y) 0 0 0 0 0 0
正无穷 0 正无穷 0 0 0 0 1 0
负无穷 1 负无穷 0 0 0 0 0 1
正有限(y) 0 正有限(y) 0 0 0 0 0 0
正有限 正无穷 0 正无穷 0 0 0 0 1 0
桌子 2-10。 加法真值表(续)
数据A 数据B 符号位 结果 溢出 下溢 斯纳恩 问题NaN PINF NINF
正有限 负无穷 1 负无穷 0 0 0 0 0 1
负有限(y) 1 负有限(y) 0 0 0 0 0 0
负数 正无穷 0 正无穷 0 0 0 0 1 0
负数 负无穷 1 负无穷 0 0 0 0 0 1
正无穷 0 正无穷 0 0 0 0 1 0
正无穷 正有限 0 正无穷 0 0 0 0 1 0
正无穷 负数 0 正无穷 0 0 0 0 1 0
正无穷 正无穷 0 正无穷 0 0 0 0 1 0
正无穷 负无穷 0 POSQNaN 0 0 0 1 0 0
负无穷 1 负无穷 0 0 0 0 0 1
负无穷 正有限 1 负无穷 0 0 0 0 0 1
负无穷 负数 1 负无穷 0 0 0 0 0 1
负无穷 正无穷 0 POSQNaN 0 0 0 1 0 0
负无穷 负无穷 1 负无穷 0 0 0 0 0 1
正有限 正有限 0 正有限 0 0 0 0 0 0
正有限 正有限 0 正无穷 0 0 0 0 1 0
正有限 正有限 0/1 问题NaN 0 0 0 1 0 0
正有限 正有限 0/1 斯纳恩 0 0 1 0 0 0
正有限 正有限 0 波斯纳 1 0 1 0 0 0
正有限 负数 0 正有限 0 0 0 0 0 0
正有限 负数 1 负数 0 0 0 0 0 0
正有限 负数 0 波斯纳 0 1 1 0 0 0
负数 正有限 0 正有限 0 0 0 0 0 0
负数 正有限 1 负数 0 0 0 0 0 0
负数 正有限 0 波斯纳 0 1 1 0 0 0
负数 负数 1 负数 0 0 0 0 0 0
负数 负数 1 负无穷 0 0 0 0 0 1
负数 负数 0/1 问题NaN 0 0 0 1 0 0
负数 负数 0/1 斯纳恩 0 0 1 0 0 0
负数 负数 0 波斯纳 1 0 1 0 0 0
数据A 数据B 符号位 结果 溢出 下溢 斯纳恩 问题NaN PINF NINF
QNaN/SNaN x 0 POSQNaN 0 0 0 1 0 0
x QNaN/SNaN 0 POSQNaN 0 0 0 1 0 0
0 波兹泽罗 0 0 0 0 0 0
正有限(y) 1 负有限(y) 0 0 0 0 0 0
负有限(y) 0 正有限(y) 0 0 0 0 0 0
正无穷 1 负无穷 0 0 0 0 0 1
负无穷 0 正无穷 0 0 0 0 1 0
正有限(y) 0 正有限(y) 0 0 0 0 0 0
正有限 正无穷 1 负无穷 0 0 0 0 0 1
正有限 负无穷 0 正无穷 0 0 0 0 1 0
负有限(y) 1 负有限(y) 0 0 0 0 0 0
负数 正无穷 1 负无穷 0 0 0 0 0 1
桌子 2-11。 减法真值表(续)
数据A 数据B 符号位 结果 溢出 下溢 斯纳恩 问题NaN PINF NINF
负数 负无穷 0 正无穷 0 0 0 0 1 0
正无穷 0 正无穷 0 0 0 0 1 0
正无穷 正有限 0 正无穷 0 0 0 0 1 0
正无穷 负数 0 正无穷 0 0 0 0 1 0
正无穷 正无穷 0 POSQNaN 0 0 0 1 0 0
正无穷 负无穷 0 正无穷 0 0 0 0 1 0
负无穷 1 负无穷 0 0 0 0 0 1
负无穷 正有限 1 负无穷 0 0 0 0 0 1
负无穷 负数 1 负无穷 0 0 0 0 0 1
负无穷 正无穷 1 负无穷 0 0 0 0 0 1
负无穷 负无穷 0 POSQNaN 0 0 0 1 0 0
正有限 正有限 0 正有限 0 0 0 0 0 0
正有限 正有限 1 负数 0 0 0 0 0 0
正有限 正有限 0 波斯纳 0 1 1 0 0 0
正有限 负数 0 正有限 0 0 0 0 0 0
正有限 负数 0 正无穷 0 0 0 0 1 0
正有限 负数 0/1 问题NaN 0 0 0 1 0 0
正有限 负数 0/1 斯纳恩 0 0 1 0 0 0
正有限 负数 0 波斯纳 1 0 1 0 0 0
负数 正有限 1 负数 0 0 0 0 0 0
负数 正有限 1 负无穷 0 0 0 0 0 1
负数 正有限 0/1 问题NaN 0 0 0 1 0 0
负数 正有限 0/1 斯纳恩 0 0 1 0 0 0
负数 正有限 0 波斯纳 1 0 1 0 0 0
负数 负数 0 正有限 0 0 0 0 0 0
负数 负数 1 负数 0 0 0 0 0 0
负数 负数 0 波斯纳 0 1 1 0 0 0

重要的:

  • 前表中的“它们”表示任意数字。
  • 上表中的 表示不关心的情况。

乘法真值表 
下表列出了乘法运算的值。

表 2-12. 乘法真值表

数据A 数据B 符号位 结果 溢出 下溢 斯纳恩 问题NaN PINF NINF
QNaN/SNaN x 0 POSQNaN 0 0 0 1 0 0
x QNaN/SNaN 0 POSQNaN 0 0 0 1 0 0
0 波兹泽罗 0 0 0 0 0 0
正有限 0 波兹泽罗 0 0 0 0 0 0
负数 0 波兹泽罗 0 0 0 0 0 0
正无穷 0 POSQNaN 0 0 0 1 0 0
负无穷 0 POSQNaN 0 0 0 1 0 0
桌子 2-12。 乘法真值表(续)
数据A 数据B 符号位 结果 溢出 下溢 斯纳恩 问题NaN PINF NINF
正有限 0 波兹泽罗 0 0 0 0 0 0
正有限 正无穷 0 正无穷 0 0 0 0 1 0
正有限 负无穷 1 负无穷 0 0 0 0 0 1
负数 0 波兹泽罗 0 0 0 0 0 0
负数 正无穷 1 负无穷 0 0 0 0 0 1
负数 负无穷 0 正无穷 0 0 0 0 1 0
正无穷 0 POSQNaN 0 0 0 1 0 0
正无穷 正有限 0 正无穷 0 0 0 0 1 0
正无穷 负数 1 负无穷 0 0 0 0 0 1
正无穷 正无穷 0 正无穷 0 0 0 0 1 0
正无穷 负无穷 1 负无穷 0 0 0 0 0 1
负无穷 0 POSQNaN 0 0 0 1 0 0
负无穷 正有限 1 负无穷 0 0 0 0 0 1
负无穷 负数 0 正无穷 0 0 0 0 1 0
负无穷 正无穷 1 负无穷 0 0 0 0 0 1
负无穷 负无穷 0 正无穷 0 0 0 0 1 0
正有限 正有限 0 正有限 0 0 0 0 0 0
正有限 正有限 0 正无穷 0 0 0 0 1 0
正有限 正有限 0 POSQNaN 0 0 0 1 0 0
正有限 正有限 0 波斯纳 0 0 1 0 0 0
正有限 正有限 0 波斯纳 1 0 1 0 0 0
正有限 正有限 0 波斯纳 0 1 1 0 0 0
正有限 负数 1 负数 0 0 0 0 0 0
正有限 负数 1 负无穷 0 0 0 0 0 1
正有限 负数 0 POSQNaN 0 0 0 1 0 0
正有限 负数 0 波斯纳 0 0 1 0 0 0
正有限 负数 0 波斯纳 1 0 1 0 0 0
正有限 负数 0 波斯纳 0 1 1 0 0 0
负数 正有限 1 负数 0 0 0 0 0 0
负数 正有限 1 负无穷 0 0 0 0 0 1
负数 正有限 0 POSQNaN 0 0 0 1 0 0
负数 正有限 0 波斯纳 0 0 1 0 0 0
负数 正有限 0 波斯纳 1 0 1 0 0 0
负数 正有限 0 波斯纳 0 1 1 0 0 0
负数 负数 0 正有限 0 0 0 0 0 0
负数 负数 0 正无穷 0 0 0 0 1 0
负数 负数 0 POSQNaN 0 0 0 1 0 0
负数 负数 0 POSQNaN 0 0 1 0 0 0
负数 负数 0 POSQNaN 1 0 1 0 0 0
负数 负数 0 POSQNaN 0 1 1 0 0 0

重要的:

符号位‘0’定义正输出,‘1’定义负输出。
上表中的 x 表示不关心条件。

CoreFPU参数和接口信号
本节讨论 CoreFPU 配置器设置和 I/O 信号中的参数。

配置 GUI 参数 
下表列出了适用于 FPU 单元的可配置选项数量。如果需要非默认配置,请使用配置对话框为可配置选项选择合适的值。

表 3-1. CoreFPU 配置 GUI 参数 

参数名称 默认 描述
精确 单身的 根据需要选择操作:

单精度
双精度

转换类型 定点到浮点的转换 根据需要选择操作:
  • 定点到浮点的转换
  • 浮点到定点的转换
  • 浮点加法
  • 浮点减法
  • 浮点乘法
输入分数宽度1 15 配置输入 ain 和 bin 信号中的小数点

有效范围是 31–1

输出分数宽度2 15 配置输出 aout 信号中的小数点

有效范围是 51–1

重要的:

  1. 此参数仅在定点到浮点转换期间可配置。
  2. 此参数仅在浮点到定点转换期间可配置。

输入和输出信号(提问)
下表列出了CoreFPU的输入输出端口信号。

表 3-2. 端口说明 

信号名称 宽度 类型 描述
时钟 1 输入 主系统时钟
恢复时间 1 输入 低电平有效异步复位
di_valid 1 输入 高电平有效输入

该信号表示 ain[31:0]、ain[63:0] 和 bin[31:0]、bin[63:0] 上的数据有效。

艾因 32/64 输入 输入总线(用于所有操作)
垃圾桶1 32/64 输入 B 输入总线(仅用于算术运算)
2 32/64 输出 选择定点到浮点或浮点到定点转换操作时的输出值。
1 32/64 输出 选择加法、减法或乘法运算时的输出值。
桌子 3-2。 端口描述(续)
信号名称 宽度 类型 描述
执行有效 1 输出 高电平有效信号

该信号表示 pout/aout 数据总线上的数据有效。

ovfl_fg3 1 输出 高电平有效信号

该信号表示浮点运算期间溢出。

unfl_fg 1 输出 高电平有效信号

该信号表示浮点运算期间的下溢。

qnan_fg3 1 输出 高电平有效信号

该信号表示浮点运算期间的安静非数 (QNaN)。

snan_fg 1 输出 高电平有效信号

该信号表示浮点运算期间发出非数字信号 (SNaN)。

pinf_fg3 1 输出 高电平有效信号

该信号表示浮点运算期间的正无穷大。

ninf_fg 1 输出 高电平有效信号

该信号表示浮点运算期间的负无穷大。

重要的:

  1. 此端口仅适用于浮点加法、减法或乘法运算。
  2. 此端口仅适用于定点到浮点和浮点到定点的转换操作。
  3. 该端口可用于浮点到定点、浮点加法、浮点减法和浮点乘法。

Libero Design Suite 中 CoreFPU 的实现

本节介绍Libero Design Suite中CoreFPU的实现。

智能设计 

CoreFPU 可通过 Libero IP 目录下载 web 存储库。一旦将其列入目录,即可使用 SmartDesign 流程实例化核心。有关使用 SmartDesign 配置、连接和生成核心的信息,请参阅 Libero SoC 在线帮助。
配置并生成核心实例后,使用 CoreFPU 附带的测试平台进行基本功能仿真。测试平台参数会自动根据 CoreFPU 配置进行调整。CoreFPU 将被实例化为更大设计的一个组件。
图4-1. 用于算术运算的SmartDesign CoreFPU实例

MICROCHIP-CoreFPU-Cor-浮点单元- (5)图4-2. 用于转换操作的SmartDesign CoreFPU实例 MICROCHIP-CoreFPU-Cor-浮点单元- (6)

 

定点到浮点的转换
在定点到浮点的转换过程中,输入分数宽度是可配置的。输出宽度默认设置为单精度 32 位,双精度浮点 64 位。
要从定点转换为浮点,请选择定点到浮点转换类型,如下图所示。

MICROCHIP-CoreFPU-Cor-浮点单元- (7)浮点到定点 
在浮点到定点的转换过程中,输出小数宽度是可配置的,输入宽度默认设置为单精度 32 位、双精度浮点 64 位。
要从浮点转换为定点,请选择浮点到定点转换类型,如下图所示。
图 4-4. 用于浮点到定点的 CoreFPU 配置器 MICROCHIP-CoreFPU-Cor-浮点单元- (8)浮点加法/减法/乘法
在浮点加法、减法和乘法运算期间,输入分数宽度和输出分数宽度不可配置,因为这些是浮点算术运算,并且输入/输出宽度默认设置为 32 位单精度和 64 位双精度浮点。
下图显示了用于浮点减法运算的 CoreFPU 配置器。

图 4-5. 用于浮点减法的 CoreFPU 配置器MICROCHIP-CoreFPU-Cor-浮点单元- (9)模拟(提问)
要运行仿真,请在核心配置窗口中选择“用户测试台”。生成 CoreFPU 后,综合前测试台硬件描述语言 (HDL) file安装在 Libero 中。

仿真波形(提问)
本节讨论 CoreFPU 的模拟波形。
下图显示了 32 位和 64 位定点到浮点转换的波形。MICROCHIP-CoreFPU-Cor-浮点单元- (10)

MICROCHIP-CoreFPU-Cor-浮点单元- (11) MICROCHIP-CoreFPU-Cor-浮点单元- (12) MICROCHIP-CoreFPU-Cor-浮点单元- (13)

系统集成
下图显示了一个前amp使用核心的 le。在这个例子中amp例如,设计 UART 用作设计与主机 PC 之间的通信通道。信号 ain 和 bin(分别为 32 位或 64 位宽度)是从 UART 到设计的输入。CoreFPU 接收到 di_valid 信号后,计算结果。计算结果后,do_valid 信号变为高电平并将结果(aout/pout 数据)存储在输出缓冲区中。此过程同样适用于转换和算术运算。对于转换运算,仅输入 ain 即可;而对于算术运算,则需要 ain 和 bin 输入。输出 aout 启用用于转换运算,pout 端口启用用于算术运算。
图 4-16。 前任ampCoreFPU 系统

MICROCHIP-CoreFPU-Cor-浮点单元- (14)

 

  1. 综合(提问)
    要在 CoreFPU 上运行综合,请将设计根设置为 IP 组件实例,然后从 Libero 设计流程窗格运行综合工具。
    布局布线(提问)
    设计综合完成后,运行布局布线工具。CoreFPU 无需特殊的布局布线设置。
  2. 用户测试台(提问)
    CoreFPU IP 版本附带用户测试平台。您可以使用此测试平台验证 CoreFPU 的功能行为。

下图显示了用户测试台的简化框图。用户测试台实例化了已配置的 CoreFPU 设计 (UUT),并包含行为测试数据生成器、必要的时钟和复位信号。
图 4-17. CoreFPU 用户测试台

MICROCHIP-CoreFPU-Cor-浮点单元- (15)重要提示:您必须监控 ModelSim 模拟器中的输出信号,请参阅模拟部分。

附加参考(提问)
本节提供了附加信息的列表。
有关软件、设备和硬件的更新和其他信息,请访问

Microchip FPGA 和 PLD 的知识产权页面 web地点。

  1. 已知问题和解决方法(提出问题)
    CoreFPU v3.0 没有已知问题和解决方法。
  2. 已停产的功能和设备(提问)
    此 IP 版本中没有已停止使用的功能和设备。

词汇表

以下是本文件中使用的术语和定义的列表。
表 6-1. 术语和定义

学期 定义
浮点运算单元 浮点单元
FP 添加 浮点加法
FP子 浮点减法
FP 多重 浮点乘法

已解决的问题 
下表列出了各个 CoreFPU 版本的所有已解决的问题。

表 7-1。已解决的问题

发布 描述
3.0 以下是 v3.0 版本中所有已解决问题的列表:

案件编号:01420387 和 01422128

添加了舍入方案逻辑(四舍五入到最接近的偶数)。

2.1 以下是 v2.1 版本中所有已解决问题的列表:
当实例化多个核心时,由于存在重复模块,设计会遇到问题。
重命名 CoreFPU IP 实例会导致“未定义模块”错误。
1.0 初始版本

设备资源利用率和性能

CoreFPU 宏在下表列出的系列中实现。
表 8-1. 32 位 FPU PolarFire 单元设备利用率

FPGA 资源 利用率
家庭 4个查找表 数字化光纤 全部的 数学块 设备 百分比tage 表现 延迟
定点到浮点
极地火® 260 104 364 0 强积金300T 0.12 310兆赫 3
浮点到定点
PolarFire 591 102 693 0 强积金300T 0.23 160兆赫 3
浮点加法
PolarFire 1575 1551 3126 0 强积金300T 1.06 340兆赫 16
浮点减法
PolarFire 1561 1549 3110 0 强积金300T 1.04 345兆赫 16
浮点乘法
PolarFire 465 847 1312 4 强积金300T 0.44 385兆赫 14
FPGA 资源 利用率
家庭 4个查找表 数字化光纤 全部的 数学块 设备 百分比tage 表现 延迟
定点到浮点
RTG4™ 264 104 368 0 RT4G150 0.24 160兆赫 3
浮点到定点
RTG4 439 112 551 0 RT4G150 0.36 105兆赫 3
浮点加法
RTG4 1733 1551 3284 0 RT4G150 1.16 195兆赫 16
浮点减法
RTG4 1729 1549 3258 0 RT4G150 1.16 190兆赫 16
浮点乘法
RTG4 468 847 1315 4 RT4G150 0.87 175兆赫 14
FPGA 资源 利用率
家庭 4个查找表 数字化光纤 全部的 数学块 设备 百分比tage 表现 延迟
定点到浮点
极地火® 638 201 849 0 强积金300T 0.28 305兆赫 3
浮点到定点
PolarFire 2442 203 2645 0 强积金300T 0.89 110兆赫 3
浮点加法
PolarFire 5144 4028 9172 0 强积金300T 3.06 240兆赫 16
浮点减法
PolarFire 5153 4026 9179 0 强积金300T 3.06 250兆赫 16
浮点乘法
PolarFire 1161 3818 4979 16 强积金300T 1.66 340兆赫 27
FPGA 资源 利用率
家庭 4个查找表 数字化光纤 全部的 数学块 设备 百分比tage 表现 延迟
定点到浮点
RTG4™ 621 201 822 0 RT4G150 0.54 140兆赫 3
浮点到定点
RTG4 1114 203 1215 0 RT4G150 0.86 75兆赫 3
浮点加法
RTG4 4941 4028 8969 0 RT4G150 5.9 140兆赫 16
浮点减法
RTG4 5190 4026 9216 0 RT4G150 6.07 130兆赫 16
浮点乘法
RTG4 1165 3818 4983 16 RT4G150 3.28 170兆赫 27

重要提示:要增加频率,请在综合设置中选择启用重定时选项。

修订历史

修订历史描述了文档中实施的更改。更改按修订列出,从最新发布开始。

MICROCHIP-CoreFPU-Cor-浮点单元- (1)

微芯片 FPGA 支持

Microchip FPGA 产品组为其产品提供各种支持服务,包括客户服务、客户技术支持中心、 web网站和全球销售办事处。 建议客户在联系支持之前访问 Microchip 在线资源,因为他们的查询很可能已经得到解答。
通过以下方式联系技术支持中心 web网站 www.microchip.com/support. 提及 FPGA 器件部件号,选择合适的案例类别,然后上传设计 files 同时创建技术支持案例。
联系客户服务以获得非技术产品支持,例如产品定价、产品升级、更新信息、订单状态和授权。

  • 从北美拨打 800.262.1060
  • 从世界其他地方拨打 650.318.4460
  • 传真,来自世界各地,650.318.8044

微芯信息

商标
“Microchip”名称和徽标、“M”徽标以及其他名称、徽标和品牌是 Microchip Technology Incorporated 或其附属公司和/或子公司在美国和/或其他国家/地区的注册和非注册商标(“Microchip 商标”)。有关 Microchip 商标的信息可访问 https://www.microchip.com/en-us/about/legal-information/microchip-trademarks
ISBN: 979-8-3371-0947-3

法律声明
本出版物及其信息仅可用于 Microchip 产品,包括设计、测试 Microchip 产品并将其与您的应用程序集成。 以任何其他方式使用此信息均违反这些条款。 有关设备应用程序的信息仅为您提供方便而提供,可能会被更新所取代。 您有责任确保您的应用程序符合您的规范。 如需更多支持,请联系您当地的 Microchip 销售办事处,或通过以下网址获取更多支持 www.microchip.com/en-us/support/design-help/client-support-services

本信息由 MICROCHIP “按原样”提供。MICROCHIP 不作任何明示或暗示、书面或口头、法定或其他形式的陈述或保证,包括但不限于任何不侵权、适销性和适用于特定用途的默示保证,或与其状况、质量或性能相关的保证。

在任何情况下,对于与该信息或其使用有关的任何间接、特殊、惩罚性、偶然或后果性损失、损害、成本或费用,无论其原因如何,即使 MICROCHIP 已被告知发生此类损失的可能性或此类损害是可预见的,MICROCHIP 均不承担任何责任。在法律允许的最大范围内,MICROCHIP 对以任何方式与该信息或其使用有关的所有索赔的总赔偿责任不得超过您为该信息直接向 MICROCHIP 支付的费用(如有)。

在生命支持和/或安全应用中使用 Microchip 设备的风险完全由买方承担,买方同意为 Microchip 辩护、赔偿并免除其因此类使用而导致的任何和所有损害、索赔、诉讼或费用。除非另有说明,否则不会以任何方式(隐含或以其他方式)转让任何 Microchip 知识产权许可。

Microchip 设备代码保护功能
请注意 Microchip 产品的代码保护功能的以下详细信息:

  • Microchip 产品符合其特定 Microchip 数据手册中所包含的规格。
  • Microchip 相信,其产品系列在按照预期方式、符合操作规范和在正常条件下使用时是安全的。
  • Microchip 重视并积极保护其知识产权。严格禁止尝试破坏 Microchip 产品的代码保护功能,否则可能违反《数字千年版权法》。
  • Microchip 或任何其他半导体制造商都无法保证其代码的安全性。代码保护并不意味着我们保证产品“牢不可破”。代码保护在不断发展。Microchip 致力于不断改进我们产品的代码保护功能。

文件/资源

MICROCHIP CoreFPU 核心浮点单元 [pdf] 用户指南
v3.0、v2.1、v2.0、v1.0、CoreFPU 核心浮点单元、核心浮点单元、浮点单元、点单元

参考

发表评论

您的电子邮件地址不会被公开。 必填字段已标记 *