DSP笔记
第1讲数字信号处理概述
ARM 高 FPGA(在纯软件的环境下开发硬件)
DSP 中
单片机 低
软解软件进行处理
硬解硬件进行处理
1-D 信号:单个独立变量的一维函数, e.g. 语音信号。
2-D 信号:两个独立变量的二维函数, e.g. 图像信号。
M-D 信号:多个独立变量的多维函数, e.g. 彩色视频信号(RGB) 。
信号分类
模拟信号处理 连续信号
数字信号处理 离散信号
系统的分类(按所处理的信号种类不同分类)
-连续时间信号系统(模拟信号系统)
-离散时间信号系统(略)
-数字信号系统
运算的基本单元是延时器、乘法器和加法器。
数字信号处理系统的基本组成
(1)前置滤波器
将输入信号xa(t)中高于某一频率(称折叠频率,等于抽样频率的一半)的分量加以滤除。
(2)A/D变换器
在A/D变换器中每隔T秒(抽样周期)取出一次xa(t)的幅度,抽样后的信号称为离散信号。在A/D变换器中的保持电路中进一步变换为若干位码。
(3)数字信号处理器(DSP)
按照预定要求,在处理器中将信号序列x(n)进行加工处理得到输出信号y(n)。
(4)D/A变换器
由一个二进制码流产生一个阶梯波形,是形成模拟信号的第一步。
(5)模拟滤波器
把阶梯波形平滑成预期的模拟信号;以滤除掉不需要的高频分量,生成所需的模拟
信号ya(t)。
数字处理特点
1)高精度
2)高可靠性
3)灵活性
4)虚拟特点和更新
DSP概念
狭义理解可为DigitalSignal Processor
—— 数字信号处理
广义理解可为DigitalSignal Processing
——数字信号处理技术
本科阶段主要介绍以傅里叶变换为基础的“经典”处理方法,主要包括:
(1)离散傅里叶变换及其快速算法。
(2)滤波理论(线性时不变离散时间系统,用于分离相加性组合的信号,要求信号频谱占
据不同的频段)。
数字信号处理的标志:傅立叶变换
频域分析
时域分析在时域上无法分析的可以在频域上分析
应用
GPSDVD 图像识别 指纹识别
第2讲 matlab基础及其在dsp中的应用
Matlab的操作
M文件分为命令和函数文件
for循环
s=0;
for n=1:100;
s=s+1/n^2
end
function
function y=functest(x)
y=x^2+3.2*x-1.7
end
if
function y=iftest(x)
if x<=0;
y=0;
elseif x<=1;
y=1;
elseif x<=2;
y=2*x;
else
y=2*x+5;
end
plot fplot绘图 subplot子图 Figure新建绘图窗口 hold on保持上幅图
figure
subplot(311)
fplot('x+sin(x)',[-5,5])
subplot(312)
fplot('x^2*exp(-x^2)',[-10,10])
subplot(313)
fplot('x^4/2+x^2-1',[-10,10])
linspace矩阵
x=linspace(1,5);
y1=sin(2*x);
y2=sin(x.^2);
plot(x,y1,x,y2)
求导数
一阶导数
>> syms x;
>> y = 3*x-exp(x)/2+1;
>> dy=diff(y);
>> pretty(dy) pretty优化输出结果 可有可无
exp(x)
3 -------
2
dy =3 - exp(x)/2
>> syms x y1 y2
>> y1=2^(sin(x));y2=log(log(log(x)));
>> dy1=diff(y1),dy2=diff(y2)
dy1 =2^sin(x)*log(2)*cos(x)
dy2 =1/(x*log(log(x))*log(x))
二阶导数
>> syms x;
>> diff((cos(x))^2*log(x),2)
ans =2*log(x)*sin(x)^2 - 2*cos(x)^2*log(x)- cos(x)^2/x^2 - (4*cos(x)*sin(x))/x
求驻点
>> x=solve('x^2-x-6')
x =-2x=3
特征值和特征向量
MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有3种:
(1)E=eig(A)求矩阵A的全部特征值,构成向量E。
(2)[V,D]=eig(A) 求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。
(3)[V,D]=eig(A,'nobalance') 与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。
用一个简单命令求解线性系统
3x1+ x2- x3 =3.6
x1+2x2+4x3= 2.1
-x1+4x2+5x3= -1.4
A=[3 1 -1;1 2 4;-1 4 5];b=[3.6;2.1;-1.4];
x=A\b %注意除法的符号
x =
1.4818
-0.4606
0.3848
MATLAB提供了丰富的矩阵运算处理功能,是基于矩阵运算的处理工具。
考察函数
第3讲算法设计信号部分
用FFT(傅里叶变换)进行谱分析的Matlab实现
要求看懂程序 代码填空
例如
设模拟信号
,以 t= 0.01n (n=0: N-1) 进行取样,试用fft函数对其做频谱分析。N分别为:(1) N=45;(2) N=50;(3) N=55;(2) N=60。
程序清单如下
%计算N=45的FFT并绘出其幅频曲线
N=45;n=0:N-1;t=0.01*n;
q=n*2*pi/N;
x=2*sin(4*pi*t)+5*cos(8*pi*t);
y=fft(x,N);
figure(1)
subplot(2,2,1)
plot(q,abs(y))
title('FFTN=45')
用FFT进行谱分析的Matlab实现
设计butterworth低通滤波器
信号波形
用以下程序可产生正弦波:
t=0:0.001:50; y=sin(2*pi*50*t);plot(t(1:50),y(1:50));
用以下程序可产生加入随机噪声的正弦波:
t=0:0.001:50; y=sin(2*pi*50*t);s=y+randn(size(t)); plot(t(1:50),s(1:50));
用以下程序可产生周期方波:
t=0:0.001:2.5; y=square(2*pi*30*t);plot(t(1:50),y(1:50));
用以下程序可产生周期锯齿波:
t=0:0.001:2.5; y=sawtooth(2*pi*30*t);plot(t,y);
单位脉冲序列
n=[-3:3];
x=[(n-1)==0]; 生成单位脉冲序列
stem(n,x);
axis([-3,3,0,1.5]) 标识坐标
矩形序列
正玄序列
>> n=[0:1:20];
>> x=3*sin(0.1*pi*n+pi/3);
>> stem(n,x); 离散的序列值
>> axis([0,20,-4,4])
第3讲算法设计图像部分图片读取
按图像明暗程度和空间坐标的连续性划分,图像可以分为数字图像和模拟图像。
模拟图像:也称光学图像,是指空间坐标和明暗程度连续变化的,计算机无法直接处理的图像,它属于可见图像。
数字图像:是指能被计算机存储、处理和使用的图像,是空间坐标和灰度均不连续,用离散数字表示的图像A/D(模/数转换) D/A (数/模转换)
采样(空间离散) 空间上连续的图像变化成离散点的操作成为采样,实际上是空间坐标(x,y)的数字化,即按一定的间隔(△x, △ y)将图像划分M行×N列的网格。
量化(灰度离散) 图片包含色彩数目。
1 按灰度值可分为二值图像和多值图像
二值图像:每个像素灰度由0或1构成
多值图像:每个象素灰度由0~2n之间的数表示(n>1)
2 按波段量可分为单波段、彩色或多波段数字图像
1图像读取
函数和语法
A = imread(filename,fmt)
[X,map] = imread(filename,fmt)% X索引值map索引表
load filename %(对于索引图,*.mat格式的数据等)
tu=imread('football.jpg')
tu=imread('forest.tif');
load woman
1图像显示
一般的方式
>> imshow(uint8(ans))
>> imread('D:\Matlab\work\加菲猫.jpg')
>> A=imread('D:\Matlab\work\加菲猫.jpg');
>> imshow(uint8(A));
Matlab自带图片读取
>> load woman
>> imshow(X,map)
imview('D:\Matlab\work\加菲猫.jpg')显示一张图片 不常用
图像显示函数及其调用方法
1)一般的方式
2)彩色图像的显示
3)索引图的显示
4)彩色图像的显示
5)灰度图像的显示
6)truesize的使用
7)图像显示中逻辑操作符的使用(常用于二值图像)
Matlab图像处理
1)图像的几何运算 resize不善于用subplot来进行操作
2)图像的亮度调整
3)图像中斑点的去除
4)图像的轮廓
5)图像的边界
6)图像间的运算
7)特定区域的处理
课程探究
Jpg图像压缩
图像复原
Fir低通滤波器
伪彩色
切比雪夫滤波器
将图片转换为ASCII
车牌识别
图片处理程序
第4讲 55系列dsp基础
嵌入式产品关注性能、价格、功耗三个指标
德州仪器三大DSP系列
C55x根据功能的不同将CPU分为4个单元,即指令缓冲单元(I)、程序流程单元(P)、地址流程单元(A)和数据计算单元(D)。
指令缓冲单元
程序流程单元(P)
程序流程单元由程序地址产生电路和寄存器组构成。程序流程单元产生所有程序空间的地址,并控制指令的读取顺序。
地址流程单元(A)
地址流程单元包括数据地址产生电路、算术逻辑电路和寄存器组构成。
数据计算单元(D)
数据计算单元由移位器、算术逻辑电路、乘法累加器和寄存器组构成。D单元包含了CPU的主要运算部件。
指令流水线
第一阶段是取流水线,即从内存中取出32位的指令包,放入指令缓冲队(IBQ)中,然后为流水线的第二阶段提供48位的指令包。
第二阶段是指执行流水线,这部分的功能是对指令进行解码,完成数据的存取和计算。
VC5509A的主要特性
1.CPU
2.存储器
3.片上外设
引脚功能
1.并行总线引脚
2.中断引脚和复位引脚
3.位输入/输出信号引脚
4.时钟信号引脚
5.I2C引脚
6.McBSP信号引脚
7.USB引脚
8.A/D引脚
9.测试引脚
10.电源引脚
第5讲 CCS与DSP开发
CCS有两种工作模式,即
软件仿真器模式:可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。
硬件在线编程模式:可以实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。(主要使用这种模式)
主机和开发板通过仿真器相连(RTDX、jtag-h)
第6讲 DSP编程基础
汇编语言的优点:程序执行效率高,硬件定时准确;
缺点:程序不够直观,可移植性和可维护性差
C语言特点:可移植性和可维护性好
程序设计是应用软件设计的基础,主要任务是利用C指令和伪指令编写源程序以完成指定的功能。
C54x C与ANSI C的不同点
1.所处理数据的性质不同
2.数据出输入输出设备不同
3.“死循环”的对待上不同
4.语法及数据结构细节上的不同
1)地址变量 所谓的地址变量实际上就是指定了具体地址的指针变量。 volatile short *mcbsp0_drr10=0x10;short sh_drr10_data;sh_drr10_data=*mcbsp0_drr10
2)I/O端口变量 ioport数据类型 porthex_num;
3)寄存器变量 寄存器变量的定义格式:registertype AR6 或 register type AR7
段
已初始化段:
(1).text段,包含了可执行代码。
(2).cinit段,包含明显初始化的全局变量和静态变量。
(3).const段,包含字符串常数和全局变量。
(4).switch段,包含大型switch语句的跳转表
未初始化段
(1).bss段,包含了未初始化的全局变量和静态变量
(2).stack段,定义软件堆栈
(3).system段,为动态存储器函数malloc,calloc,realloc(这些函数由运行支持库提供)分配存储器空间
C54x C语言开发的存储器结构
(1)段的存储器定位
(2) 存储器模式
①小存储器模式:编译器默认的存储器模式。这要求.bss在128个字(一个数据页)范围内,这样编译器在编译成汇编时,不需要修改DP的值,程序代码简单,运算效率高。
高地址存放在高位低地址存放在低位。
②大存储器模式:对.bss大小没有限制,访问变量时需要首先确定DP值,这将增加指令访问周期
高地址存放在低位,低地址存放在高位。
C54x C语言开发的寄存器约定规则
入口保存(save-on-entry)
调用保存(save-on-call)
C54x C语言中断处理函数的实现
C语言中断函数的定义
(1) c_intd 函数
C编译器约定,任何具有名为c_intd(d为0~9)的函数都被假定为一个中断程序。
缺点:可以定义的中断处理函数数目较少(只有9个),另外,函数名称与其功能的对应关系不够直观。因此,除了c_int0函数外,一般不建议使用这种定义方法。
(2 ) interrupt 函数
采用这种方法,可以对每种中断服务函数的功能,给它起一个有意义的名称,非常直观,同时,中断服务函数的个数也没有严格的限制。
TI公司提供两种形式的运行支持库:
目标代码:rts.lib
源代码:rts.src
DSP的C编程文件结构
工程文件.mak (.prj)包含:
1. CMD--用来分配存储空间
MEMORY指令定义目标存储器的位置,SECTIONS指令规定各个段放在存储器的什么位置。
2.C语言系统库rts55x.lib。系统库包含了编译器提供的所有功能,初始化C语言环境(入口地址是_c_int0),设置堆栈,标准C的函数库。
3.有且必须有一个含有main()函数的C语言源文件(.c)。系统初始化完毕后,就把控制权交给main()函数。
4.目录下的文件:.map文件(存储器映射文件)、.out文件、cc_build文件
Hello, world实例:file.c
#include <stdio.h>
FILE*fptr;
/* ======== main ======== */
void main()
{
/*write a string to stdout */
puts("hello world!\n");
/* open a file on the host and write char array */
fptr= fopen("myfile.txt", "wb+");
if(fptr==NULL)
{
puts("error");
}
fprintf(fptr,"Hello, world");
fclose(fptr);
}
汇编实例:add.asm
.file "addasm.asm"
.data
.global _c_int00
.text
_c_int00:
mov #10,AR0
mov #10,AR1
add AR0,AR1
loop:
nop
B loop
.end
C+汇编实例:
#include <csl.h>
int c;
void main()
{
c=cadd(10,10);
asmadd();
}
int cadd(int a,int b)
{
int result;
result=a+b;
return result;
}
定点浮点运算
浮点和定点运算 给代码和已知数求运算过程
//加法过程
x=0.5 y=3.1
Qx=15 Qy=13 Qz=13
Xq=0.5*2^15=16384
Yq=3.1*2^13=int(25395)
temp = Yq<< Qx-Qy)
=25395<<2
=25395*4=101580
temp=Xq+temp=16384+101580=117964
Zq=117964>>2=117964/4=29491
z=(float)Zq*2^-13=3.6
//减法过程
x=3.0 y=3.1 Z=?
Qx=13 Qy=13 Qz=15
X=int(x*2^13)=3*2^13=24576
Y=int(y*2^13)=3.1*2^13=25395
temp=y<<0=25395
temp=x-temp
=24576-25395=-819
Z=-819<<2=-819*4=-3276
z=-3276*2^-15=-0.1
//乘法过程
x=18.4 y=36.8
Qx=10 Qy=9 Qz=15
tmp=x=18841
Zq=18841<<(15-10+9)/18841
=18841*2^14/18841=16384
Zfloat=16384*2^-15=0.5
//除法过程
X=18.4 y=36.8
Qx=10 Qy=9 Qz=15
Xq=18.4*2^10=18841
Yq=36.8*2^9=18841
temp=(long)=18841
Zq=temp*Yq>>(10+9-5)
=temp*Yq>>14
=18841*18841>>14
=21666
1、选择
2、填空
3、程序分析
给代码分析求代码功能或结果
Matlab脚本 DSPc语言代码
4、程序设计题
Matlab脚本 DSPc语言代码
5、论述综合题
上课所讨论的问题
相关推荐
【3DSP笔记本蓝牙驱动】是针对使用3DSP芯片组的笔记本电脑设计的重要软件组件,它在无线通信领域扮演着至关重要的角色。3DSP是一家专注于无线技术的半导体公司,其产品广泛应用于蓝牙、Wi-Fi等无线解决方案。这款...
"TM320X2812DSP笔记.pdf"很可能是详细的课程笔记,涵盖了该芯片的基础知识、编程模型、中断系统、内存映射以及相关的开发流程。通过阅读这份笔记,学习者可以了解如何编写程序、配置寄存器以及调试技巧。此外,笔记...
“2005年辅导班dsp笔记”这一文件名表明,这份资料可能专注于数字信号处理(DSP)领域。数字信号处理是通信工程、电子工程、计算机科学等多个技术领域的基础,它涉及到信号的获取、变换、分析、滤波、压缩、识别等一...
DSP学习笔记 本节笔记介绍了TMS320F2833X的头文件函数,主要涉及到DSP2833x和DSP2823x的外设接口编程。通过TI提供的SPR530(C2833x/C2823x C/C++头文件和外设示例),我们可以方便地使用2833X和2823X的外设。 DSP...
### DSP学习心得笔记知识点解析 #### 一、DSP基础知识概览 数字信号处理器(Digital Signal Processor,简称DSP)是一种特别适合于进行数字信号处理运算的微处理器,具有强大的数据处理能力和高速的操作速度,广泛...
在本节“DSP学习笔记3”中,将深入探讨数字信号处理器(DSP)中的一个重要组件——McBSP(多通道缓冲串口)的功能、结构和编程接口。同时,也会涉及I2C总线的知识点,这是在DSP学习过程中不可或缺的两个关键点。 ...
DSP(Digital Signal Processor)是一种专门用于数字信号处理的微处理器,其设计目的是高效执行数学运算,特别是在实时信号处理应用中。DSP芯片在各种领域都有广泛的应用,如通信、语音处理、图像处理、军事、仪器...
DSP学习笔记2 DSP(Digital Signal Processor,数字信号处理器)是一种专门用于信号处理的微处理器,广泛应用于音频处理、图像处理、通信等领域。本笔记总结了DSP内部结构、程序设计和API函数集,以TMS320VC5509A为...
标题中的“3DSP发布用于笔记本的WiFi + Bluetooth PCIe MiniCard芯片”指的是创蕊信通(3DSP)公司推出的一款创新产品,该产品是一款专为笔记本电脑设计的集成式芯片,结合了WiFi和Bluetooth功能,并采用了PCI ...
上海交通大学的819课程,即信号与系统(Signal and System,简称SS)以及离散时间信号处理(Discrete-Time Signal Processing,简称DSP)是电子工程及相关专业的核心课程之一。这两门课程覆盖了信号处理的基础理论与...
**DSP2808及其EPWM模块详解** TI公司的TMS320F2808是一款高性能浮点数字信号处理器(DSP),广泛应用于实时控制、电机驱动、电源管理等领域。该处理器拥有强大的处理能力,丰富的外设接口,以及灵活的定时器和PWM...
### DSP学习笔记有助DSP知识的学习 #### 一、引言 数字信号处理(Digital Signal Processing,简称DSP)是一门涉及广泛领域的学科,它主要研究如何通过计算机或专用处理设备对信号进行数字化处理的方法和技术。...
数字信号处理器(DSP)是一种专业的微处理器,其内部结构和工作原理与通用微处理器有所不同。 DSP被设计用于快速执行数学运算,尤其是在数字信号处理中常见的复杂数学运算,如快速傅里叶变换(FFT)、数字滤波器等。...
《C28系列DSP汇编语言学习笔记》是针对德州仪器(TI)的C28x系列数字信号处理器(DSP)的一份详细教程,旨在帮助读者深入理解和掌握C28x DSP的汇编语言编程技术。汇编语言是低级编程语言,与硬件紧密相连,能实现...
STM32CubeMX是ST公司推出的一款强大的STM32配置工具,它可以帮助开发者快速设置STM32微控制器的参数,生成初始化代码,并提供了一系列的软件包,包括HAL、LL、CMSIS以及DSP库等。本篇文章将深入探讨STM32CubeMX中的...
### DSP/BIOS 5.31的关键知识点详解 #### 一、平台创建与命名规范 1. **平台文件命名**:在创建新的平台时,应确保保存为`platforms.tci`格式,而非特定的名称。这有助于保持平台文件的一致性,并确保与DSP/BIOS...
DSP(Digital Signal Processor)是一种专门用于数字信号处理的微处理器,具有高速运算能力和实时处理的特点。在学习DSP的过程中,以下几个方面是至关重要的: 1. **硬件基础**:了解所使用的DSP芯片的硬件特性至关...
本资料“DSP初学者学习笔记自用手写”旨在帮助初学者系统地理解和掌握数字信号处理的基本概念、理论和应用。 笔记内容可能涵盖以下几个关键知识点: 1. **信号与系统基础**:首先,学习者需要理解连续时间和离散...
"CCS_V3.3 for DSP 编程应用笔记" CCS_V3.3 是一款强大的 DSP(数字信号处理器)开发工具,旨在帮助开发者更好地学习和掌握 DSP 编程技术。本笔记涵盖了 CCS_V3.3 的使用指南、DSP 编程基础知识、数字信号处理技术...