FPGA 整数运算 IP 核

Intel FPGA 整数运算 IP 内核用户指南
针对英特尔® Quartus® Prime 设计套件更新:20.3

在线版 反馈

UG-01063

编号:683490 版本:2020.10.05

内容
内容
1. Intel FPGA Integer Arthmetic IP Cores………………………………………………………….. 5
2. LPM_COUNTER(计数器)IP核……………………………………………………………………………………………………………………………………7 2.1. 特点…………………………………………………………………………………………7 2.2. Verilog HDL 原型………………………………………………………………………….. 8 2.3. VHDL 组件声明…………………………………………………………………….8 2.4. VHDL LIBRARY_USE 声明…………………………………………………………………… 9 2.5. 端口…………………………………………………………………………………………..9 2.6. 参数………………………………………………………………………………………… 10
3. LPM_DIVIDE (Divider) Intel FPGA IP Core………………………………………………………….. 12 3.1. 特征………………………………………………………………………………………………。 12 3.2。 Verilog HDL 原型……………………………………………………………………………… 12 3.3. VHDL 组件声明……………………………………………………………….. 13 3.4. VHDL LIBRARY_USE声明………………………………………………………………。 13 3.5。 端口……………………………………………………………………………………………… 13 3.6. 参数………………………………………………………………………………………… 14
4. LPM_MULT(乘法器)IP核……………………………………………………………………。 16 4.1。 特征………………………………………………………………………………………………。 16 4.2。 Verilog HDL 原型……………………………………………………………………………… 17 4.3. VHDL 组件声明……………………………………………………………….. 17 4.4. VHDL LIBRARY_USE声明………………………………………………………………。 17 4.5。 信号………………………………………………………………………………………… 18 4.6. Stratix V、Arria V、Cyclone V 和 Intel Cyclone 10 LP 设备的参数……………… 18 4.6.1. 通用选项卡………………………………………………………………………………18 4.6.2. 总则 2 选项卡……………………………………………………………………………… 19 4.6.3. 流水线选项卡……………………………………………………………………………… 19 4.7. 英特尔 Stratix 10、英特尔 Arria 10 和英特尔 Cyclone 10 GX 设备的参数………….. 20 4.7.1. 通用选项卡………………………………………………………………………………20 4.7.2. 总则 2 选项卡…………………………………………………………………………20 4.7.3. 流水线…………………………………………………………………………21
5. LPM_ADD_SUB(加法器/减法器)………………………………………………………………………… 22 5.1. 特征………………………………………………………………………………………………。 22 5.2。 Verilog HDL 原型……………………………………………………………………………… 23 5.3. VHDL 组件声明……………………………………………………………….. 23 5.4. VHDL LIBRARY_USE声明………………………………………………………………。 23 5.5。 端口………………………………………………………………………………………………23 5.6. 参数…………………………………………………………………………………… 24
6. LPM_COMPARE(比较器)……………………………………………………………………………… 26 6.1. 特征………………………………………………………………………………………………。 26 6.2。 Verilog HDL 原型……………………………………………………………………………… 27 6.3. VHDL 组件声明……………………………………………………………….. 27 6.4. VHDL LIBRARY_USE声明………………………………………………………………。 27 6.5。 端口……………………………………………………………………………………………… 27 6.6. 参数…………………………………………………………………………………… 28

Intel FPGA 整数运算 IP 内核用户指南 2

发送反馈

内容

7. ALTECC(纠错码:Encoder/Decoder)IP核………………………………………… 30
7.1. ALTECC 编码器特性…………………………………………………………………………..31 7.2. Verilog HDL 原型(ALTECC_ENCODER)……………………………………………………。 32 7.3。 Verilog HDL 原型(ALTECC_DECODER)……………………………………………………。 32 7.4。 VHDL 组件声明(ALTECC_ENCODER)……………………………………………………33 7.5. VHDL 组件声明(ALTECC_DECODER)………………………………………………33 7.6. VHDL LIBRARY_USE声明………………………………………………………………。 33 7.7。 编码器端口………………………………………………………………………………………… 33 7.8. 解码器端口…………………………………………………………………………………………34 7.9. 编码器参数……………………………………………………………………………… 34 7.10. 解码器参数……………………………………………………………………………… 35
8. Intel FPGA 乘法加法器 IP 核………………………………………………………………. 36
8.1. 特征………………………………………………………………………………………………。 37 8.1.1。 预加器……………………………………………………………………………….. 38 8.1.2. 收缩期延迟寄存器……………………………………………………………….. 40 8.1.3. 预载常数………………………………………………………………………… 43 8.1.4. 双蓄能器…………………………………………………………………… 43
8.2. Verilog HDL 原型……………………………………………………………………………… 44 8.3. VHDL 组件声明……………………………………………………………….. 44 8.4. VHDL LIBRARY_USE声明………………………………………………………………。 44 8.5。 信号………………………………………………………………………………………… 44 8.6. 参数…………………………………………………………………………………… 47
8.6.1. 通用选项卡………………………………………………………………………………47 8.6.2. 额外模式选项卡…………………………………………………………………….. 47 8.6.3。 乘数选项卡………………………………………………………………………….. 49 8.6.4。 Preadder Tab…………………………………………………………………………。 51 8.6.5。 蓄能器选项卡…………………………………………………………………….. 53 8.6.6. 收缩/Chainout 选项卡……………………………………………………………………. 55 8.6.7。 流水线选项卡……………………………………………………………………………… 56
9. ALTMEMMULT (Memory-based Constant Coefficient Multiplier) IP核………………………………57
9.1. 特征………………………………………………………………………………………………。 57 9.2。 Verilog HDL 原型……………………………………………………………………………… 58 9.3. VHDL 组件声明……………………………………………………………….. 58 9.4. 端口……………………………………………………………………………………………… 59 9.5. 参数………………………………………………………………………………………… 59
10. ALTMULT_ACCUM (Multiply-Accumulate) IP核…………………………………………………… 61
10.1. 特点…………………………………………………………………………………….. 62 10.2. Verilog HDL 原型…………………………………………………………………………..62 10.3. VHDL 组件声明…………………………………………………………………… 63 10.4. VHDL LIBRARY_USE 声明……………………………………………………………………63 10.5. 端口……………………………………………………………………………………。 63 10.6。 参数…………………………………………………………………………………………。 64
11. ALTMULT_ADD (Multiply-Adder) IP核…………………………………………………………..69
11.1. 特点…………………………………………………………………………………….. 71 11.2. Verilog HDL 原型……………………………………………………………………..72 11.3. VHDL 组件声明…………………………………………………………………… 72 11.4. VHDL LIBRARY_USE声明………………………………………………………………72

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 3

内容
11.5。 端口……………………………………………………………………………………。 72 11.6。 参数…………………………………………………………………………………………。 73
12. ALTMULT_COMPLEX(复数乘法器)IP核……………………………………………… 86 12.1. 复数乘法……………………………………………………………………。 86 12.2。 规范表示………………………………………………………………………… 87 12.3. 常规表示法………………………………………………………………。 87 12.4。 特点…………………………………………………………………………………….. 88 12.5. Verilog HDL 原型…………………………………………………………………………..88 12.6. VHDL 组件声明…………………………………………………………………… 89 12.7. VHDL LIBRARY_USE 声明……………………………………………………………………89 12.8. 信号……………………………………………………………………………………。 89 12.9。 参数…………………………………………………………………………………………。 90后
13. ALTSQRT(整数平方根)IP核………………………………………………………………92 13.1. 特点…………………………………………………………………………………….. 92 13.2. Verilog HDL 原型…………………………………………………………………………..92 13.3. VHDL 组件声明…………………………………………………………………… 93 13.4. VHDL LIBRARY_USE 声明……………………………………………………………………93 13.5. 端口……………………………………………………………………………………。 93 13.6。 参数…………………………………………………………………………………………。 94
14. PARALLEL_ADD(并行加法器)IP核………………………………………………………….. 95 14.1. 特点…………………………………………………………………………………….95 14.2. Verilog HDL 原型…………………………………………………………………………..95 14.3. VHDL 组件声明…………………………………………………………………… 96 14.4. VHDL LIBRARY_USE 声明……………………………………………………………………96 14.5. 端口……………………………………………………………………………………。 96 14.6。 参数…………………………………………………………………………………………。 97
15. Integer Arithmetic IP Cores User Guide Document Archives…………………………………… 98
16. 英特尔 FPGA 整数运算 IP 内核用户指南的文档修订历史……。 99

Intel FPGA 整数运算 IP 内核用户指南 4

发送反馈

683490 | 2020.10.05 反馈意见

1. Intel FPGA 整数运算 IP 核

您可以使用英特尔® FPGA 整数 IP 核在您的设计中执行数学运算。

与编写您自己的函数相比,这些函数提供了更高效的逻辑综合和设备实现。 您可以定制 IP 核以满足您的设计要求。

Intel 整数运算 IP 核分为以下两类: · 参数化模块库 (LPM) IP 核 · Intel 专用 (ALT) IP 核

下表列出了整数运算 IP 内核。

表 1.

IP核列表

IP核

LPM IP核

LPM_计数器

LPM_DIVIDE

LPM_MULT

LPM_ADD_SUB
LPM_比较
Intel 特定 (ALT) IP 内核 ALTECC

功能结束view 计数器分频器乘数
加法器或减法器比较器
ECC 编码器/解码器

支持的设备
Arria® II GX、Arria II GZ、Arria V、英特尔 Arria 10、Cyclone® IV E、Cyclone IV GX、Cyclone V、英特尔 Cyclone 10 LP、
英特尔 Cyclone 10 GX、MAX® II、MAX V、MAX 10、Stratix® IV、Stratix V
Arria II GX、Arria II GZ、Arria V、英特尔 Arria 10、Cyclone IV E、Cyclone IV GX、
Cyclone V、英特尔 Cyclone 10 LP、英特尔 Cyclone 10 GX、MAX II、MAX V、MAX 10、Stratix IV、Stratix V、英特尔 Stratix 10
Arria II GX、Arria II GZ、Arria V、英特尔 Arria 10、Cyclone IV E、Cyclone IV GX、
Cyclone V、英特尔 Cyclone 10 LP、英特尔 Cyclone 10 GX、MAX II、MAX V、MAX 10、Stratix IV、Stratix V、英特尔 Stratix 10
Arria II GX、Arria II GZ、Arria V、Cyclone IV E、Cyclone IV GX、Cyclone V、英特尔 Cyclone 10 LP、MAX 10、MAX
II、MAX V、Stratix IV、Stratix V
Arria II GX、Arria II GZ、Arria V、Cyclone IV E、Cyclone IV GX、Cyclone V、英特尔 Cyclone 10 LP、MAX 10、MAX
II、MAX V、Stratix IV、Stratix V
Arria II GX、Arria II GZ、Arria V、英特尔 Arria 10、Cyclone IV E、Cyclone IV GX、
Cyclone V、英特尔 Cyclone 10 LP、英特尔 Cyclone 10 GX、MAX II、MAX V、MAX
10、Stratix IV、Stratix V续……

英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔根据英特尔的标准保修保证其 FPGA 和半导体产品的性能符合当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。

ISO 9001:2015注册

1. 英特尔 FPGA 整数运算 IP 核 683490 | 2020.10.05

IP 内核 Intel FPGA 乘法加法器或 ALTERA_MULT_ADD ALTMEMMULT
ALTMULT_ACCUM ALTMULT_ADD ALTMULT_COMPLEX
ALTSQRT
并行添加

功能结束view 乘加器
基于内存的常系数乘法器
乘法累加器乘法加法器
复数乘法器
整数平方根
并行加法器

支持的设备
Arria V、Stratix V、Cyclone V、英特尔 Stratix 10、英特尔 Arria 10、英特尔 Cyclone
10 GX
Arria II GX、Arria II GZ、Arria V、英特尔 Arria 10(英特尔 Quartus® Prime 标准版)、Cyclone IV E、Cyclone IV GX、Cyclone V、英特尔
Cyclone 10 LP、MAX II、MAX V、MAX 10、Stratix IV、Stratix V
Arria II GX、Arria II GZ、Cyclone IV E、Cyclone IV GX、英特尔 Cyclone 10 LP、MAX 10、MAX II、MAX V、Stratix IV
Arria II GX、Arria II GZ、Cyclone IV E、Cyclone IV GX、Intel Cyclone 10 LP、MAX 10、MAX II、MAX V、Stratix IV
Arria II GX、Arria II GZ、英特尔 Arria 10、Arria V、Arria V GZ、Cyclone IV E、Cyclone IV GX、Cyclone V、英特尔
Cyclone 10 GX、英特尔 Cyclone 10 LP、MAX 10、Stratix V、英特尔 Stratix 10
Arria II GX、Arria II GZ、Arria V、英特尔 Arria 10、Cyclone IV E、Cyclone IV GX、
Cyclone V、英特尔 Cyclone 10 LP、英特尔 Cyclone 10 GX、MAX II、MAX V、MAX
10、Stratix IV、Stratix V
Arria II GX、Arria II GZ、Arria V、英特尔 Arria 10、Cyclone IV E、Cyclone IV GX、
Cyclone V、英特尔 Cyclone 10 LP、英特尔 Cyclone 10 GX、MAX II、MAX V、MAX
10、Stratix IV、Stratix V

相关信息
· 英特尔 FPGA 和可编程设备发行说明
· 英特尔 FPGA IP 核简介 提供有关英特尔 FPGA IP 核的更多信息。
· 浮点 IP 核用户指南 提供有关 Intel FPGA 浮点 IP 核的更多信息。
· 英特尔 FPGA IP 核简介 提供有关所有英特尔 FPGA IP 核的一般信息,包括参数化、生成、升级和模拟 IP 核。
· 创建独立于版本的 IP 和 Qsys 仿真脚本创建不需要手动更新软件或 IP 版本升级的仿真脚本。
· 项目管理最佳实践指南,用于项目和 IP 的有效管理和可移植性 files.
· 整数运算 IP 核用户指南文档存档 (第 98 页) 提供以前版本的整数运算 IP 核的用户指南列表。

Intel FPGA 整数运算 IP 内核用户指南 6

发送反馈

683490 | 2020.10.05 反馈意见

2. LPM_COUNTER(计数器)IP核

图 1.

LPM_COUNTER IP 内核是一个二进制计数器,可创建递增计数器、递减计数器以及递增或递减计数器,输出高达 256 位宽。

下图显示了 LPM_COUNTER IP 内核的端口。

LPM_COUNTER 端口

LPM_计数器

ssclr sload sset 数据[]

q[]

上下

计数

aclr 加载集

clk_en cnt_en 辛
安装

2.1. 特点
LPM_COUNTER IP 内核提供以下功能: · 生成递增、递减和递增/递减计数器 · 生成以下计数器类型:
— 普通二进制——计数器从零开始递增或从 255 开始递减
— 模数——计数器递增或递减用户指定的模值并重复
· 支持可选的同步清除、加载和设置输入端口 · 支持可选的异步清除、加载和设置输入端口 · 支持可选的计数使能和时钟使能输入端口 · 支持可选的进位和进位输出端口

英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔根据英特尔的标准保修保证其 FPGA 和半导体产品的性能符合当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。

ISO 9001:2015注册

2. LPM_COUNTER(计数器)IP核
683490 | 2020.10.05
2.2. Verilog HDL 原型
以下 Verilog HDL 原型位于 Verilog Design File (.v) lpm.v 在edasynthesis目录。
模块 lpm_counter(q、数据、时钟、cin、cout、clk_en、cnt_en、updown、aset、aclr、aload、sset、sclr、sload、eq); 参数 lpm_type = “lpm_counter”; 参数 lpm_width = 1; 参数 lpm_modulus = 0; 参数 lpm_direction = “未使用”; 参数 lpm_avalue = “未使用”; 参数 lpm_svalue = “未使用”; 参数 lpm_pvalue = “未使用”; 参数 lpm_port_updown = “PORT_CONNECTIVITY”; 参数 lpm_hint = “未使用”; 输出 [lpm_width-1:0] q; 输出计数; 输出 [15:0] eq; 输入辛; 输入 [lpm_width-1:0] 数据; 输入时钟,clk_en,cnt_en,updown; 输入 aset、aclr、aload; 输入 sset、sclr、sload; 终端模块
2.3. VHDL 组件声明
VHDL 组件声明位于 VHDL Design File (.vhd) LPM_PACK.vhd 在librariesvhdllpm 目录。
组件 LPM_COUNTER 通用(LPM_WIDTH:自然;LPM_MODULUS:自然:= 0;LPM_DIRECTION:字符串:=“UNUSED”;LPM_AVALUE:字符串:=“UNUSED”;LPM_SVALUE:字符串:=“UNUSED”;LPM_PORT_UPDOWN:字符串:=“PORT_CONNECTIVITY” ;LPM_PVALUE:字符串:=“未使用”;LPM_TYPE:字符串:= L_COUNTER;LPM_HINT:字符串:=“未使用”); 端口(数据:在 std_logic_vector(LPM_WIDTH-1 向下到 0)中:=(其他 =>
'0'); 时钟:在 std_logic 中; CLK_EN : 在 std_logic := '1'; CNT_EN : 在 std_logic := '1'; UPDOWN : 在 std_logic := '1'; SLOAD : 在 std_logic := '0'; SSET : 在 std_logic := '0'; SCLR : 在 std_logic := '0'; ALOAD : 在 std_logic := '0'; ASET : 在 std_logic := '0'; ACLR:在 std_logic 中:= '0'; CIN : 在 std_logic := '1'; COUT:输出标准逻辑:='0'; 问:输出 std_logic_vector(LPM_WIDTH-1 降为 0); 均衡器:输出 std_logic_vector(15 downto 0));
结束组件;

Intel FPGA 整数运算 IP 内核用户指南 8

发送反馈

2. LPM_COUNTER(计数器)IP核683490 | 2020.10.05

2.4. VHDL LIBRARY_USE 声明
如果使用 VHDL 组件声明,则不需要 VHDL LIBRARY-USE 声明。
图书馆 lpm; 使用 lpm.lpm_components.all;

2.5. 端口

下表列出了 LPM_COUNTER IP 内核的输入和输出端口。

表 2.

LPM_COUNTER 输入端口

端口名称

必需的

描述

数据[]

并行数据输入到计数器。 输入端口的大小取决于 LPM_WIDTH 参数值。

是的

上升沿触发时钟输入。

时钟_cn

时钟启用输入以启用所有同步活动。 如果省略,默认值为 1。

cnt_cn

计数使能输入可在置为低电平时禁用计数,而不影响 sload、sset 或 sclr。 如果省略,默认值为 1。

上下

控制计数的方向。 置为高电平 (1) 时,计数方向为向上,置为低电平 (0) 时,计数方向为向下。 如果使用 LPM_DIRECTION 参数,则无法连接 updown 端口。 如果不使用 LPM_DIRECTION,则 updown 端口是可选的。 如果省略,默认值为 up (1)。

进位到低位。 对于递增计数器,cin 输入的行为是

与 cnt_en 输入的行为相同。 如果省略,默认值为 1

(视频控制中心)。

访问控制寄存器

异步清除输入。 如果同时使用和断言 aset 和 aclr,则 aclr 覆盖 aset。 如果省略,默认值为 0(禁用)。

资产

异步设置输入。 将 q[] 输出指定为全 1,或指定为 LPM_AVALUE 参数指定的值。 如果同时使用和断言 aset 和 aclr 端口,则 aclr 端口的值将覆盖 aset 端口的值。 如果省略,默认值为 0,禁用。

负载

使用数据输入上的值异步加载计数器的异步加载输入。 使用aload端口时,必须连接data[]端口。 如果省略,默认值为 0,禁用。

单反

在下一个有效时钟边沿清除计数器的同步清除输入。 如果同时使用和断言 sset 和 sclr 端口,则 sclr 端口的值将覆盖 sset 端口的值。 如果省略,默认值为 0,禁用。

塞特

在下一个有效时钟边沿设置计数器的同步设置输入。 将 q 输出的值指定为全 1,或指定为 LPM_SVALUE 参数指定的值。 如果同时使用和断言 sset 和 sclr 端口,
sclr 端口的值覆盖 sset 端口的值。 如果省略,默认值为 0(禁用)。

加载

同步加载输入,在下一个有效时钟边沿用数据 [] 加载计数器。 使用 sload 端口时,必须连接 data[] 端口。 如果省略,默认值为 0(禁用)。

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 9

2. LPM_COUNTER(计数器)IP核683490 | 2020.10.05

表 3.

LPM_COUNTER 输出端口

端口名称

必需的

描述

q[]

计数器的数据输出。 输出端口的大小取决于

LPM_WIDTH 参数值。 q[] 或至少一个 eq[15..0] 端口

必须连接。

当量 [15..0]

计数器解码输出。 eq[15..0] 端口在参数编辑器中不可访问,因为该参数仅支持 AHDL。
必须连接 q[] 端口或 eq[] 端口。 最多可以使用 c 个 eq 端口 (0 <= c <= 15)。 只有 16 个最低计数值被解码。 当计数值为 c 时,eqc 输出置为高电平 (1)。 对于前ample,当计数为 0 时,eq0 = 1,当计数为 1 时,eq1 = 1,当计数为 15 时,eq 15 = 1。计数值为 16 或更大的解码输出需要外部解码。 eq[15..0] 输出与 q[] 输出异步。

计数

计数器的 MSB 位的进位输出端口。 它可用于连接到另一个计数器以创建更大的计数器。

2.6。 参量

下表列出了 LPM_COUNTER IP 核的参数。

表 4.

LPM_COUNTER 参数

参数名称

类型

LPM_WIDTH

整数

LPM_DIRECTION

细绳

LPM_MODULUS LPM_AVALUE

整数
整数/字符串

LPM_SVALUE LPM_HINT

整数/字符串
细绳

LPM_类型

细绳

需要 是 否 否 否
否 否

描述
指定 data[] 和 q[] 端口的宽度(如果使用)。
值为 UP、DOWN 和 UNUSED。 如果使用 LPM_DIRECTION 参数,则无法连接 updown 端口。 当updown端口未连接时,LPM_DIRECTION参数默认值为UP。
最大计数加一。 计数器周期中唯一状态的数量。 如果加载值大于 LPM_MODULUS 参数,则不指定计数器的行为。
当 aset 置高时加载的常量值。 如果指定的值大于或等于,计数器的行为是一个未定义的 (X) 逻辑电平,其中是 LPM_MODULUS(如果存在)或 2 ^ LPM_WIDTH。 Intel 建议您将此值指定为 AHDL 设计的十进制数。
当 sset 端口置为高电平时,在时钟端口的上升沿加载的恒定值。 Intel 建议您将此值指定为 AHDL 设计的十进制数。
当您在 VHDL 设计中实例化参数化模块 (LPM) 函数库时 File (.vhd),您必须使用 LPM_HINT 参数来指定英特尔特定的参数。 对于前ample: LPM_HINT = “CHAIN_SIZE = 8, ONE_INPUT_IS_CONSTANT = YES”
默认值为未使用。
标识 VHDL 设计中参数化模块 (LPM) 实体名称的库 files.
持续…

Intel FPGA 整数运算 IP 内核用户指南 10

发送反馈

2. LPM_COUNTER(计数器)IP核683490 | 2020.10.05

参数名称 INTENDED_DEVICE_FAMILY CARRY_CNT_EN
LABWIDE_SCLR
LPM_PORT_UPDOWN

类型字符串字符串
细绳
细绳

需要 否 否

描述
此参数用于建模和行为模拟目的。 此参数用于建模和行为模拟目的。 参数编辑器计算该参数的值。
英特尔特定参数。 VHDL设计中必须使用LPM_HINT参数指定CARRY_CNT_EN参数 file秒。 值为 SMART、ON、OFF 和 UNUSED。 启用 LPM_COUNTER 函数以通过进位链传播 cnt_en 信号。 在某些情况下,CARRY_CNT_EN 参数设置可能对速度有轻微影响,因此您可能希望将其关闭。 默认值为 SMART,它提供了大小和速度之间的最佳权衡。
英特尔特定参数。 VHDL设计中必须使用LPM_HINT参数指定LABWIDE_SCLR参数 file秒。 值为 ON、OFF 或 UNUSED。 默认值为开。 允许您禁用在过时的设备系列中找到的 LABwide sclr 功能。 关闭此选项会增加完全使用部分填充的 LAB 的机会,因此当 SCLR 不适用于完整的 LAB 时可以允许更高的逻辑密度。 该参数用于向后兼容,Intel 建议您不要使用该参数。
指定 updown 输入端口的用法。 如果省略,默认值为 PORT_CONNECTIVITY。 当端口值设置为 PORT_USED 时,端口被视为已使用。 当端口值设置为 PORT_UNUSED 时,端口被视为未使用。 当端口值设置为 PORT_CONNECTIVITY 时,端口使用情况通过检查端口连接性来确定。

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 11

683490 | 2020.10.05 反馈意见

3. LPM_DIVIDE(分频器)Intel FPGA IP核

图 2.

LPM_DIVIDE Intel FPGA IP 内核实现了一个除法器,将分子输入值除以分母输入值以产生商和余数。

下图显示了 LPM_DIVIDE IP 内核的端口。

LPM_DIVIDE 端口

LPM_DIVIDE

numer[] denom[] 时钟

商[]保持[]

clken aclr

安装

3.1. 特点
LPM_DIVIDE IP 内核提供以下特性: · 生成一个除法器,将分子输入值除以分母输入
产生商和余数的值。 · 支持1 位的数据宽度。 ·支持分子的有符号和无符号数据表示格式
和分母值。 ·支持区域或速度优化。 · 提供一个选项来指定正余数输出。 ·支持流水线可配置的输出延迟。 · 支持可选的异步清除和时钟使能端口。

3.2. Verilog HDL 原型
以下 Verilog HDL 原型位于 Verilog Design File (.v) lpm.v 在edasynthesis目录。
模块 lpm_divide(商、剩余、数字、denom、时钟、clken、aclr); 参数 lpm_type = “lpm_divide”; 参数 lpm_widthn = 1; 参数 lpm_widthd = 1; 参数 lpm_nrepresentation = “UNSIGNED”; 参数 lpm_drepresentation = “UNSIGNED”; 参数 lpm_remainderpositive = “TRUE”; 参数 lpm_pipeline = 0;

英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔根据英特尔的标准保修保证其 FPGA 和半导体产品的性能符合当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。

ISO 9001:2015注册

3. LPM_DIVIDE(分频器)英特尔 FPGA IP 核 683490 | 2020.10.05

参数 lpm_hint = “未使用”; 输入时钟; 输入时钟; 输入 aclr; 输入 [lpm_widthn-1:0] 数字; 输入 [lpm_widthd-1:0] denom; 输出 [lpm_widthn-1:0] 商; 输出 [lpm_widthd-1:0] 保持不变; 终端模块

3.3. VHDL 组件声明
VHDL 组件声明位于 VHDL Design File (.vhd) LPM_PACK.vhd 在librariesvhdllpm 目录。
组件 LPM_DIVIDE 通用(LPM_WIDTHN:自然;LPM_WIDTHD:自然;
LPM_NREPRESENTATION:字符串:=“未签名”; LPM_DREPRESENTATION:字符串:=“未签名”; LPM_PIPELINE:自然:= 0; LPM_TYPE:字符串:= L_DIVIDE; LPM_HINT:字符串:=“未使用”); 端口(NUMER:在 std_logic_vector(LPM_WIDTHN-1 下降到 0)中;DENOM:在 std_logic_vector(LPM_WIDTHD-1 下降到 0)中;ACLR:在 std_logic 中:='0';CLOCK:在 std_logic 中:='0';CLKEN:在 std_logic 中:= '1'; QUOTIENT : out std_logic_vector(LPM_WIDTHN-1 downto 0); REMAIN : out std_logic_vector(LPM_WIDTHD-1 downto 0)); 结束组件;

3.4. VHDL LIBRARY_USE 声明
如果使用 VHDL 组件声明,则不需要 VHDL LIBRARY-USE 声明。
图书馆 lpm; 使用 lpm.lpm_components.all;

3.5. 端口

下表列出了 LPM_DIVIDE IP 内核的输入和输出端口。

表 5.

LPM_DIVIDE 输入端口

端口名称

必需的

数字[]

是的

面额[]

是的

描述
分子数据输入。 输入端口的大小取决于 LPM_WIDTHN 参数值。
分母数据输入。 输入端口的大小取决于 LPM_WIDTHD 参数值。
持续…

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 13

3. LPM_DIVIDE(分频器)英特尔 FPGA IP 核 683490 | 2020.10.05

端口名称时钟clken
访问控制寄存器

需要 否 否

描述
流水线使用的时钟输入。 对于 0(默认)以外的 LPM_PIPELINE 值,必须启用时钟端口。
时钟启用流水线使用。 当 clken 端口置高时,除法操作发生。 当信号为低时,不发生任何操作。 如果省略,默认值为 1。
异步清零端口随时用于将流水线重置为与时钟输入异步的全“0”。

表 6.

LPM_DIVIDE 输出端口

端口名称

必需的

描述

商[]

是的

数据输出。 输出端口的大小取决于 LPM_WIDTHN

参数值。

保持[]

是的

数据输出。 输出端口的大小取决于 LPM_WIDTHD

参数值。

3.6。 参量

下表列出了 LPM_DIVIDE Intel FPGA IP 内核的参数。

参数名称

类型

必需的

描述

LPM_WIDTHN

整数

是的

指定 numer[] 和

商 [] 端口。 值为 1 到 64。

LPM_WIDTHD

整数

是的

指定 denom[] 的宽度和

保留 [] 端口。 值为 1 到 64。

LPM_NREPRESENTATION LPM_DREPRESENTATION

字符串字符串

分子输入的符号表示。

值为 SIGNED 和 UNSIGNED。 当这个

参数设置为SIGNED,分频器

将 numer[] 输入解释为带符号的二进制数

补充。

分母输入的符号表示。

值为 SIGNED 和 UNSIGNED。 当这个

参数设置为SIGNED,分频器

将 denom[] 输入解释为带符号的二进制数

补充。

LPM_类型

细绳

标识参数化库

VHDL 设计中的模块 (LPM) 实体名称

files (.vhd)。

LPM_HINT 提示

细绳

当你实例化一个库时

参数化模块 (LPM) 中的函数

VHDL设计 File (.vhd),您必须使用

LPM_HINT 参数指定一个 Intel-

具体参数。 对于前amp文件:LPM_HINT

=“CHAIN_SIZE = 8,

ONE_INPUT_IS_CONSTANT = YES”

默认值为未使用。

LPM_REMAINDERPOSITIVE

细绳

英特尔特定参数。 你必须使用

LPM_HINT 参数指定

LPM_REMAINDERPOSITIVE 参数在

VHDL设计 file秒。 值为 TRUE 或 FALSE。

如果此参数设置为 TRUE,则

remain[] 端口的值必须更大

持续…

Intel FPGA 整数运算 IP 内核用户指南 14

发送反馈

3. LPM_DIVIDE(分频器)英特尔 FPGA IP 核 683490 | 2020.10.05

参数名称

类型

MAXIMIZE_SPEED

整数

LPM_管道

整数

INTENDED_DEVICE_FAMILY SKIP_BITS

字符串整数

必填 否
否 否 否

描述
小于或等于零。 如果此参数设置为 TRUE,则 remain[] 端口的值为零,或者该值与 numer 端口的值同号(正负)。 为了减少面积和提高速度,英特尔建议在余数必须为正或余数不重要的操作中将此参数设置为 TRUE。
英特尔特定参数。 VHDL设计中必须使用LPM_HINT参数指定MAXIMIZE_SPEED参数 file秒。 值为 [0..9]。 如果使用, Intel Quartus Prime 软件会尝试优化 LPM_DIVIDE 函数的特定实例以提高速度而不是可布线性,并覆盖 Optimization Technique 逻辑选项的设置。 如果未使用 MAXIMIZE_SPEED,则使用优化技术选项的值。 如果 MAXIMIZE_SPEED 的值为 6 或更高,Compiler 通过使用进位链优化 LPM_DIVIDE IP 内核以获得更高的速度; 如果该值为 5 或更小,编译器将实现无进位链的设计。
指定与 quotient[] 和 remain[] 输出关联的延迟时钟周期数。 零 (0) 值表示不存在延迟,并且实例化了纯组合函数。 如果省略,则默认值为 0(非流水线)。 您不能为 LPM_PIPELINE 参数指定一个高于 LPM_WIDTHN 的值。
此参数用于建模和行为模拟目的。 参数编辑器计算该参数的值。
通过向 LPM_DIVIDE IP 内核提供前导 GND 的数量,允许更有效的小数位划分以优化前导位上的逻辑。 在此参数的商输出上指定前导 GND 的数量。

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 15

683490 | 2020.10.05 反馈意见

4. LPM_MULT(乘法器)IP核

图 3.

LPM_MULT IP 内核实现了一个乘法器来将两个输入数据值相乘以产生一个乘积作为输出。

下图显示了 LPM_MULT IP 内核的端口。

LPM_多端口

LPM_MULT 时钟 dataa[] result[] datab[] aclr/sclr clken
安装

相关信息 第 71 页的功能

4.1. 特点
LPM_MULT IP 内核提供以下特性: · 生成乘法器,将两个输入数据值相乘 · 支持 1 位数据宽度 · 支持有符号和无符号数据表示格式 · 支持面积或速度优化 · 支持具有可配置输出延迟的流水线 · 提供一个在专用数字信号处理 (DSP) 中实施的选项
块电路或逻辑元件 (LE) 注意:当构建大于本地支持的大小的乘法器时,可能/
DSP 块的级联将对性能产生影响。 · 支持可选异步清零和时钟使能输入端口 · 支持英特尔 Stratix 10、英特尔 Arria 10 和英特尔 Cyclone 10 GX 设备的可选同步清零

英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔根据英特尔的标准保修保证其 FPGA 和半导体产品的性能符合当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。

ISO 9001:2015注册

4. LPM_MULT(乘法器)IP 内核 683490 | 2020.10.05
4.2. Verilog HDL 原型
以下 Verilog HDL 原型位于 Verilog Design File (.v) lpm.v 在edasynthesis目录。
模块 lpm_mult (result, dataa, datab, sum, clock, clken, aclr) 参数 lpm_type = “lpm_mult”; 参数 lpm_widtha = 1; 参数 lpm_widthb = 1; 参数 lpm_widths = 1; 参数 lpm_widthp = 1; 参数 lpm_representation = “UNSIGNED”; 参数 lpm_pipeline = 0; 参数 lpm_hint = “未使用”; 输入时钟; 输入时钟; 输入 aclr; 输入 [lpm_widtha-1:0] 数据a; 输入[lpm_widthb-1:0]数据b; 输入 [lpm_widths-1:0] 总和; 输出 [lpm_widthp-1:0] 结果; 终端模块
4.3. VHDL 组件声明
VHDL 组件声明位于 VHDL Design File (.vhd) LPM_PACK.vhd 在librariesvhdllpm 目录。
组件 LPM_MULT 通用(LPM_WIDTHA:自然;LPM_WIDTHB:自然;LPM_WIDTHS:自然:= 1;LPM_WIDTHP:自然;
LPM_REPRESENTATION:字符串:=“未签名”; LPM_PIPELINE:自然:= 0; LPM_TYPE:字符串:= L_MULT; LPM_HINT:字符串:=“未使用”); 端口(DATAA:在std_logic_vector(LPM_WIDTHA-1 downto 0)中;DATAB:在std_logic_vector(LPM_WIDTHB-1 downto 0)中;ACLR:在std_logic中:='0';CLOCK:在std_logic中:='0';CLKEN:在std_logic中:= '1'; SUM : in std_logic_vector(LPM_WIDTHS-1 downto 0) := (OTHERS => '0'); 结果:out std_logic_vector(LPM_WIDTHP-1 downto 0)); 结束组件;
4.4. VHDL LIBRARY_USE 声明
如果使用 VHDL 组件声明,则不需要 VHDL LIBRARY-USE 声明。
图书馆 lpm; 使用 lpm.lpm_components.all;

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 17

4. LPM_MULT(乘法器)IP 内核 683490 | 2020.10.05

4.5. 信号

表 7.

LPM_MULT 输入信号

信号名称

必需的

描述

数据[]

是的

数据输入。

对于 Intel Stratix 10、Intel Arria 10 和 Intel Cyclone 10 GX 设备,输入信号的大小取决于 Dataa 宽度参数值。

对于旧的和 Intel Cyclone 10 LP 设备,输入信号的大小取决于 LPM_WIDTHA 参数值。

数据[]

是的

数据输入。

对于 Intel Stratix 10、Intel Arria 10 和 Intel Cyclone 10 GX 设备,输入信号的大小取决于 Datab width 参数值。

对于旧的和 Intel Cyclone 10 LP 设备,输入信号的大小取决于

LPM_WIDTHB 参数值。

流水线使用的时钟输入。

对于旧的和 Intel Cyclone 10 LP 设备,必须为 LPM_PIPELINE 值而不是 0(默认值)启用时钟信号。

对于 Intel Stratix 10、Intel Arria 10 和 Intel Cyclone 10 GX 器件,如果 Latency 值不是 1(默认值),则必须启用时钟信号。

流水线使用的时钟使能。 当 clken 信号置为高电平时,

加法器/减法器操作发生。 信号低时,无操作

发生。 如果省略,默认值为 1。

aclr 单反

随时使用的异步清除信号将流水线重置为全 0,

与时钟信号异步。 管道初始化为未定义 (X)

逻辑电平。 输出是一致的,但非零值。

随时使用的同步清除信号将流水线重置为全 0,

同步到时钟信号。 管道初始化为未定义 (X)

逻辑电平。 输出是一致的,但非零值。

表 8.

LPM_MULT 输出信号

信号名称

必需的

描述

结果[]

是的

数据输出。

对于旧的和 Intel Cyclone 10 LP 设备,输出信号的大小取决于 LPM_WIDTHP 参数值。 如果 LPM_WIDTHP < max (LPM_WIDTHA + LPM_WIDTHB, LPM_WIDTHS) 或 (LPM_WIDTHA + LPM_WIDTHS),则仅存在 LPM_WIDTHP MSB。

对于英特尔 Stratix 10、英特尔 Arria 10 和英特尔 Cyclone 10 GX,输出信号的大小取决于结果宽度参数。

4.6. Stratix V、Arria V、Cyclone V 和 Intel Cyclone 10 LP 器件的参数

4.6.1. 常规选项卡

表 9.

常规选项卡

范围

价值

乘法器配置

将“dataa”输入乘以“datab”输入

默认值

描述

将“dataa”输入乘以“datab”输入

为乘法器选择所需的配置。
持续…

Intel FPGA 整数运算 IP 内核用户指南 18

发送反馈

4. LPM_MULT(乘法器)IP 内核 683490 | 2020.10.05

范围
“dataa”输入应该有多宽? “datab”输入应该有多宽? “结果”输出的宽度应该如何确定? 限制宽度

价值
将“dataa”输入自身相乘(平方运算)
1 – 256 位

默认值

描述

8 位

指定 dataa[] 端口的宽度。

1 – 256 位

8 位

指定 datab[] 端口的宽度。

自动计算宽度 限制宽度
1 – 512 位

自动计算宽度

选择所需的方法来确定 result[] 端口的宽度。

16 位

指定 result[] 端口的宽度。
只有在类型参数中选择限制宽度时,此值才会有效。

4.6.2. 一般 2 选项卡

表 10. 常规 2 选项卡

范围

价值

数据输入

“datab”输入总线是否具有常数值?

否 是

乘法类型

哪种类型的

未签名

你要乘法吗? 签

执行

应该使用哪个乘法器实现?

使用默认实现
使用专用乘法器电路(并非适用于所有系列)
使用逻辑元素

默认值

描述

选择 Yes 以指定常量值

`datab' 输入总线,如果有的话。

未签名

指定 dataa[] 和 datab[] 输入的表示格式。

使用默认实现

选择所需的方法来确定 result[] 端口的宽度。

4.6.3. 流水线选项卡

表 11. 流水线选项卡

范围

你想流水线否

功能?

是的

价值

创建一个“aclr”

异步清除端口

默认值

描述

选择是启用流水线注册到

乘法器的输出并指定所需的

时钟周期中的输出延迟。 启用

流水线寄存器增加了额外的延迟

输出。

未选中

选择此选项可启用 aclr 端口以对流水线寄存器使用异步清除。
持续…

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 19

4. LPM_MULT(乘法器)IP 内核 683490 | 2020.10.05

范围
创建一个“clken”时钟使能时钟
优化
你想要什么类型的优化?

价值 -
默认速度区域

默认值

描述

未选中

为流水线寄存器的时钟端口指定高电平有效时钟使能

默认

为 IP 内核指定所需的优化。
选择 Default 让 Intel Quartus Prime 软件确定 IP 内核的最佳优化。

4.7. 英特尔 Stratix 10、英特尔 Arria 10 和英特尔 Cyclone 10 GX 设备的参数

4.7.1. 常规选项卡

表 12. 常规选项卡

范围

价值

默认值

描述

乘法器配置类型
数据端口宽度

将“dataa”输入乘以“datab”输入
将“dataa”输入自身相乘(平方运算)

将“dataa”输入乘以“datab”输入

为乘法器选择所需的配置。

数据宽度

1 – 256 位

8 位

指定 dataa[] 端口的宽度。

数据宽度

1 – 256 位

8 位

指定 datab[] 端口的宽度。

“结果”输出的宽度应该如何确定?

类型

自动计算宽度
限制宽度

自动计算宽度

选择所需的方法来确定 result[] 端口的宽度。

价值

1 – 512 位

16 位

指定 result[] 端口的宽度。
只有在类型参数中选择限制宽度时,此值才会有效。

结果宽度

1 – 512 位

显示 result[] 端口的有效宽度。

4.7.2. 一般 2 选项卡

表 13. 常规 2 选项卡

范围

数据输入

“datab”输入总线是否具有常数值?

否 是

价值

默认值

描述

选择 Yes 以指定常量值

`datab' 输入总线,如果有的话。

持续…

Intel FPGA 整数运算 IP 内核用户指南 20

发送反馈

4. LPM_MULT(乘法器)IP 内核 683490 | 2020.10.05

范围

价值

价值

任何大于 0 的值

乘法类型

哪种类型的

未签名

你要乘法吗? 签

实施风格

应该使用哪个乘法器实现?

使用默认实现
使用专用乘法器电路
使用逻辑元素

默认值

描述

0

指定 datab[] 端口的常量值。

未签名

指定 dataa[] 和 datab[] 输入的表示格式。

使用默认实现

选择所需的方法来确定 result[] 端口的宽度。

4.7.3. 流水线

表 14. 流水线选项卡

范围

价值

你想流水线功能吗?

管道

否 是

延迟清除信号类型

任何大于 0 的值。
无 ACLR SCLR

创建一个“clken”时钟

启用时钟

你想要什么类型的优化?

类型

默认速度区域

默认值

描述

否 1 无

选择是启用流水线寄存器到乘法器的输出。 启用流水线寄存器会增加输出的额外延迟。
以时钟周期指定所需的输出延迟。
指定流水线寄存器的复位类型。 如果您不使用任何流水线寄存器,请选择 NONE。 选择 ACLR 以对流水线寄存器使用异步清零。 这将生成 ACLR 端口。 选择 SCLR 以对流水线寄存器使用同步清零。 这将生成 SCLR 端口。
为流水线寄存器的时钟端口指定高电平有效时钟使能

默认

为 IP 内核指定所需的优化。
选择 Default 让 Intel Quartus Prime 软件确定 IP 内核的最佳优化。

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 21

683490 | 2020.10.05 反馈意见

5. LPM_ADD_SUB(加法器/减法器)

图 4.

LPM_ADD_SUB IP 核允许您实现一个加法器或减法器来加或减数据集以产生包含输入值的和或差的输出。

下图显示了 LPM_ADD_SUB IP 内核的端口。

LPM_ADD_SUB 端口

LPM_ADD_SUB add_sub cin

数据[]

时钟 clken datab[] aclr

结果[]溢出计数

安装

5.1. 特点
LPM_ADD_SUB IP 内核提供以下功能: · 生成加法器、减法器和可动态配置的加法器/减法器
职能。 · 支持1 位的数据宽度。 · 支持有符号和无符号等数据表示格式。 · 支持可选的进位(借位)、异步清零和时钟使能
输入端口。 · 支持可选的进位输出(借位输入)和溢出输出端口。 · 将任一输入数据总线分配给常量。 · 支持具有可配置输出延迟的流水线。

英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔根据英特尔的标准保修保证其 FPGA 和半导体产品的性能符合当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。

ISO 9001:2015注册

5. LPM_ADD_SUB(加法器/减法器)683490 | 2020.10.05
5.2. Verilog HDL 原型
以下 Verilog HDL 原型位于 Verilog Design File (.v) lpm.v 在edasynthesis目录。
模块 lpm_add_sub(结果、cout、溢出、add_sub、cin、dataa、datab、时钟、clken、aclr); 参数 lpm_type = “lpm_add_sub”; 参数 lpm_width = 1; 参数 lpm_direction = “未使用”; 参数 lpm_representation = “SIGNED”; 参数 lpm_pipeline = 0; 参数 lpm_hint = “未使用”; 输入 [lpm_width-1:0] dataa, datab; 输入 add_sub, cin; 输入时钟; 输入时钟; 输入 aclr; 输出 [lpm_width-1:0] 结果; 输出cout,溢出; 终端模块
5.3. VHDL 组件声明
VHDL 组件声明位于 VHDL Design File (.vhd) LPM_PACK.vhd 在librariesvhdllpm 目录。
组件 LPM_ADD_SUB 通用(LPM_WIDTH:自然;
LPM_DIRECTION:字符串:=“未使用”; LPM_REPRESENTATION: string := “SIGNED”; LPM_PIPELINE:自然:= 0; LPM_TYPE:字符串:= L_ADD_SUB; LPM_HINT:字符串:=“未使用”); 端口(DATAA:在std_logic_vector(LPM_WIDTH-1 downto 0)中;DATAB:在std_logic_vector(LPM_WIDTH-1 downto 0)中;ACLR:在std_logic中:='0';CLOCK:在std_logic中:='0';CLKEN:在std_logic中:= '1'; CIN : in std_logic := 'Z'; ADD_SUB : in std_logic := '1'; RESULT : out std_logic_vector(LPM_WIDTH-1 downto 0); COUT : out std_logic; OVERFLOW : out std_logic); 结束组件;
5.4. VHDL LIBRARY_USE 声明
如果使用 VHDL 组件声明,则不需要 VHDL LIBRARY-USE 声明。
图书馆 lpm; 使用 lpm.lpm_components.all;
5.5. 端口
下表列出了 LPM_ADD_SUB IP 内核的输入和输出端口。

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 23

5. LPM_ADD_SUB(加法器/减法器)683490 | 2020.10.05

表 15. LPM_ADD_SUB IP 内核输入端口

端口名称

必需的

描述

进位到低位。 对于加法运算,默认值为 0。对于

减法运算,默认值为1。

数据[]

是的

数据输入。 输入端口的大小取决于 LPM_WIDTH 参数值。

数据[]

是的

数据输入。 输入端口的大小取决于 LPM_WIDTH 参数值。

添加_订阅

可选输入端口可在加法器和减法器之间动态切换

职能。 如果使用 LPM_DIRECTION 参数,则不能使用 add_sub。 如果

省略,默认值为ADD。 英特尔建议您使用

LPM_DIRECTION参数指定LPM_ADD_SUB函数的操作,

而不是将常量分配给 add_sub 端口。

流水线使用的输入。 时钟端口为流水线提供时钟输入

手术。 对于 0(默认)以外的 LPM_PIPELINE 值,时钟端口必须是

已启用。

流水线使用的时钟使能。 当 clken 端口置高时,加法器/

减法运算发生。 当信号为低时,不发生任何操作。 如果

省略,默认值为 1。

访问控制寄存器

流水线使用的异步清除。 管道初始化为未定义 (X)

逻辑电平。 可以随时使用 aclr 端口将管道重置为全 0,

与时钟信号异步。

表 16. LPM_ADD_SUB IP 内核输出端口

端口名称

必需的

描述

结果[]

是的

数据输出。 输出端口的大小取决于 LPM_WIDTH 参数

价值。

计数

最高有效位 (MSB) 的进位(借位)。 cout端口有一个物理

解释为 MSB 的进出(借入)。 cout端口检测

UNSIGNED 操作溢出。 cout 端口以相同的方式运行

SIGNED 和 UNSIGNED 操作。

溢出

可选的溢出异常输出。 溢流口的物理解释为

MSB 的进位与 MSB 的进位异或。 溢流口

当结果超过可用精度时断言,并且仅在

LPM_REPRESENTATION 参数值为 SIGNED。

5.6。 参量

下表列出了 LPM_ADD_SUB IP 内核参数。

表 17. LPM_ADD_SUB IP 核参数

参数名称 LPM_WIDTH

类型整数

需要 是

描述
指定 dataa[]、datab[] 和 result[] 端口的宽度。

LPM_DIRECTION

细绳

值为 ADD、SUB 和 UNUSED。 如果省略,则默认值为 DEFAULT,指示参数从 add_sub 端口获取其值。 如果使用 LPM_DIRECTION,则不能使用 add_sub 端口。 Intel 建议您使用 LPM_DIRECTION 参数来指定 LPM_ADD_SUB 函数的操作,而不是为 add_sub 端口分配一个常量。
持续…

Intel FPGA 整数运算 IP 内核用户指南 24

发送反馈

5. LPM_ADD_SUB(加法器/减法器)683490 | 2020.10.05

参数名称 LPM_REPRESENTATION LPM_PIPELINE LPM_HINT LPM_TYPE ONE_INPUT_IS_CONSTANT MAXIMIZE_SPEED
INTENDED_DEVICE_FAMILY

类型 字符串 整数 字符串 字符串 字符串 整数
细绳

需要 否 否 否 否 否

描述
指定执行的添加类型。 值为 SIGNED 和 UNSIGNED。 如果省略,则默认值为 SIGNED。 当此参数设置为 SIGNED 时,加法器/减法器将数据输入解释为带符号的二进制补码。
指定与 result[] 输出关联的延迟时钟周期数。 零 (0) 值表示不存在延迟,并且将实例化纯组合函数。 如果省略,默认值为 0(非流水线)。
允许您在 VHDL 设计中指定特定于英特尔的参数 files (.vhd)。 默认值为未使用。
标识 VHDL 设计中参数化模块 (LPM) 实体名称的库 files.
英特尔特定参数。 VHDL设计中必须使用LPM_HINT参数指定ONE_INPUT_IS_CONSTANT参数 file秒。 值为 YES、NO 和 UNUSED。 如果一个输入不变,则提供更好的优化。 如果省略,默认值为 NO。
英特尔特定参数。 VHDL设计中必须使用LPM_HINT参数指定MAXIMIZE_SPEED参数 file秒。 您可以指定 0 到 10 之间的值。如果使用, Intel Quartus Prime 软件会尝试优化 LPM_ADD_SUB 函数的特定实例以提高速度而不是可布线性,并覆盖 Optimization Technique 逻辑选项的设置。 如果未使用 MAXIMIZE_SPEED,则使用优化技术选项的值。 如果 MAXIMIZE_SPEED 的设置为 6 或更高,Compiler 使用进位链优化 LPM_ADD_SUB IP 内核以获得更高的速度; 如果设置为 5 或更小,Compiler 会在没有进位链的情况下实现设计。 仅当不使用 add_sub 端口时,必须为 Cyclone、Stratix 和 Stratix GX 器件指定此参数。
此参数用于建模和行为模拟目的。 参数编辑器计算该参数的值。

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 25

683490 | 2020.10.05 反馈意见

6. LPM_COMPARE(比较器)

图 5.

LPM_COMPARE IP 内核比较两组数据的值以确定它们之间的关系。 在最简单的形式中,您可以使用异或门来确定两位数据是否相等。

下图显示了 LPM_COMPARE IP 内核的端口。

LPM_COMPARE 端口

LPM_比较

白蛋白

艾比

数据[]

安保

数据[]

年龄

或者

访问控制寄存器

亚勒

安装

6.1. 特点
LPM_COMPARE IP 内核提供以下特性: · 生成一个比较器函数来比较两组数据 · 支持 1 位数据宽度 · 支持数据表示格式,如有符号和无符号 · 产生以下输出类型:
— alb(输入 A 小于输入 B) — aeb(输入 A 等于输入 B) — agb(输入 A 大于输入 B) — ageb(输入 A 大于或等于输入 B) — aneb (输入 A 不等于输入 B) — aleb(输入 A 小于或等于输入 B) · 支持可选的异步清除和时钟使能输入端口 · 将 datab[] 输入分配给常量 · 支持具有可配置输出延迟的流水线

英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔根据英特尔的标准保修保证其 FPGA 和半导体产品的性能符合当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。

ISO 9001:2015注册

6. LPM_COMPARE(比较器)683490 | 2020.10.05
6.2. Verilog HDL 原型
以下 Verilog HDL 原型位于 Verilog Design File (.v) lpm.v 在edasynthesis目录。
模块 lpm_compare(alb、aeb、agb、aleb、aneb、ageb、dataa、datab、clock、clken、aclr); 参数 lpm_type = “lpm_compare”; 参数 lpm_width = 1; 参数 lpm_representation = “UNSIGNED”; 参数 lpm_pipeline = 0; 参数 lpm_hint = “未使用”; 输入 [lpm_width-1:0] dataa, datab; 输入时钟; 输入时钟; 输入 aclr; 输出 alb、aeb、agb、aleb、aneb、ageb; 终端模块
6.3. VHDL 组件声明
VHDL 组件声明位于 VHDL Design File (.vhd) LPM_PACK.vhd 在librariesvhdllpm 目录。
组件 LPM_COMPARE 通用(LPM_WIDTH:自然;
LPM_REPRESENTATION:字符串:=“未签名”; LPM_PIPELINE:自然:= 0; LPM_TYPE:字符串:= L_COMPARE; LPM_HINT:字符串:=“未使用”); 端口(DATAA:在std_logic_vector(LPM_WIDTH-1 downto 0)中;DATAB:在std_logic_vector(LPM_WIDTH-1 downto 0)中;ACLR:在std_logic中:='0';CLOCK:在std_logic中:='0';CLKEN:在std_logic中:= '1'; AGB : out std_logic; AGEB : out std_logic; AEB : out std_logic; ANEB : out std_logic; ALB : out std_logic; ALEB : out std_logic); 结束组件;
6.4. VHDL LIBRARY_USE 声明
如果使用 VHDL 组件声明,则不需要 VHDL LIBRARY-USE 声明。
图书馆 lpm; 使用 lpm.lpm_components.all;
6.5. 端口
下表列出了 LMP_COMPARE IP 内核的输入和输出端口。

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 27

6. LPM_COMPARE(比较器)683490 | 2020.10.05

表 18. LPM_COMPARE IP 内核输入端口

端口名称

必需的

描述

数据[]

是的

数据输入。 输入端口的大小取决于 LPM_WIDTH 参数值。

数据[]

是的

数据输入。 输入端口的大小取决于 LPM_WIDTH 参数值。

流水线使用的时钟输入。 时钟端口为流水线提供时钟输入

手术。 对于 0(默认)以外的 LPM_PIPELINE 值,时钟端口必须是

已启用。

流水线使用的时钟使能。 当 clken 端口置为高电平时,

比较操作发生。 当信号为低时,不发生任何操作。 如果

省略,默认值为 1。

访问控制寄存器

流水线使用的异步清除。 管道初始化为未定义 (X) 逻辑

等级。 可以随时使用 aclr 端口将管道重置为全 0,

与时钟信号异步。

表 19. LPM_COMPARE IP 核输出端口

端口名称

必需的

描述

白蛋白

比较器的输出端口。 如果输入 A 小于输入 B 则置位。

艾比

比较器的输出端口。 如果输入 A 等于输入 B,则置位。

安保

比较器的输出端口。 如果输入 A 大于输入 B 则置位。

年龄

比较器的输出端口。 如果输入 A 大于或等于输入则置位

B.

或者

比较器的输出端口。 如果输入 A 不等于输入 B,则置位。

亚勒

比较器的输出端口。 如果输入 A 小于或等于输入 B,则置位。

6.6。 参量

下表列出了 LPM_COMPARE IP 内核的参数。

表 20. LPM_COMPARE IP 内核参数

参数名称

类型

必需的

LPM_WIDTH

整数 是

LPM_REPRESENTATION

细绳

LPM_管道

整数 否

LPM_HINT 提示

细绳

描述
指定 dataa[] 和 datab[] 端口的宽度。
指定执行的比较类型。 值为 SIGNED 和 UNSIGNED。 如果省略,默认值为 UNSIGNED。 当此参数值设置为 SIGNED 时,比较器将数据输入解释为带符号的二进制补码。
指定与 alb、aeb、agb、ageb、aleb 或 aneb 输出关联的延迟时钟周期数。 零 (0) 值表示不存在延迟,并且将实例化纯组合函数。 如果省略,则默认值为 0(非流水线)。
允许您在 VHDL 设计中指定特定于英特尔的参数 files (.vhd)。 默认值为未使用。
持续…

Intel FPGA 整数运算 IP 内核用户指南 28

发送反馈

6. LPM_COMPARE(比较器)683490 | 2020.10.05
参数名称 LPM_TYPE INTENDED_DEVICE_FAMILY
ONE_INPUT_IS_CONSTANT

类型字符串字符串
细绳

需要 否 否

描述
标识 VHDL 设计中参数化模块 (LPM) 实体名称的库 files.
此参数用于建模和行为模拟目的。 参数编辑器计算该参数的值。
英特尔特定参数。 VHDL设计中必须使用LPM_HINT参数指定ONE_INPUT_IS_CONSTANT参数 file秒。 值为 YES、NO 或 UNUSED。 如果输入不变,则提供更好的优化。 如果省略,默认值为 NO。

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 29

683490 | 2020.10.05 反馈意见

7. ALTECC(纠错码:编码器/解码器)IP核

图 6.

Intel 提供 ALTECC IP 内核来实现 ECC 功能。 ECC 检测数据传输期间在接收方发生的损坏数据。 这种纠错方法最适用于错误随机发生而不是突发发生的情况。

ECC 通过数据编码和解码过程检测错误。 对于前amp例如,当 ECC 应用于传输应用程序时,从源读取的数据在发送到接收器之前进行编码。 编码器的输出(代码字)由附加了奇偶校验位数的原始数据组成。 附加的奇偶校验位的确切数量取决于输入数据中的位数。 然后将生成的代码字传输到目的地。

接收器接收代码字并对其进行解码。 解码器获得的信息决定是否检测到错误。 解码器检测单比特和双比特错误,但只能修复损坏数据中的单比特错误。 这种类型的 ECC 是单错误纠正双错误检测 (SECDED)。

您可以配置 ALTECC IP 内核的编码器和解码器功能。 输入到编码器的数据被编码以生成代码字,该代码字是数据输入和生成的奇偶校验位的组合。 生成的代码字在到达其目标块之前被传输到解码器模块进行解码。 译码器生成校正子向量以确定接收到的码字中是否有任何错误。 仅当单位错误来自数据位时,解码器才纠正数据。 如果单位错误来自奇偶校验位,则不会标记任何信号。 解码器还具有标志信号,用于显示接收到的数据的状态和解码器采取的操作(如果有)。

下图显示了 ALTECC IP 内核的端口。

ALTECC 编码器端口

ALTECC_ENCODER

数据[]

q[]

时钟

访问控制寄存器

安装

英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔根据英特尔的标准保修保证其 FPGA 和半导体产品的性能符合当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。

ISO 9001:2015注册

7. ALTECC(纠错码:编码器/解码器)IP核683490 | 2020.10.05

图 7. ALTECC 解码器端口

ALTECC_解码器

数据[]时钟时钟

q[] 错误检测到错误更正
错误_致命

访问控制寄存器

安装

7.1. ALTECC 编码器特性

ALTECC 编码器 IP 内核提供以下特性: · 使用汉明编码方案执行数据编码 · 支持 2 位数据宽度 · 支持有符号和无符号数据表示格式 · 支持输出延迟为一个或两个时钟周期的流水线 · 支持可选异步清除和时钟使能端口

ALTECC 编码器 IP 内核使用汉明编码方案接收数据并对其进行编码。 汉明编码方案导出奇偶校验位并将它们附加到原始数据以产生输出码字。 附加的奇偶校验位数取决于数据的宽度。

下表列出了为不同数据宽度范围附加的奇偶校验位数。 Total Bits 列表示输入数据位和附加奇偶校验位的总数。

表 21.

根据数据宽度的奇偶校验位数和代码字

数据宽度

奇偶校验位数

总位数(码字)

2-4

3+1

6-8

5-11

4+1

10-16

12-26

5+1

18-32

27-57

6+1

34-64

58-64

7+1

66-72

奇偶校验位推导使用偶校验。 额外的 1 位(在表中显示为 +1)作为码字的 MSB 附加到奇偶校验位。 这确保代码字具有偶数个 1。 对于前ample,如果数据宽度为4位,则在数据后附加4个校验位,成为一共8位的码字。 如果 7 位代码字的 LSB 开始的 8 位有奇数个 1,则代码字的第 8 位 (MSB) 为 1,使得代码字中 1 的总数为偶数。
下图显示了生成的代码字以及奇偶校验位和数据位在 8 位数据输入中的排列。

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 31

7. ALTECC(纠错码:编码器/解码器)IP核683490 | 2020.10.05

图 8.

8位生成码字中的奇偶校验位和数据位排列

MSB

最低有效位

4 个奇偶校验位

4 个数据位

8

1

ALTECC 编码器 IP 内核一次仅接受 2 至 64 位的输入宽度。 非常适合英特尔设备的 12 位、29 位和 64 位输入宽度分别生成 18 位、36 位和 72 位的输出。 您可以在参数编辑器中控制位选择限制。

7.2. Verilog HDL 原型 (ALTECC_ENCODER)
以下 Verilog HDL 原型位于 Verilog Design File (.v) lpm.v 在edasynthesis目录。
module altecc_encoder #( 参数 intended_device_family = “未使用”,参数 lpm_pipeline = 0,参数 width_codeword = 8,参数 width_dataword = 8,参数 lpm_type = “altecc_encoder”,参数 lpm_hint = “未使用”)(输入线 aclr,输入线时钟,输入wire clocken,输入线 [width_dataword-1:0] 数据,输出线 [width_codeword-1:0] q); 终端模块

7.3. Verilog HDL 原型 (ALTECC_DECODER)
以下 Verilog HDL 原型位于 Verilog Design File (.v) lpm.v 在edasynthesis目录。
module altecc_decoder #( 参数 intended_device_family = “未使用”,参数 lpm_pipeline = 0,参数 width_codeword = 8,参数 width_dataword = 8,参数 lpm_type = “altecc_decoder”,参数 lpm_hint = “未使用”)(输入线 aclr,输入线时钟,输入wire clocken,输入线 [width_codeword-1:0] 数据,输出线 err_corrected,输出线 err_detected,输出线 err_fatal,输出线 [width_dataword-1:0] q); 终端模块

Intel FPGA 整数运算 IP 内核用户指南 32

发送反馈

7. ALTECC(纠错码:编码器/解码器)IP核683490 | 2020.10.05
7.4. VHDL 组件声明 (ALTECC_ENCODER)
VHDL 组件声明位于 VHDL Design File (.vhd) altera_mf_components.vhd 在librariesvhdlaltera_mf 目录。
组件altecc_encoder通用(intended_device_family:string:=“unused”;lpm_pipeline:natural:=0;width_codeword:natural:=8;width_dataword:natural:=8;lpm_hint:string:=“UNUSED”;lpm_type:string:=“altecc_encoder ”); 端口( aclr:in std_logic := '0'; clock:in std_logic := '0'; clocken:in std_logic := '1'; data:in std_logic_vector(width_dataword-1 downto 0); q:out std_logic_vector(width_codeword -1 下降到 0)); 结束组件;
7.5. VHDL 组件声明 (ALTECC_DECODER)
VHDL 组件声明位于 VHDL Design File (.vhd) altera_mf_components.vhd 在librariesvhdlaltera_mf 目录。
组件altecc_decoder通用(intended_device_family:string:=“unused”;lpm_pipeline:natural:=0;width_codeword:natural:=8;width_dataword:natural:=8;lpm_hint:string:=“UNUSED”;lpm_type:string:=“altecc_decoder ”); 端口( aclr:in std_logic := '0'; clock:in std_logic := '0'; clocken:in std_logic := '1'; data:in std_logic_vector(width_codeword-1 downto 0); err_corrected : out std_logic; err_detected : 输出 std_logic; q: 输出 std_logic_vector(width_dataword-1 downto 0); syn_e : 输出 std_logic; 结束组件;
7.6. VHDL LIBRARY_USE 声明
如果使用 VHDL 组件声明,则不需要 VHDL LIBRARY-USE 声明。
库 altera_mf; 使用 altera_mf.altera_mf_components.all;
7.7. 编码器端口
下表列出了 ALTECC 编码器 IP 内核的输入和输出端口。

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 33

7. ALTECC(纠错码:编码器/解码器)IP核683490 | 2020.10.05

表 22. ALTECC 编码器输入端口

端口名称

必需的

描述

数据[]

是的

数据输入端口。 输入端口的大小取决于 WIDTH_DATAWORD

参数值。 data[] 端口包含要编码的原始数据。

是的

时钟输入端口,提供时钟信号以同步编码操作。

当 LPM_PIPELINE 值大于 0 时,需要时钟端口。

时钟

时钟使能。 如果省略,默认值为 1。

访问控制寄存器

异步清除输入。 高电平有效 aclr 信号可随时用于

异步清除寄存器。

表 23. ALTECC 编码器输出端口

端口名称 q[]

需要 是

描述
编码数据输出端口。 输出端口的大小取决于 WIDTH_CODEWORD 参数值。

7.8. 解码器端口

下表列出了 ALTECC 解码器 IP 内核的输入和输出端口。

表 24. ALTECC 解码器输入端口

端口名称

必需的

描述

数据[]

是的

数据输入端口。 输入端口的大小取决于 WIDTH_CODEWORD 参数值。

是的

时钟输入端口,提供时钟信号以同步编码操作。 当 LPM_PIPELINE 值大于 0 时,需要时钟端口。

时钟

时钟使能。 如果省略,默认值为 1。

访问控制寄存器

异步清除输入。 高电平有效 aclr 信号可随时用于异步清除寄存器。

表 25. ALTECC 解码器输出端口

端口名称 q[]

需要 是

描述
解码数据输出端口。 输出端口的大小取决于 WIDTH_DATAWORD 参数值。

err_detected 是

标志信号反映接收到的数据的状态并指定发现的任何错误。

err_correcte 是 d

标志信号反映接收到的数据的状态。 表示发现并纠正了单位错误。 您可以使用该数据,因为它已被更正。

错误_致命

是的

标志信号反映接收到的数据的状态。 表示发现双位错误,但未更正。 如果断言此信号,则不得使用数据。

同义词

每当在奇偶校验上检测到一位错误时,输出信号就会变高

位。

7.9. 编码器参数
下表列出了 ALTECC 编码器 IP 核的参数。

Intel FPGA 整数运算 IP 内核用户指南 34

发送反馈

7. ALTECC(纠错码:编码器/解码器)IP核683490 | 2020.10.05

表 26. ALTECC 编码器参数

参数名称

类型

必需的

描述

WIDTH_DATAWORD

整数 是

指定原始数据的宽度。 值介于 2 到 64 之间。如果省略,则默认值为 8。

WIDTH_CODEWORD

整数 是

指定相应代码字的宽度。 有效值为 6 到 72,不包括 9、17、33 和 65。如果省略,则默认值为 13。

LPM_管道

整数 否

指定电路的管道。 值介于 0 到 2 之间。如果值为 0,则端口未注册。 如果值为 1,则输出端口已注册。 如果值为 2,则注册输入和输出端口。 如果省略,默认值为 0。

7.10. 解码器参数

下表列出了 ALTECC 解码器 IP 内核参数。

表 27. ALTECC 解码器参数

参数名称 WIDTH_DATAWORD

类型整数

必需的

描述

是的

指定原始数据的宽度。 值为 2 到 64。

默认值为 8。

WIDTH_CODEWORD

整数

是的

指定相应码字的宽度。 值为 6

到 72,不包括 9、17、33 和 65。如果省略,默认值

是 13。

LPM_管道

整数

指定电路的寄存器。 值从 0 到 2。如果

值为 0,没有实现寄存器。 如果值为 1,则

输出被注册。 如果值为 2,则输入和

输出被注册。 如果该值大于 2,则附加

寄存器在输出端实现,用于额外的

延迟。 如果省略,默认值为 0。

创建一个“syn_e”端口

整数

打开此参数以创建一个 syn_e 端口。

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 35

683490 | 2020.10.05 反馈意见

8. Intel FPGA 乘法加法器 IP 核

图 9.

英特尔 FPGA 乘法加法器(英特尔 Stratix 10、英特尔 Arria 10 和英特尔 Cyclone 10 GX 设备)或 ALTERA_MULT_ADD(Arria V、Stratix V 和 Cyclone V 设备)IP 核允许您实现乘法器-加法器。

下图显示了 Intel FPGA Multiply Adder 或 ALTERA_MULT_ADD IP 内核的端口。

英特尔 FPGA 乘加器或 ALTERA_MULT_ADD 端口

英特尔 FPGA 乘法加法器或 ALTERA_MULT_ADD

dataa[]signadatab[]signbdatac[]coefsel0[]coefsel1[]coefsel2[]coefsel3[]addnsub1addnsub3aclr/sclr[]scanina[]clock0clock1clock2ena0ena1ena2sload_accum
Accum_sload chainin[]

scanouta[] 结果[]

aclr0 aclr1

安装
乘加器接受成对的输入,将值相乘,然后与所有其他对的乘积相加或相减。
如果所有输入数据宽度都是 9 位宽或更小,则该函数使用 DSP 模块中的 9 x 9 位输入乘法器配置,用于支持 9 x 9 配置的设备。 如果不是,则 DSP 模块使用 18 × 18 位输入乘法器来处理宽度在 10 位和 18 位之间的数据。 如果设计中出现多个 Intel FPGA Multiply Adder 或 ALTERA_MULT_ADD IP 内核,则功能将分配给

英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔根据英特尔的标准保修保证其 FPGA 和半导体产品的性能符合当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。

ISO 9001:2015注册

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05
尽可能多的不同 DSP 块,以便路由到这些块更加灵活。 每个 DSP 模块更少的乘法器通过最小化到设备其余部分的路径允许更多路由选择进入模块。
以下信号的寄存器和额外流水线寄存器也放置在 DSP 块内: · 数据输入 · 有符号或无符号选择 · 加或减选择 · 乘法器的乘积
在输出结果的情况下,第一个寄存器放在 DSP 块中。 然而,额外的延迟寄存器放置在块外的逻辑元素中。 DSP 模块的外设,包括乘法器的数据输入、控制信号输入和加法器的输出,使用常规路由与设备的其余部分进行通信。 函数中的所有连接都使用 DSP 块内的专用路由。 当您选择将乘法器的寄存输入数据从一个乘法器转移到相邻乘法器的选项时,此专用布线包括移位寄存器链。
有关任何 Stratix V 和 Arria V 器件系列中 DSP 模块的更多信息,请参考文献和技术文档页面上相应手册的 DSP 模块章节。
相关链接 AN 306:在 FPGA 设备中实现乘法器
提供有关在英特尔 FPGA 设备中使用 DSP 和内存块实现乘法器的更多信息。
8.1. 特点
Intel FPGA 乘法加法器或 ALTERA_MULT_ADD IP 核提供以下特性: · 生成乘法器以执行两个复数的乘法运算
numbers 注意:当构建大于本机支持的大小的乘法器时,可能/
DSP 块的级联将对性能产生影响。 · 支持 1 256 位的数据宽度 · 支持有符号和无符号数据表示格式 · 支持具有可配置输入延迟的流水线 · 提供在有符号和无符号数据支持之间动态切换的选项 · 提供在加法和减法运算之间动态切换的选项 · 支持可选的异步和同步清除和时钟使能输入端口·支持收缩延迟寄存器模式·支持每个乘法器具有 8 个预加载系数的预加器·支持预加载常数以补充累加器反馈

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 37

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

8.1.1. 预加器
对于预加器,加法或减法是在馈入乘法器之前完成的。
有五种预加器模式: · 简单模式 · 系数模式 · 输入模式 · 平方模式 · 常数模式

笔记:

使用预加器时(预加器系数/输入/平方模式),乘法器的所有数据输入必须具有相同的时钟设置。

8.1.1.1。 预加器简单模式

在这种模式下,两个操作数都来自输入端口,并且不使用或绕过预加器。 这是默认模式。

图 10. 预加器简单模式
a0 b0

Mult0

结果

8.1.1.2。 预加器系数模式
在这种模式下,一个乘法器操作数来自预加器,另一个操作数来自内部系数存储。 系数存储最多允许 8 个预设常数。 系数选择信号是 coefsel[0..3]。
该模式用下式表示。

下面显示了乘法器的预加器系数模式。

图 11. 预加器系数模式

布道器

a0

Mult0

+/-

结果

b0

coefsel0 系数

Intel FPGA 整数运算 IP 内核用户指南 38

发送反馈

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05
8.1.1.3. 预加器输入模式 在此模式下,一个乘法器操作数来自预加器,另一个操作数来自 datac[] 输入端口。 该模式用下式表示。

下面显示了乘法器的预加器输入模式。

图 12. 预加器输入模式
a0 b0

Mult0

+/-

结果

c0

8.1.1.4。 预加器方波模式 该模式用下式表示。

下面显示了两个乘法器的预加器平方模式。

图 13. 预加器平方模式
a0 b0

Mult0

+/-

结果

8.1.1.5。 预加器常量模式
在这种模式下,一个乘法器操作数来自输入端口,另一个操作数来自内部系数存储。 系数存储最多允许 8 个预设常数。 系数选择信号是 coefsel[0..3]。
该模式用下式表示。

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 39

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

下图显示了乘法器的预加器常数模式。

图 14. 预加器常量模式
a0

Mult0

结果

系数0
系数
8.1.2. 收缩延迟寄存器
在脉动架构中,输入数据被送入充当数据缓冲器的级联寄存器。 每个寄存器传递一个输入 sample 到乘数,乘以相应的系数。 链加法器存储逐渐组合的乘法器结果和先前从 chainin[] 输入端口注册的结果,以形成最终结果。 每个乘加元素都必须延迟一个周期,以便在将结果加在一起时适当地同步。 每个连续的延迟都用于寻址系数存储器和它们各自的乘加元素的数据缓冲器。 对于前ample,第二个乘加元素的单个延迟,第三个乘加元素的两个延迟,依此类推。
图 15. 脉动寄存器
收缩寄存器

x(t) c(0)

硫-1

硫-1

(1)

硫-1

硫-1

(2)

硫-1

硫-1

c(N-1)

硫-1

硫-1

硫-1

S -1 y(t)

x(t) 表示来自连续输入流 s 的结果amples 和 y(t)
表示一组输入 s 的总和amples,并及时乘以他们的
各自的系数。 输入和输出结果都从左向右流动。 c(0)到c(N-1)表示系数。 收缩延迟寄存器由 S-1 表示,而 1 表示单个时钟延迟。 收缩延迟寄存器被添加在
输入和输出流水线的方式,以确保从结果
乘数操作数和累加和保持同步。 这个处理元素
被复制以形成计算滤波函数的电路。 这个功能是
用下式表示。

Intel FPGA 整数运算 IP 内核用户指南 40

发送反馈

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

N表示进入累加器的数据循环次数,y(t)表示时间t的输出,A(t)表示时间t的输入,B(i)为系数。 等式中的 t 和 i 对应于特定的时刻,因此要计算输出 sample y(t) 在时间 t,一组输入 sampN个不同时间点的文件,或者需要A(n), A(n-1), A(n-2), ... A(n-N+1)。 N 个输入的组amples乘以N个系数并加在一起形成最终结果y。
脉动寄存器架构仅适用于 2 和和 4 模式。 对于两种脉动寄存器架构模式,第一个 chainin 信号需要绑定到 0。
下图显示了 2 个乘法器的收缩延迟寄存器实现。
图 16. 2 个乘法器的收缩延迟寄存器实现
连锁

a0

Mult0

+/-

b0

a1

Mult1

+/-

b1

结果
两个乘数之和用下式表示。
下图显示了 4 个乘法器的收缩延迟寄存器实现。

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 41

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

图 17. 4 个乘法器的收缩延迟寄存器实现
连锁

a0

Mult0

+/-

b0

a1

Mult1

+/-

b1

a2

Mult2

+/-

b2

a3

Mult3

+/-

b3

结果
四个乘法器的总和表示为以下等式。 图 18. 4 个乘法器的总和
下面列出了advantag脉动寄存器实现的 es: · 减少 DSP 资源使用 · 使用链加法器结构在 DSP 块中实现高效映射

Intel FPGA 整数运算 IP 内核用户指南 42

发送反馈

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

8.1.3. 预载常数
预加载常量控制累加器操作数并补充累加器反馈。 有效的 LOADCONST_VALUE 范围为 0。常量值等于 64N,其中 N = LOADCONST_VALUE。 当 LOADCONST_VALUE 设置为 2 时,常量值等于 64。此函数可用作偏置舍入。
下图显示了预加载常量的实现。
图 19. 预载常量

蓄能器反馈

持续的

a0

Mult0

+/-

b0

a1

Mult1

+/b1

结果

累积负载 sload_accum

其他乘法器实现请参考以下 IP 内核: · ALTMULT_ACCUM · ALTMEMMULT · LPM_MULT
8.1.4. 双蓄能器
双累加器功能在累加器反馈路径中添加了一个额外的寄存器。 双累加器寄存器位于输出寄存器之后,其中包括时钟、时钟使能和 aclr。 附加累加器寄存器以一个周期延迟返回结果。 此功能使您能够拥有两个具有相同资源计数的累加器通道。
下图显示了双累加器的实现。

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 43

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

图 20. 双累加器

双累加器寄存器

累加器反馈

a0

Mult0

+/-

b0

a1

Mult1

+/b1

输出结果 输出寄存器

8.2. Verilog HDL 原型
您可以找到 Intel FPGA Multiply Adder 或 ALTERA_MULT_ADD Verilog HDL 原型 file (altera_mult_add_rtl.v) 在librariesmegafunctions 目录。
8.3. VHDL 组件声明
VHDL 组件声明位于 altera_lnsim_components.vhd 中librariesvhdl altera_lnsim 目录。
8.4. VHDL LIBRARY_USE 声明
如果使用 VHDL 组件声明,则不需要 VHDL LIBRARY-USE 声明。
库 altera_mf; 使用 altera_mf.altera_mf_components.all;

8.5. 信号

下表列出了 Multiply Adder Intel FPGA IP 或 ALTERA_MULT_ADD IP 内核的输入和输出信号。

表 28. 乘法加法器英特尔 FPGA IP 或 ALTERA_MULT_ADD 输入信号

信号

必需的

描述

数据a_0[]/数据a_1[]/

是的

数据a_2[]/数据a_3[]

乘法器的数据输入。 输入端口 [NUMBER_OF_MULTIPLIERS * WIDTH_A – 1 … 0] 宽
持续…

Intel FPGA 整数运算 IP 内核用户指南 44

发送反馈

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

信号 datab_0[]/datab_1[]/ datab_2[]/datab_3[] datac_0[] /datac_1[]/ datac_2[]/datac_3[] 时钟[1:0] aclr[1:0] sclr[1:0] ena [1:0] 信号
标志b
扫描[] accum_sload

需要 是 否
否否否否

否 否

描述
此 IP 的仿真模型支持这些信号的未确定输入值 (X)。 当您为这些信号提供 X 值时,X 值将在输出信号上传播。
乘法器的数据输入。 输入信号 [NUMBER_OF_MULTIPLIERS * WIDTH_B – 1 … 0] 宽 该 IP 的仿真模型支持这些信号的未确定输入值 (X)。 当您为这些信号提供 X 值时,X 值会在输出信号上传播。
乘法器的数据输入。 输入信号 [NUMBER_OF_MULTIPLIERS * WIDTH_C – 1, … 0] wide 为 Select preadder mode 参数选择 INPUT 以启用这些信号。 此 IP 的仿真模型支持这些信号的未确定输入值 (X)。 当您为这些信号提供 X 值时,X 值会在输出信号上传播。
时钟输入端口到相应的寄存器。 IP 内核中的任何寄存器都可以使用该信号。 此 IP 的仿真模型支持这些信号的未确定输入值 (X)。 当您为这些信号提供 X 值时,X 值会在输出信号上传播。
异步清零输入到相应的寄存器。 此 IP 的仿真模型支持这些信号的未确定输入值 (X)。 当您为这些信号提供 X 值时,X 值会在输出信号上传播。
同步清零输入到相应的寄存器。 此 IP 的仿真模型支持这些信号的未确定输入值 X。 当您为这些信号提供 X 值时,X 值将在输出信号上传播
使能信号输入到相应的寄存器。 此 IP 的仿真模型支持这些信号的未确定输入值 (X)。 当您为这些信号提供 X 值时,X 值会在输出信号上传播。
指定乘法器输入 A 的数值表示。如果 signa 信号为高,则乘法器将乘法器输入 A 信号视为有符号数。 如果 signa 信号为低电平,则乘法器将乘法器输入 A 信号视为无符号数。 为 What is the representation format for Multipliers A inputs 参数选择 VARIABLE 以启用此信号。 此 IP 的仿真模型支持此信号的未确定输入值 (X)。 当您为此输入提供 X 值时,X 值将在输出信号上传播。
指定乘法器输入 B 信号的数字表示。 如果 signb 信号为高电平,则乘法器将乘法器输入 B 信号视为带符号的二进制补码。 如果 signb 信号为低电平,则乘法器将乘法器输入 B 信号视为无符号数。 此 IP 的仿真模型支持此信号的未确定输入值 (X)。 当您为此输入提供 X 值时,X 值将在输出信号上传播。
扫描链 A 的输入。输入信号 [WIDTH_A – 1, … 0] 宽。 当 INPUT_SOURCE_A 参数的值为 SCANA 时,需要 scanina[] 信号。
动态指定累加器值是否恒定。 如果 accum_sload 信号为低电平,则乘法器输出加载到累加器中。 不要同时使用 accum_sload 和 sload_accum。
持续…

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 45

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

信号 sload_accum
chainin[] addnsub1
添加子3
coefsel0[] coefsel1[] coefsel2[] coefsel3[]

必填 否
否 否

不不不不

描述
此 IP 的仿真模型支持此信号的未确定输入值 (X)。 当您为此输入提供 X 值时,X 值将在输出信号上传播。
动态指定累加器值是否恒定。 如果 sload_accum 信号为高,则乘法器输出加载到累加器中。 不要同时使用 accum_sload 和 sload_accum。 此 IP 的仿真模型支持此信号的未确定输入值 (X)。 当您为此输入提供 X 值时,X 值将在输出信号上传播。
来自前面 s 的加法器结果输入总线tage. 输入信号 [WIDTH_CHAININ – 1, … 0] 宽。
对第一对乘法器的输出执行加法或减法。 输入 1 到 addnsub1 信号以添加第一对乘法器的输出。 输入 0 到 addnsub1 信号以减去第一对乘法器的输出。 此 IP 的仿真模型支持此信号的未确定输入值 (X)。 当您为此输入提供 X 值时,X 值将在输出信号上传播。
对第一对乘法器的输出执行加法或减法。 输入 1 到 addnsub3 信号以添加第二对乘法器的输出。 输入 0 到 addnsub3 信号以减去第一对乘法器的输出。 此 IP 的仿真模型支持此信号的未确定输入值 (X)。 当您为此输入提供 X 值时,X 值将在输出信号上传播。
系数输入信号[0:3]到第一个乘法器。 此 IP 的仿真模型支持此信号的未确定输入值 (X)。 当您为此输入提供 X 值时,X 值将在输出信号上传播。
系数输入信号[0:3]到第二个乘法器。 此 IP 的仿真模型支持此信号的未确定输入值 (X)。 当您为此输入提供 X 值时,X 值将在输出信号上传播。
系数输入信号[0:3]到第三个乘法器。 此 IP 的仿真模型支持此信号的未确定输入值 (X)。 当您为此输入提供 X 值时,X 值将在输出信号上传播。
系数输入信号[0:3]到第四个乘法器。 此 IP 的仿真模型支持此信号的未确定输入值 (X)。 当您为此输入提供 X 值时,X 值将在输出信号上传播。

表 29. 乘加器 Intel FPGA IP 输出信号

信号

必需的

描述

结果 []

是的

乘法器输出信号。 输出信号 [WIDTH_RESULT – 1 … 0] 宽

此 IP 的仿真模型支持未确定的输出值 (X)。 当您提供 X 值作为输入时,X 值将在此信号上传播。

扫描[]

扫描链 A 的输出。输出信号 [WIDTH_A – 1..0] 宽。

为乘法器的数量选择大于 2,并为 What is the input A of the multiplier connected to parameter 选择 Scan chain input 以启用此信号。

Intel FPGA 整数运算 IP 内核用户指南 46

发送反馈

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

8.6。 参量

8.6.1. 常规选项卡

表 30. 常规选项卡

范围

IP 生成参数

价值

乘数是多少?

number_of_m 1 – 4 个乘数

A width_a 输入总线应该有多宽?

1 – 256

B width_b 输入总线应该有多宽?

1 – 256

“结果”输出总线应该有多宽?

宽度_结果

1 – 256

为每个时钟创建关联的时钟使能

gui_associate 开启 d_clock_enab 关闭 e

8.6.2. 额外模式选项卡

表 31. 额外模式选项卡

范围

IP 生成参数

价值

输出配置

加法器单元的寄存器输出

gui_output_re 开启

吉斯特

离开

时钟输入的来源是什么?

gui_output_register_clock

时钟 0 时钟 1 时钟 2

异步清除输入的来源是什么?

gui_output_register_aclr

无 ACLR0 ACLR1

同步清除输入的来源是什么?

gui_output_register_sclr

无 SCLR0 SCLR1

加法运算

应该对第一对乘法器的输出执行什么操作?

gui_multiplier 1_direction

添加、子、变量

默认值 1
16

描述
要加在一起的乘数数。 值为 1 到 4。指定 dataa[] 端口的宽度。

16

指定 datab[] 端口的宽度。

32

指定 result[] 端口的宽度。

离开

选择此选项以创建时钟使能

对于每个时钟。

默认值

描述

关闭时钟0
无无

选择此选项以启用加法器模块的输出寄存器。
选择 Clock0 、 Clock1 或 Clock2 以启用并指定输出寄存器的时钟源。 您必须选择 Register output of the adder unit 以启用此参数。
指定加法器输出寄存器的异步清零源。 您必须选择 Register output of the adder unit 以启用此参数。
指定加法器输出寄存器的同步清零源。 您必须选择 Register output of the adder unit 以启用此参数。

添加

选择要对第一个和第二个乘法器之间的输出执行加法或减法运算。
· 选择ADD 进行加法运算。
· 选择SUB 进行减法运算。
· 选择 V​​ARIABLE 以使用 addnsub1 端口进行动态加法/减法控制。
持续…

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 47

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

范围

IP 生成参数

价值

注册 'addnsub1' 输入

gui_addnsub_ 开启 multiplier_reg 关闭 ister1

时钟输入的来源是什么?

gui_addnsub_ multiplier_reg ister1_clock

时钟 0 时钟 1 时钟 2

异步清除输入的来源是什么?

gui_addnsub_ multiplier_aclr 1

无 ACLR0 ACLR1

同步清除输入的来源是什么?

gui_addnsub_ multiplier_sclr 1

无 SCLR0 SCLR1

应该对第二对乘法器的输出执行什么操作?

gui_multiplier 3_direction

添加、子、变量

注册 'addnsub3' 输入

gui_addnsub_ 开启 multiplier_reg 关闭 ister3

时钟输入的来源是什么?

gui_addnsub_ multiplier_reg ister3_clock

时钟 0 时钟 1 时钟 2

默认值
关闭时钟 0 无 无 添加
关闭时钟0

描述
选择 VARIABLE 值时: · 将 addnsub1 信号驱动为高电平
加法运算。 · 将 addnsub1 信号驱动为低电平
减法运算。 您必须选择两个以上的乘法器才能启用此参数。
选择此选项以启用 addnsub1 端口的输入寄存器。 您必须为应该对第一对乘法器的输出执行什么操作选择 VARIABLE 以启用此参数。
选择 Clock0 、 Clock1 或 Clock2 以指定 addnsub1 寄存器的输入时钟信号。 您必须选择注册“addnsub1”输入以启用此参数。
指定 addnsub1 寄存器的异步清零源。 您必须选择注册“addnsub1”输入以启用此参数。
指定 addnsub1 寄存器的同步清零源。 您必须选择注册“addnsub1”输入以启用此参数。
选择加法或减法运算以对第三和第四乘法器之间的输出执行。 · 选择ADD进行加法
手术。 · 选择SUB进行减法
手术。 · 选择VARIABLE使用addnsub1
用于动态加法/减法控制的端口。 选择 VARIABLE 值时: · 将 addnsub1 信号驱动为高电平以进行加法操作。 · 将addnsub1 信号驱动为低电平以进行减法运算。 您必须为乘数的数量选择值 4? 启用此参数。
选择此选项以启用 addnsub3 信号的输入寄存器。 您必须为应该对第二对乘法器的输出执行的操作选择 VARIABLE 以启用此参数。
选择 Clock0 、 Clock1 或 Clock2 以指定 addnsub3 寄存器的输入时钟信号。 您必须选择 Register 'addnsub3' input 才能启用此参数。
持续…

Intel FPGA 整数运算 IP 内核用户指南 48

发送反馈

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

范围
异步清除输入的来源是什么?

IP 生成参数

价值

gui_addnsub_ multiplier_aclr 3

无 ACLR0 ACLR1

同步清除输入的来源是什么?

gui_addnsub_ multiplier_sclr 3

无 SCLR0 SCLR1

极性启用`use_subadd'

gui_use_subn 开启

添加

离开

8.6.3. 乘数选项卡

表 32. 乘数选项卡

范围

IP 生成参数

价值

什么是

gui_代表

表示格式ation_a

对于乘法器 A 输入?

有符号、无符号、可变

注册“signa”输入

gui_register_s 打开

伊格纳

离开

时钟输入的来源是什么?

gui_register_s igna_clock

时钟 0 时钟 1 时钟 2

异步清除输入的来源是什么?

gui_register_s igna_aclr

无 ACLR0 ACLR1

同步清除输入的来源是什么?

gui_register_s igna_sclr

无 SCLR0 SCLR1

什么是

gui_代表

表示格式ation_b

对于乘法器 B 输入?

有符号、无符号、可变

注册`signb'输入

gui_register_s 打开

点火器

离开

默认值 无
没有任何

描述
指定 addnsub3 寄存器的异步清零源。 您必须选择注册“addnsub3”输入以启用此参数。
指定 addnsub3 寄存器的同步清零源。 您必须选择 Register 'addnsub3' input 才能启用此参数。

离开

选择此选项以反转功能

addnsub 输入端口。

将 addnsub 驱动为高电平以进行减法操作。

将 addnsub 驱动为低电平以进行加法操作。

默认值

描述

UNSIGNED 指定乘法器 A 输入的表示格式。

离开

选择此选项以启用信号

登记。

您必须为乘法器 A 输入的表示格式是什么选择 VARIABLE 值? 启用此选项的参数。

时钟0

选择 Clock0 、 Clock1 或 Clock2 以启用并指定 signa 寄存器的输入时钟信号。
您必须选择 Register `signa' input 以启用此参数。

没有任何

指定 signa 寄存器的异步清零源。
您必须选择 Register `signa' input 以启用此参数。

没有任何

指定 signa 寄存器的同步清零源。
您必须选择 Register `signa' input 以启用此参数。

UNSIGNED 指定乘法器 B 输入的表示格式。

离开

选择此选项以启用 signb

登记。

持续…

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 49

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

范围

IP 生成参数

价值

默认值

时钟输入的来源是什么?

gui_register_s ignb_clock

时钟 0 时钟 1 时钟 2

时钟0

异步清除输入的来源是什么?

gui_register_s ignb_aclr

无 ACLR0 ACLR1

同步清除输入的来源是什么?

gui_register_s ignb_sclr

无 SCLR0 SCLR1

输入配置
乘法器的寄存器输入 A
时钟输入的来源是什么?

gui_input_reg 打开

姐妹

离开

gui_input_reg ister_a_clock

时钟 0 时钟 1 时钟 2

无无
关闭时钟0

异步清除输入的来源是什么?

gui_input_register_a_aclr

无 ACLR0 ACLR1

同步清除输入的来源是什么?

gui_input_register_a_sclr

无 SCLR0 SCLR1

乘法器的寄存器输入 B
时钟输入的来源是什么?

gui_input_reg 打开

伊斯特_b

离开

gui_input_reg ister_b_clock

时钟 0 时钟 1 时钟 2

无 无 关闭时钟 0

异步清除输入的来源是什么?

gui_input_register_b_aclr

无 ACLR0 ACLR1

没有任何

同步清除输入的来源是什么?

gui_input_reg ister_b_sclr

无 SCLR0 SCLR1

没有任何

乘法器的输入 A 连接到什么?

gui_multiplier 乘数输入乘数

_a_输入

扫描链输入输入

描述
您必须为 What is the representation format for Multipliers B inputs 选择 V​​ARIABLE 值? 启用此选项的参数。
选择 Clock0 、 Clock1 或 Clock2 以启用并指定 signb 寄存器的输入时钟信号。 您必须选择 Register `signb' input 以启用此参数。
指定 signb 寄存器的异步清零源。 您必须选择 Register `signb' input 以启用此参数。
指定 signb 寄存器的同步清零源。 您必须选择 Register `signb' input 以启用此参数。
选择此选项以启用数据输入总线的输入寄存器。
选择 Clock0 、 Clock1 或 Clock2 以启用和指定数据 a 输入总线的寄存器输入时钟信号。 您必须选择 Register input A of the multiplier 以启用此参数。
指定数据 a 输入总线的寄存器异步清零源。 您必须选择 Register input A of the multiplier 以启用此参数。
指定数据 a 输入总线的寄存器同步清零源。 您必须选择 Register input A of the multiplier 以启用此参数。
选择此选项以启用数据输入总线的输入寄存器。
选择 Clock0 、 Clock1 或 Clock2 以启用和指定数据输入总线的寄存器输入时钟信号。 您必须选择乘法器的寄存器输入 B 才能启用此参数。
指定数据输入总线的寄存器异步清除源。 您必须选择乘法器的寄存器输入 B 才能启用此参数。
指定数据输入总线的寄存器同步清除源。 您必须选择乘法器的寄存器输入 B 才能启用此参数。
选择乘法器输入 A 的输入源。
持续…

Intel FPGA 整数运算 IP 内核用户指南 50

发送反馈

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

范围

IP 生成参数

价值

扫描 A 寄存器配置

扫描链的寄存器输出

gui_scanouta 开启

_登记

离开

时钟输入的来源是什么?

gui_scanouta _register_clock k

时钟 0 时钟 1 时钟 2

异步清除输入的来源是什么?

gui_scanouta_register_aclr

无 ACLR0 ACLR1

同步清除输入的来源是什么?

gui_scanouta_register_sclr

无 SCLR0 SCLR1

8.6.4. 标签页

表 33. 分布器选项卡

范围

IP 生成参数

价值

选择预加器模式

preadder_mode

简单、系数、输入、平方、常数

默认值

描述
选择乘法器输入以使用数据输入总线作为乘法器的源。 选择 Scan chain input 以使用 scanin 输入总线作为乘法器的源并启用 scanout 输出总线。 当您为乘法器的数量选择 2、3 或 4 时,此参数可用。 范围。

关闭时钟 0 无 无

选择此选项以启用 scanouta 输出总线的输出寄存器。
您必须为 What is the input A of the multiplier connected to? 选择 Scan chain input? 启用此选项的参数。
选择 Clock0 、 Clock1 或 Clock2 以启用和指定 scanouta 输出总线的寄存器输入时钟信号。
您必须打开 Register output of the scan chain parameter 以启用此选项。
指定 scanouta 输出总线的寄存器异步清除源。
您必须打开 Register output of the scan chain parameter 以启用此选项。
指定 scanouta 输出总线的寄存器同步清除源。
您必须选择 Register output of the scan chain parameter 以启用此选项。

默认值
简单的

描述
指定预加器模块的操作模式。 SIMPLE:此模式绕过预加器。 这是默认模式。 COEF:此模式使用预加器和 coefsel 输入总线的输出作为乘法器的输入。 输入:此模式使用预加器和数据输入总线的输出作为乘法器的输入。 SQUARE:此模式使用预加器的输出作为乘法器的输入。
持续…

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 51

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

范围

IP 生成参数

价值

选择预加器方向

gui_preadder 添加,

_方向

C width_c 输入总线应该有多宽?

1 – 256

数据 C 输入寄存器配置

寄存器数据输入

gui_datac_inp 打开

ut_寄存器

离开

时钟输入的来源是什么?

gui_datac_inp ut_register_cl 锁

时钟 0 时钟 1 时钟 2

异步清除输入的来源是什么?

gui_datac_inp ut_register_a clr

无 ACLR0 ACLR1

同步清除输入的来源是什么?

gui_datac_inp ut_register_sc lr

无 SCLR0 SCLR1

系数
系数宽度应该有多宽?

宽度系数

1 – 27

系数寄存器配置

注册 coefsel 输入

gui_coef_regi 打开

斯特

离开

时钟输入的来源是什么?

gui_coef_regi ster_clock

时钟 0 时钟 1 时钟 2

默认值
添加
16

描述
CONSTANT:此模式使用带旁路预加器的数据输入总线和 coefsel 输入总线作为乘法器的输入。
指定预加器的操作。 要启用此参数,请为 Select preadder mode 选择以下选项: · COEF · INPUT · SQUARE 或 · CONSTANT
指定 C 输入总线的位数。 您必须为 Select preadder mode 选择 INPUT 以启用此参数。

在时钟 0 无 无

选择此选项以启用 datac 输入总线的输入寄存器。 您必须将 INPUT 设置为 Select preadder mode 参数以启用此选项。
选择 Clock0 、 Clock1 或 Clock2 以指定 datac 输入寄存器的输入时钟信号。 您必须选择 Register datac input 以启用此参数。
指定 datac 输入寄存器的异步清零源。 您必须选择 Register datac input 以启用此参数。
指定 datac 输入寄存器的同步清零源。 您必须选择 Register datac input 以启用此参数。

18

指定位数

coefsel 输入总线。

您必须为预加器模式选择 COEF 或 CONSTANT 才能启用此参数。

在时钟 0

选择此选项以启用 coefsel 输入总线的输入寄存器。 您必须为预加器模式选择 COEF 或 CONSTANT 才能启用此参数。
选择 Clock0 、 Clock1 或 Clock2 以指定 coefsel 输入寄存器的输入时钟信号。 您必须选择 Register the coefsel input 以启用此参数。
持续…

Intel FPGA 整数运算 IP 内核用户指南 52

发送反馈

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

范围
异步清除输入的来源是什么?

IP 生成参数

价值

gui_coef_regi ster_aclr

无 ACLR0 ACLR1

同步清零输入的来源是什么

gui_coef_regi ster_sclr

无 SCLR0 SCLR1

Coefficient_0 配置

coef0_0 到 coef0_7

0x00000 0xFFFFFFF

Coefficient_1 配置

coef1_0 到 coef1_7

0x00000 0xFFFFFFF

Coefficient_2 配置

coef2_0 到 coef2_7

0x00000 0xFFFFFFF

Coefficient_3 配置

coef3_0 到 coef3_7

0x00000 0xFFFFFFF

8.6.5. 累加器选项卡

表 34. 累加器选项卡

范围

IP 生成参数

价值

启用累加器?

累加器

是的,没有

什么是累加器操作类型?

accum_directi 添加,

on

默认值 无
没有任何
0x0000000 0
0x0000000 0
0x0000000 0
0x0000000 0

描述
指定 coefsel 输入寄存器的异步清零源。 您必须选择 Register the coefsel input 以启用此参数。
指定 coefsel 输入寄存器的同步清零源。 您必须选择 Register the coefsel input 以启用此参数。
指定第一个乘数的系数值。 位数必须与系数宽度应多宽? 范围。 您必须为预加器模式选择 COEF 或 CONSTANT 才能启用此参数。
指定第二个乘数的系数值。 位数必须与系数宽度应多宽? 范围。 您必须为预加器模式选择 COEF 或 CONSTANT 才能启用此参数。
指定此第三个乘数的系数值。 位数必须与系数宽度应多宽? 范围。 您必须为预加器模式选择 COEF 或 CONSTANT 才能启用此参数。
指定第四个乘法器的系数值。 位数必须与系数宽度应多宽? 范围。 您必须为预加器模式选择 COEF 或 CONSTANT 才能启用此参数。

默认值 否
添加

描述
选择 YES 启用累加器。 使用累加器功能时,必须选择加法器单元的寄存器输出。
指定累加器的操作: · ADD 用于加法运算 · SUB 用于减法运算。 您必须为启用累加器选择是? 启用此选项的参数。
持续…

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 53

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

范围
Preload Constant 启用预加载常量

IP 生成参数

价值

gui_ena_prelo 打开

广告常量

离开

accumulate 端口的输入连接到什么?

gui_accumula ACCUM_SLOAD,te_port_select SLOAD_ACCUM

选择预加载值 loadconst_val 0 – 64

持续的

ue

时钟输入的来源是什么?

gui_accum_sl oad_register_clock

时钟 0 时钟 1 时钟 2

异步清除输入的来源是什么?

gui_accum_sl oad_register_aclr

无 ACLR0 ACLR1

同步清除输入的来源是什么?

gui_accum_sl oad_register_sclr

无 SCLR0 SCLR1

启用双累加器

gui_double_a 打开

累积

离开

默认值

描述

离开

启用 accum_sload 或

sload_accum 信号和寄存器输入

动态选择输入到

累加器。

当 accum_sload 为低或 sload_accum 时,乘法器输出被送入累加器。

当 accum_sload 为高或 sload_accum 时,用户指定的预加载常量被送入累加器。

您必须为启用累加器选择是? 启用此选项的参数。

ACCUM_SL OAD

指定 accum_sload/sload_accum 信号的行为。
ACCUM_SLOAD:将 accum_sload 驱动为低电平以将乘法器输出加载到累加器。
SLOAD_ACCUM:将 sload_accum 驱动为高电平以将乘法器输出加载到累加器。
您必须选择 Enable preload constant 选项以启用此参数。

64

指定预设常数值。

该值可以是 2N,其中 N 是预设常量值。

当N=64时,代表常数零。

您必须选择 Enable preload constant 选项以启用此参数。

时钟0

选择 Clock0 、 Clock1 或 Clock2 以指定 accum_sload/sload_accum 寄存器的输入时钟信号。
您必须选择 Enable preload constant 选项以启用此参数。

没有任何

指定 accum_sload/sload_accum 寄存器的异步清零源。
您必须选择 Enable preload constant 选项以启用此参数。

没有任何

指定 accum_sload/sload_accum 寄存器的同步清零源。
您必须选择 Enable preload constant 选项以启用此参数。

离开

启用双累加器寄存器。

Intel FPGA 整数运算 IP 内核用户指南 54

发送反馈

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

8.6.6. 收缩/Chainout 选项卡

表 35. Systolic/Chainout Adder 选项卡

参数启用 chainout 加法器

IP 生成参数

价值

chainout_add 是的,

er

什么是 chainout 加法器操作类型?

chainout_add 添加,

错误的方向

为 chainout 加法器启用“否定”输入?

端口否定

PORT_USED,PORT_UNUSED

注册“否定”输入? negate_regist er

未注册,时钟 0,时钟 1,时钟 2,时钟 3

异步清除输入的来源是什么?

否定_aclr

无 ACLR0 ACLR1

同步清除输入的来源是什么?

否定_sclr

无 SCLR0 SCLR1

收缩延迟
启用收缩延迟寄存器

gui_systolic_d 打开

lay

离开

时钟输入的来源是什么?

gui_systolic_d CLOCK0,

延迟时钟

时钟 1,

默认值

描述
选择 YES 以启用 chainout 加法器模块。

添加

指定 chainout 加法器操作。
对于减法运算,必须选择 SIGNED for Multipliers A 输入的表示格式是什么? 乘法器 B 输入的表示格式是什么? 在“乘数”选项卡中。

PORT_UN 使用

选择 PORT_USED 以启用负输入信号。
当 chainout adder 被禁用时,该参数无效。

未注册

启用反输入信号的输入寄存器并指定反寄存器的输入时钟信号。
如果不需要反输入寄存器,则选择未注册
选择时该参数无效:
· NO 用于启用 chainout 加法器或
· PORT_UNUSED 用于为 chainout 加法器启用“否定”输入? 参数或

没有任何

指定否定寄存器的异步清零源。
选择时该参数无效:
· NO 用于启用 chainout 加法器或
· PORT_UNUSED 用于为 chainout 加法器启用“否定”输入? 参数或

没有任何

指定否定寄存器的同步清零源。
选择时该参数无效:
· NO 用于启用 chainout 加法器或
· PORT_UNUSED 用于为 chainout 加法器启用“否定”输入? 参数或

关闭 CLOCK0

选择此选项以启用收缩模式。 当您为乘法器的数量选择 2 或 4 时,此参数可用。 范围。 您必须启用加法器单元的寄存器输出才能使用脉动延迟寄存器。
指定收缩延迟寄存器的输入时钟信号。
持续…

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 55

8. 英特尔 FPGA 乘法加法器 IP 核 683490 | 2020.10.05

范围

IP 生成参数

价值

时钟 2,

异步清除输入的来源是什么?

gui_systolic_delay_aclr

无 ACLR0 ACLR1

同步清除输入的来源是什么?

gui_systolic_delay_sclr

无 SCLR0 SCLR1

默认值
没有任何
没有任何

描述
您必须选择 enable systolic delay registers 才能启用此选项。
指定收缩延迟寄存器的异步清除源。 您必须选择 enable systolic delay registers 才能启用此选项。
指定收缩延迟寄存器的同步清除源。 您必须选择 enable systolic delay registers 才能启用此选项。

8.6.7. 流水线选项卡

表 36. 流水线选项卡

参数流水线配置

IP 生成参数

价值

您要将流水线寄存器添加到输入吗?

gui_pipelining 不,是

默认值

请指定

延迟

延迟时钟数

周期

任何大于 0 的值

时钟输入的来源是什么?

gui_input_late ncy_clock

时钟 0、时钟 1、时钟 2

异步清除输入的来源是什么?

gui_input_late ncy_aclr

无 ACLR0 ACLR1

同步清除输入的来源是什么?

gui_input_late ncy_sclr

无 SCLR0 SCLR1

时钟 0 无 无

描述
选择 Yes 为输入信号启用额外级别的流水线寄存器。 您必须为 Please specify the number of latency clock cycles 参数指定一个大于 0 的值。
指定所需的时钟周期延迟。 一级流水线寄存器 = 1 个时钟周期延迟。 您必须为 Do you want to add pipeline register to the input? 选择 YES? 启用此选项。
选择 Clock0 、 Clock1 或 Clock2 以启用和指定流水线寄存器输入时钟信号。 您必须为 Do you want to add pipeline register to the input? 选择 YES? 启用此选项。
指定附加流水线寄存器的寄存器异步清除源。 您必须为 Do you want to add pipeline register to the input? 选择 YES? 启用此选项。
指定附加流水线寄存器的寄存器同步清除源。 您必须为 Do you want to add pipeline register to the input? 选择 YES? 启用此选项。

Intel FPGA 整数运算 IP 内核用户指南 56

发送反馈

683490 | 2020.10.05 反馈意见

9. ALTMEMMULT (Memory-based Constant Coefficient Multiplier) IP核

注意力:

英特尔已在英特尔 Quartus Prime 专业版 20.3 版中移除了对该 IP 的支持。 如果您设计中的 IP 内核以 Intel Quartus Prime Pro Edition 中的器件为目标,您可以用 LPM_MULT Intel FPGA IP 替换 IP 或重新生成 IP 并使用 Intel Quartus Prime Standard Edition 软件编译您的设计。

ALTMEMMULT IP 内核用于使用 Intel FPGA 中的片上内存块(具有 M512、M4K、M9K 和 MLAB 内存块)创建基于内存的乘法器。 如果您没有足够的资源来实现逻辑单元 (LE) 中的乘法器或专用乘法器资源,则此 IP 内核很有用。
ALTMEMMULT IP 内核是需要时钟的同步功能。 ALTMEMMULT IP 内核实现了一个乘法器,对于一组给定的参数和规范,其吞吐量和延迟可能最小。
下图显示了 ALTMEMMULT IP 内核的端口。

图 21. ALTMEMMULT 端口

阿尔特蒙多

data_in[] sload_data coeff_in[]

结果[] result_valid load_done

负载系数

时钟
安装

相关信息 第 71 页的功能

9.1. 特点
ALTMEMMULT IP 核提供以下特性: · 使用片上存储器块仅创建基于存储器的乘法器
英特尔 FPGA · 支持 1 位数据宽度 · 支持有符号和无符号数据表示格式 · 支持固定输出延迟的流水线

英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔根据英特尔的标准保修保证其 FPGA 和半导体产品的性能符合当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。

ISO 9001:2015注册

9. ALTMEMMULT(基于内存的常数系数乘法器)IP 内核 683490 | 2020.10.05
· 在随机存取存储器 (RAM) 中存储多个常量
· 提供选择RAM块类型的选项
· 支持可选的同步清零和负载控制输入端口
9.2. Verilog HDL 原型
以下 Verilog HDL 原型位于 Verilog Design File (.v) altera_mf.v 在eda综合目录。
模块 altmemmult #( 参数 coeff_representation = “SIGNED”,参数 coefficient0 = “UNUSED”,参数 data_representation = “SIGNED”,参数 intended_device_family = “unused”,参数 max_clock_cycles_per_result = 1,参数 number_of_coefficients = 1,参数 ram_block_type = “AUTO”,参数total_latency = 1, parameter width_c = 1, parameter width_d = 1, parameter width_r = 1, parameter width_s = 1, parameter lpm_type = “altmemmult”, parameter lpm_hint = “unused”) (input wire clock, input wire [width_c-1: 0]coeff_in,输入线 [width_d-1:0] data_in,输出线 load_done,输出线 [width_r-1:0] 结果,输出线 result_valid,输入线 sclr,输入线 [width_s-1:0] sel,输入wire sload_coeff, input wire sload_data)/* synthesis syn_black_box=1 */; 终端模块
9.3. VHDL 组件声明
VHDL 组件声明位于 VHDL Design File (.vhd) altera_mf_components.vhd 在librariesvhdlaltera_mf 目录。
component altmemmult generic ( coeff_representation:string := “SIGNED”; coefficient0:string := “UNUSED”; data_representation:string := “SIGNED”; intended_device_family:string := “unused”; max_clock_cycles_per_result:natural := 1; number_of_coefficients:natural := 1; ram_block_type:string := “AUTO”; total_latency:natural; width_c:natural; width_d:natural; width_r:natural; width_s:natural := 1; lpm_hint:string := “UNUSED”; lpm_type:string := “altmemmult”); 端口(时钟:in std_logic;coeff_in:in std_logic_vector(width_c-1 downto 0):=(others => '0');data_in:in std_logic_vector(width_d-1 downto 0);

Intel FPGA 整数运算 IP 内核用户指南 58

发送反馈

9. ALTMEMMULT(基于内存的常数系数乘法器)IP 内核 683490 | 2020.10.05

加载完成:输出标准逻辑; 结果:out std_logic_vector(width_r-1 downto 0); 结果有效:输出标准逻辑; sclr:in std_logic := '0'; sel:in std_logic_vector(width_s-1 downto 0) := (others => '0'); sload_coeff:in std_logic := '0'; sload_data:in std_logic := '0'); 结束组件;

9.4. 端口

下表列出了 ALTMEMMULT IP 内核的输入和输出端口。

表 37. ALTMEMMULT 输入端口

端口名称

必需的

描述

是的

乘法器的时钟输入。

系数输入[]

乘法器的系数输入端口。 输入端口的大小取决于 WIDTH_C 参数值。

数据输入[]

是的

乘法器的数据输入端口。 输入端口的大小取决于 WIDTH_D 参数值。

单反

同步清零输入。 如果未使用,默认值为高电平有效。

选择[]

固定系数选择。 输入端口的大小取决于 WIDTH_S

参数值。

负载系数

同步负载系数输入端口。 用 coeff_in 输入中指定的值替换当前选定的系数值。

加载数据

同步负载数据输入端口。 指定新乘法运算并取消任何现有乘法运算的信号。 如果 MAX_CLOCK_CYCLES_PER_RESULT 参数的值为 1,则忽略 sload_data 输入端口。

表 38. ALTMEMMULT 输出端口

端口名称

必需的

描述

结果[]

是的

乘法器输出端口。 输入端口的大小取决于 WIDTH_R 参数值。

结果_有效

是的

指示输出何时是完整乘法的有效结果。 如果 MAX_CLOCK_CYCLES_PER_RESULT 参数的值为 1,则不使用 result_valid 输出端口。

加载完成

指示新系数何时完成加载。 load_done 信号在新系数完成加载时置位。 除非 load_done 信号为高电平,否则无法将其他系数值加载到存储器中。

9.5。 参量

下表列出了 ALTMEMMULT IP 内核的参数。

表 39.
宽度_D 宽度_C

ALTMEMMULT 参数
参数名称

类型必填

描述

整数 是

指定 data_in[] 端口的宽度。

整数 是

指定 coeff_in[] 端口的宽度。 继续…

发送反馈

Intel FPGA 整数运算 IP 内核用户指南 59

9. ALTMEMMULT(基于内存的常数系数乘法器)IP 内核 683490 | 2020.10.05

参数名称 WIDTH_R WIDTH

文件/资源

英特尔 FPGA 整数运算 IP 内核 [pdf] 用户指南
FPGA 整数算术 IP 核、整数算术 IP 核、算术 IP 核、IP 核

参考

发表评论

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