DSP实验指导书实验报告部分Word格式.docx
- 文档编号:19482971
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:19
- 大小:110.16KB
DSP实验指导书实验报告部分Word格式.docx
《DSP实验指导书实验报告部分Word格式.docx》由会员分享,可在线阅读,更多相关《DSP实验指导书实验报告部分Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
A=100(64H)
LD#10h,4,B;
B=100H
LD#-1,A;
A=FFFFFFFFH
LD#4000h,8,B;
B=400000H
AbsoluteAddressing
SAMPLE.set0088h
.bsssa,1
LD#4AB8h,A
STLA,*(SAMPLE);
SAMPLE中内容为:
4AB8H
STLA,*(sa);
sa中内容为:
STM#x,AR2;
AR2=60H
RPT#4
MVPDtable,*AR2+;
从x开始的5个数据为:
1,2,3,4,5;
AR2=65H
STM#y,AR2;
AR2=6AH
RPT#4
MVKDddate,*AR2+;
从y开始的5个数据为:
22H,33H,44H,55H,66H;
AR2=6FH
AccumulatorAddressing
LD#table,A;
A=FFFFFFE06FH
STM#y,AR2;
RPT#4
READA*AR2+;
从y开始的5个数据为1,2,3,4,5;
AR2=6FH
DirectAddressing
ST#0001h,*(x);
(0060H)=0001H
ST#400h,*(x+1);
(0061)=0400H
ST#1000h,*(x+127);
(00DF)=1000H
ST#500h,*(x+129);
(00E1)=500H
LD#x,DP;
DP=0000H
LD@x,A;
A=0001H
ADD@(x+129),A;
A=0401H
A=0001H
LD#(x+129),DP;
DP=0001H
A=0501H
****************************************
IndirectAddressing
****************************************
ST#1000h,*(0060h);
(0060h)=1000H
ST#2000h,*(0061h);
(0061h)=2000H
ST#3000h,*(0062h);
(0062h)=3000H
ST#4000h,*(0063h);
(0063h)=4000H
LD#1000h,A;
A=1000H
STM#0060h,AR1;
AR1=0060H
LD*AR1+,A;
A=1000H;
AR1=0061H
STM#0063h,AR1;
AR1=0063H
LD*AR1-,A;
A=4000H;
AR1=0062H
STM#2,AR0;
AR0=0002H
STM#0062h,AR1;
LD*AR1-0,A;
A=3000H;
LD*AR1,B;
B=1000H
Memory-MappedRegisterAddressing
STM#1234h,AR1;
AR1=1234H
STM#5678h,AR2;
AR2=5678H
STM#2,SWWSR;
SWWSR=0002H
LDMAR1,A;
A=1234H
MVMMAR2,AR3;
AR3=5678H
STLMA,AR4;
AR4=1234H
StackAddressing
ST#1234h,*(x);
(0060h)=1234H
ST#5678h,*(x+1);
(0061h)=5678H
ST#9abch,*(x+2);
(0062h)=9ABCH
STM#x,AR1;
STM#x+3,AR2;
AR2=0063H
RPT#2
PSHD*AR1+;
(008FH)=1234H,(008EH)=5678H,(008DH)=9ABCH
RPT#2
POPD*AR2+;
(x+3)=9ABCH(x+4)=5678H(x+5)=1234H
PSHD*(x+5);
(008FH)=1234H
POPD*(x+6);
(x+6)=1234H
hereBhere
.end
.end链接命令文件
链接命令文件说明DSP系统的存储器配置及各段在存储器中的定位情况。
必须根据实验箱上DSP的型号(C5416)正确设置。
C5416的片内DARAM存储器共64K字,可配置成数据或程序存储器。
片内SARAM存储器共64K字,分为两段,只能配置成程序存储器。
另外,C5416片外还扩展了128KRAM作为片外数据存储器,可以通过CPLD控制页选。
改变CPLD的RamState寄存器(这个寄存器在I/O空间的0001)的值,就可以分别选择外部RAM的第一个32K、第二个32K、第三个32K或者第四个32K作为数据空间的后32K。
数据空间共64K,其中前32K是DSP片内的DARAM的前32K;
而后32K是可变动的,可以在片内DARAM的后32K和片外RAM的四个32K之间通过程序选择。
数据存储器地址可从0000h到ffffh,
可用程序存储器为片内64KDARAM及片内128KSARAM,DARAM地址从0000h到ffffh,SARAM地址从28000h到3ffffh,38000h到4ffffh。
注:
关于5416DSP程序空间的配置在5416的数据手册或者电子工业出版社出版、张雄伟主编的《DSP芯片的原理与开发应用》一书的P69均可查到。
参考链接命令文件代码如下:
MEMORY
{
PAGE0:
EPROM:
org=0E000h,len=100h
VECS:
org=0FF80h,len=80h
PAGE1:
SPRAM:
org=0060h,len=20h
DARAM:
org=0080h,len=100h
}SECTIONS
.text:
>
EPROMPAGE0
.vectors:
>
VECSPAGE0
.bss:
SPRAMPAGE1
.data:
.STACK:
DARAMPAGE1
.ddate:
}3.头文件
头文件主要内容是系统的复位及其它中断的向量表。
参考头文件如下:
.ref_c_int00
.sect"
.vectors"
B_c_int00
.end
四、实验步骤
(1)开机:
打开计算机电源,进入Win2000系统,双击桌面上的CCS2图标,选择open——c54xsimulator,进入DSP软件集成开发环境,或者选择open——c5416XDS进入DSP硬件集成开发环境(使用实验箱做实验,先连接好实验箱及仿真器等方可开机)。
(2)编辑文件:
选择File-New—SourceFile菜单(或使用其它文本编辑器)编辑好主程序(*.asm)、头文件(*.asm)及链接命令文件(*.cmd),并保存在D盘DSPLAB\LAB1文件夹中。
(3)创建工程项目:
选择Project-New,出现—对话框,在project栏(第一行)填写项目名称,并选定项目的位置(D:
\DSPLAB\LAB1),然后单击“完成”按钮,这样就新建了一个工程项目,该项目用来管理各种文件,便于编译、调试。
注意:
文件夹、文件名中不能含有汉字,且文件名第一个字母不能是数字。
(4)添加文件:
将编辑好的三个文件添加到刚建好的工程项目中,选择Project-AddFilestoProject,出现一个对话框,选择文件夹(D:
\DSPLAB\LAB1)并选中主程序、头文件、cmd文件,单击“打开”按钮就将这三个文件添加到该工程中了。
此步骤可一次加入三个文件,也可重复三次,每次加入一个文件。
(5)编译汇编程序:
选择Project—CompileFile,分别编译主程序及头文件,修改程序中的错误,再编译,直到无错误出现。
编译后的文件为OBJ文件。
(6)链接:
选择Project—Build或RebuildAll,链接各OBJ文件,若有错误出现应修改错误(错误应在cmd文件中),再链接,直到无错误出现。
链接生成可执行的out文件。
(7)下载out文件:
选择File—LoadProgram,在debuge文件夹中选中out文件(文件名与工程项目同名),单击“打开”按钮,这样out文件就下载到DSP中了。
(8)调试:
选择debuge—StepInto单步执行代码或者选择debuge—Run连续运行代码(debuge—Halt停止运行)。
单步运行或运行结束后选择View-Memory和View-Registers-CPURegisters/PeripheralRegs查看存储器和寄存器中的数据。
如果最后的结果有错误,则应查找原因修改程序并重复步骤5~步骤8,直到结果正确为止。
五.思考题
1.头文件与主程序为什么要分为两个文件?
能合为一个文件吗?
2.链接命令文件包含哪两项?
各有什么作用?
请试着修改链接命令文件,并编译、运行,看段、变量等的位置是否改变。
3.在单步执行程序中,为什么有些指令执行了,但是结果却没有出来,要等下面一条或几条指令执行了才能得到正确结果?
六.实验报告要求
1.简述实验步骤,填写程序运行中的结果。
2.简述七种数据寻址方式。
3.简要回答思考题。
实验三FIR滤波器设计
1.掌握FIR滤波器DSP实现的编程方法。
2.测试FIR滤波器的单位冲击响应,检查FIR滤波器的频率特性。
二、实验条件
1.PC机及集成开发环境CCS5000仿真器(软件、硬件仿真器均可)。
2.线性相位带通FIR滤波器的参数如下:
通带:
0.2
~0.8
,带内波动<
0.5db
过渡带:
~0.275
,0.725
,带内衰减>
68db
滤波器级数:
N=80
滤波器系数(偶对称,已转换成定点数,前40个系数h(0)~h(39)):
0xFFDC,0x001F,0x0051,0xFFE9,0xFFE6,0xFFBA,0xFFB4,0x004B,0xFFF9,0x0069,0x00A2,0xFF6F,
0xFFFE,0xFF70,0xFEF4,0x00CB,0x000B,0x00E6,0x0187,0xFEE5,0x000B,0xFE7F,0xFDBF,0x0192,
0xFFB5,0x026A,0x0368,0xFDC2,0x00C0,0xFC0A,0xFAA3,0x0347,0xFE3D,0x0747,0x09BB,0xFA3D,
0x052B,0xEB59,0xDC2A,0x2D57
3.线性相位低通FIR滤波器的参数如下:
0~0.35
,阻带:
04
~
N=40
滤波器系数(偶对称,只列出前20个h(0)~h(19)):
-7*32768/10000,3*32768/10000,14*32768/10000,10*32768/10000,-16*32768/10000,
-38*32768/10000,-8*32768/10000,64*32768/10000,81*32768/10000,-30*32768/10000,
-169*32768/10000,-118*32768/10000,162*32768/10000,353*32768/10000,83*32768/10000,
-515*32768/10000,-689*32768/10000,247*32768/10000,2051*32768/10000,3523*32768/10000
以上两个滤波器至少做一个,还可以用MATLAB中的数字滤波器设计工具得到其它滤波器的系数表。
除编写头文件、cmd文件外,还要采用混合编程技术编写C语言主程序及FIR滤波器汇编子程序,在C程序中调用汇编子程序(函数),函数有三个参数,即输入、输出序列的首地址及长度,函数返回值为void。
1.编写滤波器汇编程序
采用循环缓冲区及FIRS指令编写系数对称的FIR滤波器汇编程序,入口参数为输
入序列首地址及长度、滤波器输出序列的首地址。
2.滤波器单位脉冲响应测试
在C程序中用定义一个长度为240的int型数组,其第一个单元为32768,其余全为0。
用该数组作为滤波器的单位脉冲输入,测试滤波器的单位脉冲响应特性。
3.检查滤波器的频率特性
在C程序中编程产生不同频率的序列sin(wn),w=0.1
0.2
,…,0.9
,调用FIR滤波子程序(函数),对之进行滤波处理,对比滤波器的输入、输出序列的幅度比,检查滤波器的频率特性。
4.编写头文件和cmd文件。
5.学会使用CCS的图形观察窗查看输入、输出序列的波形,具体使用方法见教材第381页图形属性对话框的设置,主要是显示类型(singletime)、起始地址(即数组首地址或变量名)、数据类型(16bitsignedint)、缓冲区大小(240)、显示数据大小(240)这几栏要设置。
CCS的使用方法见教材第九章(9.3节到9.6节)或有关参考书。
选择File-New—SourceFile菜单(或其它编辑器)编辑好C程序(*.c)、滤波器子程序(*.asm)、头文件(*.asm)及链接命令文件(*.cmd),并保存在D盘DSPLAB\LAB3文件夹中。
选择Project-New,出现—对话框,在project栏(第一行)填写项目名称(FIRxxx),并选定项目的位置(D:
\DSPLAB\LAB3),然后单击“完成”按钮,这样就新建了一个工程项目。
(4)将编辑好的四个文件添加到刚建好的工程项目中:
选择Project-AddFilestoProject…,出现一个对话框,选择文件夹(D:
\DSPLAB\LAB3)并选中各个文件,单击“打开”按钮就将这四个文件就添加到该工程中了。
(5)编译C及汇编程序:
选择Project—CompileFile,分别编译C程序、滤波器汇编子程序及头文件,修改程序中的错误,再编译,直到无错误出现。
编译后的文件为obj文件。
选择Project—Build或RebuildAll,链接各obj文件,若有错误出现应修改错误(错误应在cmd文件中),再链接,直到无错误出现。
单步运行或运行结束后选择View-Graph-Time/Frequency和View-Registers-CPURegisters/PeripheralRegs查看序列的波形和寄存器中的数据。
由于算法循环次数较多,单步运行耗时太长,因此可在C程序或汇编程序中适当语句(指令)上设置断点(光标移到某行,鼠标点击工具栏一“手”形按钮),然后连续运行(run),这样程序运行到断点时暂停,此时可查看中间的一些结果。
再次运行(run),将从断点继续运行。
可用View-Graph-Time/Frequency观察滤波前后序列的时域波形(singletime)及频域幅度特性(FFTmagnitude)。
通过时域波形或幅度特性分析系统的单位脉冲响应及频率特性。
如果最后的结果有错误,则应查找原因修改程序并重复步骤5—步骤8,直到结果正确为止。
五、思考题
1.比较滤波器的系数与滤波器的单位脉冲响应,看二者是否相同?
为什么?
2.混合编程时,C与汇编之间如何传递参数的?
哪几个寄存器要进行现场保护?
3.循环缓冲区的起始地址与其长度有何关系?
在链接命令文件中如何指明?
4.本实验中是对一个序列进行连续的滤波,即调用一次滤波函数就完成了N个数据的滤
波,而有时需要每采集一个数据x(n)就调用一次滤波函数,得到一个输出数据y(n),此时
滤波器汇编程序如何修改?
六、实验报告要求
1.简述FIR滤波器的特点,写出系数对称滤波器的差分方程。
2.简述实验步骤。
1.编写FIR滤波器的汇编程序。
4.记录输入、输出序列的时域波形及幅度特性,分析实验结果。
5.简要回答思考题。
实验五语音信号滤波
1、了解音频编解码器TLC320AIC23的接口和使用方法。
2、了解DSP的多通道缓冲串口(MCBSP)通信方法。
3、了解一个完整的语音输入、输出系统的设计。
4、利用C语音及DSP汇编语音综合实现语音信号的采集、滤波及回放。
二、实验设备
计算机、DSP硬件仿真器、DSP图像处理实验箱、麦克风等。
三、实验原理
1.实验箱音频输入输出通道简介
立体声音频编解码芯片TLV320AIC23是TI生产的一种模拟接口电路,用于音频信号的输入/输出。
音频采样频率为8kHz–96kHz,可用16至32位量化,码率128Kbps–3072Kbps,输入包括麦克风输入和线性输入两个通道,输出一个耳机输出通道,片内集成了立体声耳机功率放大器。
TLV320AIC23与TMS320VC5416的接口有命令接口和数据接口,如图5.1所示。
命令接口是IIC总线,DSP的第二个MCBSP作为GPIO模拟IIC总线,对TLV320AIC23进行初始化。
数据接口是多通道缓冲串口(MCBSP),DSP的MCBSP0与TLV320AIC23与进行数据传输。
图5.1TLV320AIC23与TMS320VC5416的接口
2.音频通道的命令接口
TLV320AIC23命令接口主要功能是初始化TLV320AIC23内部控制寄存器。
本系统使用DSP的第二个MCBSP作为GPIO模拟IIC总线对TLV320AIC23内部的控制寄存器进行操作。
IIC总线上的数据格式为:
8bit的设备地址,本系统中TLV320AIC23的设备地址固定为0x34;
7bit的片内寄存器地址,TLV320AIC23片内有15个控制寄存器,其功能见下表;
9bit的数据。
表5.1AIC23片内部分控制寄存器
序号
地址
寄存器
0000000
左声道线性输入音量控制寄存器
1
0000001
右声道线性输入音量控制寄存器
2
0000010
左声道耳机输出音量控制寄存器
3
0000011
右声道耳机输出音量控制寄存器
4
0000100
模拟音频通道控制寄存器
5
0000101
数字音频通道控制寄存器
6
0000110
电源管理控制寄存器
7
0000111
数字音频格式控制寄存器
8
0001000
音频采样率控制寄存器
9
0001001
数字音频接口使能寄存器
10
0001111
复位寄存器
3.音频通道的数据接口
TLV320AIC23数据接口主要功能是DSP接收、输出由TLV320AIC23模/数、数/模转换的数字音频数据。
在本系统中,在MCBSP总线上TLV320AIC23工作在主模式,DSP工作在从模式。
MCBSP每一帧两个数据,每个数据16位,分别为左声道数据和右声道数据。
TLV320AIC23和DSP之间可以通过MCBSP进行无缝连接。
图5.1中,DIN为AIC23数字音频输入端,DOUT为AIC23数字音频输出端,LRCIN、LRCOUT分别为输入、输出的帧同步信号,BCLK是同步时钟。
4.语音信号的采集、滤波及回放
音频实时回放(滤波)程序流程图见图2。
(1)初始化TLV320AIC23
首先要初始化TLV320AIC23,函数为IIC_Write_B(),
三个参数,第一个参数为设备地址,第二个参数为片内
寄存器地址,第三个参数为数据。
我们需要对
T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 实验 指导书 报告 部分