国产教学实验箱_DSP教学实验箱_操作教程:4-4 有限冲激响应滤波器(FIR)算法(LCD显示)

从单片机到FPGA:硬件工程师转型学习路线与实战指南 数字电路设计是嵌入式系统与硬件开发的核心基础,其原理在于通过硬件描述语言(如Verilog)来定义逻辑门和寄存器的行为,从而实现特定的功能。这种并行处理架构在时序控制、高速接口和实时信号处理方面具有独特的价值,尤其适用于对性能和确定性要求苛刻的应用场景,例如数字信号处理(DSP)和图像处理。本文聚焦于FPGA(现场可编程门阵列)开发,为具备单片机背景的工程师提供一条清晰的学习路径,涵盖从Verilog语法、状态机设计到时序约束和DSP算法实现等关键技能,旨在帮助读者高效完成从软件思维到硬件思维的转型,并快速 阅读详情

一、实验目的

了解FIR滤波器的特点,掌握程序算法生成滤波器系数的方法,并实现FIR滤波器滤除高频信号,并在LCD上显示结果。

二、实验原理

FIR滤波器

FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。

有限脉冲响应(FIR)滤波器(N-1阶),不存在输出对输入的反馈支路,其单位脉冲h(n)是有限长。对于一个FIR滤波器系统,它的冲激响应总是有限长的,其系统函数可记为:

image.png

其中,N-1为FIR的滤波器的阶数。

带有常系数的FIR滤波器是一种LTI(线性时不变)数字滤波器。冲激响应是有限的意味着在滤波器中没有发反馈。长度为N的FIR输出对应于输入时间序列x(n)的关系由一种有限卷积和的形式给出,最基本的具体形式如下:

image.png

FIR滤波器特性

有限长单位冲激响应(FIR)滤波器有以下特点:

(1)系统的单位冲激响应h (n)在有限个n值处不为零。

(2)系统函数H(z)在|z|>0处收敛,极点全部在z = 0处(因果系统)。

(3)结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。设FIR滤波器的单位冲激响应h (n)为一个N点序列,0 ≤ n ≤N -1,则滤波器的系统函数为:H(z)=∑h(n)* z^(-n),就是说,它有(N-1)阶极点在z = 0处,有(N-1)个零点位于有限z平面的任何位置。

FIR滤波器的设计

FIR滤波器的设计比较简单,就是要设计一个数字滤波器去逼近一个理想的低通滤波器。通常这个理想的低通滤波器在频域上是一个矩形窗。

在数字信号处理中,傅里叶变换用来求取时域信号的频率成分。因此,通过对特定频率幅度和相位的响应,求取傅里叶变换的逆变换(IDFT),就可以求出满足要求的数字滤波器。

设计FIR滤波器需要提供的参数:

(1)滤波器的类型:低通、高通、带通、带阻

(2)滤波器的采样频率

(3)滤波器的系数个数

(4)阻带衰减(dB)

(5)通带纹波(dB)

(6)过渡带带宽(Hz)

算法生成FIR滤波系数

本实验利用Kaiser窗设计一个FIR低通滤波器,有用信号为100Hz,需要滤掉的信号为450Hz。

Kaiser窗是一种应用广泛的可调节窗,它可以通过改变窗函数的形状来控制窗函数旁瓣的大小,从而在设计中可用滤波器的衰减指标来确定窗函数的形状。与其他窗相比,Kaiser窗最大的特点是可以同时调整主瓣和旁瓣宽度。 Kaiser窗的定义如下:

image.png

其中n=1,2,⋯,N-1 ,N 表示窗函数的总长度, I_0是第一类贝瑟尔函数。β是一个可调参数,可以通过改变β的值来调整窗函数的形状,从而达到不同的阻带衰减要求。

void filter_coefficient(int n, int band, float fs, float fln, float fhn, float wn, float beta, float h[])

n:滤波器阶数(偶数)

band:滤波器类型,1=低通,2=高通,3=带通,4=带阻

Fs:采样频率

fln:通带上边界频率(低通) 、通带下边界频率(高通、带通、带阻)

fhn:无意义(低通、高通)、通带上边界频率(带通、带阻)

wn:滤波器窗体,1=retangular,2=tapered rectangular,3=triangular,4=Hanning,5=Hamming,6=Blackman,7=Kaiser

beta:Kaiser窗口的β参数(3< β <10)

h:滤波器系数

程序流程设计:

设计中首先要进行外设使能配置,然后进行LCD管脚复用配置和LCD中断配置,接着进行LCD显示和触摸的初始化。然后通过FIR滤波器系数算法生成滤波因子,最后产生带有噪声的原始信号并进行FIR滤波和FFT运算,将结果显示在LCD屏幕上,在循环中进行触摸检测,根据标志位判断显示时域或者频域波形。

image.png

数字信号处理库

DSPLIB 包含优化的、C语言可调用的通用信号处理例程,用于计算密集型实时应用程序。 调用这些例程的运行速度比直接用C语言编写的等效代码快得多。使用DSPLIB可以缩短应用程序开发时间。

DSPLIB 3_4_0_0包括适用于 C64x+ 或 C66x 或 C674x 处理器的 Windows 或 Linux 安装可执行文件。 每个可执行文件安装一个组件包存储库、一个文档目录、一个 Eclipse 插件目录和一个扩展的组件目录结构,其中包含组件库、头文件和测试示例。

TMS320C6748处理器使用的是dsplib_c674x_3_4_0_0。

image.png

函数源码

FIR滤波函数

使用DSPLIB 的库来进行FIR滤波。使用时,直接包含“DSPF_sp_fir_r2.h”文件 即可。

API接口

void DSPF_sp_fir_r2(const float * x, const float * h,float *restrict r, const int nh, const int nr);

程序使用DSPLIB 的库来进行FIR滤波,调用的程序源码和使用说明可以安装DSPLIB后查看。调用的FIR滤波函数中:

第一个参数是指向大小为nr+nh-1 的输入数组的指针。

第二个参数是指向大小为nh 的系数数组的指针。

第三个参数是指向大小为nr 的输出数组的指针。

第四个参数是系数个数。

第五个参数是输出样本数

image.png

FFT运算函数

使用DSPLIB 的库来进行FFT运算。使用时,直接包含“DSPF_sp_fftSPxSP.h”文件 即可。

API接口

void DSPF_sp_fftSPxSP(int N, float *ptr_x, float *ptr_w, float *ptr_y, unsigned char *brev, int n_min, int offset, int n_max);

程序使用DSPLIB 的库来进行FFT运算,调用的程序源码和使用说明可以安装DSPLIB后查看。调用的FFT函数中:

第一个参数是样本中FFT 的长度,

第二个参数是指向数据输入的指针。

第三个参数是指向复杂旋转因子的指针。

第四个参数是指向复杂输出数据的指针。

第五个参数是指向包含64 个条目的位反转表的指针。如果样本的FFT长度可以表示为 4 的幂,

第六个参数是4,否则 第六个参数是 2 。

第七个参数是从主FFT开始的样本中的子 FFT偏移索引 。

第八个参数是样本中主FFT的大小。

image.png

FFT逆变换函数

使用DSPLIB 的库来进行FFT逆变换。使用时,直接包含“DSPF_sp_ifftSPxSP.h”文件 即可。

API接口

void DSPF_sp_ifftSPxSP (int N, float *ptr_x, float *ptr_w, float *ptr_y,

unsigned char *brev, int n_min, int offset, int n_max);

程序使用DSPLIB 的库来进行FFT逆变换,调用的程序源码和使用说明可以安装DSPLIB后查看。调用的IFFT函数中:

第一个参数是样本中FFT 的长度。

第二个参数是指向数据输入的指针。

第三个参数是指向复杂旋转因子的指针。

第四个参数是指向复杂输出数据的指针。

第五个参数是指向包含64 个条目的位反转表的指针 。如果样本的FFT长度可以表示为 4 的幂,

第六个参数是4,否则第六个参数是2 。

第七个参数是从主FFT开始的复杂样本中的子FFT偏移索引 。

第八个参数是样本中主FFT的大小。

image.png

三、操作现象

实验设备

image.png

硬件连接

(1)连接仿真器和电脑的USB接口。

(2)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。

image.png

软件操作

导入工程,选择Demo文件夹下的对应工程

编译工程,生成可执行文件

将CCS连接实验箱并加载程序

程序加载完成后点击运行程序

运行程序后,LCD会显示FIR滤波前后的时域波形,上方为100Hz信号与450Hz噪声组成的混合信号,下方为滤波后得到的结果(保留100Hz信号)。

点击一下LCD屏幕,会切换频域波形,上方显示原始频域信号+噪声,下方显示滤波后的频域波形,输入波形为一个低频率的正弦波与一个高频的正弦波叠加而成,通过观察频域图可知输入波形中的低频波形通过了滤波器,而高频部分被滤除。

实验结束后,先点击黄色按钮暂停程序运行,再点击红色按钮退出CCS与实验板的连接,最后实验箱断电即可。

image.png

EDA实验:FIR滤波器的设计(VHDL) 基于VHDL的FIR滤波器设计 阅读详情

相关推荐

【信息科学与工程学】【通信工程】第十二篇 信息论03 电磁信息论

的三重保障,平时状态下资源利用率提升40%+,运维效率提升300%。该解决方案已应用于金融、能源、国防等关键领域,在战时场景下可实现。注:某政务云平台实测数据,战时指模拟极端攻击场景。​:区域性云计算中心遭受物理摧毁。

weixin_49199313的博客 1012

有限冲激响应滤波器(FIR)算法(MATLAB 辅助,LCD 显示)

本次视频教程是基于创龙教仪DSP教学实验箱:TL6748-PlusTEB完成的,本实验是通过MATLAB辅助设计滤波器系数,并将实验结果显示在LCD屏幕上。

Tronlongtech的博客 1080

基于TDR与阻抗分析的同轴电缆参数检测系统设计与实现

时域反射计(TDR)是一种基于传输线理论的故障定位与参数测量技术,其核心原理是向被测电缆发射高速阶跃脉冲,通过分析反射信号的时延与幅度来定位阻抗不连续点并计算特性阻抗。这项技术在通信工程、射频测试和信号完整性分析中具有重要价值,广泛应用于基站天馈线、有线电视网络和高速PCB走线的故障诊断与性能评估。本文聚焦于如何利用高速ADC、FPGA和信号调理电路构建一套低成本、便携式的TDR测量系统,通过数字信号处理算法实现电缆长度、故障点位置及分布参数的精确提取,为电子竞赛和工程实践提供了从原理到实现的完整解决方案。

weixin_26876073的博客 350

DSP实验4-FIR和IIR算法的实现——基于TMS320VC5509

观察时域波形时,要注意设置”Start Address”起始地址和”DSP Data Type”DSP数据类型这两项,否则后续观察到的波形可能会有误。同样,要注意设置”Start Address”起始地址和”DSP Data Type”DSP数据类型这两项,否则后续观察到的波形可能会有误。关闭FIR的工程文件,打开IIR的工程文件,在实验提供的光盘目录”DSP\VC5509\DSP5509_examples\IIR.pjt”。在图中,除了基波和较明显的高次谐波,还能看到它们之间有许多微小的杂波。

二向无常的博客 1662

基于dsp的fir滤波器设计

FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。 基本信息

FIR算法实验说明

对在DSP开发板上进行FIR实验的具体说明。可据此联系开发板的操作技巧与理解FIR分解原理

2.5 有限冲激响应(FIR)滤波器

FIR

fantasygwh2015的博客 3061

FIR算法Fir.c

C语言编写的经典FIR算法及一些例程的诠释,方便各位处理数字信号

有限冲激响应(FIR)滤波器 和无限冲激响应(IIR)滤波器

概述: 数字滤波:就是对数字信号进行一定规则的运算,进而对信号频率有所改变,使成位所需的、有利于系统处理的信号。 时域关系: y(n) = x(n) * h(n) Z 域关系: Y(z) = X(z) H(z) 频域关系: Y(jw) = H(jw) X(jw)...

sinat_29862967的博客 4万+

DSP开发板上LCD显示实验

基于DSP开发板上的LCD显示实验,在LCD两屏上分别显示两个名字

实验2有限冲激响应滤波器(FIR)算法实验(1).pdf

实验2有限冲激响应滤波器(FIR)算法实验(1).pdf

音频混噪及IIR滤波器滤除LCD显示音频信号的FFT计算结果

调用的FFT函数中,第一个参数是样本中 FFT 的长度,第二个参数是指向数据输入的指针。设计中首先要首先要进行I2C和McASP的管脚复用配置,接着使能EDMA3的PSC和配置GPIO模块,然后初始化DSP中断和配置按键中断,进行音频芯片的初始化,并将McASP初始化为EDMA方式,初始化LCD,自定义生成一段噪声备用,最后进行按键检测,如果USER0按键按下,进行音频数据的混合噪声或IIR滤波或者是恢复原声,如果是USER1按键按下,则在LCD上显示计算的音频数据FFT结果。音频芯片的工作流程。

Tronlongtech的博客 1311

基于DSP的FIR数字滤波器实现

一、 引 言   在许多数字信号处理系统中,FIR滤波器是最常用的组件之一,它完成信号预调、频带选择和滤波等功能。F工R滤波器在截止频率的边沿陡峭性能虽然不及11R滤波器,但是,考虑到FIR滤波器严格的线性相位特性和不像IIR滤波器存在稳定性的问题,FIR滤波器能够在数字信号处理领域得到广泛的应用。   数字滤波器(Digital Filter,简称为DF)是指用来对输入信号进行滤波的硬件和软件。所谓数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的器件。数字滤波器和模拟滤波器相比,因为信号的形式和实现滤波的方法不同,数字滤波器具有比模拟滤波器精度高、稳定、体积

ADSP-BF533的开发,有手就行(三十四)数字信号处理详解-FIR(含源代码)

BF533作为定点DSP,做浮点运算实际上并不太顺手,但是可以做,那就进来看看ADI是怎么用定点IC来做浮点运算的。

ADI_OP的博客 504

在x86机器上运行jailhouse

jailhouse jaihouse提供了一个demo ,https://github.com/siemens/jailhouse-images可以用于编译一整套可用的demo。 适用于多个平台。编译过程主要参考https://blog.youkuaiyun.com/weixin_39541632/article/details/110422345 此demo可以生成多个平台所用的操作系统image。 ...

闲人的专栏 3005

XGBoost算法案例 - 红酒品质分类

数据集共包含 11 个特征,共计 3269 条数据. 我们通过训练模型来预测红酒的品质, 品质共有 6 个各类别,分别使用数字: 0、1、2、3、4、5 来表示。

YIAN爱学习的博客 449

DSP ARM FPGA 实验箱_音频处理_滤波操作教程:3-9 音频信号的滤波实验

调用的FFT函数中,第一个参数是样本中 FFT 的长度,第二个参数是指向数据输入的指针。设计中首先要首先要进行I2C和McASP的管脚复用配置,接着使能EDMA3的PSC和配置GPIO模块,然后初始化DSP中断和配置按键中断,进行音频芯片的初始化,并将McASP初始化为EDMA方式,初始化LCD,自定义生成一段噪声备用,最后进行按键检测,如果USER0按键按下,进行音频数据的混合噪声或IIR滤波或者是恢复原声,如果是USER1按键按下,则在LCD上显示计算的音频数据FFT结果。音频芯片的工作流程。

Tronlongtech的博客 1290

Tina Linux WiFi驱动移植避坑指南:以RTL8733bs为例,详解设备树、Kconfig与固件依赖

本文详细解析了在Tina Linux上移植RTL8733bs WiFi驱动的关键步骤与常见问题,涵盖设备树配置、内核依赖、固件加载及启动时序等核心环节。通过实战案例和排查清单,帮助开发者规避SDIO控制器配置、电源管理、GPIO极性等典型陷阱,确保驱动稳定运行。

weixin_29164185的博客 264

基于STM32F4的心电监护仪

基于stm32f4心电监护

qq_44193876的博客 1万+

kivy--入门(一)(Windows)python

从零开始学习kivy 由于课程需要写一个app,还要写报告,这就很愁人,头秃,脑壳大。 虽然学过Android,但是小编对于Java就像对牛弹琴似的,不能说完全不懂,只能说Java这个语言不太适合我,不学还不行,还是先利用python的kivy编写一个吧。 在各大网站搜索开发app,发现适合写手机app的除了Android还有kivy,所以还是先学习如何使用吧! 文章目录从零开始学习kivy前言一、安装二、添加按钮+标签三、文本输入(TextInput)总结 前言 首先推荐这篇博客kivy的安装和使用

刘念卿的博客 9970

RTX6000 PRO BLACKWELL 最优 CUDA 版本选择指南(适配 vLLM/SGLang 大模型推理)

本文针对NVIDIA Blackwell架构RTX6000PRO显卡部署vLLM/SGLang大模型推理引擎时的CUDA版本选择问题,提出专业建议。分析表明,CUDA12.9(需搭配552.06+驱动)是最优选择,因其完全支持BW架构特性,且与vLLM/SGLang最新版本深度适配。文章提供详细的Linux环境部署教程,包括驱动升级、CUDA12.9安装及vLLM/SGLang配置步骤,并指出CUDA13.0目前适配不完善,不推荐新手使用。最后给出常见问题解决方案,强调版本匹配对推理性能和稳定性的重要性。

2501_93651177的博客 682

FIR滤波器和IIR滤波器的理论介绍

数字滤波技术是数字信号处理的一个重要组成部分,滤波器的设计是信号处理的核心问题之一。根据FIR滤波器的原理,提出了FIR滤波器的窗函数设计法,并对常用的几种窗函数进行了比较。给出了在MATLAB环境下,用窗函数法设计FIR滤波器的过程和设计实例。仿真结果表明,设计的FIR滤波器的各项性能指标均达到了指定要求,设计过程简便易行。该方法为快速、高效地设计FIR滤波器提供了一个可靠而有效的途径。

FPGA/MATLAB学习教程/源码/项目合作开发 1万+

基于 YOLO26 的车辆实时检测与计数系统

本文提出了一种基于YOLO26的车辆实时检测与计数系统。系统采用CSPDarknet53作为主干网络,结合特征金字塔和多尺度预测实现高精度车辆检测。通过DeepSORT算法进行目标跟踪,并统计车辆数量、行驶方向和交通流量。实验表明,该系统在保持实时性能的同时,检测精度达到92.3%,可有效应用于智能交通管理。系统采用Python实现,支持GPU加速,适用于多种交通场景下的车辆监测需求。

一键难忘的博客 910

华工信工实验参考——《DSP实验 5 有限冲激响应数字滤波器设计》

博客中的代码不出意外的话应该都是直接可以跑的,如果出了意外的话可以邮箱1902946954@qq.com

Scut_Ty的博客 1088

ESP32与DS18B20温度传感器的数据采集与告警系统

并且,通过自定义的微信告警功能,我们可以及时收到温度超过阈值的告警消息。随着物联网的快速发展,传感器在各种应用场景中发挥着重要的作用。本文将介绍如何使用ESP32微控制器与DS18B20温度传感器结合,通过串口输出和Web服务器实现温度数据的采集和监控,并使用自定义微信告警功能。上传完成后,打开串口监视器,您将看到ESP32连接到Wi-Fi网络,并开始监测温度。在您的计算机或移动设备上,打开一个Web浏览器,并输入ESP32的IP地址。在浏览器中输入ESP32的IP地址后,您将看到显示当前温度的页面。

loop_class349的博客 2247

TMC2240 芯片数据手册解读|第十三篇 StallGuard4负载测量(StallGuard4 Load Measurement)

摘要: TMC2240的StallGuard4技术专为StealthChop2静音模式设计,通过SG4_RESULT实时测量电机负载,实现堵转检测、无传感器回零和CoolStep节能。其核心原理基于负载角检测,通过SG4_THRS阈值调节灵敏度,并支持四通道独立测量(SG4_IND_0~3)优化相位平衡。独特功能包括无抖动模式切换补偿(sg_angle_offset),解决StealthChop2与SpreadCycle切换时的电流突变问题。调优时需结合SG4_THRS设定与DIAG验证,确保堵转精准触发。

BackCatK Chen的博客 306
上一篇: 国产教学实验箱_嵌入式实验箱:3-4 mp3音频解码实验
下一篇: 嵌入式操作教程:4-6 无限冲激响应滤波器(IIR)算法(MATLAB 辅助,LCD显示)
Tronlongtech
博客等级 码龄4年 687粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值