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

目录

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 maxif all(CompareOut <= 0) && (MidSample > threshold)detected = 1;elsedetected = 0;end

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/537473.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过日志恢复sql server数据库

在SQL Server中&#xff0c;通过日志恢复数据库是一个精细的过程&#xff0c;主要用于在数据库出现错误、数据丢失或需要回滚到特定时间点时恢复数据。以下是一般步骤概述&#xff1a; 设置恢复模式&#xff1a; 首先&#xff0c;数据库必须配置为“完整恢复模式”或“大容量…

用户数据的FLASH存储与应用(FPGA架构)

该系列为神经网络硬件加速器应用中涉及的模块接口部分&#xff0c;随手记录&#xff0c;以免时间久了遗忘。 一 背景 我们知道&#xff0c;在FPGA做神经网络应用加速时&#xff0c;涉及到权重参数的存储和加载。通常在推理过程中&#xff0c;会将权重参数存储在外部DDR或片上S…

【数据结构】双向链表及LRU缓存的实现

目录 前言 1. 在原有的自定义链表类 Linked 的基础上&#xff0c;添加新的 “节点添加”方法 addNode(Node node) 测试用例 测试结果 2. 在自定义链表类的基础上&#xff0c;使用双重循环“强力” 判断两个节点是否发生相交 测试用例 测试结果 3. 在自定义链表类的基础上…

DBeaver 生成的DDL没有字段注释

场景&#xff0c;需要拷贝几个表。但是因为一些原因无法使用navicat DBeaver生成的DDL语句又没有字段注释 如图&#xff1a; 可以通过以下SQL解决 select * from user_col_comments where table_name 表名 AND owner库名 效果如下&#xff1a; select concat(comment on …

程序调试工具gdb

1.由于在编写程序的过程中&#xff0c;通常会触发计算机无法识别的逻辑错误&#xff0c;导致程序运行的最终结果不尽人意。 &#xff08;1&#xff09;在【Linux】系统下利用【gdb】调试工具进行段错误排查&#xff1a; 步骤&#xff1a;1.根据给定链接设置系统允许生成core文件…

Prompt提示工程上手指南:基础原理及实践(二)-Prompt主流策略

前言 上篇文章将Prompt提示工程大体概念和具体工作流程阐述清楚了&#xff0c;我们知道Prompt工程是指人们向生成性人工智能&#xff08;AI&#xff09;服务输入提示以生成文本或图像的过程中&#xff0c;对这些提示进行精炼的过程。生成人工智能是一个根据人类和机器产生的数…

在线编辑字体工具,支持对字体查看编码以及编辑

公司一个沉寂多年的项目需要进行二开&#xff0c;前面的开发的同学已经离开&#xff0c;对于项目情况了解较少&#xff0c;开发的时候发现缺失很多小图标&#xff0c;但是对原来有那些图标也不太了解 目标 1、知晓字体包里的旧的图标是什么样子的&#xff1f;2、在旧字体包中导…

科技成果鉴定测试如何进行?第三方检测机构进行鉴定测试的好处

科技成果鉴定测试&#xff0c;作为科技领域中一项重要的质量检验手段&#xff0c;具有广泛的应用范围。旨在为科技成果的研发者和使用者提供客观、科学、权威的鉴定结果&#xff0c;从而评估科技成果的技术水平和市场竞争力。   科技成果鉴定测试是对科技成果进行系统、全面的…

PCL 点云开源库

PCL 点云开源库 The Point Cloud Library (PCL) is a standalone, large scale, open project for 2D/3D image and point cloud processing. PCL is released under the terms of the BSD license, and thus free for commercial and research use. 点云库 &#xff08;PCL&…

08.JavaScript中的编程思想,构造函数和原型对象

一、编程思想 学习 JavaScript 中基于原型的面向对象编程序的语法实现&#xff0c;理解面向对象编程的特征。 1.面向过程 面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候再一个一个的依次 调用就可以了。 举个…

【Linux】互斥 | 死锁

线程互斥 一些概念 临界资源&#xff1a;多线程之间共享的资源就是临界资源。通常为一些全局的变量。临界区&#xff1a;访问或者修改临界资源的代码就是临界区。互斥&#xff1a;任何时刻&#xff0c;保证只有一个执行流访问临界资源。原子性&#xff1a;不受调度机制打断的操…

在 Java 中,如何使用文件保存包含文字和数字的 Swing 表格?

要在Java中使用文件保存包含文字和数字的Swing表格&#xff0c;您可以按照以下步骤进行&#xff1a; 1. 首先&#xff0c;您需要创建一个Swing表格&#xff0c;并向其中添加包含文字和数字的数据。 2. 接下来&#xff0c;您可以使用Java中的文件操作类&#xff08;如FileWrit…