写一段 ARM 汇编程序,演示中值滤波算法作业报告(物联20级)

重庆交通大学信息科学与工程学院

《嵌入式系统基础A》课程

作业报告(第5周)

班 级: 物联网工程2004

姓名-学号 : 王卓-632007060402

实验项目名称: 写一段 ARM 汇编程序,演示中值滤波算法

实验项目性质: 设计性

实验所属课程: 《嵌入式系统基础》

实验室(中心): 南岸校区语音大楼

指 导 教 师 : 娄路

完成时间: 2022 10 19


一、实验内容和任务

写一段 ARM 汇编程序,演示中值滤波算法

二、实验要求

1. 分组要求:每个学生独立完成,即1人1组。

2. 程序及报告文档要求:具有较好的可读性,如叙述准确、标注明确、截图清晰等。

3.项目代码上传github,同时把项目完整打包为zip文件,与实验报告(Markdown源码及PDF文件)、作业博客地址一起提交到学习通。

三. **实验过程介绍 **
在嵌入式系统的数据采样应用中,采集数据收到噪声影响会出现起伏变化,采取中值滤波算法将干扰数据去除掉。

前言

本文目的是主要介绍如何写一段 ARM 汇编程序,演示中值滤波算法。


一、滤波的概念及种类

1、经典滤波

经典滤波是基于傅里叶分析和变换提出的一个工程概念。根据高等数学理论,任何一个满足一定条件的信号,都可以被看成由无限个正弦波叠加而成。换句话说,工程信号就是由不同频率的正弦波叠加而成的,组成信号的不同频率的正弦波叫信号的“频率成分”或“谐波成分”。

2、现代滤波

现代滤波是指用模拟电子电路对模拟信号进行滤波操作,其基本原理就是利用电路的频率特性实现对信号中频率成分的选择。滤波时,把信号看成由不同频率正弦波叠加而成的模拟信号,通过选择不同的频率成分来实现信号滤波。在计算机实际应用中,需要将模拟量转换为数字量(即进行A/D转换),为解决干扰问题,常用的方法主要有中值滤波和均值滤波。

二、中值滤波及程序设计内容

1、中值滤波

中值滤波对脉冲噪声有良好的滤除作用,特别是在滤除噪声的同时,能够保护信号的边缘,使之不模糊。此外,中值滤波的算法比较简单,也易于用硬件实现。这些优良特性是线性滤波方法所不具有的。所以,中值滤波方法一经提出后,便在数字信号处理领域得到广泛应用。
中值滤波方法如下:对一个数字信号序列x(-co<i<co)进行滤n外H时)首出典定义一个长度为奇数的/长窗口,l=2n+1,n为正整教。设左其_个时刻空口,的信县样本为x(i-n),…, x(1),…, x(i+n),其中 x(i)为位干窗口中八的信县样大估 团H 已本值按从时到大的顺序排列后,其中值在i处的样值,便定义为中值滤波的输出值。
在嵌入式的实际应用中,如AD采样时,如果有瞬间干扰信号,那么采样回来的数据就有明显的变化,如明显偏大或偏小。如果把这些数据拿来显示,那显示数据就是跳跃式的,看起来明显有问题。因为模拟信号是连续变化的,并且其变化一般都是相对缓慢的,这时就可以采用中值滤波(也叫“算数中值滤波”),把这些干扰数据去除掉,其原理如下:在采样时连续采样奇数个数(2n+1),并把这些数排序,中间位置那个数(nt+1位置)作为本次采样的值。

2、中值滤波程序设计

为了保证程序的通用性,对任意N(N为奇数)个数都能找出中间值,N值放在RO中,原始数据放在内存0X40000000 开始的地址空间,每个数占32位(即4个字节),中值滤波的结果放在寄存器R1中,此处假设R0=9。
中值滤波程序的流程图如图5-16所示。中值滤波的程序如下。
在这里插入图片描述

 AREA SORT,CODE, READONLY  ;定义一个代码段
 ENTRY
 MOV R0,#9  ;需要排序数的个数,为奇数
 LDR R2,=ox408e8e8e  ;R2为原始数据的起始地址
 SUB R1,Re, #1
 MOV R4,#4
 MLA R3,R1,R4,R2 ;R3为原始数据的结束地址
 SUB R4,R3,#4  ;R4为原始数据的倒数第二个数的地址
	LOOP1 ADD R5,R2,#4 ;R5为内循环的起始地址
	LO0P2 LDR R6,[R2]
	LDR R7,[R5]
	CMP R6,R7  ;比较交换,从小到大排序
    STRHI R6,[R5]
	STRHI R7,[R2]
	ADD RS,R5,#4  ;修改内循环地址
	CMP R5,R3  ;内循环结束比较
	BLS LO0P2
	ADD R2,R2,#4  ;修改外循环地址
	CMP R2,R4  ;外循环结束比较
	BLS LOOP1
	LDR R2,=0x40000000
	MOV RO,RO,LSR #1
	MOV R4,#4
	MLA R3,RO,R4,R2
	LDR R1,[R3]  ;找到中间那个数并赋给R1
    MOV RO,#100
	MOV R5, #05
	END

3、程序编写

在这里插入图片描述

总结

本文介绍了如何在嵌入式系统的数据采样应用中,采集数据收到噪声影响会出现起伏变化,采取中值滤波算法将干扰数据去除掉。再写一段 ARM 汇编程序,演示中值滤波算法# 前言
提示:在嵌入式系统的数据采样应用中,采集数据收到噪声影响会出现起伏变化,采取中值滤波算法将干扰数据去除掉。本文目的是主要介绍如何写一段 ARM 汇编程序,演示中值滤波算法。


一、滤波的概念及种类

1、经典滤波

经典滤波是基于傅里叶分析和变换提出的一个工程概念。根据高等数学理论,任何一个满足一定条件的信号,都可以被看成由无限个正弦波叠加而成。换句话说,工程信号就是由不同频率的正弦波叠加而成的,组成信号的不同频率的正弦波叫信号的“频率成分”或“谐波成分”。

2、现代滤波

现代滤波是指用模拟电子电路对模拟信号进行滤波操作,其基本原理就是利用电路的频率特性实现对信号中频率成分的选择。滤波时,把信号看成由不同频率正弦波叠加而成的模拟信号,通过选择不同的频率成分来实现信号滤波。在计算机实际应用中,需要将模拟量转换为数字量(即进行A/D转换),为解决干扰问题,常用的方法主要有中值滤波和均值滤波。

二、中值滤波及程序设计内容

1、中值滤波

中值滤波对脉冲噪声有良好的滤除作用,特别是在滤除噪声的同时,能够保护信号的边缘,使之不模糊。此外,中值滤波的算法比较简单,也易于用硬件实现。这些优良特性是线性滤波方法所不具有的。所以,中值滤波方法一经提出后,便在数字信号处理领域得到广泛应用。
中值滤波方法如下:对一个数字信号序列x(-co<i<co)进行滤n外H时)首出典定义一个长度为奇数的/长窗口,l=2n+1,n为正整教。设左其_个时刻空口,的信县样本为x(i-n),…, x(1),…, x(i+n),其中 x(i)为位干窗口中八的信县样大估 团H 已本值按从时到大的顺序排列后,其中值在i处的样值,便定义为中值滤波的输出值。
在嵌入式的实际应用中,如AD采样时,如果有瞬间干扰信号,那么采样回来的数据就有明显的变化,如明显偏大或偏小。如果把这些数据拿来显示,那显示数据就是跳跃式的,看起来明显有问题。因为模拟信号是连续变化的,并且其变化一般都是相对缓慢的,这时就可以采用中值滤波(也叫“算数中值滤波”),把这些干扰数据去除掉,其原理如下:在采样时连续采样奇数个数(2n+1),并把这些数排序,中间位置那个数(nt+1位置)作为本次采样的值。

2、中值滤波程序设计

为了保证程序的通用性,对任意N(N为奇数)个数都能找出中间值,N值放在RO中,原始数据放在内存0X40000000 开始的地址空间,每个数占32位(即4个字节),中值滤波的结果放在寄存器R1中,此处假设R0=9。
中值滤波程序的流程图如图5-16所示。中值滤波的程序如下。
在这里插入图片描述

 AREA SORT,CODE, READONLY  ;定义一个代码段
 ENTRY
 MOV R0,#9  ;需要排序数的个数,为奇数
 LDR R2,=ox408e8e8e  ;R2为原始数据的起始地址
 SUB R1,Re, #1
 MOV R4,#4
 MLA R3,R1,R4,R2 ;R3为原始数据的结束地址
 SUB R4,R3,#4  ;R4为原始数据的倒数第二个数的地址
	LOOP1 ADD R5,R2,#4 ;R5为内循环的起始地址
	LO0P2 LDR R6,[R2]
	LDR R7,[R5]
	CMP R6,R7  ;比较交换,从小到大排序
    STRHI R6,[R5]
	STRHI R7,[R2]
	ADD RS,R5,#4  ;修改内循环地址
	CMP R5,R3  ;内循环结束比较
	BLS LO0P2
	ADD R2,R2,#4  ;修改外循环地址
	CMP R2,R4  ;外循环结束比较
	BLS LOOP1
	LDR R2,=0x40000000
	MOV RO,RO,LSR #1
	MOV R4,#4
	MLA R3,RO,R4,R2
	LDR R1,[R3]  ;找到中间那个数并赋给R1
    MOV RO,#100
	MOV R5, #05
	END

3、程序编写

在这里插入图片描述

总结

本文介绍了如何在嵌入式系统的数据采样应用中,采集数据收到噪声影响会出现起伏变化,采取中值滤波算法将干扰数据去除掉。再写一段 ARM 汇编程序,演示中值滤波算法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值