基于MATLAB的FPGA设计,第二部分:Simulink硬件建模金宝app
从这个系列中:基于MATLAB的FPGA设计
有效地针对FPGA或ASIC硬件的算法需要适应处理流数据并优化所需固定资源的数量。金宝app动态仿真模块®帮助可视化硬件架构和数据流。如果你的原始算法是在MATLAB中开发的®,您可以在使用Simulink使算法适应硬件实现时重用其中的大部分工作。金宝app
本短片涵盖:
- 在MATLAB和Simulink之间共享工作空间变量金宝app
- 利用硬件设计经验对算法进行调整,使其高效实现
- 记录信号作为调试的测试点
- 可视化数据类型以及它们如何在设计中传播
- 在一个流MATLAB函数块中重用MATLAB代码
- 利用MATLAB测试台架对Simulink硬件实现的输出进行仿真和验证金宝app
欢迎来到HDL编码器视频系列。在本视频系列中,我们将学习一种流行的生产验证路径,通过Simulink,定点设计器和HDL编码器采用MATLAB数字信号处理算法来瞄准FPGA。金宝app
在视频系列的第一部分中,我们讨论了MATLAB和Simulink的强度,并提供了MathWorks文件交换网站上提供的HDL编码器自我指导教程的概述。金宝app
在本视频系列的这一部分中,我们将关注脉冲检测算法的Simulink模型的实现,并将其与黄金参考进行比较。金宝app
在创建Simulink模型之前,运行pul金宝appse_detector_reference算法。这将初始化MATLAB工作空间中的所有参数,我们将在构建期间将其拉入Simulink模型。金宝app
为了在Simulink模型中流式传输数据,我们将使用金宝app“来自工作区的信号”块,它将每次流式传输一个样本的接收信号。采样数据通过离散FIR Filter块,其系数引用CorrFilter变量。在Simulink模型的构建阶段启用特定信号的日志记录。金宝app我们将利用记录的信号来验证具有黄金参考算法的Simulink模型的输出。金宝app
要实现硬件友好的峰值检测器,请使用实数和复数大小的平方和,因为使用复杂的操作(如平方根)最终会消耗大量资源。为了评估幅度的平方,信号被分成实分量和虚分量,使用以下模块:启用信号尺寸和端口数据,以在Simulink中可视化数据变化。金宝app
为了检测峰值,抽头延迟块将幅度平方信号缓冲到11个样本中以创建滑动窗口
为了实现上述峰值检测,我们将使用MATLAB函数块在Simulink模型中复制“硬件友好”算法。金宝app
在MATLAB函数块中复制并粘贴算法。我们将修改算法以处理缓冲的样例数据,并将WindowLen变量定义为参数。
这种方法能够立即检测到脉冲,因为它处理了脉冲到达时跟随的数据样本。此外,这种技术避免将整个数据样本存储在固定的RAM中。MATLAB函数块中的参数参数从MATLAB模型工作区获取值。
清除可调选项,WindowLen必须是用于代码生成目的的常量表达式。
将存储的11个样本中的中间样本与其他10个样本进行比较,看看它是否是11个样本中最大的,如果是,它是否大于我们指定的阈值。当我们滑动窗口时,阈值是识别峰值和所有局部峰值的关键。
峰值检测实现的输出,信号“MidSample”
和“检测到”是单位延迟使能块的输入,当检测到的信号为TRUE时,它将保持显示的峰值。为了可视化结果,连接一个“显示”块。
使用测试台脚本pulse_detector_v1,我们将运行MATLAB黄金参考和Simulink硬件实现模型的输出比较。金宝app仿真结果表明,Simulink流模型与MATLAB参考模型吻合金宝app,误差仅为浮点精度误差。
在这个关于HDL编码器的视频系列的第二部分中,我们在Simulink中实现了硬件实现,并将其与MATLAB黄金参考进行了比较。金宝app我们还演示了在Simulink模型构建过程中MATLAB和Simulink环境之间的无缝交互。金宝app
在下一个视频中,我们将准备用于生成HDL代码的Simulink模型。金宝app
你亦可选择下列网址:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。