课程设计说明书
目
录
1 引言.............................................................................................................................1
2 MATLAB 及 CCS 软件介绍......................................................................................2
2.1 MATLAB 的介绍.............................................................................................2
2.2 CCS 的介绍..................................................................................................... 2
3 FIR 数字低通滤波器的设计.................................................................................... 4
3.1 FIR 滤波器参数设定....................................................................................... 4
3.1.1 输入方波 Matlab 设计......................................................................... 5
3.1.2 正弦叠加信号 Matlab 设计................................................................. 6
3.2 FIR 滤波器的设计........................................................................................... 6
3.3 FIR 滤波器性能验证 ................................................................................... 9
3.3.1 Matlab 的仿真验证............................................................................... 9
3.3.2 CCS 的仿真结果.................................................................................10
4 IIR 数字低通滤波器的设计................................................................................... 13
4.1IIR 滤波器设计流程图...................................................................................13
4.3 IIR 滤波器性能验证 .................................................................................. 14
4.3.1 Matlab 的仿真验证............................................................................... 14
4.3.2 CCS 的仿真结果...................................................................................15
5 设计总结...................................................................................................................18
参考文献......................................................................................................................19
附录..............................................................................................................................20
1
课程设计说明书
1 引言
当今,数字信号处理(DSP:Digtal Signal Processing)技术正飞速发展,它不
但自成一门学科,更是以不同形式影响和渗透到其他学科:它与国民经济息息相
关,与国防建设紧密相连;它影响或改变着我们的生产、生活方式,因此受到人
们普遍的关注。
数字滤波技术是数字信号分析、处理技术的重要分支[2-3]。无论是信号的获
取、传输,还是信号的处理和交换都离不开滤波技术,它对信号安全可靠和有效
灵活地传输是至关重要的。在所有的电子系统中,使用最多技术最复杂的要算数
字滤波器了。数字滤波器的优劣直接决定产品的优劣。
在数字信号处理中,滤波占有极其重要的地位。数字滤波是语音信号处理、
图像处理、模式识别、频谱分析等应用的基本处理算法。用 DSP 芯片实现数字
滤波除了具有稳定性好、精确度高、不受环境影响等优点外,还具有灵活性好等
特点。
本设计的题目是低通滤波器的设计,主要针对 DSP 芯片进行程序设计,要
求采用汇编语言编写程序。
通过此次课程设计,熟悉 DSP 芯片的硬件结构,加深对 DSP 芯片的认识;
掌握对 DSP 芯片编程方法,掌握间接寻址方法的使用,重点掌握算法的设计。
要求采用汇编语言针对 DSP 芯片设计低通滤波器:
1.给出低通滤波器技术指标,在 Matlab 中首先设计符合要求的滤波器,并得
到滤波器参数,并得到该滤波器的幅频特性和相频特性;
2.FIR 低通滤波器设计,给出程序流程图,在 CCS 软件环境下编写程序;
3.分别用方波和正弦波验证 FIR 低通滤波器的设计;
4.IIR 低通滤波器设计,给出程序流程图,在 CCS 软件环境下编写程序;
5. 分别用方波和正弦波验证 IIR 低通滤波器设计;
6.与 Matlab 中设计的滤波器,进行对比研究。
1
课程设计说明书
2
MATLAB 及 CCS 软件介绍
2.1 MATLAB 的介绍
MATLAB 是由美国 mathworks 公司发布的主要面对科学计算、可视化以及
交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化
以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗
环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供
了一种全面的解决方案,代表了当今国际科学计算软件的先进水平。主要应用于
工程计算、信号处理与通讯、图像处理、信号检测、金融建模设计与分析、控制
系统设计以及计算生物学等众多应用领域。
MATLAB 是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计
算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时
控制等功能。
MATLAB 的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形
式十分相似,故用 MATLAB 来解算问题要比用 C,FORTRAN 等语言完相同的事情
简捷得多。
当前流行的 MATLAB 5.3/Simulink 3.0 包括拥有数百个内部函数的主包和三
十几种工具包(Toolbox)。工具包又可以分为功能性工具包和学科工具包。功能工
具包用来扩充 MATLAB 的符号计算,可视化建模仿真,文字处理及实时控制等功
能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具
包等都属于此类。除内部函数外,所有 MATLAB 主包文件和各种工具包都是可读
可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具
包。
2.2 CCS 的介绍
CCS 软件简介 CCS(Code Composer Studio)代码调试器是一种合成开发环
境。它是一种针对标准 TMS320 调试器接口的交互式方法。CCS 目前有 CCS1.1,
CCS1.2 和 CCS2.0 等三个 不同时期的 版本,又有 CC2000 ( 针对 C2XX ) ,
CCS5000 ( 针对 C54XX )和 CCS6000 (针对 C6X )三个不同的型号。我们所使用
的是 CCS50002.2 的版本。
CCS5000 具有以下特性:
TI 编译器的完全集成的环境:
CCS5000 目标管理系统,内建编辑器,所有的调试和分析能力集成在一个
Windows 环境中。
对 C 和 DSP 汇编文件的目标管理:
2
课程设计说明书
目标编辑器保持对所有文件及相关内容的跟踪。它只对最近一次编译中改变
过的文件重新编译,以节省编译时间。
高集成的编辑器调整 C 和 DSP 汇编代码:
CCS5000 的内建编辑器支持 C 和汇编文件的动态语法加亮显示。使用户能
很容易地阅读代码和当场发现语法错误。
编辑和调试时的后台编辑:
用户在使用编译器和汇编器时没有必要退出系统到 DOS 环境中,因为
CCS5000 会自动将这些工具装载在它的环境中。在其窗口中,错误会加亮显示
只要双击错误就可以直接到达出错处。
在 含 有 浮 点 并 行 调 试 管 理 器(PDM) 的 原 有 的 MS 窗 口 下 支 持 多 处 理 器
CCS5000 在 Windows95 和 Windows-me 中支持多处理。PDM 允许将命令传播给
所有的或所选择的处理器。
在任何算法点观察信号的图形窗口探针:
图形显示窗口使用户能够观察时域或频域内的信号。对于频域图,FFT 在主机内
执行,这样就可以观察所感兴趣的部分而无须改变它的 DSP 代码。图显示也可
以同探针连接,当前显示窗口被更新时,探针被指定,这样当代码执行到达该点
时,就可以迅速地观察到信号。
文件探针在算法处通过文件提取或加入信号或数据:
CCS5000 允许用户从 PC 机读或写信号流。而不是实时的读信号,这就可以
用已知的例子来仿真算法。
图形分析:
CCS5000 的图形分析能力在其环境中是集成的。
在后台(系统命令)执行用户的 DOS 程序:
用 户 可 以 执 行 CCS5000 中 的 DOS 程 序 , 并 将 其 输 出 以 流 水 方 式 送 到
CCS5000 的输出窗口。且允许用户将应用程序集成到 CCS5000。
技术状态观察窗口:
CCS5000 的可视窗口允许用户进入 C 表达式及相关变量。结构、数组、指
针都能很简单地递归扩展和减少,以便进入复杂结构。
代数分解窗口:
允许用户选择查看写成代数表达式的 C 格式,提高可读性 。
目标 DSP 上的帮助:
DSP 结构和寄存器上的在线帮助可以使用户不必查看技术手册。
3
课程设计说明书
3 FIR 数字低通滤波器的设计
3.1 FIR 滤波器参数设定
%滤波器的阶数
%滤波器的截止频率
FIR 滤波器的参数用 Matlab 来设计,其程序为:
N=40;
Wn=0.3
b=fir1(N,Wn)
freqz(b,512,1000) %滤波器的幅频特性和相频特性
其运行结果为:
Wn =
0.3000
b =
-0.0000
-0.0012
-0.0017
-0.0008
0.0020
0.0046
0.0036
-0.0025
-0.0101
-0.0110
0.0000
0.0175
0.0259
0.0105
-0.0253
-0.0552
-0.0428
0.0312
0.1483
0.2566
0.3006
0.2566
0.1483
0.0312
-0.0428
-0.0552
-0.0253
0.0105
0.0259
0.0175
0.0000
-0.0110
-0.0101
-0.0025
0.0036
0.0046
0.0020
-0.0008
-0.0017
-0.0012
-0.0000
滤波器的幅频特性和相频特性如 3-1 所示:
4
课程设计说明书
-50
-100
-150
)
B
d
(
e
d
u
t
i
n
g
a
M
-200
0
0
)
s
e
e
r
g
e
d
(
e
s
a
h
P
-500
-1000
-1500
0.1
0.2
-2000
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
Normalized Frequency ( rad/sample)
0.3
0.4
0.5
0.6
0.7
Normalized Frequency ( rad/sample)
0.8
0.9
1
0.8
0.9
1
图 3-1 FIR 滤波器的幅相频特性
3.1.1 输入方波 Matlab 设计
方波的 Matlab 程序为:
t=0:0.25:50;
x=square(pi*t);
plot(x);
xout=x/max(x);
xto_ccs=round(32767*xout)
fid=fopen('square.dat','w'); %打开文件
fprintf(fid,'1651 1 229 1 201\n'); %输出文件头
fprintf(fid,'%d\n',xto_ccs); %输出
fclose(fid);
输出方波如图 3-2 所示:
%关闭文件
%归一化
图 3-2 方波信号
5
课程设计说明书
3.1.2 正弦叠加信号 Matlab 设计
%采样周期
正弦叠加信号的 Matlab 程序为:
f11=500;
f12=9000;
fs=20000; %采样频率
N=300
%数据个数
T=1/fs;
n=-N/2:N/2;
x11=0.5*sin(2*pi*f11*n*T);
x12=0.5*sin(2*pi*f12*n*T);
x_base=(x11+x12);
plot(x_base);
yff=abs(fft(x_base))
df=n*(fs/N)
xout=x_base/max(x_base); %归一化
xto_ccs=round(32767*xout)
fid=fopen('input.dat','w'); %打开文件
fprintf(fid,'1651 1 229 1 301\n'); %输出文件头
fprintf(fid,'%d\n',xto_ccs); %输出
fclose(fid);
输出正弦叠加信号的波形如图 3-3 所示:
%正弦叠加信号的波形
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
50
100
150
200
250
300
350
图:3-3 正弦叠加信号
3.2 FIR 滤波器的设计
FIR 结构中的延迟 Z-1 在程序中实现是数据在存储器中的滑动,这对一个 L
阶的 FIR 数字滤波器来说,就是要求在存储器中开辟一个 L 个样本并进行乘累
加运算。这在 DSP 中可以用两种方法来实现该缓冲区。对于线性缓冲区来说,
每当 DSP 读入一个样本后都将此样本向后移动,读完最后一个样本后,最前面
6
课程设计说明书
的样本(最老的)被推出缓冲区,并输入最新的样本至缓冲区顶部。线性缓冲区
的存储器延时可以由具有数据移动的 DMOV 指令来实现,它需要将缓冲区置于
内部 DARAM 块中;对于循环缓冲区,每当输入新样本时,以新样本改写区中
最老的样本,而缓冲区中的其他样本不需要其他样本移动。循环缓冲区可采用循
环寻址技术来实现,它不需要必须定位在 DARAM 块中,但需要适当的缓冲区
对准以满足循环寻址的要求。本次课设用的是循环寻址,下面主要介绍一下循环
寻址的方法。
循环缓冲实现延时的特点是:
1 实现 N 阶 FIR 数字滤波器时,需要在数据存储器中开辟一个称为滑窗的 N
个单元的缓冲区,滑窗中存放最新的 N 个样本。
2 当每次输入新样本时以新的样本改写滑窗中最老的样本,而滑窗其他的数
据不需要移动。
3 利用片内 BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,循环缓冲
区地址首位相邻。
其程序流程图 3-4 所示:
7