DSP第一章.docx
- 文档编号:27065884
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:34
- 大小:622.96KB
DSP第一章.docx
《DSP第一章.docx》由会员分享,可在线阅读,更多相关《DSP第一章.docx(34页珍藏版)》请在冰豆网上搜索。
DSP第一章
—用CCS测试软硬件工具
—TMS320DM643的使用
—编译程序来测试工具
第1章DSP开发工具
本章介绍一些应用于数字信号处理的工具,这些工具有CCS,它提供了集成的开发环境(IDE);有DSP初学者工具包(DSK),在DSK电路板上嵌有TMS320C643定点处理器并且能完全支持输入输出信号。
另外,DSK还包含了三个实例,用来测试软硬件工具。
1.1介绍
数字信号处理器,和快速的特定目的微处理器一样,它们拥有专业的结构和可应用于信号处理的工具栏,例如TMS320C6x系列的处理器。
这种C6x类型的计数法是用来设计德克萨斯仪器生产的TMS320C6000系列的一部分。
C6x数字信号处理器的结构非常适用于数字集中计算。
C6x类型的处理器是基于超长指令字(VLIW)结构的,被认为是TI公司功能最强大的处理器之一。
数字信号处理器用在大量的仪器中,这些仪器的范围从交流与控制手段到语音和图像的处理,还用于携带式活动电话,传真机、调制解调器、磁盘驱动器、广播等设备中。
自从这些处理器具有较高的性价比,它们已经被广泛的应用于消费产品。
由于它们很容易重新编程适用于不同的应用,因此它们能处理不同的任务。
由于廉价的软硬件支撑的发展,DSP技术已经非常成功。
例如,使用DSP技术,调制解调和语音识别技术变得越来越便宜。
DSP处理器主要与实时信号处理有关。
实时处理意味着处理过程必须与一些外部事件同步,然而非实时处理技术没有这样的时间限制。
同步的外部事件通常是模拟输入。
像电阻这样的分立的电子元件构成的基于模拟信号的系统对温度的变化更加敏感,而基于DSP技术的系统不太受像温度这些环境因素的影响。
DSP处理器具有微处理器的优点外,它们还易于使用,灵活,而且经济。
人们出版了大量的书籍和文章来说明数字信号处理器对于许多应用的重要性,各种各样的技术已经被应用于实时处理,这些技术从甚高频通信的光纤传输到非常适宜于音频范围处理的DSP。
处理器的常用于频率范围从0到20kHz的信号实时处理。
语音信号用8kHz的采样频率进行采样,这表明任何一个采样点的采样时间是以1/8kHz或0.125ms。
一张光盘通常使用的采样频率是44.1kHz。
抽样平率高达兆赫兹的A/D采样板也能够买到。
最基本的应用系统有一个模数转换器(ADC),用来获得一个模拟信号。
然后,当模拟信号转换成数字信号后,信号再经过例如C6x的DSP处理,接下来输出通过一个数模转换器(DAC),输出模拟信号。
最基本的应用系统通常还包含抗混叠滤波器和一个输出滤波器,它们分别用来滤除不需要的带外信号或平滑、重构处理过的输出模拟信号。
1.2DSK支持工具
在本书中出现的大部分工作都涉及用来执行DSP应用的程序的设计和实现。
为了进行实验,需要应用下面的工具:
1.TI公司的DSP初学者工具包(DSK)。
DSK的组件包括:
(a)程序代码编译调试环境(CCS),它提供了必要的软件支持工具。
CCS提供了一个集成的开发环境(IDE),同时能将语言的编译器,汇编器,连接器,调试器等等集合在一起。
(b)在图1.1a显示的电路板,它包含TMS320C6711(C6711)类型的浮点数字信号处理器还有一个16位的输入输出设备的编译码器。
(c)并行数据线(DB25),它将DSK电路板连接到电脑上。
(d)一个DSK电路板的电源
DSKSupportTools3
(a)
(b)
图1.1基于TMS320C6711型号的DSK电路板:
(a)电路板;(b)简图
2.一台IBM兼容PC,DSK电路板通过DB25数据线连接到电脑的并行端口上,该数据线包含在DSK组件中。
3.示波器、信号发生器、和扬声器各一台,也可以用信号分析和频谱分析仪器。
可使用共享软件,利用PC和声卡来创建一个像示波器,函数发生器或频谱分析仪等虚拟工具。
1.2.1DSK电路板
DSK组件功能强大,但也相对便宜(目前为295美元),拥有用于实时信号处理必要的软硬件设备,它是一个完整的DSP系统。
DSK电路板上有C643定点数字信号处理器和一个用作输入输出的16位编解码器AD535。
DSK板上的编解码器AD535使用Sigma-Delta技术进行数模转换和模数转换。
利用DSK板上的4MHz时钟电提供一个8kHz的固定取样速率。
DSK电路板上有一个子板扩展插槽。
我们将通过将一个基于PCM3003的立体音响编解码器音频子卡插入到DSK电路板上的80个引脚的连接头上,来说明利用扩展槽进行输入输出的方法(DSK工具包不含该子卡)。
该音频子卡可从TI公司买到。
在附录F中有描述。
PCM3003编解码器有可变的采样速率,最高可达到72kHz,对于需要更高的采样速率的应用是很有用的,另外,它还含有两个输入输出通道。
DSK电路板包括16MB(兆字节)的同步动态存储器(SDRAM)和128KB的闪存。
电路板上的两个连接头提供输入输出接口,并且各自的引脚号为IN(J7)和OUT(J6),4个用户的DIP开关中的3个开关状态能从程序中读出。
板上DSP的时钟频率是150MHz,另外DSK上的稳压器为C643的中心提供了1.8V的电压,为存储器和外设提供了3.8V的电压。
1.2.2TMS320C6711型号的数字信号处理器
TMS320C6711(C6711)是以超长指令字(VLIW)结构为基础的,这种结构非常适合数字集中运算。
内部程序存储器结构使得每个周期能够取出所有的8个指令。
例如,以150MHz的时钟频率,C6711每1/(150MHz)或6.66ns能获取8个32位的指令。
C6711的功能部件包括72kB的内存,8个操作或执行部件(它们由6个算数逻辑部件和2个乘法器构成),一个记录4GB地址的32位地址总线和2套32位的多用途寄存器。
C67xx(如C6701和C6711)属于C6x浮点处理器系列;而C62xx和C64xx属于C6x定点处理器系列。
C6711兼有定点和浮点处理能力。
C6711的架构和指令集将在第3章讨论。
1.3程序代码编辑调试软件
程序代码编辑调试软件(CCS)是一个集成软件工具的集成开发环境(IDE)。
它包括代码生成工具,如C编译器、汇编器、链接器等。
它具有图形功能并支持实时调试。
该软件易于使用,是实现产生程序代码和调试程序的软件工具。
C编译器扩展名为.c的C源程序来产生一个扩展名为.asm的汇编源文件。
汇编器汇编扩展名为.asm汇编源文件,产生扩展名为.obj的机器语言的目标文件。
连接器将目标文件和库文件连接来产生一个扩展名为.out的可执行文件。
此可执行文件表示已链接的通用目标文件格式(COFF),该格式在基于UNIX系统中比较流行,并且被许多数字信号处理器的制造商所采用。
可执行程序可以加载到系统上,在C643处理器上运行。
创建一个应用工程,可以使用“add”菜单,在该工程中添加适当的文件。
可以简单设置编译器/链接器的选项。
可以利用多种调试功能,包括设置断点和观察变量,查看存储器和寄存器内容,以及C和汇编的混合编程程序代码,图形化结果,监测执行时间等。
我们可以通过不同的方式(如跟踪进入函数、跳过函数、跳出函数等方式)执行程序。
可通过和DSP/BIOS相关的实时数据交换(RTDX)实现数据的实时分析。
RTDX将主机和目标板实现实时数据交换,不需要停止目标板来进行实时分析。
可实时监控关键的统计数据和性能。
通过JTAG接口和片上的仿真通信工具通信,控制和监控程序执行。
C643DSK板包含一个JTAG仿真接口。
1.3.1CCS的安装和支持
首先使用(打印机)并行电缆DB25来将DSK目标板(J2)连接到PC上的并行端口,如LPT1或LPT2。
再用DSK包上的5V适配器连接到电源连接器J4,来打开DSK。
用DSK上的CD-ROM来安装CCS,最好使用c:
\ti这样的路径(默认)。
CCS的图标应该显示在桌面上,双击运行CCS。
它使用了4.1版的代码生成工具(C编译器,汇编器,连接器)。
通电时,在4个用户DIP开关附近的3个指示灯,应该算从1到7计数(二进制)。
CCS提供的DSK包上的有用的文档如下(见“帮助”图标):
1.代码生成工具(编译器,汇编器,链接器等)。
2.CCS,编译器,RTDX以及高级的DSP/BIOS手册。
3.DSP指令和寄存器。
4.与RTDX,DSP/BIOS等相关的工具。
CCS包含广泛的辅助材料(PDF文件)。
这也有几个内藏在CCS中的实例,如DSK置信度检测,音频实例,和与板载闪存相关的例子。
本书中的程序是用第2版的CCS来生成和测试的。
C:
\TI目录里包含下面一些文件夹和目录,它们中的许多文件是非常有用的:
1.docs:
包含文档和用户手册。
2.myprojects:
为您的工程提供帮助。
所有在本书中讨论的程序和工程可以放在这个子目录内。
3.C6000\cgtools:
包含代码生成工具。
4.bin:
包含许多实用程序。
5.C6000\例子:
包含CCS当中的编程实例。
6.C6000\RTDX:
包含实时数据传输的支持文件。
7.C6000\BIOS:
包含DSP/BIOS的支持文件。
1.3.2有用的文件类型
你将使用不同的扩展名与文件进行工作。
它们包括:
1..pjt:
创建和建立工程文件。
2..c:
C语言源程序。
3..asm:
由用户,C编译器,或由线性优化器创建的汇编源程序。
4..sa:
线性汇编源程序。
线性优化器输入.sa文件产生一个汇编程序.asm文件。
5..h:
头文件。
6..lib:
库文件,如在运行时支持库文件rts6701.lib。
7..cmd:
映射到内存部分的链接命令文件。
8..obj:
汇编程序创建的目标文件。
9..out:
由被加载并运行在处理器上的链接创建的可执行文件。
1.4测试DSK工具的编程实例
本节用三个编程实例介绍了CCS和DSK板的某些功能。
首要重点是要熟悉
软硬件工具。
我们强烈建议您在阅读后续章节之前先完成这三个例子。
1.4.1DSK的快速测试
从桌面上的图标启动CCS。
依次选择GEL→CheckDSK→QuickTest速测可用于确认操作和安装是否正确。
然后显示以下信息:
开关:
7
版本:
2
目标确定
显示以上信息的前提是假设前三个开关(USER_SW1,USER_SW2,USER_SW3)是在向上(ON)的位置。
将这三个开关设置为110(以二进制表示),则前两个开关是向上的(第三个开关设置在下面的位置),第四个开关是不用的。
重复上述的过程,检查是否按下GEL键,是否检查DSK,然后快速测试并核实开关的值现在是3(显示“switches:
3“)。
你可以设置前3个使用的开关的值从0到7.然后在你的程序中,你可以直接执行根据这八个值所设置的代码。
请注意快速测试使LED灯循环3次。
包含在DSK中的性能检测编程实例,可用来检测和检验DSK上的主要器件是否正常运作,如中断,指示灯,SDRAM,DMA串行端口和定时器。
DSK的另一种快速测试方法
1.点击文件夹sine8_buf_lookup,打开(加载)文件sine8_buf_lookup.out。
将可执行文件sine8_buf_lookup.out下载到C643处理器。
2.选择调试然后运行。
将DSK板上OUT(连接器的J6)连接到扬声器或示波器并且验证1千赫音调的产生。
DSK板上的输入/输出连接器(J7/J6)使用的是一个3.5毫米插孔的音
2.
3.频线。
文件夹sine8_buf_lookup包含来执行范例1.1的必要文件,范例1.1介绍了使用工具的一些功能。
1.4.2支持文件
在pc硬盘内创建一个新文件夹,将它命名为sine8_buf_lookup。
建议你把在C:
\TI\myprojects(假设您已经在C:
\TI中安装了CCS)中的文件夹。
在这本书中的许多例子中所使用的相同的支持文件包含在附带磁盘上的Support文件夹中。
现在,不要过分担心这些文件的内容或功能。
附加的支持文件都包含在带有DSK包的CCS光盘中。
将Support(附带磁盘中)文件夹中的下列文件复制到到在您的硬盘驱动器中创建的文件夹sine8_buf_lookup中:
1.c6xdsk.cmd:
取样连接器命令文件。
2.c6xdsk.h:
定义的外部存储器接口、串行口等地址(CCS中TI的支持文件)的头文件。
3.c6xinterrupts.h:
包含中断初始化函数init(DSK中TI的支持文件)。
4.c6xdskinit.h:
带有函数原型的头文件。
5.c6xdskinit.c:
包含CCS中程序示例codec_poll所使用的几个函数。
包括初始化DSK、编解码器、串行端口、输入/输出的初始化函数。
6.vectors_11.asm:
CCS中的vectors.asm版本,但可以修改它用来处理中断。
可以使用INT4到INT15的12个中断,在这个矢量文件中选择INT11。
将C源文件sine8_buf_lookup.c和GEL文件amplitude.gel从辅助材料sine8_buf_lookup文件夹复制将到你的硬盘上的文件夹sine8_buf_lookup中。
1.4.3程序实例
示例1.1:
8点正弦波的生成(sine8_buf_lookup)
这个例子使用查询方法,产生一个正弦波。
更重要的是,它说明了CCS编辑,建立工程,访问代码生成工具,与C643处理器上运行的程序的一些特点。
在图1.2所示的C源代码sine8_buf_lookup.c实现了正弦波的生成。
//sine8_buf_lookup.cSinegenerationusing8points,f=Fs/(#ofpoints)
shortloop=0;
shortsine_table[8]={0,707,1000,707,0,-707,-1000,-707};
shortamplitude=100;
shortout_buffer[256];
constshortBUFFERLENGTH=256;
shortk=0;
voidmain()
{
Uint32TempData=0;
Uint32mcAspTemp1=0;
Uint32mcAspTemp2=0;
MCASP_HandlehMcasp;
/*InitializeCSL.*/
CSL_init();
/*InitializeDEC643board.*/
DEC643_init();
DEC643_AIC23_Config();
//打开MCASP
hMcasp=DEC643_AIC23_OpenCodec();
while
(1)
{TempData=sine_table[loop]*amplitude;
out_buffer[k]=sine_table[loop];
k++;
if(k==BUFFERLENGTH)
k=0;
if(loop<7)
++loop;
else
loop=0;
mcAspTemp1=MCASP_RGETH(hMcasp,SRCTL0);
mcAspTemp2=mcAspTemp1&0x10;
if(mcAspTemp2)
{MCASP_write32Cfg(hMcasp,MCASP_XBUF0,TempData);
}
}
}
图1.2.Sinegenerationprogramusingeightpoints(sine8_buf_lookup.c).
程序中考虑的一些问题
虽然本例重点是介绍一些工具,但是理解程序sine8_buf_lookup.c是有用的。
创建
一张表或缓冲区sine_table当t=0,45,90,135,180,225,270和315度时,在表中或缓冲区中存sin(t)的8个点的值,(8个点都乘以1000)。
主函数内的DEC643_int();DEC643_AIC23_config();两个函数初始化DEC、音频编解码器AIC23。
主函数内的while
(1)语句产生一个无限循环,是数据不停的往外输出。
位于通信支持文件IIC.c中的TempData函数,被调用来输出缓冲区或表的初值sine_table[0]=0。
选择数据的循环变量依次增加直至指向表的末尾,这时,该循环变量被重新初始化为0。
每个抽样时间t=1/Fs=1/8000=0.125ms,sine_table(振幅=100定标)中的数据依次送到编解码器的输出上,产生正弦信号。
输出信号的周期为T=8x0.125=1ms。
相应的频率F=1/T=1kHz。
创建工程
在本节中,我们将演示如何创建一个工程,添加建立工程sine8_buf_lookup
的必要的文件。
点击桌面图标,进入CCS。
1.创建工程文件sine8_buf_lookup.pjt。
选择菜单project→New。
键入工程文件名为sine8_buf_lookup类型的工程名称如图1.3a所示。
该项目文件保存在sine8_buf_lookup中(位于D:
\sine8_buf_lookup文件夹下)。
扩展名为.pjt的工程文件保存工程文件bulid的选项、源文件名和相互关系等有关该工程的信息。
2.将工程文件中添加文件。
选择菜单project→AddFilestoProject。
在sine8_buf_lookup中查看的C源程序文件。
将CODE.c、DEC643.c、IIC.c、sine8_buf_lookup.c添加到工程中。
点击位于CCS中工程文件左边的“+”符号来扩大和验证,这4个C源文件被添加到工程中。
3.选择菜单project→AddFilestoProject,将SEED_DEC643.cmd添加到工程中
4.重复步骤3,选择文件类型是ObjectandLibraryFiles,查看目录C:
\CCStudio_v3.3\C6000\cgtools\lib,选择运行时支持库文件rts6400.lib并添加到工程,并将目录C:
\CCStudio_v3.3\C6000\csl\lib下的cslDM642.lib库文件添加到工程中。
5.验证链接命令(.CMD)文件,工程(.PJT)文件,库(.LIB)文件,两个C(.C)源文件,已被添加到工程中。
GEL文件DEC643.gel是创建项目时自动添加的。
它初始化DSK/DEC。
6.此时还没有“include”文件。
选择菜单project→ScanAllDependencies。
这样可以添加头文件。
CCS上的文件窗口如图1.3b所示。
通过点击CCS窗口中任何文件都可以显示它们的内容。
当选择ScanAllDependencies时,会自动添加头文件或包含文件,而补血药手动添加。
(a)
(b)
图1.3sine8_buf_lookup的CCS工程视窗:
(a)创建工程;(b)工程文件。
当然也可以通过简单的方法,就是将不同的窗口文件“拖到”入CCS工程窗口中。
代码生成和选项设置
程序代码生成工具C编译器和连接器有许多不同的设置选项,为了创建一个工程,需要对这些选项进行不同的设置。
编译器选项
选择菜单Project→BuildOptions。
图1.4a显示了编译器的CCS窗口。
选择以下内容作为编译器选项:
(a)Basic(在Category选项栏中选择),(b)Default(在TargetVersion选项栏中选择)(c)FullSymbolicDebug(在GenerateDebugInfo选项栏中选择)(d)Speedmostcritical(在OptSpeedvs.size选项栏中选择)(e)None(在OptLevel和ProgramLeveOpt选项栏中选择)。
由此产生的编译器选项变成
-g
-g选项允许显示符号调试信息,这在调试过程是非常有用的,-g选项表示程序代码优化,以便使调试过程更加方便。
在TargetVersion选项栏选择Default,表示启用定点实现方式DSK,则C643使用定点处理方式.
如果选中NoDebug(在GenerateDebugInfo选项栏选择)以及-o3:
File(在OptLevel选项栏中选择),编译器选项会自动改成:
–o3
-o3选项表示对性能和执行速度进行最高水平的优化。
就目前而言,对速度要求不严格(调用时也是这样)。
使用编译器选项-g也可以直接在编译器命令窗口中键入。
为了调试方便,一开始调试时没有必要优化速度。
链接器选项
从CCSBuildPotions窗口中点击Linker选项,在OutputModule选项栏中选择AbsoluteExecutable,在OutputFilename选项中键入sine8_buf_lookup.out,在AutoinitModule选项栏中选择Run-timeAutoinitialization,输出文件名默认为.pjt文件,这时链接选项应显示为图1.4(b)
-c选项是用来在运行时初始化变量的,-o选项是命名链接的可执行输出文件sine8_buf_lookup.out的。
按“ok”键。
请注意,您可以选择将可执行文件存储在一个子文件夹“Debug”中,尤其是在工程调试阶段。
再次,这些不同的选项可直接输入在适当的命令窗口内。
(a)编译器子窗口
(b)连接器子窗口
图1.4CCS选择BuildOptions时的窗口
建设和运行工程
现在可以建立和运行工程sine8_buf_lookup,过程如下:
1.建立工程sine8_buf_lookup:
选择project→RebuildAll,或按下带有三个向下箭头的工具条。
这样就会调用cl6x对所有的C源文件进行汇编和编译,调用asm6x对汇编文件vecs.asm进行编译。
然后lnk6x会将生成的目标文件与运行库支持文件rts6000.lib进行连接,最后生成可执行文件sine8_buf_lookup.out。
这个文件可以加载到C643处理器上运行。
注意,编译、汇编和连接命令要和BuildOptions中的设置配合在一起执行。
上述命令执行后,还会生成一个记录文件cc_build_Debug,文件中包含经过汇编、编译的文件以及所选择的编译选项设置的信息,同时还列出了所使用的支持函数。
图1.5显示了在CCS工程sine8_-buf_-lookup的几个窗口
2。
选择“文件”然后加载程序,通过点击sine_buf_lookup.out装载该程序(CCS包括一个选项,建立工程后会自动装载该程序),它应该是在工程sine8_intr文件夹中。
选择调试然后运行,或使用工具栏上的“跑步者”。
将扬声器连接到DSK板上的OUT连接头.你就能听到提示音。
图1.5工程sine8_buf_lookup的CCS窗口
编解码器的采样率Fs固定在8kHz。
产生的频率f=Fs/(点数)=8kHz/8=1kHz时。
将DEC的输出连接到示波器上来验证是否有幅度约0.85V(峰峰值),频率为1kHz的正弦信号。
观察窗口
检查处理器是否仍在运行。
注意CCS的左下方有一个指“DSPRUNNING”。
观察窗口允许你改变参数值或监控变量:
1.选择菜单View然后选择Qui
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 第一章