FPGA Design with MATLAB,Part 2: Modeling Hardware in Simulink

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

内容

在第一个视频,我们已经讨论了MTALAB\Simulink的作用,并且简要介绍了HDL 自学教程的概览。

在这个视频中,我们将为脉冲检测算法搭建Simulink模型,并且和金边参考线做对比。

在建立模型之前,我们先运行脉冲检测算法,这会在MATLAB的工作区间初始化全部变量,这些变量在建模型的过程中会全部导入模型。

为了表示模型中的数据流,我们使用“Signal from workspace”模块。采样数据通过离散FIR滤波器块,其系数参考CorrFilter变量。在Simulink模型的构建阶段启用特定信号的日志记录。我们将利用记录的信号来验证Simulink模型的输出是否符合黄金参考算法。

要实现硬件友好的峰值检测器,请使用实量和复量的平方和,因为使用平方根等复杂操作将导致资源消耗。为了计算幅值平方,信号被分成实分量和虚分量,并使用以下模块:启用信号尺寸和端口数据,以便在Simulink中可视化数据变化。

为了检测峰值,Tapped Delay模块将幅度平方信号缓冲到11个样本中来创建滑动窗口。

为了实施上述峰值检测,我们在Simulink模型中复制“硬件友好”算法,并使用MATLAB Function模块。

MATLAB函数中复制过来的算法需要修改以至于能和缓冲的样本数据作用,定义了WindowLen变量作为参数。

这种方法能够立即检测到脉冲,因为这会在脉冲到达时处理跟随脉冲的数据样本。另外,这种技术避免了将整个数据样本存储在固定的RAM中。MATLAB函数块中的参数从MATLAB模型工作区获取值。

清除可调选项,WindowLen必须是用于代码生成的常量表达式。

将存储的11个样本中的中间样本与其他10个样本进行比较,看它是否是11个样本中最大的一个,如果是,是否大于我们指定的阈值。当我们滑动窗口时,阈值是识别峰值与所有局部峰值的关键。

峰值

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