DSP原理及应用C54X.docx
《DSP原理及应用C54X.docx》由会员分享,可在线阅读,更多相关《DSP原理及应用C54X.docx(25页珍藏版)》请在冰点文库上搜索。
DSP原理及应用C54X
第一章绪论
1.1DSP的基本原理
数字信号处理(简称DSP)是一门涉及多门学科并广泛应用于很多科学和工程领域的新兴学科。
数字信号处理是利用计算机或专用处理设备,以数字的形式对信号进行分析、采集、合成、变换、滤波、估算、压缩、识别等加工处理,以便提取有用的信息并进行有效的传输与应用。
数字信号处理是以众多学科为理论基础,它所涉及的范围极其广泛。
如数学领域中的微积分、概率统计、随机过程、数字分析等都是数字信号处理的基础工具。
它与网络理论、信号与系统、控制理论、通信理论、故障诊断等密切相关。
DSP可以代表数字信号处理技术(DigitalSignalProcessing),也可以代表数字信号处理器(DigitalSignalProcessor)。
前者是理论和计算方法上的技术,后者是指实现这些技术的通用或专用可编程微处理器芯片。
数字信号处理包括两个方面的内容:
1.法的研究2.数字信号处理的实现
数字信号处理(DigitalSignalProcessing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。
20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。
数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。
数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。
数字信号处理在理论上的发展推动了数字信号处理应用的发展。
反过来,数字信号处理的应用又促进了数字信号处理理论的提高。
而数字信号处理的实现则是理论和应用之间的桥梁。
数字信号处理是以众多学科为理论基础的,它所涉及的范围极其广泛。
例如,在数学领域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。
近来新兴的一些学科,如人工智能、模式识别、神经网络等,都与数字信号处理密不可分。
可以说,数字信号处理是把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。
数字信号处理的实现方法一般有以下几种:
(1)在通用的计算机(如PC机)上用软件(如Fortran、C语言)实现;
(2)在通用计算机系统中加上专用的加速处理
(3)用通用的单片机(如MCS-51、96系列等)实现,这种方法可用于一些不太复杂的数字信号处理,如数字控制等;
(4)用通用的可编程DSP芯片实现。
与单片机相比,DSP芯片具有更加适合于数字信号处理的软件和硬件资源,可用于复杂的数字信号处理算法;
(5)用专用的DSP芯片实现。
在一些特殊的场合,要求的信号处理速度极高,用通用DSP芯片很难实现,例如专用于FFT、数字滤波、卷积、相关等算法的DSP芯片,这种芯片将相应的信号处理算法在芯片内部用硬件实现,无需进行编程。
在上述几种方法中,第1种方法的缺点是速度较慢,一般可用于DSP算法的模拟;第2种和第5种方法专用性强,应用受到很大的限制,第2种方法也不便于系统的独立运行;第3种方法只适用于实现简单的DSP算法;只有第4种方法才使数字信号处理的应用打开了新的局面。
虽然数字信号处理的理论发展迅速,但在20世纪80年代以前,由于实现方法的限制,数字信号处理的理论还得不到广泛的应用。
直到20世纪70年代末80年代初世界上第一片单片可编程DSP芯片的诞生,才将理论研究结果广泛应用到低成本的实际系统中,并且推动了新的理论和应用领域的发展。
可以毫不夸张地说,DSP芯片的诞生及发展对近20年来通信、计算机、控制等领域的技术发展起到十分重要的作用。
1.2DSP芯片的基本结构,原理和功能
数字信号处理器(DSP)是一种特别适合于进行数字信号处理运算的微处理器,主要用于实时快速实现各种数字信号处理的算法。
数字信号处理不同于普通的科学计算与分析,它强调运算的实时性。
除了具备普通微处理器所强调的高速运算和控制能力外,针对实时数字信号处理的特点,在处理器的结构、指令系统、指令流程上作了很大的改进,其主要特点如下:
(1)冯•诺伊曼(VonNeuman)结构
该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。
当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。
图1冯·诺伊曼(VonNeuman)结构
(2)哈佛(Harvard)结构
该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。
微处理器的哈佛结构如图2所示。
图2哈佛结构
(3)改进型的哈佛结构
改进型的哈佛结构是采用双存储空间和数条总线,即一条程序总线和多条数据总线。
其特点如下:
①允许在程序空间和数据空间之间相互传送数据,使这些数据可以由算术运算指令直接调用,增强芯片的灵活性;
②提供了存储指令的高速缓冲器(cache)和相应的指令,当重复执行这些指令时,只需读入一次就可连续使用,不需要再次从程序存储器中读出,从而减少了指令执行作需要的时间。
如:
TMS320C6200系列的DSP,整个片内程序存储器都可以配制成高速缓冲结构。
1.3DSP芯片的特点
(1)采用多总线结构
DSP芯片都采用多总线结构,可同时进行取指令和多个数据存取操作,并由辅助寄存器自动增减地址进行寻址,使CPU在一个机器周期内可多次对程序空间和数据空间进行访问,大大地提高了DSP的运行速度。
如:
TMS320C54x系列内部有P、C、D、E等4组总线,每组总线中都有地址总线和数据总线,这样在一个机器周期内可以完成如下操作:
从程序存储器中取一条指令;
从数据存储器中读两个操作数;
向数据存储器写一个操作数。
(2)采用流水线技术
利用这种流水线结构,加上执行重复操作,就能保证在单指令周期内完成数字信号处理中用得最多的乘法-累加运算。
如:
图3四级流水线
(3)配有专用的硬件乘法-累加器
为了适应数字信号处理的需要,当前的DSP芯片都配有专用的硬件乘法-累加器,可在一个周期内完成一次乘法和一次累加操作,从而可实现数据的乘法-累加操作。
如矩阵运算、FIR和IIR滤波、FFT变换等专用信号的处理。
(4)具有特殊的DSP指令
为了满足数字信号处理的需要,在DSP的指令系统中,设计了一些完成特殊功能的指令。
如:
TMS320C54x中的FIRS和LMS指令,专门用于完成系数对称的FIR滤波器和LMS算法。
(5)快速的指令周期
由于采用哈佛结构、流水线操作、专用的硬件乘法器、特殊的指令以及集成电路的优化设计,使指令周期可在20ns以下。
如:
TMS320C54x的运算速度为100MIPS,即100百万条/秒。
(6)硬件配置强
新一代的DSP芯片具有较强的接口功能,除了具有串行口、定时器、主机接口(HPI)、DMA控制器、软件可编程等待状态发生器等片内外设外,还配有中断处理器、PLL、片内存储器、测试接口等单元电路,可以方便地构成一个嵌入式自封闭控制的处理系统。
(7)支持多处理器结构
为了满足多处理器系统的设计,许多DSP芯片都采用支持多处理器的结构。
如:
TMS320C40提供了6个用于处理器间高速通信的32位专用通信接口,使处理器之间可直接对通,应用灵活、使用方便;
(8)省电管理和低功耗
DSP功耗一般为0.5~4W,若采用低功耗技术可使功耗降到0.25W,可用电池供电,适用于便携式数字终端设备。
1.4TMS320C54xDSP芯片的主要特性
TMS320C54x(简称’C54x)是TI公司为实现低功耗、高速实时信号处理而专门设计的16位定点数字信号处理器,采用改进的哈佛结构,具有高度的操作灵活性和运行速度,适应于远程通信等实时嵌入式应用的需要,现已广泛地应用于无线电通信系统中。
TMS320C54X是为实现低功耗、高性能而专门设计的定点DSP芯片,其主要应用是无线通信系统等。
该芯片的内部结构与TMS320C5X不同,因而指令系统与TMS320C5X和TMS320C2X等是互不兼容的。
1.4.1TMS320C54X的主要特点包括:
(1)运算速度快。
指令周期为25/20/15/12.5/10ns,运算能力为40/50/66/80/100MIPS;
(2)优化的CPU结构。
内部有1个40位的算术逻辑单元,2个40位的累加器,2个40位加法器,1个17×17的乘法器和1个40位的桶形移位器。
有4条内部总线和2个地址产生器。
此外,内部还集成了维特比加速器,用于提高维特比编译码的速度。
先进的DSP结构可高效地实现无线通信系统中的各种功能,如用TMS320C54X实现全速率的GSM需12.7MIPS,实现半速率GSM需26.2MIPS,而实现全速率GSM语音编码器仅需2.3MIPS,实现IS-54/136VSELP语音编码仅需12.8MIPS;
(3)低功耗方式。
TMS320C54X可以在3.3V或2.7V电压下工作,三个低功耗方式(IDLE1、IDLE2和IDLE3)可以节省DSP的功耗,TMS320C54X特别适合于无线移动设备。
用TMS320C54X实现IS54/136VSELP语音编码仅需31.1mW,实现GSM语音编码器仅需5.6mW;
(4)智能外设。
除了标准的串行口和时分复用(TDM)串行口外,TMS320C54X还提供了自动缓冲串行口BSP(auto-BufferedSerialPort)和与外部处理器通信的HPI(HostPortInterface)接口。
BSP可提供2K字数据缓冲的读写能力,从而降低处理器的额外开销,指令周期为20ns时,BSP的最大数据吞吐量为50Mbit/s,即使在IDLE方式下,BSP也可以全速工作。
HPI可以与外部标准的微处理器直接接口。
表1是TMS320C54X系列部分DSP芯片比较表。
TMS320C54X
指令周期(ns)
工作电压(V)
片内RAM(字)
片内ROM(字)
串行口
BSP
HPI
C541
20/25
5/3.3/3.0
5K
28K
2个标准口
C542
20/25
5/3.3/3.0
10K
2K
1个TDM口
1
1
C543
20/25
3.3/3.0
10K
2K
1个TDM口
1
C545
20/25
3.3/3.0
6K
48K
1个标准口
1
1
C546
20/25
3.3/3.0
6K
48K
1个标准口
1
C548
15/20/25
3.3/3.0
32K
2K
1个TDM口
2
1
LC/VC549
10/12.5/15
3.3/2.5
32K
16K
1个TDM口
2
1
VC5402
10
3.3/1.8
16K
4K
2
1
表1TMS320C54X的资源配置
1.4.2TMS320C54xDSP芯片的主要特性:
(1)CPU
1、先进的多总线结构。
2、40位算术逻辑运算单元(ALU),包括1个40位桶形移位寄存器和2个独立的40位累加器。
3、17位*17位并行乘法器,与40位专用加法器相连,用与非流水线式单周期乘法/累加(MAC)运算。
4、比较、选择、存储单元(CSSU),用于加法/比较选择。
5、指数编码器,可以在单个周期内计算40位累加器中数值的指数。
6、双地址生成器,包括8个辅助寄存器和2个辅助寄存器算术运算单元(ARAU)。
(2)存储器
1、192K字可寻址存储空间(64K字程序存储器、64K字数据存储器以及64K字I/O空间),在’C548和’C549中存储空间可扩展至8M字。
2、片内ROM,可配置为程序/数据存储器。
3、片内双寻址RAM(DARAM)。
4、片内单寻址RAM(SARAM)(仅’C548和’C549)。
(3)指令系统
1、单指令重复和块指令重复操作。
2、块存储器传送指令。
3、32位长操作数指令。
4、同时读入2或3个操作数的指令。
5、能并行存储和并行加载的算术指令。
6、条件存储指令。
7、从中断快速返回。
(4)在片外围电路
1、软件可编程等待状态发生器。
2、可编程分区转换逻辑电路。
3、带有内部振荡器或用外部时钟源的片内锁相环(PLL)时钟发生器。
4、全双工串行口,支持8位或16位传送(仅’C541、’LC545和’LC546)。
5、时分多路(TDM)串行口(仅’C542、’C543、’C546、’C548和’C549)。
6、缓冲串行口(BSP)(仅’C542、’C543、’C545、’C546、’C548和’C549)。
7、16位可编程定时器。
8、8位并行主机接口(HPI)(’C542、’C545、’C548和’C549)。
9、外部总线关断控制,以断开外部的数据总线、地址总线和控制信号。
10、数据总线具有总线保持器特性。
(5)电源
1、可用IDLEI、IDLE2和IDLE3指令控制功耗,以工作在省电方式。
2、CLKOUT输出信号可以关断。
(6)在片坊真接口
1、具有符合IEEE1149.1标准的在片坊真接口。
(7)速度
1、单周期定点指令执行时间为:
25/20/15/12.5/10ns(40/50/66/80/10/MIPS)。
1.5用DSP实现正弦函数的基本算法
在通信、仪器和控制等领域的信号处理系统中,可能会用到正弦发生器。
产生正弦波的方法:
1、查表法。
此中方法用于对精度要求不是很高的场合。
如果要求精度高,表就很大,相应的存储器容量也要增大。
2、台劳级数展开法。
这是一种更为有效的方法。
与查表法相比,需要的存储单元很少,而且精度很高。
一个角度θ的正弦和余弦函数,都可以展开成台劳级数,取其前5项进行近似:
Sinθ=x-x3/3!
+x5/5!
-x7/7!
+x9/9!
=x(1-x2/2*3(1-x2/4*5(1-x2/6*7(1-x2/8*9)))
Cosθ=1-x2/2!
+x4/4!
-x6/6!
+x8/8!
=1-x2/2!
(1-x2/3*4(1-x2/5*6(1-x2/7*8)))
上式中的X为θ的弧度值。
也可以有递推公式求正弦和余弦值:
Sinnθ=2cosθ*sin(n-1)θ-sin(n-2)θ
Cosnθ=2cosθ*cos(n-1)θ-cos(n-2)θ
利用递推公式计算正弦和余弦值需已知Cosθ和正、余弦的前两个值。
用这种方法,求少数点还可以,如产生连续正弦、余弦波,则积累误差太大,不可取。
第二章CCS集成开发环境
利用CCS集成开发环境,用户可以在一个开发环境下完成工程定义、程序编辑、编译链接、调试和数据分析等工作环节.
2.1CCS集成开发环境简介
CCS开发应用程序的一般步骤:
打开或创建一个工程文件.工程文件中包括源程序(C或汇编)、目标文件、库文件、连接命令文件和包含文件.
编辑各类文件.如头文件(.h文件),命令文件(.cmd文件)和源程序(.c,.asm文件)等.可以使用一般的编辑软件或CCS集成编辑环境进行各类文件编辑.
对工程进行编译.如果有语法错误,将在构建(Build)窗口中显示出来.用户可以根据显示的信息定位错误位置,更改错误.
排除程序的语法错误后,用户可以对计算结果/输出数据进行分析,评估算法性能.CCS提供了探针、图形显示、性能测试等工具来分析数据、评估性能.
图4CCS集成环境窗口示例
图4中为一个典型的CCS集成环境窗口示例.整个窗口由主菜单、工具条、工程窗口、编辑窗口、图形显示窗口、内存单元显示窗口和寄存器显示窗口等构成.
2.2建立工程文件
CCS采用工程文件来集中管理一个工程.一个工程包括源程序、库文件、链接命令文件和头文件等,它们按照目录树的结构组织在工程文件中.工程构建(编译链接)完成后生成可执行文件.工程视窗显示了工程的整个内容.例如图2-4显示了工程codec_eg.mak所包含的内容.其中Include文件夹包含源文件中以”.include”声明的文件,Libraies文件夹包含所有后缀为”.lib”的库文件,Source文件夹包含所有后缀为”.c”和”.asm”的源文件.文件夹上的”+”符号表示该文件夹被折叠,”-“表示该文件夹被展开.
命令ProjectNew用于创建一个新的工程文件(后缀为”.mak”),此后用户就可以编辑源程序、链接命令文件和头文件等,然后加入到工程中.工程编译链接后产生的可执行程序后缀为”.out”.
命令ProjectOpen用于打一个已存在的工程文件.例如用户打开位于”c:
\ti\c5400\dsk\
examples\dsp”目录下的codec_eg.mak工程文件时,工程中包含的各项信息也被载入,其工程窗口。
如图5所示。
图5工程目录
2.3在工程中添加删除文件
以下任一操作都可以添加文件到工程中:
①选择命令ProjectAddFiletoProject…
②在工程视图中右键单击调出关联菜单,选择AddFile…
在工程中源文件、链接命令文件及库文件(Libraries)需要用户指定加入,头文件(Include文件)通过扫描相关性(ScanAllDependencies)自动加入到工程中.
在工程视图中右键单击某文件,从关联莱单中选择”Removefromproject”可以从工程中删除此文件.
2.4编辑源程序
CCS集成编辑环境可以编辑任何文本文件(对C程序和汇编程序),可以打开多个窗口或对同一文件打开多个窗口,进行多窗口显示.点击主莱单命令FileNewSourceFile弹出编辑窗口进行编辑.
2.5编译和调试
A,载入可执行程序:
命令FileLoadProgram载入编译链接好的可执行程序.用户也可以修改”ProgramLoad”属性,使得在构建工程后自动装入可执行程序.设置方法为选择命令OptionsProgramLoad.
B,使用反汇编工具:
在某些时候(例如调试C语言关键代码),用户可能需要深入到汇编指令一级.此时可以利用CCS的反汇编工具.用户的执行程序(不论是C程序或是汇编程序)载入到目标板或仿真器时,CCS调试器自动打开一个反汇编窗口.如图6所示.
图6反汇编窗口
C,断点:
1、断点设置:
有两种方法可以增加一条断点:
1.使用断点对话框
选择命令DebugBreakpoints将弹出对话框如图7所示.
在”BreakpointType”栏中可以选择”无条件断点(BreakatLocation)”或”有条件断点(BreakatLocationifexpressionisTRUE)”.在”Location”栏中填写需要中断的指令地址.用户可以观察反汇编窗口,确定指令所处地址.对C代码,由于一条C语句可能对应若干条汇编指令,难以用唯一地址确定位置.为此可以采用”filenamelinelineNumber”的形式定位源程序中的一条C语句.断点类型和位置设置完成后,依次单击”Add”和”OK”按钮即可.断点设置成功后,该语句条用彩色光条显示.
图7设置断点对话框
2.采用工程工具条
将光标移到需要设置断点的语句上,点击工程工具条上的”设置断点”按钮.则该语句位置一断点,默认情况下为”无条件断点”.用户也可以使用断点对话框修改断点属性,例如将”无条件断点”改为”有条件断点”.
2、断点的删除
在图7所示断点对话框中,单击”Breakpoint”列表中的一个断点,然后点击”Delete”按钮可
删除此断点.点击”Deleteall”按钮或工程工具条上的”取消所有断点”按钮,将删除所有断点.
3、允许和禁止断点
在图7所示断点对话框中,单击”EnableAll”或”DisableAll”将允许或禁止所有断点.”允许”状态下,断点位置前的复选框有”对勾”符号.注意只有当设一断点,并使其”允许”时,断点才发挥作用.
D,查看、编辑内存
CCS允许显示特定区域的内存单元数据.方法为选择ViewMemory或单击调试工具条上的”显示内存数据”按钮.在弹出对话框中输入内存变量名(或对应地址)、显示方式即可显示指定地址的内存单元.为改变内存窗口显示属性(如数椐显示格式,是否对照显示等),可以在内存显示窗口中单击右键,从关联莱单中选择Properties即弹出如图8所示的选项对话框.
图8选项对话框
内存窗口选项包括以下内容:
Address:
输入需要显示内存区域的起始地址.
QValue:
显示整数时使用的Q值(定点位置).新的整数值=整数/2Q.
Format:
从下拉菜单中选取数据显示的格式.
UseIEEEFloat:
是否使用IEEE浮点格式.
Page:
选择显示的内存空间类型-程序、数据或I/O.
EnableReferenceBuffer:
选择此检查框将保存一特定区域的内存快照以便用于比较.
StartAddress:
用户希望保存到参考缓冲区(ReferenceBuffer)的内存段的起始地址.只有当用户选中”EnableReferenceBuffer”检查框时此区域才被激活.
EndAddress:
用户希望保存到参考缓冲区的内存段的终止地址.只有当用户选中”EnableReferenceBuffer”检查框时此区域才被激活.
UpdateReferenceBufferAutomatically:
若选择此检查框,则参考缓冲区的内容将自动被内存段(由定义参考缓冲区的起始/终止地址所规定的区域)的当前内容覆盖.
第三章用CCS环境编程,调试实现正弦函数信号
3.1编写汇编程序sin.asm和vectors.asm
3.1.1正弦波源程序清单sin.asm
;ThisfunctiongeneratesthesinewaveofangleusingtheTaylorseriesexpansion
;sin(theta)=x(I-x2/2*3(1-x'2/4*5(1-x2/6*7(1-x'2/8*9))))
;cos(theta)=1-x2/2(1-x2/3*4(1-x2/5*6(1-x'2/7*8)))
;sin(2*theta)=2*sin(theta)*cos(theta)
.title"sin.asm"
.mmregs
.defstart
;.refd_xs,d_sinx,d_xc,d_cosx
;.refsinx,d_xs,d_sinx,cosx,d_xc,d_cosx
sin_x:
.usect"sin_x",360
STACK:
.usect"STACK",10
k_theta.set286;theta=pi/360(0.5deg.)
PA0.set0
start:
.t