Hyperbolic Tangent HDL Optimized
库:
Fixed-Point Designer HDL Support /
Math Operations
描述
Hyperbolic Tangent HDL Optimized 模块返回 x 的双曲正切值,使用针对 HDL 代码生成进行了优化的 CORDIC 实现进行计算。
示例
Implement Hardware-Efficient Hyperbolic Tangent
Implement a hardware-efficient hyperbolic tangent.
端口
输入
x — 以弧度为单位的角
有限实数标量
以弧度为单位的角,指定为有限实数标量。如果 x 是定点或定标的双精度数据类型,则 x 必须使用二进制小数点定标。定点数据类型不支持斜率偏置表示。
数据类型: single
| double
| fixed point
validIn — 输入是否有效
Boolean
标量
输入是否有效,指定为布尔标量。此控制信号指示来自 x 输入端口的数据是否有效。当此值为 1
(true
) 时,此模块捕获 x 输入端口上的值。当此值为 0
(false
) 时,模块忽略输入样本。
数据类型: Boolean
输出
y — x
的双曲正切
标量
值在 x 处的双曲正切值,以标量形式返回。在 y 处的值是基于 CORDIC 的 x 双曲正切的逼近。当函数的输入是浮点数时,输出数据类型与输入数据类型相同。当输入为定点数据类型时,输出的字长与输入字长相同,小数长度比字长小 2。
数据类型: single
| double
| fixed point
validOut — 输出数据是否有效
Boolean
标量
指示输出数据是否有效,以布尔标量形式返回。当此控制信号的值为 1
(true
) 时,此模块已成功计算出输出 y。当此值为 0
(false
) 时,输出数据无效。
数据类型: Boolean
ready — 模块是否准备就绪
Boolean
标量
指示模块是否准备就绪,以布尔标量形式返回。此控制信号指示模块是否已准备好接受新的输入数据。当此值为 1 (true
) 并且 validIn 值为 1 (true
) 时,此模块在下一个时间步中接受输入数据。当此值为 0 (false
) 时,模块忽略下一个时间步中的输入数据。
数据类型: Boolean
详细信息
算法
CORDIC
CORDIC 是 COordinate Rotation DIgital Computer(坐标旋转数字计算方法)的缩写。基于吉文斯旋转的 CORDIC 算法是最节省硬件资源的可用算法之一,因为它只需进行迭代移位相加运算(请参阅“参考资料”)。CORDIC 算法不需要显式乘数。
该模块自动确定迭代次数 niters
,CORDIC 算法根据输入的数据类型执行。
输入 x 的数据类型 | niters |
---|---|
单精度 | 23 |
双精度 | 52 |
定点 | 比 x 的字长小 1。CORDIC 迭代的最小次数是 7 。 |
硬件高效的定点计算
Hyperbolic Tangent HDL Optimized 模块支持对使用二进制小数点定标的定点数据进行 HDL 代码生成。它在设计之初即考虑到了这种应用,并使用了特定于硬件的语义和优化。其中一个优化就是资源共享。
在将复杂的算法部署到 FPGA 或 ASIC 设备时,对于给定的计算,通常需要在资源使用和总吞吐量之间进行权衡。完全流水线化和并行化的算法具有最大的吞吐量,但它们往往过于耗费资源,不适合部署在实际设备上。通过围绕单核或多核计算电路实现调度逻辑,可以在整个计算过程中重用资源。其结果是以降低总吞吐量为代价,使实现的占用空间更小。这通常是一种可以接受的折衷,因为资源共享设计仍可以满足总体延迟需求。
Hyperbolic Tangent HDL Optimized 模块中的所有关键计算单元在整个计算生命周期中都得到重用。这不仅包括用于执行吉文斯旋转的 CORDIC 电路,还包括用于更新角度的加法器和乘法器。在部署到 FPGA 或 ASIC 设备时,这可以节省 DSP 和结构资源。
如何与 Hyperbolic Tangent HDL Optimized 模块对接
当 ready 输出为高电平时,Hyperbolic Tangent HDL Optimized 模块接受数据,表示该模块已准备就绪,可以开始新计算。要向模块发送输入数据,validIn 信号必须处于使能状态。如果模块成功注册输入值,就会解除就绪信号,然后用户必须等待就绪信号被再次使能,才能发送新输入。以下波形图概要显示了此协议。请注意,由于模块尚未准备好开始接受输入数据,模块的第一个有效输入被丢弃。
当模块完成计算并准备发送输出时,它将在一个时钟周期内使能 validOut。然后 ready 被使能,指示模块准备就绪,可以开始接受新输入值。
扩展功能
C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。
定点数据类型不支持斜率偏置表示。
HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 VHDL、Verilog 和 SystemVerilog 代码。
HDL Coder™ 提供影响 HDL 实现和综合逻辑的额外配置选项。
此模块具有一个默认 HDL 架构。
通用 | |
---|---|
ConstrainedOutputPipeline | 通过移动设计中现有延迟的方式来放置在输出端的寄存器的数量。分布式流水线不会重新分发这些寄存器。默认值为 |
InputPipeline | 要在生成的代码中插入的输入流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
OutputPipeline | 要在生成的代码中插入的输出流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
仅支持定点数据类型。
版本历史记录
在 R2020a 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)