FPGA Design with MATLAB, Part 4: Converting to Fixed Point

这份学习资料来自MATLAB官网,主要介绍如何利用MATLAB/Simulink生成HDL代码,以用于FPGA或者ASIC硬件。下面为学习过程中对教程的翻译,以及学习中的心得。

内容

在视频系列的第四部分中,我们将展示如何将Simulink模型转换为定点数据类型,并将Simulink定点模型与MATLAB golden reference进行比较。MATLAB和Simulink中的数字默认为双精度浮点数据类型,即64位。我们将转换为定点数据类型和操作,以减少硬件资源和计算步骤。

在MathWorks中,定点数据类型的特征是以位为单位的字大小、二进制点以及它是有符号还是无符号。二进制点的位置是如何缩放和解释定点值。我们将在测试台脚本中定义定点规范,并从MATLAB工作区调用它们。

我们将重命名并保存模型,并利用数据类型转换块将工作空间信号转换为定点。DT_input规格的范围为-1到1,这足以表示有噪声的接收信号。当我们将滤波器块上的“系数数据类型”设置为DT_coeff时,滤波器块被设置为使用全精度定点数据类型执行乘法和加法。

Simulink自动传播定点数据类型以保持精度,并为您可视化。建议在乘法运算之前保持完全的精度,然后将其转换为18位,以便映射到FPGA上的单个DSP片。要可视化过滤器输出,请运行测试台脚本Pulse_Detector_v3_tb。现在,来自过滤块的结果输出的字长为40,其分数长度为37。

在转换到固定点的初始阶段运行测试脚本将导致错误,我们暂时将忽略这些错误。

在计算功率子系统中,在输入端使用数据类型转换块,我们将使用DT_filter规格将字长从40减少到18;在加法器的最后阶段,使用DT_power规格将字长从36缩短到18。在每个数据转换步骤更新模型,以查看操作中字长的变化。

在local peak 子系统中,我们将使用不同的方法通过使用数据类型复制块来继承数据类型。将一个端口连接到阈值常量块,其输出设置为“从反向传播继承”,另一个端口连接到Tapped Delay块输出。

另外,我们将MATLAB功能块脚本中的检测值分别改为true和false。完成这

你可能感兴趣的:(硬件逻辑与硬件描述,FPGA,MATLAB,HDL)