DSP实现方法解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
30
A 0AA0b++6b0b×0543210×x×0(xnx(0-n(06n-0)54321)0)
;设置小数乘法 ;设置AR2 ;设置复位值AR0=6 ;设置缓冲区首地址 ;输入x(n) ;A清0,设置迭代次数
数据存储器
③ 读完最后一个样本后,输入最新样本并存入缓冲 区的顶部。
20
2021年7月1日
DSP原理及应用
1. 线性缓冲区法
数据存储器 缓冲区:
缓冲区顶部 最新样本
顶部为低地址单元,存放最新样本;
底部为高地址单元,存放最老样本;
指针ARx指向缓冲区底部。
缓冲区底部 最老样本 ←ARx
21
2021年7月1日
DSP原理及应用
文编查 工 调 性 选 扩工 视 帮
件辑看 程 试 能 项 展具 窗 助




程序的编辑、汇编和链接过程
示意图
. cmd 链接命 令文件
.asm 源文件
文本编辑器
汇编器
.obj 目标文件
-l
链接器 -m
.out 输出文件
-o
调试程序
. lst 列表文件
. map 存储器 映像文件
十六进制 转换程序 HEX500
LD + DELAY → LTD
MAC + DELAY → MACD
25
2021年7月1日
DSP原理及应用
1. 线性缓冲区法
注意:用线性缓冲区实现z-1运算时,缓冲区的数据 需要移动,这样在一个机器周期内需要一次 读和一次写操作。因此,线性缓冲区只能定 位在DARAM中。
优点: 在存储器中新老数据的位置直观明了。
26
2021年7月1日
DSP原理及应用
FIR滤波器的实现
’C54x提供的乘法-累加指令MAC和循环寻址方 式,可使FIR数字滤波器在单周期内完成每个样值 的乘法 -累加计算。而每个样值的乘法-累加计算, 可采用RPTZ和MAC指令结合循环寻址方式来实现。
为了实现对应项乘积运算,输入的样值x(n)和
22
2021年7月1日
DSP原理及应用
1. 线性缓冲区法
求y(n)的过程:
算法:
y(n)
7
bi
x(n
i)
i 0
数据存储器
ARx→ ARx→↑ ARx→↑ ARx→↑ ARx→↑ ARx↑→

ARx→ ARx↑→
最xx(新(n样n+)1本) xx((nn-)1) x(n-21) x(n-32) x(n-43) x(n-54) x(n-65) 最x(老n样-76本)
.word 2*32768/10
.word 1*32768/10
29
数据存储器
x 暂存y(n)
x(n)
x(n-1)
;自定义数据空间
x(n-2) x(n-3)
x(n-4)
x(n-5)
;定义b6=0.1 ;定义b5=0.2
; ;定 定定义 义义bb系43==数-00.b3.i4
;定义b2=-0.4 ;定义b1=0.2 ;定义b0=0.1
基本算法: 采用乘法累加运算。即不断地输入样本 x(n),经过z-1延时后,再进行乘法-累加,最后输出滤波 结果y(n)。
19
2021年7月1日
DSP原理及应用
1. 线性缓冲区法
特点:
① 在数据存储器中开辟一个N单元的缓冲区(滑窗), 用来存放最新的N个输入样本;
② 从最老样本开始取数,每取一个数后,样本向下 移位;
FIR滤波器的设计方法
FIR滤波器的设计方法主要有窗函数法和频率采样法 。
窗函数法是最基本的方法 ,窗的类型有:
矩形窗
Hanning窗
Blackman窗 Kaiser窗
DSP设计者可以利用功能强大的MATLAB工具很方便的
设计出逼近理想特性的FIR滤波器。
然后将FIR系数放入DSP程序中。
FIR滤波器的MATLAB设计
b=fir1(n,Wn) b=fir1(n,Wn,‘ftype’) b=fir1(n,Wn,Window) b=fir1(n,Wn,‘ftype’,Window)
n:滤波器的阶数;Wn:滤波器的截止频率; ftype:用来决定滤波器的类型,
当ftype=high时,可设计高通滤波器;
当ftype=stop时,可设计带阻滤波器。
1. 线性缓冲区法
求y(n)的过程:
算法
y(n)
7
bi
x(n
i)
i 0
数据存储器 最x新(样n)本 x(n-1) x(n-2) x(n-3) x(n-4) x(n-5) x(n-6)
ARx→ 最x(老n样-7本)
取数、移位和运算:
① 以ARx为指针,按x(n-7)……x(n)的顺序取 数,每取一次数后,数据向下移一位,并完成 一次乘法累加运算; ② 当经过8次取数、移位和运算后,得y(n); ③ 求得y(n)后,输入新样本x(n+1),存入缓冲 区顶部单元; ④ 修改指针ARx,指向缓冲区的底部。
CCS两种工作模式
软件仿真器模式:可以脱离DSP芯片,在PC机上 模拟DSP的指令集和工作机制,主要用于前期算 法实现和调试。 硬件在线编程模式:可以实时运行在DSP芯片上, 与硬件开发板相结合在线编程和调试应用程序。
仿真器与目标系统JTAG接口连接示意图
CCS的安装及设置
可供使用 的配置
加入配置按钮 清除配置按钮
MATLAB是一种功能强、效率高、便于进行科学 和工程计算的交互式软件包,它集数值分析、矩阵 运算、信号处理和图形显示于一体,为用户提供了 方便、友好的界面环境。
MATLAB中的工具箱(Toolbox)包含了许多实用 程序。它提供了多种FIR滤波器设计方法。
FIR滤波器参数获取
1. fir1函数
语法:
2021年7月1日
x(n-6)
程序存储器
COEF
b6
b5
b4
b3
b2
b1
DSP原b理0及应用
用线性缓冲区实现FIR滤波器
程序清单: .text
start: SSBX FRCT STM #x+7,AR2 STM #6,AR0 LD #x+1,DP PORTR PA1,@x+1
FIR1: RPTZ A,#6 MACD *AR2-,COEF,A STH A,*AR2 PORTW *AR2+,PA0 BD FIR1 PORTR PA1,*AR2+0 .end
0.0141 0.0668 0.5996 0.0668 0.0141
-0.0043 -0.0017
0.0000 0.0098 0.0179 -0.0585 0.3005 0.0003 -0.0172 -0.0032
0.0008
实现FIR滤波器中延迟方法
FIR滤波器的输出表达式为
y[n] b0x[n] b1x[n 1] bn-1x[n N 1]
DSP器件原理及应用
专题3—FIR滤波器算法、编程及仿真
CCS简介
CCS是TI公司推出的用于开发DSP芯片的集 成开发环境,它采用Windows风格界面,集编 辑、编译、链接、软件仿真、硬件调试以及实 时跟踪等功能于一体,极大地方便了DSP芯片 的开发与设计,是目前使用最为广泛的DSP开 发软件之一。
原因:为使CCS IDE能工作在不同的硬件或仿真目标上
CCS的安装及设置
系统配置窗口
安装驱动程序
CCS的应用界面
主菜单 工具条
工程项目窗口
源程序编辑窗口 反汇编窗口
寄存器显示窗口
图形显示窗口 内存显示窗口
主菜单
主菜单包含有11个选项。
File Edit View Project Debug Profiler Option GEL Tools Window Help
FIR滤波器的基本原理
差分方程: 结构图:
N 1
y(n) bi x(n i) i0
x(n)
x(n 1) x(n 2)
z 1
z 1
z 1
x(n N 1) z 1
b0
b1
b2
bN 2
bN 1
+
y(n)
FIR滤波算法实际上是一种乘法累加运算。它不断地从输入端读入
样本值x[n],经延时( z1 )后做乘法累加,输出滤波结果y[n]。
程序清单:
.title “FIR1.ASM”
.mmregs
.def start
x
.usect “x”,8
PA0 .set 0
PA1 .set 1
.data
COEF: .word 1*32768/10
.word 2*32768/10
.word -4*32768/10
.word 3*32768/10
.word -4*32768/10
←PORTR x(n)
x(n-1) x(n-2) x(n-3) x(n-4) x(n-5) x(n-6) x(n-7)
y(n)=b0x(n)+y1 y(n)=y1=b1x(n-1)+y2 y(n)=y2=b2x(n-2)+y3 y(n)=y3=b3x(n-3)+y4 y(n)=y4=b4x(n-4)+y5 y(n)=y5=b5x(n-5)+y6 y(n)=y6=b6x(n-6)+y7 y(n)=y7=b7x(n-7)+0
x
AR1→ A28R1→
数据存储器 暂存y(n) x(n) x(n-1) x(n-2) x(n-3) x(n-4) x(n-5) x(n-65)
A b6×x(n-6)+A
b66×x(n-6)+A
x(n-6)
2021年7月1日
程序存储器
b
b6
b5
b4
b3
b2
b1
b0DSP原理及应用
用线性缓冲区实现FIR滤波器
b= 0.0007 0.0036
-0.0002 -0.0381 -0.0904 -0.0904 -0.0381 -0.0002 0.0036
函数方法产生系数
0.0008 -0.0032 -0.0172 0.0003 0.3005 -0.0585 0.0179 0.0098 0.0000
-0.0017 -0.0043
滤波系数bi必须合理的存放,并正确初始化存储块 和块指针。样值x(n)和滤波系数bi的存放可用线性 缓冲区或循环缓冲区实现。
27
2021年7月1日
DSP原理及应用
FIR滤波器的实现
(1) 用线性缓冲区实现FIR滤波器 双操作设数N=寻7,址F指IR令滤:波M器AC的D 算*A法R1:-,b,A
功能:A=Ay+((nA)=R1b)0×x(n(b)+)b,1xA(Rn1--11)→+…AR+1b,5(xA(Rn1-)5→) +(bA6Rx1(+n1-)6)
23
2021年7月1日
结果: ① y(n)
DSP原理及应用
1. 线性缓冲区法
求y(n+1)的过程:
算法:
y(n
1)
7
bi
x(n
1
i)
i 0
取数顺序: x(n-6)……x(n+1)
最新样本:
数据存储器 x(n+12)
数据存储器 x(n+8)结果:ຫໍສະໝຸດ xx((nn+)1)
x(n+7)
xx((nn-)1)
x(n+6)
x(n-21)
x(n+5)
x(n-32)
x(n+4)
x(n-43)
x(n+3)
x(n-54)
x(n+2)
ARx→ x(n-65)
24
ARx→ x(n+1)
2021年7月1日
x(n+2)
① y(n) ② y(n+1) ③ y(n+2) ④ y(n+3) ⑤ y(n+4) ⑥ y(n+5) ⑦ y(n+6) ⑧ y(n+7)
FIR滤波器参数获取
2. fir2函数 设计一个30阶的低通FIR滤波器,其截止频率为
0.6,汉明(Hamming)窗。
解:采用fir2函数的程序格式: f = [ 0 0.6 0.6 1 ]; m = [ 1 1 0 0 ]; b=fir2(36,f,m);
MATLAB函数方法产生的滤波器系数
Window:用来指定滤波器采用的窗函数类型,
其默认值为汉明(Hamming)窗。
FIR滤波器参数获取
2. fir2函数 用来设计有任意频率响应的各种加窗FIR滤波器。
语法: b=fir2(n,f,m) b=fir2(n,f,m,Window)
FIR滤波器参数获取
2. fir2函数 说明:
参数n为滤波器的阶数; 参数f为频率点矢量; 参数m为幅度点矢量,在矢量m中包含了与f相对应 的期望得到的滤波器幅度; 参数Window用来指定所使用的窗函数类型,其默认 值为汉明(Hamming)窗;
DSP原理及应用
1. 线性缓冲区法
Z-1的运算是通过执行存储器延时指令来实现的。 即将数据存储器中的数据向较高地址单元移位来进行 延时。 其指令: DELAY Smem ;(Smem) Smem+1
DELAY *AR3-
;AR3指向源地址
将延时指令与其他指令结合使用,可在同样的 机器周期内完成这些操作。例如:
不断地对输入样本进行n-1延时后,再进行乘法累加。
C54x通过两种方法实现FIR滤波器。 1. 线性缓冲区法 2. 循环缓冲区法
1. 线性缓冲区法
FIR滤波器的输出表达式:
y(n)=b0x(n)+b1x(n-1)+ … +bn-1x(n-N+1) bi为滤波器系数,x(n)为滤波器在n时刻的输入,y(n)为n时刻 的输出。
相关文档
最新文档