特性
本设计涵盖以下主题:
• 进位前瞻组合加法器与饱和运算的实现原理及逻辑方法
• 采用for循环配合结构式组合逻辑实现可扩展的逻辑切片
• 基于Lattice MachXO2-7000HE PLD和Diamond工具集的性能基准测试
• 使用Verilog测试夹具(testbench)对N位饱和运算进位前瞻组合加法器进行仿真
引言
该Verilog模块基于二进制进位前瞻加法器的基本布尔方程,采用结构化方式构建运算逻辑。通过Verilog的"for"循环和"genvar"变量实现用户自定义位宽的切片扩展。
加法器的饱和运算模块可确保DSP及控制相关设计中的性能最优,避免数值回绕导致的失真。当检测到溢出条件时,加法器将通过输出最大正/负满量程值实现输出饱和。
开发过程采用Lattice MachXO2 PLD,但该设计不限于此特定工具集。
背景
进位前瞻加法器通过分析相加的两个字,识别进位生成位与进位传递位。这些进位位将以组合逻辑方式确定所有可能产生进位的位置。当每个进位位就绪时,加法运算以切片为单位同步完成。饱和状态由溢出标志位和临时和的最高有效位共同决定。
应用
电路构建
Verilog的"for"循环是构建每个切片布尔方程/结构的理想方案。这种方式支持根据用户需求进行位宽扩展。模块中使用"genvar"生成变量确定加数字宽,并通过"for"循环构建对应的结构逻辑。初始进位输入设为’0’,后续进位则取决于两个加数从最低有效位到最高有效位的各位状态。所有切片组合构建的电路仅受门延迟限制,具有高速特性。图1展示了基本进位前瞻加法器切片结构。
图 1 基本超前进位加法器切片
饱和状态由溢出条件决定。该条件通过计算最高有效位的进位输入与进位输出的异或值来判定,这两个最高有效位位于进位阵列中。若发生溢出,临时和的最高有效位将决定最终和应饱和至最大正值还是最大负值。'1’表示溢出导致正值翻转为负值,因此我们将最终和值饱和为正值。'0’则表示相反情况,因此我们将最终和值饱和为负值。图2展示了该加法器的三切片实现方案。输出和饱和状态如图3所示。
图 2 支持 W 位加数宽度可选扩展的三切片实现
图 3 支持 W 位加数宽度可选扩展的三切片实现
基准测试
可通过在两个n位时钟触发器之间驱动组合加法器来进行设计基准测试。在加数字宽恒定的情况下,这将决定加法器的最高运行速度。对于64位加法器,该设计在8位实现时分别达到114.7 MHz和188.1 MHz。这些性能数据来自Synplify Pro for Lattice工具,采用MachXO2器件(速度等级-4),每个结果均在10纳秒内得出。设计采用自动约束,未选择额外优化选项。使用不同FPGA或同型号不同速度等级的器件将获得不同结果。通过合理约束设计并优先优化速度而非面积,可利用FPGA供应商原生工具集进行优化。图4展示了测试方案的顶层示意图。
图 4 组合加法器基准测试顶层原理图
电路仿真
可采用Aldec Active-HDL等HDL仿真器验证电路输出。本应用案例选用Active-HDL工具。测试平台搭建于Lattice Diamond 2.0.1开发环境。测试平台包含两个"always"块和一个"initial"块,分别用于测试向量控制和时钟控制。输出结果可在下方图5中查看。红色高亮部分标明了因溢出条件导致输出饱和的位置。该设计的测试平台文件已包含在其他设计文件中。
图 5 Active-HDL 测试平台输出
功能、限制与修改
本设计可适配任何FPGA开发平台,性能表现各异。当位宽增大时,硬件资源消耗量也会显著增加。开发过程中采用Lattice Diamond 2.0.1开发环境与MachXO2-7000HE分线板,对该Verilog模块进行开发和基准测试。使用Aldec Active-HDL仿真器进行设计仿真与验证。
结论
NbitSatAdder.v文件可被修改并实例化到任何需要高速运算和输出饱和特性的设计中。该模块在级联加法器电路(如并行FIR滤波器电路)中表现优异。当存在时序问题时,可采用流水线技术和/或"done"信号实现同步。本设计中采用N位时钟触发器能有效实现电路同步。可通过以下链接在DigiKey公司官网获取Xilinx、Microsemi、Lattice和Altera的多款开发套件:电子元器件和零件搜索 | 得捷电子
补充信息
更多设计支持、产品教程、应用笔记、用户指南等文档可在四大FPGA供应商官网查阅:
Lattice公司:https://www.latticesemi.com/zh-CN
Microsemi cSOC集团官网:http://www.actel.com/techdocs/default.aspx
Xilinx应用方案:https://www.amd.com/zh-cn.html
Altera技术支持:https://www.altera.com/
附录:下载文件
完整NBitSatAdder项目文件可在此下载。
NBitSatAdder_TOP.v (2.1 KB)
NBitSatAdder.v (2.7 KB)
Nbit_Dual_Dff.v (1.7 KB)
Nbit_Dff.v (1.5 KB)
NBitSatAdder_tf.v (1.9 KB)




