首页 > 其他分享 >从零开始利用MATLAB进行FPGA设计(一):建立脉冲检测模型的Simulink模型2

从零开始利用MATLAB进行FPGA设计(一):建立脉冲检测模型的Simulink模型2

时间:2024-03-13 17:31:57浏览次数:29  
标签:滤波器 Simulink 信号 FPGA 输出 模型 MATLAB 模块

目录

1.模块的总体结构

1.1从工作空间导入输入信号

1.2FIR滤波器

2.Subsystem

3.MATLAB Function


文章灵感来源于MATLAB官方免费教程:HDL Coder Self-Guided Tutorial

考虑到MATLAB官网的英文看着慢,再加上视频讲解老印浓浓的咖喱味,我决定记录利用MATLAB&Simulink&SystemGenerator进行FPGA数字信号处理的学习过程。

往期回顾:

从零开始利用MATLAB进行FPGA设计(一):建立脉冲检测模型的Simulink模型1

上一期分析了MATLAB的黄金算法原理,这一期进行Simulink模块分析。

1.模块的总体结构

1.1从工作空间导入输入信号

Ctrl+Shift+L呼出Simulink模块库,查找Signal From Workspace,右击后添加到Simulink,双击修改属性:

1.2FIR滤波器

有限冲激响应滤波器可以简单的理解成高通/低通/带通/带阻滤波器,在频域上对通过的信号频率进行限制。

本例中使用的滤波器为直接型滤波器结构:

使用CorrFilter作为匹配滤波器的滤波器系数,系数的计算方法为:

  1. 先将发送端的信号取共轭。
  2. 然后将其进行翻转,即反转信号的顺序。
  3. 最后将其除以信号模式的长度,以确保匹配滤波器的输出的幅度在一定程度上不受信号长度的影响。

 MATLAB生成方法可见上一篇博客

在现代的数字通信中,如果信号遇到的干扰是高斯白噪声,那么匹配滤波器是系统接收端的标配。匹配滤波器的设计准则是使滤波器在某一特定时刻达到最大(一个线性系统的频率响应函数为输入信号的复共轭时,其输出信号的信噪比达到最大)。

2.Subsystem

滤波器的输出信号输入Complex to Real-Imag 模块分离虚部和实部,通过product模块对其分别进行平方,通过add模块重新组合后输出。该模块的主要作用是避免开方操作,节省算力。

3.MATLAB Function

Tapped Delay (抽头延迟)模块将输入延迟11个采样周期,并为每个延迟提供一个输出。第一个输出延迟11个采样周期,第二个输出延迟10个采样周期,以此类推。

fcn中的函数为:

function [MidSample,detected] = fcn(threshold,DataBuff,WindowLen)
MidIdx = ceil(WindowLen/2);
    % Compare each value in the window to the middle sample via subtraction    
    MidSample = DataBuff(MidIdx);
    CompareOut = DataBuff - MidSample; % this is a vector
    % if all values in the result are negative and the middle sample is
    % greater than a threshold, it is a local max
    if all(CompareOut <= 0) && (MidSample > threshold)
        detected = 1;
    else
        detected = 0;
    end

MIdIdx表示窗口中的中间索引,由于WindowLen是一个奇数,为了确保中心点用ceil函数向上取整。

将窗口中的每个值和中间值进行比较,如果中间样本值大于阈值且所有结果都为负,则将这个值作为局部最大值。

可以看到模块化设计和算法设计的误差为浮点数,效果一致。

标签:滤波器,Simulink,信号,FPGA,输出,模型,MATLAB,模块
From: https://blog.csdn.net/WZT725/article/details/136678168

相关文章

  • FPGA的时钟IP核知识点
    IP核在我看来就跟stm32中的一些驱动的库函数一样,可以调用快速使用。不用一步一步的自己写底层原理。可以加速设计,快速设计代码。IP核的PLL还有一个MMCM。PLL是锁相环,对时钟进行管理。也是后面使用中很重要的IP核。不同器件需要不同的时钟。时钟管理单元CMT=PLL+MMCM混合时钟管......
  • 基于大模型的 Agent 进行任务规划的10种方式
    本文首发自博客基于大模型的Agent进行任务规划的10种方式基于大模型的Agent基本组成应该包含规划(planning),工具(Tools),执行(Action),和记忆(Memory)四个方面,上一篇中重点讲了进行长记忆管理的8种方案,本节将从Agent的概念、ReAct框架、示例、以及一些论文思路来具体......
  • 大模型时代企业知识全生命周期管理解决方案
    ©作者|Zhongmei来源|神州问学 摘要 越来越多的企业开始意识到数据的重要性。同时意识到,企业想保持长远的发展,还需要协调组织协作、利用现有的数据沉淀经验知识、累积数据资产。据IDC调查,目前企业结构化数据仅占到全部数据量的20%,其余80%都是以文件形式存在的非结构化......
  • AI推介-大语言模型LLMs论文速览(arXiv方向):2024.03.05-2024.03.10—(1)
    文章目录~1.EditingConceptualKnowledgeforLargeLanguageModels2.TRAD:EnhancingLLMAgentswithStep-WiseThoughtRetrievalandAlignedDecision3.AreYouBeingTracked?DiscoverthePowerofZero-ShotTrajectoryTracingwithLLMs!4.CanLLMSubstit......
  • 线性回归模型公式推导完整简洁版
    线性回归模型公式推导完整简洁版这里做模型简化,假设有4个样本,每个样本有3个特征,然后使用平方误差作为损失函数,公式推导反向传播的求导过程。设训练样本为\[X=\left[\begin{matrix}x_{1}^{(1)}&x_{2}^{(1)}&x_{3}^{(1)}\\x_{1}^{(2)}&x_{2}^{(2)}&x_{3}^{(2)}\\x_......
  • 谷歌破解 OpenAI 模型关键信息;微软更改默认浏览器,不再主推 Edge 丨 RTE 开发者日报 Vo
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑......
  • 朴素贝叶斯模型
    朴素贝叶斯法朴素贝叶斯是一种用先验概率估计后验概率的模型,通过估计先验概率得到样本和类别的近似联合概率,随后通过联合概率分布获得需要的后验概率分布进而实现分类。本次介绍的朴素贝叶斯法主要包括三块:总体思想(将后验概率转换为先验概率)、极大似然估计(使用极大似然法估计......
  • 一键开启 GPU 闲置模式,基于函数计算低成本部署 Google Gemma 模型服务
    作者:王骜本文介绍如何使用函数计算GPU实例闲置模式低成本、快速的部署GoogleGemma模型服务。背景信息Google在2024年02月21日正式推出了自家的首个开源模型族Gemma,并同时上架了四个大型语言模型,提供了2B和7B两种参数规模的版本,每种都包含了预训练版本(base模......
  • 基于FPGA各种视频接口转换的国产化设计
    随着国产化进程推进,现在许多项目需要实现国产化设计,本博主通过器件选型/原理图设计,到视频接口输入,DDR3缓存,再到图像输出,使用者可在此基础实现二次开发,功能实现通过verilog,操作简单,添加功能方便。接口包含lvds/camelink/bt1120/hdmi/sdi等等常用视频接口,也可定制其他接口,带......
  • 【图像超分】论文复现:新手入门!Pytorch实现SRCNN,数据预处理、模型训练、测试、评估全流
    文章目录前言1.准备数据集和数据预处理1.1数据集选择1.2数据预处理1.3评估指标PSNR和SSIM1.3.1PSNR1.3.2SSIM2.定义网络结构3.设置参数并训练模型3.1参数设置3.2模型训练4.测试训练好的模型5.用训练好的SRCNN模型超分自己的图像数据6.其他补充6.1特征图......