DSP原理及应用整套教学课件

DSP原理及应用整套教学课件

ID:81929113

大小:12.53 MB

页数:358页

时间:2023-10-26

上传者:可爱的嘎嘎
DSP原理及应用整套教学课件_第1页
DSP原理及应用整套教学课件_第2页
DSP原理及应用整套教学课件_第3页
DSP原理及应用整套教学课件_第4页
DSP原理及应用整套教学课件_第5页
DSP原理及应用整套教学课件_第6页
DSP原理及应用整套教学课件_第7页
DSP原理及应用整套教学课件_第8页
DSP原理及应用整套教学课件_第9页
DSP原理及应用整套教学课件_第10页
资源描述:

《DSP原理及应用整套教学课件》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

DSP原理及应用

1课程的主要讲述内容本课程的主要内容:1、数字信号处理和DSP系统2、DSP芯片结构和CPU外围电路3、存储结构和寻址方式4、程序流程控制5、TMS320C55XDSP的汇编指令6、DSP集成开发环境7、TMS320C55XDSP应用实例8、OMAP5912双核处理器

22.DSP在图像处理方面的应用1.DSP在通信领域的应用DSP的典型应用实例一个典型移动终端结构框图

3第一章数字信号处理和DSP系统1、数字信号处理(DigitalSignalProcessing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。2、数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估计、增强、压缩、识别等处理,以得到符合人们需要的信号形式。一、引言

4第一章数字信号处理和DSP系统3、数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。DSP理论的发展DSP应用的发展DSP的实现推动促进桥梁DSP是以众多学科为理论基础,如微积分、概率统计、随机过程、数值分析、网络理论、信号与系统、人工智能、模式识别、神经网络等。数字信号处理是把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。

5第一章数字信号处理和DSP系统4、数字信号处理的实现方法通用的计算机上用软件(如C语言)实现速度较慢。可用于DSP算法的模拟;(2)在通用计算机系统中加上专用的加速处理机实现;专用性强,应用受限;(3)用通用的单片机(如:MCS-51、96系列等)实现。只适用实现简单的DSP算法,用于一些不太复杂的数字信号处理,如数字控制等;

6第一章数字信号处理和DSP系统(4)用通用的可编程DSP芯片实现。与单片机相比,DSP芯片具有更加适合于数字信号处理的软件和硬件资源,可用于复杂的数字信号处理算法;为DSP的应用打开了新的局面。(5)用专用的DSP芯片实现。特殊的应用,要求信号处理速度极高,用通用DSP芯片很难实现,如FFT、数字滤波、卷积、相关等算法的DSP芯片,这种芯片将相应的信号处理算法在芯片内部用硬件实现。

7第一章数字信号处理和DSP系统5、20世纪70年代末80年代初世界上第一片单片可编程DSP芯片的诞生,将DSP理论研究结果广泛应用到低成本的实际系统中,推动了新的理论和应用领域的发展。可以毫不夸张地说,DSP芯片的诞生及发展对近20年来通信、计算机、控制等领域的技术发展起到十分重要的作用。

8第一章数字信号处理和DSP系统输入信号:麦克风输出的语音信号、摄像头输出的复合视频信号等。A/D:奈奎斯特抽样定理、抽样频率。DSP芯片:对输入的数字信号进行某种形式的处理。D/A:转换为模拟样值。二、DSP系统及特点抗混叠滤波A/D变换DSP芯片D/A变换平滑滤波输入输出1、DSP系统构成(典型的DSP系统)

9第一章数字信号处理和DSP系统2、DSP系统的特点DSP系统以数字信号处理为基础,具有数字处理的全部优点:(1)接口简单、方便:数字信号的电气特性简单,不同DSP系统互联时,在硬件接口上容易实现;(2)编程方便:可编程DSP芯片可使设计人员在开发过程中灵活方便地对软件进行修改和升级;容易实现复杂的算法和复杂的信号处理功能;(3)精度高、稳定性好:DSP系统以数字处理为基础,受环境温度以及噪声的影响较小,可靠性高。

10第一章数字信号处理和DSP系统(4)可重复性好:模拟系统的性能受元器件参数性能变化比较大,而数字系统基本不受影响,因此数字系统便于测试、调试和大规模生产;(5)集成方便:DSP系统中的数字部件有高度的规范性,便于大规模集成。缺点:(1)简单的信号处理任务,采用DSP使成本增加;(2)DSP系统中的高速时钟可能带来高频干扰和电磁泄漏等问题;(3)DSP系统的功耗较大。

11第一章数字信号处理和DSP系统DSP芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片具有如下主要特点:(1)在一个指令周期内可完成一次乘法和一次加法;3、可编程DSP芯片

12第一章数字信号处理和DSP系统(2)程序和数据空间分开,可以同时访问指令和数据;(3)片内具有快速RAM;(4)具有低开销或无开销循环及跳转的硬件支持;(5)快速的中断处理和硬件I/O支持;(6)具有在单周期内操作的多个硬件地址产生器;(7)可以并行执行多个操作;(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。

13第一章数字信号处理和DSP系统4、DSP系统的设计流程(DSP系统设计的一般过程)DSP应用(确定设计目标)定义系统性能指标选择DSP芯片硬件设计硬件调试软件编程软件调试系统集成系统测试和调试

14第一章数字信号处理和DSP系统(1)算法模拟:根据应用系统的目标确定系统的性能指标。根据系统要求进行算法仿真和高级语言模拟实现。确定最佳处理方法。如用MATLAB等数学开发工具对DSP算法进行优化设计和仿真测试,(2)选择DSP芯片:根据算法要求,如运算速度、运算精度、存储器大小、系统成本、体积、功耗等选择合适的DSP芯片。

15第一章数字信号处理和DSP系统设计DSP应用系统,选择DSP芯片是非常重要的,只有选定了DSP芯片,才能进一步设计其外围电路及系统的其他电路。DSP芯片的选择应根据实际的应用系统需要而确定。不同的DSP应用系统由于应用场合、应用目的不相同,DSP芯片的选择也不同的。一般来说,选择DSP芯片应考虑到如下因素:DSP芯片的运算速度算法确定运算量确定估算DSP运算速度的下限运算速度是DSP芯片的一个最重要的性能指标,是选择DSP芯片需要考虑的主要因素。下面为DSP运算速度的几种衡量指标:

16第一章数字信号处理和DSP系统指令周期:执行一条指令所需的时间,常以ns为单位。如TMS320LC549-80在主频为80MHz时的指令周期为12.5ns;MAC(Multiply-AccumulateUnit)时间:一次乘加运算的时间。大部分DSP芯片可在一个指令周期内完成一次乘法和加法操作。FFT执行时间:运行一个N点FFT程序所需的时间。FFT是典型的DSP算法运算,因此FFT运算时间常作为衡量DSP芯片运算能力的一个指标。MIPS/MFLOPS(MillionInstructionsPerSecond/MillionFloating-pointOperationsperSecond):每秒执行百万条指令和每秒百万条浮点操作。如TMS320LC549-80的处理能力为80MIPS,即每秒可执行八千万条指令;

17第一章数字信号处理和DSP系统MOPS:每秒执行百万次操作。BOPS:每秒执行十亿次操作。DSP芯片的价格DSP芯片的价格也是选择DSP芯片所需考虑的一个重要因素。采用价格昂贵的DSP芯片,即使性能再高,其应用范围受到限制,尤其是民用产品。因此根据实际系统的应用情况,需确定一个价格适中的DSP芯片。

18第一章数字信号处理和DSP系统DSP芯片的硬件资源不同的DSP芯片提供的硬件资源是不相同的,如片内RAM、ROM的数量,外部可扩展的程序和数据空间,总线接口,I/O接口等。即使是同一系列的DSP芯片(如TI的S320C54X系列)系列中不同DSP芯片也具有不同的内部硬件资源。DSP芯片的运算精度一般的定点DSP芯片的字长为16位或24位,浮点芯片的字长为32位,累加器都为40位。定点DSP芯片的价格较便宜,功耗较低,但运算精度稍低。而浮点DSP芯片的优点是运算精度高,但价格稍贵,功耗也较大。

19第一章数字信号处理和DSP系统DSP芯片的开发工具快捷、方便的开发工具和完善的软件支持是开发大型、复杂DSP系统的必备条件。TI公司的CCS集成开发环境、实时软件技术等,C语言支持(开发的时间大大缩短)。DSP芯片的功耗在某些DSP应用场合,功耗也是一个需要特别注意的问题。如便携式的DSP设备、手持设备、野外应用的DSP设备等都对功耗有特殊的要求。目前,3.3V供电的低功耗高速DSP芯片已大量使用。其他因素:封装的形式、质量标准、供货情况、生命周期等。

20第一章数字信号处理和DSP系统(3)设计实时DSP系统:包括硬件设计和软件设计两个方面。硬件设计:设计DSP芯片的外围电路及其他电路,如转换、控制、存储、输出电路等。软件设计:根据系统要求和所选的DSP芯片编写相应的DSP程序。在实际应用系统中常常采用高级语言和汇编语言的混合编程方法。采用这种方法,可缩短软件开发的周期,提高程序的可读性和可移植性,又能满足系统实时运算的要求。

21第一章数字信号处理和DSP系统(4)硬件和软件的调试:软件的调试:一般借助于DSP开发工具,如软件模拟器、DSP开发系统或仿真器等。调试DSP算法时一般采用实时结果与模拟结果相比较的方法,如果实时程序和模拟程序的输入相同,则两者的输出应该一致。硬件调试:一般采用硬件仿真器进行调试,如果没有相应的硬件仿真器,且硬件系统不是十分复杂,也可以借助于一般的工具进行调试。

22第一章数字信号处理和DSP系统(5)系统集成和系统测试阶段:调试完成后,实时系统固化在DSP系统中,将软件脱离开发系统而直接在应用系统上运行。DSP系统的开发,特别是软件开发是一个需要反复进行的过程,虽然通过算法模拟基本上可以知道实时系统的性能,但实际上模拟环境不可能做到与实时系统环境完全一致,将模拟算法移植到实时系统时必须考虑算法是否能够实时运行的问题。如果算法运算量太大不能在硬件上实时运行,则必须重新修改或简化算法。

23第一章数字信号处理和DSP系统三、DSP芯片的发展及应用(1)1978年AMI公司发布了世界上第一个单片DSP芯片S2811;(2)1979年美国Intel公司发布的商用可编程DSP芯片2920;这两种芯片都没有现代DSP芯片所必须有的单周期乘法器。(3)1980年,日本NEC公司推出的uPD7720是第一个具有乘法器的商用DSP芯片。

24第一章数字信号处理和DSP系统(4)美国德州仪器公司(TexasInstruments简称TI):第一代DSP芯片(1982年成功推出)TMS320C10及其系列产品TMS320C11、TMS320C10/C14/C15/C16/C17.第二代DSP芯片TMS32020、TMS320C25/C26/C28。第三代DSP芯片TMS320C30/C31/C32;第四代DSP芯片TMS320C40/C44;第五代DSP芯片TMS320C5X/C54X,第二代DSP芯片的改进型TMS320C2XX,集多片DSP芯片于一体的高性能DSP芯片TMS320C8X。第六代DSP芯片(目前速度最快)TMS320C62X/C67X等。

25第一章数字信号处理和DSP系统TI将常用的DSP芯片归纳为三大系列:TMS320C2000系列:包括TMS320C2X/C2XX;TMS320C5000系列:包括TMS320C5X/C54X/C55XTMS320C6000系列:包括TMS320C62X/C67X。如今,TI公司的一系列DSP产品已经成为当今世界上最有影响的DSP芯片。公司也成为世界上最大的DSP芯片供应商,其DSP市场份额占全世界份额近50%。

26第一章数字信号处理和DSP系统(6)Motorola公司在推出DSP芯片方面相对较晚。1986年,该公司推出了定点处理器MC56001。1990年,推出了与IEEE浮点格式兼容的浮点DSP芯片MC96002。(7)美国模拟器件公司(AnalogDevices,简称AD)在DSP芯片市场上也占有一定的份额,相继推出了一系列具有自己特点的DSP芯片。定点芯片:ADSP2101/2103/2105、ASDP2111/2115、ADSP2161/2162/2164以及ADSP2171/2181。浮点芯片:ADSP21000/2102、ADSP21060/21062等。

27第一章数字信号处理和DSP系统DSP芯片的应用自从20世纪70年代末80年代初DSP芯片诞生以来,DSP芯片得到了飞速的发展。DSP芯片的高速发展,一方面得益于集成电路技术的发展,另一方面也得益于巨大的市场。在近20年时间里,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。DSP芯片的价格越来越低,性价比日益提高,具有巨大的应用潜力。

28第一章数字信号处理和DSP系统DSP芯片的应用主要有:(1)信号处理:数字滤波、自适应滤波、快速傅立叶变换、相关运算、谱分析、卷积等;(2)通信:调制解调器、自适应均衡、数据压缩、程控交换、数字基站、可视电话、多路复用、扩频通信、纠错编码等;(3)语音:语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音存储等;(4)图形/图像:如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等;

29第一章数字信号处理和DSP系统(5)军事:保密通信、雷达处理、声纳处理、导航、导弹等;(6)仪器仪表:频谱分析、函数发生、锁相环、地震处理等;(7)自动控制:引擎控制、声控、自动驾驶、机器人控制、磁盘控制等;(8)医疗:助听、超声设备、诊断工具、病人监护等;(9)家用电器:高保真音响、音乐合成、音调控制、玩具与游戏、数字电话/电视等。

30第一章数字信号处理和DSP系统DSP芯片的分类可按三种方式进行分类(1)按基础特性分类:根据芯片的工作时钟和指令类型来分类静态DSP芯片:在某时钟频率范围内的任何时钟频率上,芯片都能正常工作,除计算速度有变化外,没有性能的下降。如:OKI电气公司的DSP芯片、TI公司的TMS320C2XX系列芯片。一致性DSP芯片:如果有两种或两种以上的DSP芯片,它们的指令集、相应的机器代码和管脚结构相互兼容。例如,美国TI公司的TMS320C54X。

31第一章数字信号处理和DSP系统(2)按数据格式分类根据DSP芯片工作的数据格式来分类的。定点DSP芯片:数据以定点格式工作的DSP芯片,如:TI公司的TMS320C1X/C2X、TMS320C2XX/C5X、TMS320C54X/C62XX系列。浮点DSP芯片:数据以浮点格式工作的DSP芯片,如TI公司的TMS320C3X/C4X/8X。不同浮点DSP芯片所采用的浮点格式不完全一样,有的DSP芯片采用自定义的浮点格式,如TMS320C3X,有的DSP芯片则采用IEEE的标准浮点格式。

32第一章数字信号处理和DSP系统(3)按用途分类通用型DSP芯片:适合普通的DSP应用,如TI公司的一系列DSP芯片属于通用型DSP芯片。专用DSP芯片:为特定的DSP运算而设计的,更适合特殊的运算,如数字滤波、卷积和FFT。本书主要讨论通用型DSP芯片。

33第二章DSP芯片结构和CPU外围电路讲课内容:1)TMS320C55x处理器的特点2)TMS320C55x处理器的CPU结构3)TMS320C55x处理器的CPU外围电路

342.1DSP芯片结构第二章DSP芯片结构和CPU外围电路

35第二章DSP芯片结构和CPU外围电路2.1DSP芯片结构2.1.1TMS320C55x处理器的特点采用改进的哈佛结构。1条读程序数据总线(PB),5条数据总线(BB,CB,DB,EB,FB),和他们对应的6条地址总线(PAB,BAB,CAB,DAB,EAB,FAB)40位和16位的算术逻辑单元(ALU)各1个,1个40位的移位器4个40位的累加器(AC0,AC1,AC2,AC3)和(T0,T1,T2,T3)17×17比特的硬件乘法器和一个40比特专用加法器的组合(MAC)比较、选择和存储单元数据地址产生单元(DAGEN)和程序地址产生单元(PAGEN)数据空间和和程序空间位同一物理空间,采用统一编址

36第二章DSP芯片结构和CPU外围电路2.1.2TMS320C55xCPUCPU有4个功能单元:指令缓冲单元(I单元),程序流程单元(P单元),地址数据流程单元(A单元)和数据计算单元(D单元)CPU结构示意图

37第二章DSP芯片结构和CPU外围电路1、指令缓冲单元(IUnit)由指令缓冲队列(IBQ)和指令译码器构成。I单元从程序数据总线接收程序指令代码(每次接收32比特程序代码)放到IBQ(最多可存放64字节的未译码指令)中。指令译码器从指令缓冲队列中取指令(每次取6字节的程序代码)进行变长8/16/24/32/48位)指令译码。译码后的数据分别送到P单元,A单元,D单元处理。指令缓冲单元(I单元)图

38第二章DSP芯片结构和CPU外围电路2、程序流程单元(PUnit)组成:P单元由程序地址产生逻辑电路和一组寄存器组构成。主要功能产生所有I单元读取指令所需的24比特程序地址、控制指令读取顺序。一般情况下,产生的都是(连续)顺序地址。在遇到指令要求读取非连续地址程序代码时,也可以根据来自I单元的立即数和D单元的寄存器值产生所需的地址,并将产生地址送到PAB。程序流程P单元结构图

39第二章DSP芯片结构和CPU外围电路在程序流程单元中,控制和影响程序地址的寄存器有5类:1)程序流程寄存器,包括:PC—程序计数器,RETA—返回地址寄存器,CFCT—控制流程关系寄存器;2)块重复寄存器,包括:BRC0、BRC1—块重复寄存器0和1、RSA0、RSA1—块重复起始地址寄存器,REA0、REA1—块重复结束地址寄存器0和1;3)单重复寄存器,包括:RPTC—单重复计数器,CSR—计算单重复寄存器;4)中断寄存器,包括:IFR0、IFR1(标志),IER0、IER1(使能),DBIER0、DBIER1(调试中断使能);5)状态寄存器:ST0_55、ST1_55、ST2_55、ST3_55

40第二章DSP芯片结构和CPU外围电路3、地址流程单元(AUnit)功能和组成:产生读写数据空间的地址。由数据地址产生电路(DAGEN),16比特的算术逻辑ALU电路和一组寄存器构成。DAGEN可以根据I单元的立即数和本A单元的寄存器数据产生读写数据空间的所有地址。在间接寻址中,还需要有P单元来指示采用那种寻址模式。地址流程单元结构图

41第二章DSP芯片结构和CPU外围电路A单元16位ALU的功能能接收I单元数据,又能够和存储器、I/O空间、A单元寄存器、D单元寄存器和P单元寄存器进行数据交换,完成算术、逻辑、位操作、移位、测试、旋转等操作。A单元包括的寄存器有下列4种类型:1)数据页寄存器(DataPageRegister):DPH、DP、(接口数据页)PDP2)指针寄存器(Pointers):CDPH、CDP—系数数据、SPH、SP、SSP—栈、XAR0~XAR7—辅助3)循环缓冲寄存器(CircularBufferRegisters):BK03、BK47、BKC—大小,BSA01、BSA23、BSA45、BSA67、BSAC—起始地址4)临时寄存器(TemporaryRegisters):T0~T3

42第二章DSP芯片结构和CPU外围电路4、数据计算单元(DUnit)D单元包括了CPU的主要计算部件,能够完成高效的计算功能。组成:移位器、40比特算术逻辑ALU电路、两个乘累加器(MAC)和若干寄存器组构成。移位器D单元移位器能够接收来自I单元的立即数,与存储器、I/O空间、A单元寄存器、D单元寄存器和P单元寄存器进行双向通信。此外,还向D单元的ALU和A单元的ALU提供移位后的数据。数据计算单元结构图

43第二章DSP芯片结构和CPU外围电路2.1.3CPU外围电路:除CPU以外的一些功能单元和外部接口。时钟发生器(Clock)定时器(Timer)多通道缓冲串口(McBSP)主机接口(EHPI)外部存储器接口(EMIF)通用输入/输出口(GPIO)片内存储区(Momery)DMA控制器高速指令缓冲存储器(Instructioncache)

44第二章DSP芯片结构和CPU外围电路2.2时钟发生器1、工作模式(1)功能将输入时钟CLKIN变为CPU及外围电路所需要的工作时钟。通过时钟输出脚CLKOUT输出,供其它器件使用。(2)组成时钟发生器由一个数字锁相环(DPLL)和一个模式控制寄存器(CLKMD)组成。DPLLCLKMD寄存器CLKINpinCLKOUTpinCLKMDpin

45第二章DSP芯片结构和CPU外围电路(3)两种工作模式(模式控制寄存器标志位的定义)若PLL_ENABLE=0,DPLL工作于旁路(BYPASS)模式。若PLL_ENABLE=1,DPLL工作于锁定(LOCK)模式。旁路模式中:DPLL只对输入时钟CLKIN作简单的分频,分频次数由BYPASS_DIV字段确定。若BYPASS_DIV=00,为一分频,即CLKOUT等于CLKIN。若BYPASS_DIV=01,为二分频,即CLKOUT等于CLKIN的一半。若BYPASS_DIV=1x,为四分频,即CLKOUT等于CLKIN的四分之一。

46第二章DSP芯片结构和CPU外围电路锁定模式中DPLL锁相环对输入时钟CKLIN进行跟踪锁定,可得到如下输出的时钟频率:PLL_MULT:锁定模式下的倍频次数,取值0到31PLL_DIV:锁定模式下的分频次数,取值0到3。CLKOUT=PLL_MULTPLL_DIV+1×CLKIN1

47第二章DSP芯片结构和CPU外围电路4、使用方法(1)DSP复位对时钟发生器的影响在DSP复位期间和复位后,DPLL工作于旁路模式,此时的分频次数(BYPASS_DIV)由CLKMD管脚上的电平确定,从而确定了它的输出时钟频率。若CLKMD管脚为低电平,则BYPASS_DIV=00,CLKOUT等于CLKIN。若CLKMD管脚为高电平,则BYPASS_DIV=01,CLKOUT等于CLKIN的一半。

48第二章DSP芯片结构和CPU外围电路(2)失锁对时钟发生器的影响锁相环是通过对输入基准时钟进行跟踪锁定来稳定其输出时钟的,在锁定之后,由于某些因素使其输出时钟发生偏移,即失锁。发生失锁时,DPLL的动作由IOB字段控制:若IOB=1,时钟电路会自动切换到旁路模式,并重新开始跟踪锁定过程,在锁定后又自动切换回锁定模式。若IOB=0,DPLL会继续输出时钟,而不管锁相环是否失锁

49第二章DSP芯片结构和CPU外围电路(3)省电状态对时钟发生器的影响当时钟发生器退出省电(IDLE)状态时,不管进入省电状态之前工作于什么模式,DPLL都会切换到旁路模式,并由IAI字段确定进一步操作:若IAI=1,DPLL将重新开始整个跟踪锁定过程。若IAI=0,DPLL将使用与进入省电模式之前相同的设置进行跟踪锁定

50第二章DSP芯片结构和CPU外围电路5、DPLL模式控制寄存器CLKMD(1)BREAKLN为失锁指示(只读)0:表示由于某种原因引起PLL失锁;1:表示处于锁定状态,或发生对CLKMD寄存器的写操作。(2)LOCK为锁定模式指示(只读)0:表示DPLL处于旁路模式1:表示DPLL处于锁定模式

51第二章DSP芯片结构和CPU外围电路6、时钟发生器应用举例问题:假定输入时钟频率CLKIN为20MHz,而DSP需要的工作时钟为160MHz。解:(1)需要将时钟发生电路设为锁定模式;(2)根据倍频次数PLL_MULT与分频次数PLL_DIV的关系CLKOUT=PLL_MULTPLL_DIV+1×CLKIN1

52第二章DSP芯片结构和CPU外围电路(3)取PLL_DIV和PLL_MULT为(0,8),要求DPLL失锁或退出省电状态后重新锁定,即IOB=IAI=1。例程如下:MOV#0X6413,PORT(#CLKMD)01100100000100111000100011

53第二章DSP芯片结构和CPU外围电路2.3通用定时器一、组成和框图C5509DSP片内有两个定时器:Timer0,Timer1;具有定时或计数功能。计数器在每个时钟周期减1,当减到0就产生一个输出信号。该输出信号可用于中断CPU或触发DMA传输(称为定时器事件)。定时器由时钟、控制寄存器、计数器和定时器事件等部分构成。

54第二章DSP芯片结构和CPU外围电路4比特预定标器TIN/TOUT16比特主计数器CPU中断DMA同步事件CPU时钟1、时钟部分可采用内部CPU时钟;也可采用来自TIN/TOUT管脚的外部输入时钟。2、两个定时器一个用于定时器工作(递减方式)一个用于CPU读写(设置定时长度)3、定时器事件产生三个输出信号:CPU中断、DMA同步事件、TIN/TOUT管脚输出信号。

55第六章DSP芯片内的CPU外围电路二、时钟部分定时器的工作时钟可来自DSP内部的CPU时钟,也可来自TIN/TOUT管脚输入的外部时钟。具体时钟源的选择和TIN/OUT管脚的功能由控制寄存器TCR中的FUNC字段确定。FUNC=00时,TIN/TOUT为高阻态,时钟源为CPU时钟。该模式为复位后的缺省模式。FUNC=01时,TIN/TOUT为定时器输出,时钟源为CPU时钟,可以输出时钟信号或脉冲信号。FUNC=10时,TIN/TOUT为通用输出,时钟源为CPU时钟。此时,TIN/OUT作为通用输出,其电平由控制寄存器TCR中的DATOUT字段确定。FUNC=11时,TIN/TOUT为时钟源输入,定时计数器将在其上升沿递减。

56第二章DSP芯片结构和CPU外围电路三、计数器部分C5509定时器的计数器分为两类:一类用于定时器工作,一类用于CPU设置定时长度。定时长度为20比特:4比特的预定标器和16比特的主计数器。其中,4比特的预定标值由预定标寄存器PRSC定义:16比特主定时器的值由定时周期寄存器PRD定义。

57第二章DSP芯片结构和CPU外围电路定时器的工作方式设定时器的工作时钟周期为Tclock,则定时长度T可用下式计算:定时器的设置步骤CPU将定时长度的预定标值和周期值分别写入TDDR和PRD将控制寄存器TCR中的TLB设为1,使定时器把PRD值和TDDR值分别拷贝到它的工作寄存器TIM和PSC中。把控制寄存器TCR中的TSS字段设为0启动定时器。T=Tclock×(PRD+1)×(TDDR+1)

58第二章DSP芯片结构和CPU外围电路四、定时器控制寄存器TCRIDLE_EN:省电控制使能位,0:禁止省电模式,1:允许省电模式INT/EXT:时钟源从内部切换到外部的指示标志,当时钟源从内部切换到外部要检测此位来决定是否准备好使用外部时钟。0:定时器没准备好使用外部时钟,1:定时器准备好使用外部时钟。ERR_TIM:定时器错误标志,0:正常,1:错误

59第二章DSP芯片结构和CPU外围电路FUNC:定时器工作模式选择;TLB:定时长度拷贝控制,0:停止拷贝,1:拷贝SOFT和FREE:在仿真时遇到高级语言调试器断点时的处理方式00:定时器立刻停止01和11:定时器继续运行10:在主计数器TIM减为0时停止。PWID:TIN/TOUT管脚输出脉冲的宽度。当PWID=00时,TIN/TOUT输出脉宽为1个CLKOUT周期当PWID=01时,TIN/TOUT输出脉宽为2个CLKOUT周期当PWID=10时,TIN/TOUT输出脉宽为4个CLKOUT周期当PWID=11时,TIN/TOUT输出脉宽为8个CLKOUT周期

60第二章DSP芯片结构和CPU外围电路ARB:自动重装控制。0:不自动重装,1:自动重装,即每次TIM减为0时,定时器又会把PRD值和TDDR值分别拷到TIM和PSC,继续定时。TSS:定时器停止控制,0:启动,1:停止C/P:TIN/TOUT引脚输出脉冲/时钟选择,0:输出脉冲,1:输出时钟。POLAR:TIN/TOUT引脚输出信号的极性,0:正极性,1:负极性DATOUT:TIN/TOUT引脚作通用输出时的电平,0:低电平,1:高电平

61第二章DSP芯片结构和CPU外围电路五、应用举例假定定时器0的工作时钟为160MHz,请配置定时长度为5ms的定时器。解:根据定时器公式:即(PRD+1)×(TDDR+1)=800000取TDDR=15(0x0F)、PRD=49999(0xC34F)。完成这一定时长度的程序如下:MOV#0x000f,PORT(#PRSC0);写入预定标值。MOV#0xc34f,PORT(#PRD0);写入周期值MOV#0x0fd0,PORT(#TCR0);将PRD0和TDDR0分别拷贝到TIM0和PSC0MOV#0x0Bc0,PORT(#TCR0);TLB=TSS=0,停止拷贝,开始定时

62第二章DSP芯片结构和CPU外围电路2.4外部存储器接口EMIFTMS320C5509DSP的外部存储器接口EMIF有:16位的数据总线D[15:0];4个片选输出CE[3:0]和其它多种控制信号。能支持多种不同类型的外部存储器件。

63片选空间EMIF接口的4个片选空间对应的地址如图所示。ST3_55中的MPNMC字段控制片内ROM的使用1:CE3空间长度为4MB0:后32KB空间被片上ROM占用。

64第二章DSP芯片结构和CPU外围电路一、与外部存储器接口方法C5510DSP的外部存储器接口EMIF可以提供高度灵活的接口方式,每个片选都可以连接不同类型的存储器件,单独设置读写时序参数等。支持的接口有:包括异步SRAM、ROM、FLASH(闪速存储器)、EPROM等,EMIF能够提供可配置的定时参数,提供高度灵活的存储器时序。每个接口都可以支持程序代码访问32bit数据访问、16bit数据访问、8bit数据访问。

65第二章DSP芯片结构和CPU外围电路1、片选控制寄存器CEx_1(x=0~3)根据片选控制寄存器中的MTYPE段来设置访问类型。MTYPE=000:异步,8比特宽MTYPE=001:异步,16比特宽MTYPE=010:保留MTYPE=011:16比特宽的SDRAM

66第二章DSP芯片结构和CPU外围电路2、异步存储器接口方案:低电平有效的片选信号,用于指定要访问的外部空间。CEnARDY:异步访问就绪指示,使EMIF可以延缓异步访问速度。A[13:0]:14位地址数据总线。:低电平有效的异步输出使能信号,连接异步存储器的输出使能引脚。AOE:低电平有效的异步读使能信号。ARE:低电平有效的异步写使能信号。AWE:低电平有效的字节选择信号,用于指定要访问的字节位置。BE[3:0]D[15:0]:16位数据总线

67第二章DSP芯片结构和CPU外围电路EMIF的异步读操作时序地址有效读选通有效外部器件没准备好

68第二章DSP芯片结构和CPU外围电路EMIF的异步写操作时序

69第二章DSP芯片结构和CPU外围电路与EMIF的异步接口有关的寄存器全局控制寄存器EGCR全局复位寄存器EMI_RST总线错误状态寄存器EMI_BE片选0空间控制寄存器1/2/3CE0_1/CE0_2/CE0_3片选1空间控制寄存器1/2/3CE1_1/CE1_2/CE1_3片选2空间控制寄存器1/2/3CE2_1/CE2_2/CE2_3片选3空间控制寄存器1/2/3CE3_1/CE3_2/CE3_3

70第二章DSP芯片结构和CPU外围电路全局控制寄存器EGCR(控制4个片选空间的公共参数)MEMFREQ:同步存储器的时钟频率,00:CLKEM是DSPCPU时钟01:DSP时钟的2分频。WPE:后写使能,0:禁止,1:使能MEMCEN:同步存储器时钟输出使能,决定CLKMEM是否使用ARDY:ARDY管脚上的输入电平,0:外部器件没有准备好,1:表示准备好。HOLD_:HOLD_管脚上的输入电平。HOLDA_:HOLDA_管脚上的输出电平。表示DSP对外部总线征用的响应。NOHOLD:外部总线征用使能。

71第二章DSP芯片结构和CPU外围电路总线错误状态寄存器EMI_BE(标志总线错误的类型和位置)如果访问出错,置位寄存器中相应的标志位,表示出错的原因TIME:超时错误CE3/CE2/CE1/CE0:表示访问CE3/CE2/CE1/CE0出错。DMA:DMA出错FBUS/EBUS/DBUS/CBUS:表示CPU读或写这些总线出错。PBUS:程序总线出错。

72第二章DSP芯片结构和CPU外围电路EMIF全局复位寄存器EMI_RST任何对EMI_RST寄存器的写操作都会复位EMIF状态机,但是不改变当前的配置,此寄存器不可读。

73第二章DSP芯片结构和CPU外围电路片选控制寄存器CEx_1(x=0~3)MTYPE:存储器的类型READSETUP:读建立时间,1~15个DSP时钟周期READSTROBE:读选通时间,1~15个DSP时钟周期READHOLD:读保持时间,0~3个DSP时钟周期

74第二章DSP芯片结构和CPU外围电路片选控制寄存器CEx_2(x=0~3)READEXTENDEDREAD:读延长保持时间,1~3个DSP时钟周期WRITEEXTENDEDREAD:写延长保持时间,1~3个DSP时钟周期WRITESETUP:写建立时间,1~15个DSP时钟周期WRITESTROBE:写选通时间,1~15个DSP时钟周期WRITEHOLD:写保持时间,0~3个DSP时钟周期

75第二章DSP芯片结构和CPU外围电路片选控制寄存器CEx_3(x=0~3)TIMEOUT:从选通STROBE的第三个周期开始,若在TIMEOUT个周期后,仍没有响应,视为访问超时错误。0表示不允许超时,仅对异步存储器起作用。注意:三个片选控制寄存器中除MTPYE外,其它仅对异步存储器的时序阶段设置,对同步存储器不影响。

76第二章DSP芯片结构和CPU外围电路3、同步动态RAM接口SDRAM是一种高密度,高速率的同步动态RAM,它按行列的方式来组织存储阵列,并通过行列地址对数据读写。C5509的EMIF能支持容量为64Mbit或128Mbit宽度为16位的SDRAM。

775、应用举例问题:假定有一个16位宽的异步SRAM接在EMIF的片选空间1(CE1)上,要求将C5509片内DARAM中从地址000060H开始的200个16位的数,写入该SRAM中从地址208800h开始的数据区域中。解:MOV#0x0000,PORT(#EMI_RST);复位EMIF状态机等待100个周期RPT#99;单指令无条件重复,下条指令重复99+1=100次NOP;空操作指令,需要的周期数为1MOV#0x000f,PORT(#EGCR);禁止同步时钟和总线占用请求MOV#0x121D,PORT(#CE1_1);MTYPE=001,16位异步存储器,;RSETUP=2,RSTROBE=7,RHOLD=1MOV#0319,PORT(#CE1_2);没有延长保持时间,;;WSETUP=3,WSTROBE=6,WHOLD=1MOV#0x001F,PORT(#CE1_3);TIMEOUT=31

78第二章DSP芯片结构和CPU外围电路AMOV#000060h,XAR0AMOV#208800h,XAR2RPT#199MOVdbl(*AR0+),dbl(*AR2+);利用AR间接寻址,生存地址之后+1NOP

79第二章DSP芯片结构和CPU外围电路作业:假定有一个16位宽的异步SRAM接在EMIF的片选空间1(CE1)上,要求如下:将C5510片内DARAM中从地址000060H开始的100个16位的数,写入该SRAM中从地址208800h开始的数据区域中。读/写建立、读/写选通、读/写保持时间均为3个DSP时钟周期。读/写延长保持时间为2个DSP时钟周期设计任务:(1)画出EMIF与该SRAM接口连接图(2)试编写完成设计要求的程序

80第二章DSP芯片结构和CPU外围电路2.5增强型主机接口EHPIC5509DSP有一个16位的增强型主机接口EHPI,可与外部主机相连,使DSP系统受控于外部主机。EHPI主要有:地址寄存器HPIA,数据寄存器HPID,控制寄存器HPIC和控制逻辑构成。通过专门的EHPI通道与DSP内的DMA控制器相连,使主机能够访问DSP的片内存储空间和部分外部存储空间。

81第二章DSP芯片结构和CPU外围电路一、地址/数据14位的地址总线HA[13:0]:可以访问16K×16的存储空间数据总线HD[15:0]:用于连接外部主机和内部的数据寄存器HPID,支持8比特、16比特的数据访问。字节选择信号HBE[1:0]:用于选择访问的字节HBE[1:0]=00:按字的方式访问,使用16位数据总线HD[15:0]HBE[1:0]=01:访问字的高8位,使用数据总线的高8位HD[15:8]HBE[1:0]=10:访问字的低8位,使用数据总线的低8位HD[7:0]

82第二章DSP芯片结构和CPU外围电路二、选通信号EHPI的选通信号包括片选信号HCS_:低电平有效,表示地址线和控制线上的输入为有效输入。数据选通HDS1_和HDS2_:用于控制主机访问期间的数据传递。以两个信号的异或非为准,低电平有效,脉冲宽度至少为2个DSP时钟周期。地址选通HAS_:只是在复用模式下使用(与地址线HA2共用一个管脚),EHPI在其上升沿有效,将数据总线上的信号锁存到地址寄存器HPIA中。

83第二章DSP芯片结构和CPU外围电路三、控制信号1、就绪信号HRDYHRDY为低电平:表示EHPI忙,主机需要插入等待时间HRDY为高电平:表示EHPI已完成本次数据传输,主机可以再次发起访问。2、读写信号HR/W_HR/W_为高电平:主机读EHPI。HR/W_为低电平:主机写EHPI。3、主机中断信号HINT_用于DSP向主机发送负脉冲形式的中断信号。

84第二章DSP芯片结构和CPU外围电路4、寄存器访问选择HCNTL0和HCNTL1(用于选择访问的寄存器)在非复用模式下只使用HCNTL0HCNTL0为低电平:访问EHPI控制寄存器HPIC。HCNTL0为高电平:访问EHPI数据寄存器HPID。在复用模式下,使用HCNTL0和HCNTL1来选择要访问的寄存器HCNTL[1:0]=00:访问EHPI控制寄存器HPIC。HCNTL[1:0]=01:按地址递增的方式访问数据寄存器HPID。HCNTL[1:0]=10:访问地址寄存器HPIA。HCNTL[1:0]=11:按随机地址方式访问数据寄存器HPID。

85第二章DSP芯片结构和CPU外围电路四、EHPI的寄存器16位的地址寄存器HPIA:用于在复用模式下存放地址。工作于自动递增模式时,HPIA的值在每次访问后自动加1,因此,只需要设置数据块的起始地址,就可以访问一连续存放的数据。16位的数据寄存器HPID:用于存放读写的数据。16位的控制寄存器HPIC15~2:reserved:保留1:DSPINT:主机对DSP的中断,0:清除中断;1:向DSP发送中断请求。0:reserved:保留

86第二章DSP芯片结构和CPU外围电路五、EHPI对DSP的复位DSP的复位信号来自RESET管脚,当复位信号为低电平时,DSP复位。六、接口时序主机和DSP有两种接口时序方式:非复用方式和复用方式。

87第二章DSP芯片结构和CPU外围电路非复用模式HPID用于临时存放要通过EHPI传送的数据。如果是读操作,则HPID中装有在DSP存储区中读到的数据;如果是写操作则HPID中装有要写入DSP存储区的数据。通过配置控制寄存器HPIC可以向DSP发中断,并且可以控制DSP的复位。要访问HPIC必须使HCNTL0信号为低。

88第二章DSP芯片结构和CPU外围电路复用模式(a)为信号被使用时的连接(b)为高电平(不被使用)时的连接

89第二章DSP芯片结构和CPU外围电路七、应用举例用一片C5509(DSP1)的EMIF与另一片C5509(DSP2)的EHPI相连,DSP1为主机,采用非复用模式于DSP2通信,并由GPIO来选择要访问的对象(HPIC或数据空间)。要求DSP1向DSP2中的缓冲区写入一段数据后用中断方式通知DSP2对该段数据进行处理。假定DSP1中的数据缓冲区起始地址为000100h,长度为100个字;DSP2中的数据缓冲区的起始地址为000060,长度为200个字。(连接方式如教材32页所示)

90第二章DSP芯片结构和CPU外围电路DSP1中完成该任务的程序如下:MOV#0x000100,XAR0;源地址MOV#0x200060,XAR1;目标地址,采用CE1,起始地址为20000hMOV#0x0001,port(#IODIR);配置GPIO0为输出MOV#0x0001,port(#IODATA);GPIO0输出高电平RPT#99MOV*AR0+,*AR1+MOV#0x0000,port(#IODATA);GPIO输出低电平,要访问DSP2的HPICMOV#0x0003,*AR1;DSPINT=1,向DSP2发中断。RPT#3NopMOV#0x0001,*AR1;DSPINT=0,停止向DSP2发中断GPIO0和HCNTL0相连,HCNTL0=1,访问数据区

91第二章DSP芯片结构和CPU外围电路2.6多通道缓冲串口McBSP一、概述1、McBSP的功能全双工通信双缓冲数据寄存器,允许连续的数据流。收发独立的帧信号和时钟信号可以与工业标准的编/解码器,以及其它串行A/D、D/A接口数据传输可以利用外部时钟、或是片内的可编程时钟。利用DMA为McBSP服务时,串口数据读写具有自动缓冲能力。

92第二章DSP芯片结构和CPU外围电路2、其它的特点可与多达128个通道进行收发;支持传输的数据字长可以是8bit、12bit、16bit、20bit、24bit、32bit内置u律和A律压扩硬件。对8bit数据的传输,可选择LSB先传,还是MSB先传。可设置帧同步信号和数据时钟信号的极性。内部传输时钟和帧同步信号可编程程度高。u律(m-Law)压扩主要用在北美和日本等地区的数字电话通信中。m为确定压缩量的参数,它反映最大量化间隔和最小量化间隔之比。A律(A-Law)压扩主要用在欧洲和中国大陆等地区的数字电话通信中。A为确定压缩量的参数,它反映最大量化间隔和最小量化间隔之比。

93第二章DSP芯片结构和CPU外围电路一、基本结构C5509有三个多通道缓冲串口McBSP,每个McBSP可以分为收发通道、时钟与帧同步、多通道选择和串口事件等4部分。McBSP在外部通过若干管脚与其它串行器件相连,在内部通过16位的外设总线与CPU和DMA控制器相连。外时钟

94第二章DSP芯片结构和CPU外围电路1、收发通道接收通道由接收数据管脚DR、接收时钟CLKR、接收帧同步FSR、接收移位寄存器RSR、接收缓冲寄存器RBR和数据接收寄存器DRR组成。发送通道由发送数据管脚DX、发送时钟CLKX、发送帧同步FSX、发送移位寄存器XSR和数据发送寄存器DXR组成。数据压扩器,对发送的数据按µ律或A律压缩再发送,对接收的数据进行扩展。是个可选项,可通过控制寄存器进行选择。McBSP的收发通道是相对独立的,可单独使用,也可同时使用。可根据要求对相应的寄存器进行配置。

95第二章DSP芯片结构和CPU外围电路2、接收通道接收的数据到达管脚DR,在接收时钟CLKR的上升沿(或下降沿)被逐位依次移入RSR。收满一个字后,被拷贝到缓冲寄存器RBR,再拷贝到数据接收寄存器DRR,同时设置接收标志位RRDY,并通过串口事件通知CPU或DMA已经接到数据。CPU或DMA可以通过外设总线从DRR读取接收到的数据。

96第二章DSP芯片结构和CPU外围电路3、发送通道CPU或DMA将数据写入数据发送寄存器DXR,接着拷贝到发送移位寄存器XSR,在发送帧同步FSX后,CLKR的上升沿(或下降沿)到来时,XSR的内容被逐位依次移到发送管脚DX上。同时,McBSP也会设置发完标志XRDY,并通过串口事件通知CPU或DMA数据已发出去。这种多级缓冲方式使得片内的数据搬移和外部数据的通信可以同时进行。

97第二章DSP芯片结构和CPU外围电路4、时钟与帧同步(时钟和帧同步具有灵活的信号形式和设置手段)McBSP的时钟与帧同步由一组寄存器和一个采样速率发生器SRG组成。用户可以通过寄存器设定相应的参数,采样速率发生器SRG就会根据这些参数将输入参考时钟变为所需要的串口时钟和帧同步信号。(1)采样速率发生器的输入参考时钟SRG的工作原理:通过对输入参考时钟进行分频得到所需要串口时钟和帧同步信号。可供选择的输入参考时钟有4个。来自CLKX脚的发送时钟来自CLKR脚的接收时钟来自CLKS脚的输入时钟(外时钟)来自时钟发生器的CPU时钟

98第二章DSP芯片结构和CPU外围电路究竟选用哪个时钟,由采样速率发生寄存器2(SRGR2)中的CLKSM字段和管脚控制寄存器(PCR)中的SCLKME字段来确定。当SCLKME=0,CLKSM=0时,选择CLKS脚上的输入信号为输入参考时钟;当SCLKME=0,CLKSM=1时,选择CPU时钟作为参考时钟;当SCLKME=1,CLKSM=0时,选择CLKR脚上的时钟为参考时钟;当SCLKME=1,CLKSM=1时,选择CLKX脚上的时钟为参考时钟。(2)采样速率发生器的输出时钟和帧同步输入的参考时钟经过分频产生SRG输出时钟CLKG。分频次数由采样速率发生寄存器1(SRGR1)中的CLKDV字段(8bit)根据如下公式决定:FCLKG=Fclocksource/(CLKDV+1),1≤CLKGDV≤255串口的最高时钟速率为CPU时钟的一半

99第二章DSP芯片结构和CPU外围电路帧同步信号FSG由CLKG进一步分频而来,分频次数由采样速率发生寄存器2(SRGR2)中的FPER(12bit)字段根据如下公式确定:帧同步脉冲的宽度由抽样速率发生寄存器1(SRGR1)中的FWID字段确定:抽样速率发生器产生的时钟和帧同步信号既可以用来驱动接收通道的时钟和帧同步,也可以用来驱动发送通道的时钟和帧同步。FFSG=FCLKG/(FPER+1)=Fclocksource/(CLKDV+1)(FPER+1)0≤FPER≤4095WFSG=(FWID+1)×TCLKG0≤FWID≤255,TCLKG为CLKG的周期

100第二章DSP芯片结构和CPU外围电路(3)时钟信号的方向性和极性时钟管脚CLKX和CLKR的方向分别由管脚控制寄存器(PCR)中的CLKXM和CLKRM字段控制,而CLKS管脚则只能是输入。当CLKX(R)M=1时,CLKX(R)由CLKG驱动,为输出;当CLKX(R)M=0时,CLKX(R)由外部管脚驱动,为输入。

101第二章DSP芯片结构和CPU外围电路CLKX管脚和CLKR管脚上信号的极性分别由管脚控制寄存器(PCR)中的CLKXP和CLKRP字段控制,CLKS管脚上信号的极性由采样速率发生器2(SRGR2)中的CLKSP字段确定。CLKXP=CLKRP=CLKSP=0时,CLKX、CLKR和CLKS为正极性,以上升沿开始。CLKXP=CLKRP=CLKSP=1时,CLKX、CLKR和CLKS为负极性,以下降沿开始。

102第二章DSP芯片结构和CPU外围电路(4)帧同步信号的方向和极性发送帧同步FSX的方向由管脚控制寄存器(PCR)中的FSXM字段和采样速率发生寄存器2(SRGR2)中的FSGM字段共同确定。当FSXM=0,FSGM=x时,FSX为输入,由外部信号源驱动;当FSXM=1,FSGM=0时,FSX为输出,由DXR到XSR的拷贝动作驱动;当FSXM=1,FSGM=1时,FSX为输出,由FSG驱动。发送帧同步FSX的极性由管脚控制寄存器(PCR)中的FSXP字段确定。当FSXP=0时,FSX为正极性,即高电平有效;当FSXP=1时,FSX为负极性,即低电平有效。

103第二章DSP芯片结构和CPU外围电路接收帧同步FSR的方向由管脚控制寄存器(PCR)中的FSRM字段确定。当FSRM=0时,FSR为输入,由外部信号源驱动;当FSRM=0时,FSR由内部FSG驱动。接收帧同步FSR的极性由管脚控制寄存器(PCR)中的FSRP字段确定。当FSRP=0时,FSR为正极性,即高电平有效;当FSRP=1时,FSR为负极性,即低电平有效.

104第二章DSP芯片结构和CPU外围电路(5)同步SRG的输入参考时钟可以是内部时钟(CPU时钟),也可以是外部输入时钟(来自CLKX、CLKR或CLKS管脚)。当采用外部时钟源时,一般需要同步。同步与否由采样速率发生器2(SRGR2)中的GSYNC字段控制。当GSYNC=0时,SRG将自由运行,并按CLKGDV、FPER和FWID等参数的配置产生输出时钟;当GSYNC=1时,CLKG和FSG将同步到外部输入时钟。

105第二章DSP芯片结构和CPU外围电路5、多通道选择(在一帧数据中,最多可包含128个数据单元,每个数据单元对应一个通道)McBSP属于多通道串口,最多可以有128个通道,其多通道选择部分由多通道控制寄存器MCR、接收通道使能寄存器RCER和发送通道使能寄存器XCER构成。多通道控制寄存器MCR作为总控制,可以禁止或使能全部128个通道。RCER和XCER可以分别禁止或使能某个接收和发送通道。每个寄存器控制16个通道。因此,128个通道需要8个通道使能寄存器。

106第二章DSP芯片结构和CPU外围电路

107第二章DSP芯片结构和CPU外围电路6、串口事件McBSP可以发起6个串口事件接收中断RINT发送中断XINT接收同步事件REVTA_bis模式的接收同步事件REVTA发送同步事件XEVTA_bis模式的发送同步事件XEVTARINT和XINT与CPU相连,可以中断CPUREVT、REVTA、XEVT和XINT则与DMA控制器相连,可以用于DMA同步事件,触发DMA传输

108第二章DSP芯片结构和CPU外围电路收发中断的产生分别由串口控制寄存器1(SPCR1)中的RINTM字段和串口控制寄存器2(SPCR2)中的XINTM字段控制。

109第二章DSP芯片结构和CPU外围电路用于DMA接收事件和发送事件的REVT、REVTA、XEVT和XEVTA则分别由接收标志RRDY和发送标志XRDY两个标志触发。其中:REVT和XEVT为McBSP工作于常规模式时的DMA同步事件REVTA和XEVTA为McBSP工作于A_bis模式时的DMA同步事件。

110第二章DSP芯片结构和CPU外围电路二、工作模式根据McBSP在通信中所处的地位和功能,工作模式可分为:多通道缓冲模式SPI模式A-bis模式数字回环模式GPIO模式省电模式

111第二章DSP芯片结构和CPU外围电路1、多通道缓冲模式是McBSP的一种常规模式。在此模式下,根据其所处的地位有可分为主方和从方。主方提供通信所需的时钟和帧同步,所以其时钟和帧同步都由内部SRG驱动,为输出;从方所需的时钟和帧同步来自主方,其时钟和帧同步由外部器件驱动,为输入。在多通道缓冲模式下,传输由帧同步上升沿(或下降沿)触发,并在时钟上升沿(或下降沿)收(发)一个数据比特,支持1到128个传输通道的多通道传输。

112第二章DSP芯片结构和CPU外围电路2、SPI模式SPI协议是一种主—从配置的,支持一个主方,一个或多个从方的串行通信协议。由4个信号构成:串行数据输入MISO(主设备输入、从设备输出)、串行数据输出MOSI(主设备输出、从设备输入)、移位时钟SCK和从方使能SS。McBSP的时钟停止模式:指其时钟会在每次数据传输结束时停止,并在下次数据传输时立即启动或延时半个周期后再启动。

113第二章DSP芯片结构和CPU外围电路3、A-bis模式A-bis模式是McBSP提供的一种比特域抽取—扩展的工作模式。此模式下,McBSP能从一条PCM链路上接收或发送1024个比特。发送时,它将1024个有效数据比特按给定的发送图案扩展到PCM链路上;接收时,则从PCM帧中按给定的接收图案抽取出1024个有效比特。4、数字回环模式用于在只有一个DSP时,测试其McBSP的情况。数字回环DLB模式能在McBSP内部将收发部分连在一起,即DR与DX、FSR、FSX、CLKX与CLKR,

114第二章DSP芯片结构和CPU外围电路在McBSP中有两种回环在复位时,McBSP内部将从图中(1)的位置进行回环,此时若向DXR写一个数,4个周期以后就能从DRR收到该数据。在复位以后,通过串口控制寄存器1(SPCR1)中的DLB的控制使McBSP内部从图中(2)的位置进行回环。当DLB=0时,不回环;当DLB=1时,从位置(2)进行回环。(1)(2)

115第二章DSP芯片结构和CPU外围电路5、GPIO模式McBSP处于复位状态时,它的7个管脚(书表6-22)在管脚控制寄存器PCR和串口控制寄存器SPCR的控制下可以用作通用输入输出(GPIO)。其中CLKX、CLKR、FSX和FSR既可设为输入又可设为输出,输入/输出电平值由相应的极性控制位确定;DX只能为输出;DR和CLKS则只能为输入。

116第二章DSP芯片结构和CPU外围电路6、省电模式在C5509DSP总的省电控制和管脚控制寄存器PCR中IDLE_EN的控制下,可以使McBSP进入省电模式,以降低功耗。

117第二章DSP芯片结构和CPU外围电路三、收发格式与参数设置帧同步有效表示一帧串行数据传输的开始。每次收发数据传输都从帧同步开始,每个数据帧可以有两个阶段,即阶段1和阶段2,每个阶段可有1到128个字,每个字可以是8、12、16、20、24、或32比特。每一帧最多传送4096bit的数据,因为FPER控制字段只有12bit。(字段设置参见教材38页,表2-21)

118第二章DSP芯片结构和CPU外围电路数据比特的延迟:当帧同步有效后,一般在其后的第一个时钟周期启动该帧的传输,如果需要,数据的发送/接收的起始时刻相对于帧信号的起始点可以存在一定的延时。延时范围可以从0到2个周期的传输时钟。对收发数据还可按μ律或A律进行压扩,选择是MSB先还是LSB先由于收发通道寄存器都是16位的,所以对字长不足或超过16比特的数据可以进行左对齐或右对齐调整。选择左对齐时,McBSP将用0填充LSB;选择右对齐时,McBSP可以用0填充MSB,也可用符号扩展方式填充MSB。

119第二章DSP芯片结构和CPU外围电路四、异常处理每个多通道缓冲串口McBSP有下列5个事件会导致错误:接收过速,由标志RFULL=1表示;接受帧同步错误,由标志RSYNCERR=1表示;发送数据重写;发送寄存器空,由标志=0表示;发送帧同步错误,由标志XSYNCERR=1表示。

120第二章DSP芯片结构和CPU外围电路1、接收过速是指在接收通道上的3个寄存器已满时造成的数据丢失,通过标志RFULL=1来表示。因为RSR、RBR和DRR中都有数据,所以当下一个数据到来时就会覆盖RSR使RSR中的数据丢失。2、发送数据重写发送数据重写是指CPU或DMA在DXR中的数据被拷贝到XSR之前又对DXR写入新的数据,使DXR中的数据被覆盖而丢失。

121第二章DSP芯片结构和CPU外围电路3、发送寄存器空与发送数据重写相对应,发送寄存器空则是由于CPU或DMA写入太慢,使得发送帧同步出现时,DXR还未写入新值,这样XSR中的值就会不断重发,直到DXR写入新值为止。

122第二章DSP芯片结构和CPU外围电路4、接受帧同步错误接受帧同步错误是指在当前数据帧的所有数据比特还未收完时出现了帧同步信号。由于帧同步表示一帧的开始,所以出现帧同步时,接收器就会停止当前帧的接收并重新开始下一帧的接收,从而造成当前帧数据的丢失。5、发送帧同步错误与接收帧同步错误相对应,发送帧同步错误是指当前帧的所有数据比特未发送完之前出现了发送帧同步信号。此时,发送器将终止当前帧的传送,并重新开始下一帧的传送。

123第二章DSP芯片结构和CPU外围电路应用举例:利用McBSP0来发送一段数据,要求如下:(1)采用多通道缓冲模式;(2)发送时钟和帧同步由内部采样速率发生器驱动,接收时钟和帧同步由外部输入驱动;(3)发送时钟速率为CPU时钟速率的1/4,帧同步周期为18个CLKG,脉冲宽度为2个CLKG;(4)收发都是每帧1个阶段,每阶段1个字,字长16比特,不压扩,1比特延迟;(5)采用查询发送标志XRDY和接收标志RRDY的方式进行收发。

124第二章DSP芯片结构和CPU外围电路程序实现分析:MOV#0x0000,PORT(#SPCR1_1);;设置串口控制寄存器1,要求(1),RRST_=0:复位McBSP接收机MOV#0x0a00,PORT(#PCR_1);设置串口管脚控制寄存器,要求(2)。;设置接收引脚,;FSXM=CLKXM=1,发送时钟和帧同步由内部驱动;;FSRM=CLKRM=0,接收时钟和帧同步由外部驱动MOV#0x0103,PORT(#SRGR1_1);要求(3)。对采样速率发生寄存器设置;设置发送时钟速率,;CLKGDV=(3)10=00000011,SRG输出时钟4分频;;FWID=(1)10=00000001,帧同步脉冲的脉宽为2个CLKG周期0000000100000011

125第二章DSP芯片结构和CPU外围电路MOV#0x3011,PORT(#SRGR2_1);对采样速率发生寄存器2进行设置;0011000000010001;CLKSM=1,选择CPU时钟为参考时钟;FSGM=1,采用FSG做内部帧同步驱动;FPER=(17)10=(000000010001)2MOV#0x0040,PORT(#XCR1_1);要求(4),对发送控制寄存器1进行设置;XFRLEN1=0000000,帧长为一个字;;XWDLEN1=010,字长为16比特MOV#0x0001,PORT(#XCR2_1);对发送控制寄存器2进行设置;XPHASE=0,每帧一个阶段;0000000000000001;XDATDLY=01,发送时1比特延迟0000000001000000

126第二章DSP芯片结构和CPU外围电路MOV#0x0040,PORT(#RCR1_1);要求(4),对接收控制寄存器1进行设置,;RFRLEN1=0000000,帧长为一个字;;RWDLEN1=010,字长为16比特MOV#0x0001,PORT(#RCR2_1);对接收控制寄存器2进行设置,;RPHASE=0,每帧一个阶段;RDATDLY=01,发送时1比特延迟MOV#0x0001,PORT(#MCR1_1);对多通道控制寄存器1进行设置,;无需多个通道。RMCM=1,不使能所有接收通道MOV#0x0001,PORT(#MCR2_1);对多通道控制寄存器2进行设置;;XMCM=01,不使能所用发送通道00000000010000000000000000000001

127第二章DSP芯片结构和CPU外围电路MOV#0x0040,PORT(#SPCR2_1);设置串口控制寄存器2;GRST=1,启动采样速率发生器。MOV#0x00C1,PORT(#SPCR2_1);FRST=1,启动帧同步。MOV#0x0041,PORT(#SPCR2_1);XRST=1,启动发送器。MOV#0x0001,PORT(#SPCR1_1);RRST=1,启动接收器;要求(5)XRDY_TRANSMIT:MOVPORT(#SPCR2_1),T0AND#0x0002,T0BCCRRDY_RECEIVE,T0==#0;若XRDY=0,就去查RRDYMOV#0xAAAA,PORT(#DXR_1);若XRDY=1,就发送一个数

128第二章DSP芯片结构和CPU外围电路RRDY_RECEIVE:MOVPORT(#SPCR1_1),T0AND#0x0002,T0BCCRRDY_RECEIVE,T0==#0;若RRDY=0,就去查XRDYMOVPORT(#DRR1_1),T1;若RRDY=1,就接收一个数BXRDY_TRANSMIT

129第二章DSP芯片结构和CPU外围电路2.7通用输入输出GPIO一、GPIO口C5509DSP配有一个专门的通用输入输出口GPIO。它由8个相互独立的可编程管脚(IO0~IO7)构成。GPIO口各个管脚的输入或输出由方向寄存器IODIR设定,各个管脚上的输入/输出电平由寄存器IODATA控制。IOxDIR:0-输入,1-输出IOxDATA:0-低电平,1-高电平

130第二章DSP芯片结构和CPU外围电路二、通过GPIO进行自举模式设定在C5509复位时,GPIO口的IO[3:1]还作为DSP自举模式的设定,DSP在复位信号的上升沿采样这三个管脚上的电平,并将它们锁存到自举模式寄存器BOOT_MOD里。在采样以后,这三个管脚就可用作通用输入输出了。三、GPIO的使用举例MOV#0x0001,port(#IODIR);配置GPIO0为输出MOV#0x0001,port(#IODATA);GPIO0输出高电平

131DMA控制器第二章DSP芯片结构和CPU外围电路2.8DMA控制器通过4个端口和6个通道与DSP的IO资源相连。内部通过32位宽的DMA总线互联。能够独立于CPU工作,完成I/O资源间的数据传输,而不影响CPU执行做其它的事情,类似于PC机的后台处理。有一个EHPI辅助端口和EHPI辅助通道,可以直接和主机相连,DMA的各个传输通道采用时分复用(TDM)的方式分享DMA总线。

132第二章DSP芯片结构和CPU外围电路注意:对于EMIF,SARAM,DARAM,外设和EHPI,除了EHPI与外设之间,以及EHPI与其本身不可以使用DMA外,其它相互之间以及自身都可以通过DMA搬运数据。(表6-39)

133第二章DSP芯片结构和CPU外围电路一、EHPI通道EHPI端口和EHPI通道为主机专用。外部主机通过EHPI通道可以访问EMIF、SARAM和DARAM。1、EPHI通道的优先级的问题:通过对DMA全局控制寄存器DMA_GCR,可以设置EHPI通道的优先级。当EHPIPRIO=0时,EHPI通道为低优先级;当EHPIPRIO=1时,EHPI通道为高优先级。

134第二章DSP芯片结构和CPU外围电路2、EHPI通道与其余6个通道分享DSPIO资源的方式由DMA全局控制寄存器(DMA_GCR)中的EHPIEXCL字段确定:EHPIEXCL=0时,为共享模式,即EHPI通道与DMA的其余通道共享EMIF、SARAM和DARAM;EHPIEXCL=1时,为独占模式,即EHPI通道独占SARAM和DARAM,其余DMA通道只能访问EMIF和外设。

135第二章DSP芯片结构和CPU外围电路二、DMA通道传输配置DMA通道的传输过程:先从数据源读入数据,放到通道的FIFO缓冲区里,然后再从FIFO缓冲区取出写到目的端口。DMA控制器有两套寄存器:一套为配置寄存器,供CPU写入所需的配置值;一套为工作寄存器,供DMA通道工作时使用。因此,DMA通道正在执行数据传输时,CPU可以写入下次传输的配置参数,而不影响正在进行的传输。

136第六章DSP芯片内的CPU外围电路1、数据块、帧和单元DMA通道一次传输一个数据块(Block),该数据块由若干帧(Frame)构成,每帧由若干数据单元(Element)构成,每个数据单元又由若干比特构成。每个数据块包含的帧数由DMA通道数据帧数寄存器(DMA_CFN)指定,范围为1到65535帧。每帧包含的数据单元数由DMA通道数据单元数量寄存器(DMA_CEN)指定,范围为1到65535.数据单元的比特数由DMA通道参数寄存器(DMA_CSDP)的DATATYPE指定当DATATYPE=00时,每个数据单元长8比特;当DATATYPE=01时,每个数据单元长16比特;当DATATYPE=10时,每个数据单元长32比特。

137第二章DSP芯片结构和CPU外围电路2、传输类型与数据打包DMA支持的数据传输类型有:8、16、24、32bit。问题:DMA总线宽度为32位,最多能支持两个16位的或一个32位的数据传输,当所传输的数据单元长度小于总线宽度时,DMA传输效率降低。比如8比特长数据单元的传输,4次才传32比特。数据打包:将4个8比特单元打包成一个32比特的数据包,则只需传递一次。提高了传输效率。通过DMA通道参数寄存器(DMA_CSDP)中的DST(SRC)PACK字段可以设定数据打包功能。DST(SRC)PACK=0时,不打包;等于1时,对数据打包传输。

138第二章DSP芯片结构和CPU外围电路3、目的端口和源端口的类型DMA通道传输的目的端口和源端口的类型由DMA通道参数寄存器(DMA_CSDP)中DST(SRC)字段指定。DST(SRC)=xx00时,目的(源)为SARAMDST(SRC)=xx01时,目的(源)为DARAMDST(SRC)=xx10时,目的(源)为EMIFDST(SRC)=xx11时,目的(源)为外设

139第二章DSP芯片结构和CPU外围电路4、数据源和目的地址DMA传输采用字节地址,每次传输的数据块大小也是以字节为单位的。(1)DMA通道的数据源的起始地址通道数据源的起始地址DMA_CSSA_L存放低16位地址通道数据源的起始地址DMA_CSSA_U存放高16位地址(2)DMA通道的目的起始地址通道数据源的起始地址DMA_CDSA_L存放低16位地址通道数据源的起始地址DMA_CDSA_U存放高16位地址

140第二章DSP芯片结构和CPU外围电路(3)数据传输时地址的修改方式由DMA通道控制寄存器DMA_CCR.DST(SRC)AMODE字段指定DST(SRC)AMODE=00时,目的(源)地址为固定地址;DST(SRC)AMODE=01时,目的(源)地址在每个单元传输完后自动加1;DST(SRC)AMODE=10时,目的(源)地址在每个单元传输完后自动递增一个索引长度值。索引值由数据单元索引寄存器(DMA_CEI)指定。DST(SRC)AMODE=11时,目的(源)地址按单元和帧进行双索引。索引值由数据单元索引寄存器(DMA_CEI)和帧索引寄存器(DMA_CFI)指定。

141第二章DSP芯片结构和CPU外围电路5、单次传输与多次传输DMA通道可以有单次传输和多次传输两种模式。单次传输:DMA通道在传完一个数据块以后就自动停止。多次传输,DMA通道在传完一个数据块以后又会将配置参数从配置寄存器拷到工作寄存器,继续传输下一个数据块。一个DMA通道的传输模式由DMA通道控制寄存器(DMA_CCR)中的AUTOINIT、ENDPROG和REPEAT字段控制。

142第二章DSP芯片结构和CPU外围电路6、DMA传输的启动配置好传输参数后,两种方法可以启动DMA通道的数据传输。一种是由CPU直接将通道控制寄存器(DMA_CCR)中的通道使能字段EN置为1,DMA通道就会立即开始传输;另一种是由外部DMA同步事件来触发DMA通道的数据传输(如McBSP的XEVT事件等),此时DMA传输不会立即开始,而要等到指定的事件发生以后才会开始。

143第二章DSP芯片结构和CPU外围电路C5509中共有20个DMA同步事件可以触发DMA传输:6个外部中断2个定时器中断12个McBSP事件(每个串口4个)具体由哪个事件来触发,由通道控制寄存器(DMA_CCR)中的同步字段SYNC来控制。此外,通过通道控制寄存器(DMA_CCR)中的FS字段,还可以指定这些同步事件是与帧传输同步呢?还是与数据单元传输同步。对于前者,每次DMA同步事件触发一个数据帧的传输;对于后者,则触发一个单元的传输。当FS=0时,与数据单元传输同步;当FS=1时,与数据帧传输同步。

144第二章DSP芯片结构和CPU外围电路7、通道中断与状态DMA通道在传输过程中产生的各种状态都会把通道状态寄存器DMA_CSR中相应的标志置为1。P51表2-38同时,在通道中断控制寄存器DMA_CICR的控制下,这些状态都能触发DMA通道中断,使CPU能及时得到DMA传输的状态。

145第二章DSP芯片结构和CPU外围电路三、寄存器说明DMA控制器有两套寄存器,一套用于工作,一套用于CPU写入配置参数。注意:用于工作的寄存器是不能访问的。

146第二章DSP芯片结构和CPU外围电路四、DMA应用实例假定需要将位于SARAM中从字节地址20000h开始的32个16位的数搬到DARAM中从字节地址00c0h开始的数据缓冲区,要求使用DMA通道1,并由CPU直接启动,在传完以后给CPU一个中断。;DMA_GCR,全局控制寄存器MOV#0x0004,PORT(#DMA_GCR);共享模式,EHPI通道低优先级。;DMA_CSDP,通道参数寄存器MOV#0x0201,PORT(#DMA_CSDP1);目的为DARAM,源为SARAM,;DMA_CICR,通道中断控制寄存器MOV#0x0008,PORT(#DMA_CICR1);传完一帧后给CPU一个中断。;DMA_CSSA_L/U,通道源起始地址寄存器

147第二章DSP芯片结构和CPU外围电路MOV#0x0000,PORT(#DMA_CSSA_L1);源地址为SARAM中的20000h。MOV#0x0002,PORT(#DMA_CSSA_U1);DMA_CDSA_L/U,通道目的起始地址寄存器MOV#0x00c0,PORT(#DMA_CDSA_L1);目的地址为DARAM中的00c0h。MOV#0x0000,PORT(#DMA_CDSA_U1);DMA_CEN/CFN,通道单元数/帧数寄存器MOV#0x0020,PORT(#DMA_CEN1);每帧32个数据单元。MOV#0x0001,PORT(#DMA_CFN1);每块1帧。;DMA_CCR,通道控制寄存器MOV#0x50c0,PORT(#DMA_CCR1);采用自动递增方式修改地址。;通道1为高优先级。;没有同步事件,CPU直接启动。

148第二章DSP芯片结构和CPU外围电路2.9片内存储器与DSP自举C5509DSP的存储空间映射图DSP自举(Bootload)是指系统上电时,DSP将一段存储在非易失性存储器中的代码自动引导到内部存储器中。

149第二章DSP芯片结构和CPU外围电路一、DARAM双存取RAM的字节地址范围是000000H到00FFFFH,分为8块,每块8KB。每个周期内可以对同一块DARAM访问两次,支持8,16或32比特的访问,可以用作程序空间,也可以用作数据空间。注意:8块DARAM中,字节地址000000H到0000BFH被CPU的存储映射寄存器MMR占用,位于DARAM0的开始部分。编程时要注意不能使用这段地址。

150第二章DSP芯片结构和CPU外围电路二、SARAM单存取RAM(SARAM)的字节地址范围是010000H到04FFFFH,分为32块,每块8KB。每个周期只能对同一块SARAM访问一次,支持8,16或32比特的访问,可用作程序空间,也可以用作数据空间。

151第二章DSP芯片结构和CPU外围电路三、ROMC5510DSP片内ROM的字节地址范围是FF8000H到FFFFFFH,只有一块,32KB。这一区域是否用作片内ROM由ST3_55.MP/MC字段决定。它的值在复位时由GPIO口的IO[3:1]的值决定。IO[3:1]=000时,MP/MC=1,片内ROM无效,该区域用作EMIF片选3空间的一部分;IO[3:1]!=000时,MP/MC=0,片内ROM有效,该区域用作片内ROM。复位后,可通过置位/清除ST3_55.MPNMC字段的值来改变这一区域的使用。

152第二章DSP芯片结构和CPU外围电路四、DSP的自举当片内ROM有效,表示用户选择了某种自举方式。在这种情况下,DSP在其复位的上升沿就会到地址FFFF00取硬件复位向量,启动程序装载器。该装载器先读取自举模式寄存器BOOT_MOD的内容,然后才根据用户设定的模式进行初始化和程序装载。BOOT_MOD000:不自举,片内ROM无效;011:从16比特宽的异步存储器自举;100:从32比特宽的异步存储器自举;101:从EHPI口自举;110:从McBSP0自举,字长为16比特;111:从McBSP0自举,字长为8比特。

153第二章DSP芯片结构和CPU外围电路五、自举例程(参见57页图2-34)要求:DSP采用EHPI口自举模式,主控MCU(C5509DSP1)通过DSP2的EHPI口,采用非复用的方式装载DSP代码。DSP2将从地址010000h(SARAM)开始执行程序,所以要求DSP程序代码的入口为010000h。MCU当EHPI口与主控MCU相连时,上电复位将由RESET管脚和HPIC.RESET字段共同控制,因此,MCU将在RESET管脚的上升沿到HPIC.RESET字段的上升沿之间的时间间隔内装载DSP程序代码。在HPIC.RESET字段上升沿开始执行程序。

154第二章DSP芯片结构和CPU外围电路BootForC5510:AMOV#0X00100,XAR0;MCU中存放的DSP程序代码的首地址AMOV#0X210000,XAR1;装载程序的目的地址,字节地址为DSP2的010000h。MOV#0X0000,T1MOV#0X0001,PORT(#IODIR);配置GPIO0为输出且输出高电平MOV#0X0001,PORT(IODATA);使DSP2的HCNTL0为高,表明要写DSP2的数据空间。BootLoop:MOV*AR0+,T0CMPT0==T1,TC1;ifT0=T1,TC1=1,elseTC1=0BCCBootEnd,TC1;如果代码为0x0000,就结束MOVT0,*AR1+;否则继续装载BBootLoop

155第二章DSP芯片结构和CPU外围电路BootEnd:MOV#0X0000,PORT(#IODATA);将HCNTL0置为低,MCU写DSP2的HPICMOV#0X0001,*AR1;将HPIC.RESET置1,启动DSP2RET

156第三章存储结构与寻址方式本章内容1、存储结构(TMS320C55xDSP存储结构)程序空间数据空间I/O空间2、寻址方式对数据存储空间、存储映射寄存器、寄存器位、I/O空间的寻址绝对寻址模式直接寻址模式间接寻址模式

157第三章存储结构与寻址方式3.1存储结构C55xDSP有两个独立的存储空间:统一的数据/程序空间;I/O空间。程序空间:用于存取执行的指令代码和执行指令时用到的表。数据空间:用于存储指令需要的数据、映射寄存器(MMR);I/O空间:提供对外设寄存器的访问。数据空间地址用于访问存储器和内存映射寄存器,利用程序空间地址从存储器中读取指令代码,而I/O空间用于CPU与外设之间双向通信。CPU通过6条24位的地址总线对上述两部分存储空间访问。

158第三章存储结构与寻址方式一、存储映射24位地址可以寻址16MB存储空间;C55x的寻址空间为16MBCPU从程序空间读取代码时,使用以字节为基准的24位地址;当访问数据空间时,使用以16比特的字为基准的23位地址。地址总线24位,当访问数据空间时将23位地址左移一位(LSB补0)构成24位地址。数据空间被分成128个主数据页(0--127),每个数据页64K的字地址,指令通过7比特的主数据页指针和16比特的偏移量,可以访问任何一个主数据页中的任何一个地址。

159第三章存储结构与寻址方式第0主数据页中数据空间的前96个地址(000000h~00005Fh)为存储映射寄存器MMR。相对应的程序空间的前192个地址(000000h~0000BFh)建议不要用来存放程序代码。存储器映射图

160第三章存储结构与寻址方式存储空间又分为:内部存储空间和外部存储空间。1、内部存储空间(352KB):DARAM:8块8KB,共64KBSARAM:32块8KB,共256KBROM:1块32kB2、外部存储空间(352KB~16MB)EMIF根据片选信号(CE0-CE3)来确定要访问的外部存储空间。

161第三章存储结构与寻址方式二、程序空间只有当CPU读取指令时,程序空间才被访问。CPU采用字节寻址来读取变长的指令,指令的读取要和32位的偶地址对齐(地址的低两位为零)。1、C55X采用字节寻址来读取程序代码字节寻址:地址按照字节进行分配,且地址为24位。下图是32比特宽的存储器中的一行存储内容与地址间的关系。

162第三章存储结构与寻址方式2、程序空间的指令结构C55XDSP支持变长指令,其长度可以是8、16、24、32、40、48比特。例如:1byte:NOP2byte:MOVT0,*AR03byte:MOVT0,high_byte(*AR0)4byte:MOVlow(AC0<<#-8),*AR05byte:BCCP24,condition

163第三章存储结构与寻址方式(1)指令组织方式变长指令存放在32比特宽的存储器中。指令的地址根据操作码的最高有效字节的地址确定。例如指令A的地址是000101h。A(23~16)A(15~8)A(7~0)B(7~0)C(31~24)C(23~16)B(15~8)C(7~0)D(7~0)E(23~16)C(15~8)E(7~0)E(15~8)000100h~000103h000104h~000107h000108h~00010Bh00010Ch~00010Fh字节0字节1字节2字节3地址

164第三章存储结构与寻址方式(2)边界对齐关系在程序空间中存放指令时不用边界对齐,当读取指令时,需按32比特边界的偶地址对齐(根据前面指令缓冲单元I的介绍,指令缓冲队列每次通过程序数据总线PB从程序空间读取32比特的程序操作码,所以CPU总是从最低两位为0的地址读取32比特代码。即读取地址的最低一个16进制位是0、4、8或C)。假设子程序SUB位于000106h段的C指令,PC的值为000106h。那么程序地址总线实际上传的地址是000104h的32比特边界地址。例如:CALLSUB子程序如果程序在执行过程中调用了子程序,则在CPU调用子程序时,可能会发生写入程序计数器PC的地址与程序代码的读取地址不一致的情况:

165第三章存储结构与寻址方式三、数据空间1、C55x采用字寻址(23bit)来读取数据空间8位、16位或32位数据字寻址:将一个地址分配给数据空间中的一个16bit字。下图是一行32位宽的存储器地址分配问题:地址总线是24位,当访问数据空间时,将23位地址左移一位(LSB补0)构成24位地址。例如:如果一条指令在23比特地址的000102h上读数据,实际上读数据地址总线上传送的24位地址是000204h。

166第三章存储结构与寻址方式2、数据类型C55xDSP指令处理的数据类型有:字节(8bit),字(16bit),长字(32bit)。数据值数据类型存储地址A字节000100h(低字节)B字000101hC长字000102hD长字000105hE字000106hF字节000107h(高字节)G字节000107h(低字节)B000100h~000101h000102h~000103h000104h~000105h000106h~000107h字0字1地址AC(31~16bit)C(15~0bit)D(15~0bit)D(31~16bit)E(31~16bit)FG3、数据空间数据结构长字数据C的存取地址是000102h长字数据D的存取地址是000105h000107h存放数据F(高字节)和数据G(低字节)。例子

167第三章存储结构与寻址方式在数据空间中对字节存取由于数据空间采用字寻址方式,对字节进行存取时,可以使用C55X的专用指令如high_byte(),low_byte()对高低字节进行存取。例如:movhigh_byte(*ar0),AC0。

168第三章存储结构与寻址方式(1)若MSW的地址是偶地址,则LSW从MSW的后一个地址存取。CPU在数据空间中对长字进行存取存取地址由数据的高16bit(MSW)地址决定,数据的低16bit(LSW)的地址取决于MSW地址的奇偶性。可通过将MSW的最低有效位(LSB)取反来确定LSW地址。LSWMSW000100h~000101h字0字1字地址000102h~000103hMSWLSW(2)若MSW的地址是奇地址,则LSW从MSW的前一个地址存取。

169第三章存储结构与寻址方式4、存储映射寄存器(MMR)位于第0数据页,占用000000h~00005Fh地址的数据空间(参见教材书上62页—64页)。书中的表3-4列出了存储映射寄存器。理解存储映像寄存器(MMR):MMR包括一系列寄存器。由于MMR(存储映象寄存器)是数据存储区的一部分,因此能够用访问其它数据存储区相同的方法进行访问。通常借助直接或间接寻址,对它们写或读。

170第三章存储结构与寻址方式四、I/O空间C55x的I/O空间和数据/程序空间是分开的,只用于对DSP片内的外设寄存器的访问存取,采用16位宽的字寻址方式,寻址范围是64K字。CPU在读取I/O空间时用DAB地址总线读数据,EAB地址总线写数据。因为数据地址总线为24位,有一个16位地址到24位地址的变换,例如:0102h->000102h,高8位添0。0000h~FFFFhI/O空间地址64K字

171第三章存储结构与寻址方式3.2寻址方式寻址方式:寻找地址的方法,即如何指定指令和操作数所在存储单元的地址。C55x支持三种类型的寻址方式绝对寻址模式:在指令中利用常数值直接确定存取位置。MOV*(#000001h),AC0直接寻址模式:通过地址偏移量进行位置寻址。如SP=0000h,MOV*SP(5),T0间接寻址模式:通过辅助寄存器确定存取位置如AR0=0,BSET*AR2,AC0通过上面方式可以实现对数据存储空间、存储映射寄存器、寄存器位和I/O空间的寻址。

172第三章存储结构与寻址方式一、绝对地址寻址:K16,K23和I/O绝对寻址1、K16绝对寻址:操作数:*abs16(#k16)将扩展数据页指针XDP的高位部分DPH中的7比特值与16比特无符号常数(k16)级联形成23位地址。然后用该地址存取数据空间,可以用来访问一个存储单元或存储映射寄存器DPHK16数据空间

173第三章存储结构与寻址方式例1:MOV*abs16(#2003h),T1说明:假设PDH=1,CPU将数据空间地址为012003h的值装入T1中。例2:MOV*abs16(#AR2),T0说明:CPU将AR2(000012h)中的值装入T0中注意:当使用这种寻址模式时由于常数编码将指令扩展了2个字节,故该模式不能与其它指令并行执行。

174第三章存储结构与寻址方式2、K23绝对寻址操作数:*(#k23)该模式将23位无符号常数(k23)作为完整的数据寻址地址,可以用来访问一个存储单元或存储映射寄存器。当使用这种寻址模式时不能与其它指令并行执行。K23数据空间使用这种寻址方法的指令将常数编码为3字节(去掉最高位)

175第三章存储结构与寻址方式例1:MOV*(#002003h),AC0;k23=002003h例2:利用存储映射寄存器访问的K23的绝对寻址MOV*(#AC0L),T2;CPU将AC0中的低16位装入T2中。MOVdbl(*(#AC0L)),pair(T0);CPU将AC0中的低16位装入T0中,将AC0中的高16位装入T1中。绝对寻址模式的缺点是它要更多的空间来表示其23bit地址。

176第三章存储结构与寻址方式二、直接寻址数据页指针DP直接寻址;堆栈指针SP直接寻址;对寄存器位的直接寻址;外设数据页指针PDP直接寻址;注意:DP和SP直接寻址与状态寄存器ST1_55中的CPL位有关。CPL=0时,DP直接寻址CPL=1时,SP直接寻址寄存器位寻址和PDP直接寻址与CPL位无关

177第三章存储结构与寻址方式1、DP直接寻址23位地址的高7位:由XDP的高7bit(DPH)确定,确定了主数据页;23位地址的低16位:16比特的DP和7比特偏移量Doffset的和确定。DP的值确定在主数据页内长度为128个字的局部数据页开始地址,该开始地址可以是选定主数据页内的任何地址。7位偏移量:128个字的范围。7bitDPH16bitDP7bitDoffset+23bit地址特点:不用改变DP或SP的值,就可以随便访问128个单元。123DPDOFF

178第三章存储结构与寻址方式$$、直接寻址中偏移值(Doffset)的计算方法(1)对于数据空间的存取时,偏移量的计算方法:Doffset=(Daddr-.dp_addr)&7FhDaddr:存取数据空间16bit地址;.dp_addr:汇编指示符“.dp”为DP寄存器赋的值;&:逐位与操作;例:AMOV#03FFF0h,XDP;数据位于第03主数据页.dp#FFF0h;编译时,DP的值为FFF0hMOV@FFF4h,T2;Daddr=FFF4h汇编器计算出偏移量:Doffset=(Daddr-.dp)&7Fh=04h执行时产生23位地址:DPH:(DP+Doffset)=03:(FFF0h+0004h)=03FFF4h

179第三章存储结构与寻址方式(2)对存储映射寄存器空间的存取时,偏移量的计算方法:Doffset=Daddr&7Fh例:MOVmmap(@AR0),T2;把AR0的值装入T2寄存器中。mmap()表示是对MMR存储区的访问,所以此时DPH=DP=0。AR0的地址为:Daddr=000010h(表3-3)汇编器计算出偏移量:Doffset=Daddr&7Fh=0010h&7Fh=10h执行时产生23位地址:DPH:(DP+Doffset)=00:(0000h+0010h)=000010h

180第三章存储结构与寻址方式2、SP直接寻址:23比特地址=SPH提供高7比特+16比特由SP和7比特的偏移值决定。偏移值范围是0-127。这种寻址方式用于访问数据堆栈。例:假设SPH=0、SP=FF00h,用SP直接寻址MOV*SP(5),T2;SPH:(SP+offset)=00FF05hMOVdbl(*SP(5)),pair(T2);SPH:(SP+offset)=00FF05h的值装入T2SPH:(SP+offset-1)=00FF04h的值装入T3

181第三章存储结构与寻址方式3.寄存器位直接寻址后面和其间接寻址一起介绍。4.PDP直接寻址后面和I/O间接寻址一起介绍。

182第三章存储结构与寻址方式三、间接寻址间接寻址可以分为:AR(辅助寄存器)间接寻址双重AR间接寻址CDP(系数数据指针寄存器)间接寻址注意:(1)间接寻址可以分成线性寻址和循环寻址方式,ST2_55中的ARnLC和CDPLC位可以设置执行的是线性寻址还是循环寻址。(2)指针修改后,要进行模64k运算,保证寻址不超过主数据页的寻址范围。

183第三章存储结构与寻址方式1、AR间接寻址通过辅助寄存器ARn(n=0,…7)访问数据空间,包括访问数据存储空间,MMR,寄存器位,I/O空间。23位地址的值形成:23比特地址=ARnH:([BSAyy+]ARn)ARnH:扩展辅助寄存器XARn的高位部分,提供高7比特地址;ARn:提供低16比特的地址;BSAyy:在循环模式下,提供循环缓冲起始地址。BSA01、BSA23、BSA45、BSA67。

184第三章存储结构与寻址方式ST2_55寄存器的ARMS位决定ARn间接寻址的CPU模式当ARMS=0,DSP模式操作CPU提供DSP增强应用的高效执行功能,能够提供按位倒序方式修改指针(对FFT很有用),但不能使用短偏移操作数。ARMS=1,是控制模式操作应用于控制系统,CPU能够优化代码字数。可以使用短偏移操作数,*ARn(short(#k3))。1100+10100001进位是从右到左

185第三章存储结构与寻址方式ARMS=0,DSP模式的指针修改方式*ARn:指针不修改*ARn+(-):生成地址之后,地址值增加或减小*+(-)ARn:生成地址之前,地址值增加或减小*(ARn+(-)T0/AR0):生成地址之后,ARn加上(减去)T0或AR0中16比特带符号的常数。*ARn(T0/AR0):指针没有被修改,ARn作为基指针,T0或AR0中16比特带符号的常数作为偏移基指针的偏移量。

186第三章存储结构与寻址方式*(ARn+(-)T0B/AR0B):生成地址之后,ARn加上(减去)T0或AR0中16比特带符号的常数。按位倒序模式相加。*(ARn+(-)T1):生成地址之后,ARn加上(减去)T1中16比特带符号的常数。*ARn(T1):指针没有被修改,ARn作为基指针,T1中16比特带符号的常数作为偏移基指针的偏移量。*ARn(#K16):指针没有被修改,ARn作为基指针,16比特带符号的常数作为偏移基指针的偏移量。*+ARn(#K16):生成地址之前,ARn加上16比特带符号的常数k16。

187第三章存储结构与寻址方式ARMS=1,控制模式的指针修改方式和DSP模式基本相同,没有提供按位倒序模式修改指针方法,但可以使用短偏移操作数。*ARn(short(#K3)):指针没有被修改,ARn作为基指针,3比特无符号的常数作为偏移基指针的偏移量。注意:倒位寻址方式,可以提高FFT算法中蝶形运算的效率*ARn(#K16),*+ARn(#K16)不能用于I/O空间寻址

188第三章存储结构与寻址方式倒位寻址方式,提高FFT算法中蝶形运算的效率设AR2中的值为(01100000)2T0的值为(00000100)2顺序操作数修改后的值0*(AR2+T0B)011000001*(AR2+T0B)011001002*(AR2+T0B)011000103*(AR2+T0B)011001104*(AR2+T0B)011000015*(AR2+T0B)011001016*(AR2+T0B)011000117*(AR2+T0B)01100111

189第三章存储结构与寻址方式2、双重AR间接寻址模式通过8个辅助寄存器(AR0~AR7)同时访问两个数据存储地址,CPU使用扩展辅助寄存器生成23比特地址,双重寻址中的每个寻址都可以采用线性寻址或循环寻址方式。(1)执行一条完成两个16比特数据空间寻址的指令,形式如下:ADDXmem,Ymem,ACx例如:ADD*AR0,*AR1,AC0在一条指令中,对两个数据存储单元的操作用Xmem,Ymem表示:

190第三章存储结构与寻址方式(2)并行执行两条指令。这种情况下每条指令都必须访问同一个存储单元中的数据。形式如下:MOVSmem,dst||ANDSmem,src,dst指令语法中用Smen或Lmen表示例如:MOV*AR0,AC0||AND*AR0,T0,AC0地址指针修改方式参见表3-7

191第三章存储结构与寻址方式注意:(1)ST2_55中的ARMS状态位对双重AR间接寻址操作数没有影响。(2)汇编器不接受双重操作数使用相同的辅助寄存器而修改量不一样的代码。例如:MOV*AR0,AC0||AND*+AR0,T1,AC1;illegalMOV*AR0,AC0||AND*AR0,T1,AC1;legalMOV*AR0(T0),AC0||AND*AR0,T1,AC1;legal

192第三章存储结构与寻址方式3、CDP间接寻址使用系数数据指针(CDP)访问数据空间,23位地址由CDPH提供的高7位地址和CDP提供的低16位地址组成,可以用于访问数据空间,MMR,寄存器位,I/O空间。地址形成方式:23位地址=CDPH:([BSAC+]CDP)BSAC:(CDP缓冲起始地址寄存器)只有在循环寻址模式下才考虑

193第三章存储结构与寻址方式指针修改方式:*CDP*CDP+*CDP-*CDP(#K16)*+CDP(#K16)例如:MOV*CDP+,AC0系数间接寻址的地址组成和指针修改方式与AR间接寻址模式相同,主要用于无限脉冲响应滤波器,双乘,乘累加,乘减等运算:例如:MPY*AR0,*CDP+,AC0::MPY*AR1,*CDP+,AC1

194第三章存储结构与寻址方式四、循环寻址(卷积、相关、FIR滤波器需要一个环形缓冲区)循环寻址可用于任何一种间接寻址模式中,通过设置ST2_55中相应的状态位(ARnLC或CDPLC)独立地将每个辅助寄存器(AR0~AR7)和系数数据指针(CDP)配置成线性寻址还是循环寻址。若ARnLC=0或CDPLC=0,执行线性寻址若ARnLC=1或CDPLC=1,执行循环寻址循环寻址的地址形成:ARnH:(BSAxx+ARn)或CDPH:(BSAC+CDP)循环缓冲的字节数由寄存器BK03、BK47和BKC定义

195第三章存储结构与寻址方式指针与循环寻址配置寄存器之间的关系如下

196第三章存储结构与寻址方式BSETAR1LC;AR1LC=1,把AR1设置成循环寻址指针AMOV#010000h,XAR0;循环寻址在01主数据页中执行,AR0H=01hMOV#0A02h,BSA01;循环缓冲区的首地址为010A02hMOV#4,BK03;循环缓冲区长度为4wordsMOV#0000h,AR1;循环缓冲区的索引为0000h(index)MOV*AR1+,AC0;AC0=(010A02h+(AR1))=*(010A02h),index=0001hMOV*AR1+,AC0;AC0=(010A02h+(AR1))=*(010A03h),index=0002hMOV*AR1+,AC0;AC0=(010A02h+(AR1))=*(010A04h),index=0003hMOV*AR1+,AC0;AC0=(010A02h+(AR1))=*(010A05h),index=0000h举例:IFindex+step≥BK,index=index+step-BK

197第三章存储结构与寻址方式循环寻址方式的实现步骤将ST2_55中相应的状态位ARnLC或CDPLC设置成循环寻址模式。用AMOV指令初始化扩展寄存器(XARy或XCDP)的高7位,选定主数据页。利用BSA01,BSA23,BSA45,BSA67,或BSAC初始化循环缓冲区的的起始地址。并联合XARn(22-16)或XCDP(22-16)构成23位的循环缓冲区的起始地址。初始化合理的循环缓冲区大小寄存器(BK03,BK47,orBKC)。设置ARn或CDP为一个小于缓冲区长度的值,作为循环寻址开始的首次索引。循环寻址初始化完成,进行下一步运算。

198第三章存储结构与寻址方式五、寄存器位寻址:<操作数是@bitoffset>(1)直接寻址和间接寻址支持寄存器位寻址,绝对寻址不支持寄存器位寻址。(2)只有寄存器位的“测试/置位/清零/取反”指令支持寄存器位寻址。1、寄存器位直接寻址通过偏移量访问寄存器位,访问一个或者两个相邻的寄存器位。这里的偏移量是指从LSB开始的偏移比特数。BSET@0,AC3;CPU访问AC3的第0个比特,并置为1。BTSTP@30,AC3;CPU测试AC3的第30和31比特,并将AC3(30)的内容拷贝到ST0_55的TC1位,将AC3(31)的内容拷贝到ST0_55的TC2位.

199第三章存储结构与寻址方式2、寄存器位间接寻址通过辅助寄存器中的内容作为偏移量访问寄存器位。例1:假设AR2=0,AR5=30。BSET*AR2,AC3;设置AC3的LSB为1BTSTP*AR5,AC3;CPU测试AC3的第30和31比特,并将AC3(30)的内容拷贝到ST0_55的TC1位,将AC3(31)的内容拷贝到ST0_55的TC2位.例2:设置或清除状态寄存器的状态位。BSETSXMD;设置ST1_55中SXMD状态位为1BCLRC54CM;清除ST1_55中C54CM状态位,置为0

200第三章存储结构与寻址方式六、I/O空间寻址绝对寻址、直接寻址、间接寻址都可以用于I/O空间外设寄存器的存取。<1>、I/O空间绝对寻址:该模式利用16位的无符号常数作为数据寻址地址直接访问I/O空间。如果使用代数指令,其操作数是*port(#k16);如果使用助记符指令,其操作数是port(#k16)(操作数前没有*)MOVport(#2800h),AR0;CPU将I/O空间中地址2800h的值装入AR0中,

201第三章存储结构与寻址方式<2>、外设数据页(PDP)直接寻址64K的I/O空间被分成512个128字的外设数据页,用9位PDP表示,通过指令中指定的7位的偏移值形成16位I/O空间地址,用于访问I/O空间的一个位置。地址形成:16位地址=PDP:Poffset例如:假设PDP=511MOVport(@0),T2;PDP:Poffset=FF80h,CPU将I/O空间中地址为FF80h中的值装入T2中。MOVT2,port(@127);PDP:Poffset=FFFFh

202第三章存储结构与寻址方式<3>、I/O空间的间接寻址间接操作数指针修改形式参阅书P76表3-11例题:假设AR4=FF80hMOVport(*AR4),T1;CPU将I/O空间中地址FF80h的值装入T1中,AR4的值不变。MOVport(*AR4+),T1;CPU将I/O空间中地址FF80h的值装入T1中,AR4的值+1。MOVport(*-AR4),T1;寻址之前,AR4的值减1,CPU将I/O空间中地址FF7Fh的值装入T1中。

203第三章存储结构与寻址方式<4>、I/O空间寻址的限制条件*ARn(#K16),*+ARn(#K16),*CDP(#K16),*+CDP(#K16),不能用于I/O空间寻址,因为K16的常数需要指令操作数有两个字节的扩展,这种扩展妨碍了I/O空间存取限制符的port()的使用。以下两条指令不能用于I/O空间的寻址DELAYSmem;存储器延迟;MACM[R]Z[T3=]Smem,Cmem,ACx;带延迟的乘加注:任何对I/O空间的非法访问都会产生硬件总线错误中断(BERRINT)。

204第三章存储结构与寻址方式思考题1:按下列要求编程实现循环寻址的初始化任务,并逐行说明其工作过程将AR5设置成循环寻址循环的首地址为030603h;索引值为为0002h循环缓冲大小为4个字MOV*AR5+,AC3在程序中出现5次,写出AR5的值。

205第五章TMS320C55x系列DSP的汇编指令1、高速数字信号处理中常采用汇编语言编程。2、汇编语言中的两种指令集助记符指令集:有助于记忆的符号来表示指令。代数指令集:类似于代数表达式,运算关系清楚明了。注意:DSP的软件开发工具只支持单一的指令形式,不支持助记符指令和代数指令的混合形式。3、术语、符号和缩写见P93的表5-14、运算符见表5-2

206第五章TMS320C55xDSP的汇编指令5.1状态比特和执行条件一条指令的执行可能会受到某些状态位的影响,也可能会改变某些状态位的值,这些状态位都在状态寄存器。

207第五章TMS320C55xDSP的汇编指令1、40比特运算模式(M40)用于控制D单元的运行模式,会影响累加器溢出、进位标志等。M40=0时,D单元按32位运算模式,因此累加器溢出、进位、符号扩展和移位操作都以第31比特为准。M40=1时,D单元按40位运算模式,因此累加器溢出,进位,符号扩展和移位操作都以第39比特为准。BCLRM40;ClearM40BSETM40;SetM40

208第五章TMS320C55x系列DSP的汇编指令2、累加器溢出状态(ACOVx)当AC0~AC3寄存器溢出时,目的累加器的溢出状态位ACOV0~3被置1。以下情况会清零ACOVx位复位;CPU执行一个跳转,条件调用,条件返回或执行一条测试ACOVx的指令;通过BCLR指令清除;溢出位检测受ST1_55中的M40位影响,即:M40=0时:溢出位在第31位检测M40=1时:溢出位在第39位检测BCLRACOV1;清零BSETACOV1;置位

209第五章TMS320C55x系列DSP的汇编指令3、兼容模式(C54CM)C54CM=0:CPU工作于增强模式,只支持C55x的指令,C54CM=1:CPU工作于兼容模式,既支持C54x又支持C55x指令。BCLRC54CM;ClearC54CM(happensatruntime)C54CM_off;TellassemblerC54CM=0BSETC54CM;SetC54CM(happensatruntime)C54CM_on;TelltheassemblerC54CM=1

210第五章TMS320C55x系列DSP的汇编指令4、进位标志(CARRY)CARRY表示是否有进位或借位发生CARRY=0时,没有借位或进位发生。CARRY=1时,有借位或进位发生。位操作指令改变CARRY进位标志的检测受ST1_55中的M40位影响M40=0时:进位标志的检测与第31位相关M40=1时:进位标志的检测与第39位相关BCLRCARRY;ClearCARRYBSETCARRY;SetCARRY

211第五章TMS320C55x系列DSP的汇编指令5、分数模式(FRCT)FRCT=0:关闭小数模式FRCT=1:打开小数模式BCLRFRCT;ClearFRCTBSETFRCT;SetFRCT

212第五章TMS320C55x系列DSP的汇编指令6、中断模式(INTM)INTM=0:允许所有可屏蔽中断INTM=1:关闭所有可屏蔽中断BCLRINTM;ClearINTMBSETINTM;SetINTM

213第五章TMS320C55x系列DSP的汇编指令7、测试/控制标志(TCx)主要用于保存某些测试指令的结果;可以作为指令执行的条件;举例:CMPAC1==T1,TC1;;如果AC1=T1,那么TC1=1。BCLRTC1;ClearTC1BSETTC1;SetTC1BCLRTC2;ClearTC2BSETTC2;SetTC2

214第五章TMS320C55x系列DSP的汇编指令可以作为指令执行的条件有:(1)累加器的值ACx==#0ACx!=#0ACx<#0ACx<=#0ACx>#0ACx>=#0(2)溢出标志和进位标志overflow(ACx)!overflow(ACx)CARRY!CARRY(3)辅助寄存器的值*ARx==#0*ARx!=#0*ARx<#0*ARx<=#0*ARx>#0*ARx>=#0

215第五章TMS320C55x系列DSP的汇编指令(4)临时寄存器的值(4个临时寄存器T0~T3)Tx==#0Tx!=#0Tx<#0Tx<=#0Tx>#0Tx>=#0(5)测试/控制标志两个测试/控制标志的状态以及它们的逻辑组合可以作为指令执行的条件:TCx(测试/控制标志为1)!TCx(测试/控制标志为0)TC1&TC2TC1&!TC2!TC1&TC2!TC1&!TC2TC1|TC2TC1|!TC2!TC1|TC2!TC1|!TC2TC1^TC2TC1^!TC2!TC1^TC2!TC1^!TC2

216第五章TMS320C55x系列DSP的汇编指令5.3C55x指令的并行执行1、并行指令的分类C55只支持有限的指令并行执行,能支持三种类型的指令并行。(1)隐含的或内置的单指令并行一条指令同时执行两个不同的操作,用“::”来分隔指令的两个部分。MPY*AR0,*CDP,AC0::MPY*AR1,*CDP,AC1这类指令是利用双MAC来实现的,C55x中,这视为一条单指令。

217第五章TMS320C55x系列DSP的汇编指令(2)用户自定义的双指令的并行这两条指令的并行是通过用户或C编译器定义的。两条指令同时执行两个操作,用并行符“||”区分并行执行的两条指令。例:MPYM*AR1+,*CDP,AC1;D单元的一个MAC来完成||XORAR2,T1;A单元的ALU来完成

218第五章TMS320C55x系列DSP的汇编指令(3)内置并行指令与用户自定义并行指令的混合形式在不引起资源冲突的情况下,将隐含并行的指令按用户自定义方式与另一条指令并行执行。例:MPY*AR0,*CDP,AC0;隐含的或内置的并行指令::MPY*AR1,*CDP,AC1||MOV#5,AR1;用户自定义并行

219第五章TMS320C55x系列DSP的汇编指令2、指令并行的规则只有满足以下三条基本规则,并行指令才可以使用,若非法使用并行指令,可能会导致不可预测的执行结果。规则1:指令长度要少于6个字节受I单元指令译码器的限制,只有两条指令长度不超过6字节的,才可以作为并行处理。[IBQ大小为64字节/译码器大小为6字节]规则2:没有硬件资源冲突如果两条指令不存在操作数、总线、内部交叉单元和寄存器之间的冲突,则可以并行。

220第五章TMS320C55x系列DSP的汇编指令规则3:并行指令含有两个数据存储器访问时,必须使用间接寻址模式。以上三条规则是基本规则,缺一不可。例如:MOV*AR,AC1;2个字节||ADD@var,AR2;3个字节两条指令访问两个数据存储单元,第二条指令没有使用间接寻址,不满足规则3,所以不能并行。在实际编程时,只要指令满足这三条基本规则,即可写成并行方式,然后进行编译。如果编译有错,则可参照pp.77-78的8条详细规则进行检测。

221第五章TMS320C55x系列DSP的汇编指令5.4TMS320C55xDSP的汇编指令TMS320C55xDSP的汇编指令按操作分为以下6类算术运算指令比特操作指令扩展辅助寄存器操作指令逻辑操作指令MOVE操作指令程序控制指令一条指令的属性包括:语法(Syntax)执行的操作操作数相关的状态位是否有并行使能位长度(Size)执行周期(Cycles)在流水线(Pipeline)上的执行阶段在哪个功能单元执行(Executed)是否可以重复执行等

222第五章TMS320C55x系列DSP的汇编指令例如:------------------------------------------------------------------------------------|ADDuns(*AR3),CARRY,AC1,AC0|No|3|1|X|D-ALU|------------------------------------------------------------------------------------说明:NO:不能并行执行3:指令的长度为3字节1:周期为1X:在X(执行)流水线阶段处理D–ALU:在D单元ALU执行。执行结果:AC0=(*AR3)+CARRY+AC1状态位:AffectedbyCARRY,C54CM,M40等AffectsACOVx,ACOVy,CARRY

223第五章TMS320C55x系列DSP的汇编指令一、算术运算指令用于完成加减乘除等运算,按照功能可分成以下几类:加法指令减法指令:减法,条件减法,条件加/减乘法指令:乘法,乘加,乘减,双乘加/减双16比特算术指令比较运算指令:比较并求极值,最大/最小值,存储单元比较,寄存器比较移位指令:条件移位、带符号的移位。寄存器修改:辅助寄存器修改、堆栈指针SP修改隐含的并行指令专用指令:绝对值、归一化、有限冲激响应滤波FIR、最小均方LMS等

224第五章TMS320C55x系列DSP的汇编指令1、加法指令在D单元或A单元中执行加法运算。当有一个目的操作数为累加器ACx时,在D-ALU中执行。当目的操作数为辅助或临时寄存器时,在A-ALU中执行当目的操作数为Smen时,在D-ALU中执行当移位位数不是立即数16时(移位指令),在D单元的移位器中执行。(1)语法(2)操作数(3)状态位举例:ADDuns(*AR3),CARRY,AC1,AC0

225第五章TMS320C55x系列DSP的汇编指令2、减法指令常规减法:在D单元或A单元执行减法操作。条件减法:在D单元中执行,先执行减法,然后根据结果进行移位。条件加/减:在D单元根据TC1或TC2的状态执行加/减运算。(1)语法;(2)操作数;(3)状态位例1(常规减法):BCLRCARRY;BORROW=1AMOV#010000h,XAR1MOV#0300h,AR1MOV#0200h,*AR1MOV#0300h,AC0SUB*AR1,BORROW,AC0,AC1;AC1=AC0-(*AR1)-BORROW=00FFh

226第五章TMS320C55x系列DSP的汇编指令3、乘法指令[(1)语法、(2)操作数、(3)状态位]常规乘法(MPY):在D单元的一个MAC中执行乘法运算。乘加和乘减运算(MAC/MAS):在D单元的一个MAC中执行乘法,然后执行加法或减法运算。双乘加/减(Dual-MAC/S):利用D单元的两个MAC同时执行两个乘法或乘加/乘减运算。例1(常规乘法)MPYAC0,AC1说明:AC1=AC0(32~16)×AC1(32~16)ACOV1026000340000C000000010AC0AC1M40FRCT00260003400004800000010AC0AC1M40FRCT0ACOV1

227第五章TMS320C55x系列DSP的汇编指令4、双16比特算术指令:[(1)语法、(2)操作数、(3)状态位]在D单元中利用其ALU的双16比特模式,同时执行(并行)两个16比特算术运算,包括加-减、减-加、两个加和两个减运算。例:BSETM40BSETSXMDMOV#4000h,T1AMOV#010000h,XAR1MOV#0200h,AR1MOV#0xE300,*AR1ADDSUBT1,*AR1,AC1加减形式的双16比特算术运算,并行执行加法和减法运算加法:AC1(32~16)=(*AR1)+T1减法,AC1(15~0)=(*AR1)-T1

228第五章TMS320C55x系列DSP的汇编指令5、比较运算指令6、移位指令

229第五章TMS320C55x系列DSP的汇编指令7、寄存器的修改指令包括:辅助寄存器的修改、堆栈指针的修改。例1:AADD#255,AR0;辅助寄存器修改:AR0=AR0+255例2:AMAR*AR3+;辅助寄存器修改:指向存储单元的AR3加1例3:AADD#127,SP;堆栈指针修改,SP=SP+1271234AR01333AR01234AR31235AR31234SP12B3SP

230第五章TMS320C55x系列DSP的汇编指令8、隐含的并行指令:[(1)语法、(2)操作数、(3)状态位]C55X支持的隐含的并行指令有:乘法-存储指令乘加-存储指令乘减-存储指令加法-存储指令减法-存储指令装载-存储指令乘加-装载指令乘减-装载指令

231第五章TMS320C55x系列DSP的汇编指令9、专用算术运算指令求绝对值、有限冲激响应滤波FIR、最小均方LMS、归一化、二进制补码、舍入与饱和、平方差等。例(最小均方LMS):LMS*AR0,*AR1,AC0,AC1执行前执行后*AR0ACOV0AC1=AC1+(*AR0)*(*AR1) AC0=AC0+(*AR0)«#160011112222AC010000010000000AC1200000*AR1ACOV10021110000AC010000012000000AC1200000*AR1ACOV0ACOV1*AR00000CARRYCFRCTCARRYFRCT

232第五章TMS320C55x系列DSP的汇编指令二、比特操作指令比特域的比较指令比特域的抽取与扩展指令存储器比特位操作指令寄存器比特位操作指令状态比特的清零与置位1、比特域的比较指令BANDSmen,k16,TCxIf(((Smen)ANDk16)==0)TCx=0elseTCx=1

233第五章TMS320C55x系列DSP的汇编指令例:BAND*AR3,#0060h,TC12、比特域的抽取与扩展例1:BFXTR#0606h,AC0,AC1比特域的抽取,将0606h非零位对应的AC0中的比特抽出来,依次放到AC1的LSB中0040*AR30TC10040*AR31TC100230004FFAC00000000000AC100230004FFAC0000000000BAC10x0040h0x0060h(1000000)AND(1100000)=(0100000)!=00x0606h=0000011000000110AC0(15~0)=0000010011111111AC1(15~0)=0000000000001011

234第五章TMS320C55x系列DSP的汇编指令3、存储器的比特位的操作包括对存储器比特位的测试、清零、置位和取反操作。例1:BTSTAC0,*AR0,TC10023000008AC000C0*AR00023000008AC000C0*AR000TC1TC1比特测试,比特地址AC0(3~0)=8,TC1=(*AR0)的第八比特。

235第五章TMS320C55x系列DSP的汇编指令例2:BTSTSET#8,*AR0,TC1比特测试并置位,比特地址为8,所以TC1=(*AR0)的第八比特,然后对(*AR0)的第八比特置位。4、寄存器比特位的操作寄存器比特位的测试、清零、置位和取反。例:BNOTAR1,T000C0*AR00TC101C0*AR00TC10000T00008AR10100T00008AR1比特取反,比特地址AR1(3~0)=8,T0的第八比特取反后为0100h。

236第五章TMS320C55x系列DSP的汇编指令5、状态比特位的清零与置位对C55x的状态寄存器ST0~ST3的比特位进行清零/置位操作。例1:BCLR#5,ST1_55以5作为比特位地址,对ST1_55中的比特位5(C54CM)进行清零。例2:BSETC54CM;对ST1_55中的状态位字段C54CM置位E060ST1_55E040ST1_550040ST1_550060ST1_55

237第五章TMS320C55x系列DSP的汇编指令三、扩展辅助寄存器操作指令对扩展辅助寄存器XAR0~XAR7、XSP、XSSP和XCDP进行修改操作。例:MOVAC0,XAR1XAR1=AC0(22~0)FF00A00040AC0700000XAR1FF00A00040AC0200040XAR1

238

239

240第五章TMS320C55x系列DSP的汇编指令四、逻辑运算指令包括:按位与、按位或、按位异或、按位取反、比特计数、逻辑移位和旋转。1、按位与/或/异或例:ORAC0<<#4,AC1AC1=AC1OR(AC0<<#4)7E23554FC0AC00FE3405678AC17E23554FC0AC0EFF754FE78AC1

241第五章TMS320C55x系列DSP的汇编指令2、按位取反、比特计数、逻辑移位和旋转例1:NOTAC0,AC1;按位取反,AC1=not(AC0)例2:BCNTAC0,AC1,TC1,T1比特计数,T1=(AC1ANDAC2)中1的个数,若为奇数,则TC1=1000000000FAC00000000000AC1000000000FAC0FFFFFFFFFF0AC1000000001FAC0FFFFFFFFF0AC1000000001FAC1FFFFFFFFF0AC20000T10TC11T11TC1

242第五章TMS320C55x系列DSP的汇编指令五、MOVE操作指令累加器、临时寄存器或辅助寄存器的装载、存储和交换。存储器单元的数据移动堆栈操作CPU寄存器的装载、存储与数据移动1、累加器、临时寄存器或辅助寄存器的装载、存储和交换。例1:MOV*AR3+<<#16,AC1000200FC00AC10200AR3340002000034000000AC10201AR33400累加器装载:AC1=(*AR3)<<#16AR3=AR3+1

243第五章TMS320C55x系列DSP的汇编指令2、存储器单元的数据移动包括一个存储器单元与另一个存储器单元间的数据移动、向存储单元写入立即数、初始化存储器。例1:DELAY*AR3+完成的操作:*(AR3+1)=*AR3,AR3=AR3+10201AR31111020022220201020233330202AR3111102002222020102022222

244第五章TMS320C55x系列DSP的汇编指令3、堆栈操作包含弹出堆栈和压入堆栈例1:POPdbl(AC1)弹出堆栈:AC1(31~16)=(SP),AC1(15~0)=(SP+1),AC1(39~32)不变。SP=SP+20300000000AC13400SP2222340034013333SP0322223333AC13402SP2222340034013333SP+1

245第五章TMS320C55x系列DSP的汇编指令4、CPU寄存器的装载、存储与数据移动CPU寄存器指的是专用的寄存器、如SP、SSP、BK(AR循环大小寄存器)、BSA(循环缓冲起始地址寄存器)等,对这些寄存器进行装载、存储和移动的指令。例:MOVT1,BRC1把临时寄存器T1中的值装载到BRC1(块重复计数器1)和BRS1(BRC1的备份寄存器)0034T13400BRC12222BRS10034T10034BRC10034BRS1

246第五章TMS320C55x系列DSP的汇编指令六、程序控制指令程序控制指令用于控制指令的执行顺序。跳转指令调用与返回指令重复指令其它的控制指令:条件执行、空闲、空操作和软件复位等。

247第四章程序流程控制程序流程:指的是指令的执行顺序。C55x中影响指令执行顺序的主要有:程序跳转(分支)指令重复执行条件执行中断程序调用程序的流程控制主要与指令缓冲单元(I单元)和程序流程单元(P单元)有关。

248第四章程序流程控制P单元产生24位的程序地址,并放到PAB总线上。I单元的IBQ从32位的程序总线读取32比特的指令代码。译码器从IBQ中读取48比特的指令进行译码,将指令和立即数分派到相应的单元执行。

249第四章程序流程控制一、跳转(分支)跳转:通过跳转指令改变PC的值,使程序跳到指令指定的分支地址执行。跳转指令可以是有条件的,也可以是无条件的。1、条件跳转判断条件cond,如果条件成立则将目标地址装入PC,完成跳转。(1)BCC14,cond;4比特长相对PC的无符号偏移(2)BCCL8,cond;8比特长相对PC的有符号偏移(3)BCCL16,cond;16比特长相对PC的有符号偏移(4)BCCP24,cond;24比特的绝对地址。

250第四章程序流程控制在指令流水线的读(R)环节判断条件cond;cond条件可以是寄存器ACx,ARx,Tx与0值的比较,也可以是测试位TCx以及进位标志CARRY的值。若条件为真,就把l4、L8、L16、P24指定的程序地址装入PC中,完成分支跳转。跳转指令不能重复执行。举例:004055BCCbranch,*AR0!=#0004056……00F05Abranch:….程序地址假设AR0的值为3000,AR0的值不等于0,条件为真,跳转到标号为branch处执行,这时PC=00F05A

251第四章程序流程控制2、无条件跳转不需要满足任何条件,直接将目标地址装入PC。(1)BACx;把ACx的低24位的值装入到PC中(2)BL7;7比特长相对PC的有符号偏移(3)BL16;16比特长相对PC的有符号偏移(4)BP24;24比特的绝对地址举例:MOV#1,AC1Bbranch;address:004042:MOV#2,AC1……branch:;address:006047:MOV#0,AC1跳转前PC004042AC10000000001跳转后PC006047AC10000000000

252第四章程序流程控制二、指令重复指令重复:指重复执行一定次数的一条或者一段指令。包括无条件单指令重复,有条件单指令重复,块重复三种形式。1、无条件单指令重复:(1)RPT#n;将下一条指令重复执行n+1次(2)RPTCSR;CSR单重复寄存器,下一条指令重复CSR+1次(3)RPTADDCSR,TAx;下一条指令重复CSR+1次后,TAx+CSR->CSR(4)RPTADDCSR,k4;下一条指令重复CSR+1次后,CSR+k4->CSR(5)RPTSUBCSR,k4;下一条指令重复CSR+1次后,CSR-k4->CSR

253第四章程序流程控制举例:RPTADDCSR,T1MOV*AR0+,T0;重复CSR+1次后,T1的值加到CSR中。2、有条件单重复指令RPTCCk8,cond;当条件为真时,下一条指令重复K8+1次每次重复在流水线的执行(X)阶段检查cond定义的条件,当条件不满足时,停止单指令重复。最大重复执行次数为2^8-1=255举例:RPTCC#7,AC1>#0ADD#1,AC0;AC0=AC0+1执行流水线分为8个环节:F/,D,AD,AC1,AC2,R,X,W

254第四章程序流程控制以下指令不能用做单指令循环体:B;跳转IDLE;空闲指令RPTBLOCAL;块重复RESET;软件复位MOVRPTC,TAx;RPTC单指令重复计数器TRAP;软件陷阱MOVdbl(Lmem),RETARPTB;块重复CALL;子程序调用RPT;单指令重复INTR;中断陷阱XCC;条件执行RET;从子程序返回

255第四章程序流程控制3、块重复:同时重复多条指令。块重复(块循环)的语法形式为:(1)RPTBLOCALlabel(2)RPTBlabel执行步骤:(1)重复执行次数由块重复计数器(BRC0或BRC1)定义。(2)由RPTB或RPTBLOCAL定义块的开始地址,并放入到块重复起始地址寄存器(RSA)中。(3)由RPTB或RPTBLOCAL后面的标号(label)定义块的结束地址,并放到块重复结束地址寄存器(REA)中。

256第四章程序流程控制特点:(1)由于BRC0或BRC1是16比特计数器,所以最大重复次数是64k,在初始化块重复计数器时,其值应为实际重复次数减1。(2)一个循环体内的最小执行周期为2个机器周期。RPTBLOCAL和RPTB区别RPTBLOCAL被定义为指令缓冲队列(IBQ)的本地循环,即直接从IBQ中获取循环体指令,这样可以减少功率消耗,但是循环体指令的字数不能超过56个字节。当循环体指令超过56个字节时,使用RPTB块循环。

257第四章程序流程控制支持两层块循环一层循环(外循环):BRC0,RSA0,REA0;二层循环(内循环):BRC1,RSA1,REA1,BRS1;内循环完成后跳到外循环执行。如果再次进入内循环,则不需要初始化BRC1,块重复备份寄存器(BRS1)自动保存内循环块的重复次数。任何一个块循环内都可以嵌套单指令重复。所以C55x可以支持三层指令循环。

258第四章程序流程控制块重复举例MOV#31,BRC0;对外循环块重复计数器BRC0赋值,重复32次。MOV#127,BRC1;对内循环块重复计数器BRC1赋值,重复128次。RPTBOuterLoop;定义外循环块的起始地址。MOV#0,AC0……RPTBInnerLoop;定义内循环块的起始地址。MAC*AR0,*CDP+,AC0MOV*AR3+,T0……InnerLoop:;内循环块的结束地址。SUB#(127*2),AR0……OuterLoop:;外循环块的结束地址。NOP

259第四章程序流程控制三、条件执行条件执行:即有条件的执行下一条指令。XCClabel,condXCCPARTlabel,cond注:使用这两条指令时,必须注意条件作用的流水线阶段不同。例1:如果T0=0XCCPARTlabel,T0!=#0ADD*AR2+,AC0label:MOV*AR2,AC0AR指针的修改是在流水线的寻址阶段(AD)发生的,而使用XCCPART从流水线的寻址阶段(AD)到读操作数(R)阶段都是无条件的,只有在流水线执行(X)阶段才是有条件的。故无论条件T0!=#0成立与否,AR2都会被修改。条件满足:即T0!=#0,执行ADD指令,AR2被修改条件不满足:执行MOV指令,但在执行该指令前,AR2指针已被修改了。执行流水线分为8个环节:F/,D,AD,AC1,AC2,R,X,W

260第四章程序流程控制例2:XCClabel,T0!=#0ADD*AR2+,AC0label:MOV*AR2,AC1使用XCC指令时,从流水线的寻址(AD)到执行(X)阶段都是有条件的。所以只有当条件满足时,AR2和AC0的值才能被修改。本例中,条件不满足,所以AR2和AC0的值没有被修改。

261中断是为DSP具有对外界异步事件的处理能力而设置的。当DSP的外界异步事件发生时,CPU暂停当前的工作去处理外界异步事件,当处理完成后,再回到原来被中断的地方,继续执行原来的工作。1、中断(1)由硬件或软件信号产生的,它使DSP暂停当前程序转而去执行中断服务程序(ISR),从而可以实时的进行事件处理。(2)TMS320C5509支持32个ISR,有的即可以用软件触发也可以由硬件触发,有的只能由软件触发。软件中断:由程序指令产生,如:INTR、TRAP、RESET硬件中断:由设备的信号产生,可以是外部引脚信号(外部中断),也可以是片内外设信号(内部中断)。四、中断

262第四章程序流程控制(3)中断可分为可屏蔽中断和非屏蔽中断两类。可屏蔽中断:用软件将其设置为禁止中断或允许中断。非屏蔽中断:不能被禁止,一旦产生,CPU立即响应中断。2、中断处理的四个步骤(1)CPU接收中断请求,挂起当前程序;(2)响应中断请求:可屏蔽中断须满足某些条件,非屏蔽中断立即响应。(3)准备中断服务程序CPU完成当前的指令执行,清除流水线中未译码的指令。在数据堆栈和系统堆栈中保存相关寄存器的内容,从中断矢量表中取出中断矢量,中断矢量指针(IVPD、IVPH)指向中断服务程序。

263第四章程序流程控制(4)执行中断服务程序ISR包含中断返回指令,当中断返回时,自动恢复以前保存在寄存器中的内容。3、中断矢量及其优先级CPU接受和响应中断请求后,产生一个中断矢量地址,地址指向相关中断服务程序的中断矢量。书中表4-2。多个中断同时发生时,CPU按照事先定义的优先级进行处理。优先级为0的优先权最高,随着优先级数的逐步增加,优先权逐步减小。vector:rsb_c_int00nopnopnmib__retnopnopint0b__retnopnop...dmac5b__retnopnop

264第四章程序流程控制4、中断管理寄存器C55x芯片有8个中断管理寄存器。InterruptVectorPointers(IVPD,IVPH)InterruptFlagRegisters(IFR0,IFR1)InterruptEnableRegisters(IER0,IER1)DebugInterruptEnableRegisters(DBIER0,DBIER1)中断矢量指针(IVPD,IVPH)均为16比特的寄存器,指向程序空间的中断矢量(中断服务表IST的基地址)。

265第四章程序流程控制DSP中断矢量指针(IVPD)指向包含DSP中断矢量的256字节的程序页,DSP中断矢量序号是0~15,24~31,这些矢量可以被映射到只分配给DSP的存储空间。主机中断矢量指针(IVPH)指向包含主机中断矢量的256字节的程序页。主机中断矢量序号是16~23,这些矢量可以被映射到分配给DSP和主机共享的存储空间。若IVPD和IVPH内容相同,则32个中断矢量均位于相同的256字节程序页中。

266第四章程序流程控制DSP的硬件复位:使这两个指针都指向FFFFh,即指向0xFFFF00的地址,软件复位对这两个指针没有影响。一般在程序初始化时设定中断矢量指针的值,防止取非法指令代码,在修改中断矢量指针(IVPD,IVPH)前应当确定:(1)禁止所有的可屏蔽中断(ST1_55):BSETINTM(2)要求每个硬件非屏蔽中断对新旧IVPD值分别有一个中断矢量和一个中断服务程序。

267第四章程序流程控制中断矢量地址的形成CPU将16比特的中断矢量指针与5比特的中断矢量序号级联然后左移三位形成中断矢量地址。

268第四章程序流程控制中断标志寄存器(IFR)和中断使能寄存器(IER)它们包含所有的可屏蔽中断的标志位和使能位。IFR0和IER0寄存器IFR1和IER1寄存器

269第四章程序流程控制当CPU接收到一个可屏蔽中断请求时,CPU将IFR中的相应标志位置1,表明此中断被挂起或等待CPU响应,因此可以通过读IFR来识别挂起中断。中断标识寄存器的修改可以写入0来清除挂起中断响应硬件中断请求能清除IFR中相应的标志位;RESET能清除所有IFR中的标志位。

270第四章程序流程控制中断使能寄存器(IER0、IER1)用于对可屏蔽中断的使能。将中断使能寄存器中相应位置1,表示允许一个可屏蔽中断置0表示禁止响应可屏蔽中断。RESET时全部置0,禁止所有可屏蔽中断。MOV#0x02C8,IER00000001011001000打开中断:INT2、McBSP1收、发中断和DMAC1中断

271第四章程序流程控制5、可屏蔽中断可以通过软件禁止和允许的中断称为可屏蔽中断,55x的可屏蔽中断都是硬件中断。(1)C55x的可屏蔽中断有:序号2~23的中断矢量:这22个中断都可以通过DSP引脚或外设信号触发。

272第四章程序流程控制(2)设置一个可屏蔽中断用到的寄存器ST1_55中的INTM(中断模式位)位:允许(INTM=0)或禁止(INTM=1)所有的可屏蔽中断IER0和IER1;IFR0和IFR1;DBIER0和DBIER1;

273第四章程序流程控制(3)可屏蔽中断标准处理流程CPU接受一个可屏蔽中断请求CPU设置并锁存IFR0或IFR1中断相应位IER0或IER1中断相应位为1,CPU才响应中断INTM=0时,允许所有的中断,CPU才响应中断完成流水线译码阶段的指令,清除流水线中其它的指令清除IFR0或IFR1中断相应位,表示中断已被响应。自动保护中断现场INTM=1,DBGM=1,EALLOW=0(禁止访问非cpu仿真寄存器)ISR最后的返回指令,执行自动现场恢复

274第四章程序流程控制6、非屏蔽中断CPU收到非屏蔽中断请求时,无条件响应并跳转到相应的中断服务程序(ISR)。非屏蔽中断包括硬件复位中断:将RESET_引脚电平置为低,强制DSP复位并执行复位中断ISR。硬件NMI_中断:将NMI_引脚电平置为低,强制CPU执行相应ISR,它提供一个通用的无条件中断的硬件方式。所有的软件中断:中断矢量序号为0~31中的任何一个软中断。

275第四章程序流程控制(2)产生软件中断的指令方式INTR#k5:k5的5比特可以指32个软件中断中的任何一个,在执行ISR前自动保护现场,并置INTM=1。TRAP#k5:与INTR#k5不同的是不置位INTMRESET:软件复位。

276第四章程序流程控制(3)非屏蔽中断标准处理流程

277第四章程序流程控制7、DSP复位复位是一种非屏蔽中断,任何时候都可以对DSP进行复位硬件复位:CPU放弃所有操作,清空指令流水线,复位CPU的寄存器,然后按照非屏蔽中断的标准处理流程执行复位ISR。软件复位:由软件指令触发,复位时仅影响中断状态寄存器(IFR0,IFR1)和三个状态寄存器(ST0_55,ST1_55,ST2_55)。DSP的硬件复位使中断矢量指针(IVPD,IVPH)的值为FFFFh,即指向0xFFFF00的地址,软件复位对它们没有影响。

278第四章程序流程控制五、程序调用当一个子程序被调用时,正在指令缓冲单元中译码的指令地址被保存到RETA寄存器或堆栈中,该地址用于返回时继续执行子程序调用前的指令。1、无条件程序调用程序执行到下列指令时就调用子程序。CALLACx:子程序的地址由ACx(23~0)值决定CALLL16:16比特长相对于PC的有符号的偏移量。CALLP24:24比特长的绝对地址。

279堆栈生长方向0x0FF*0x0000堆栈生长方向(SP)栈底栈顶1234...先压栈,后SP-1。先SP+1,后出栈。

280第四章程序流程控制子程序调用过程:(1)在流水线寻址阶段(AD)将数据堆栈(SP)指针减1(字),然后将RETA的低16位压入数据堆栈。(2)在流水线寻址阶段(AD)将系统堆栈(SSP)指针减1(字),然后将RETA的高8位和CFCT(控制流程关系寄存器,8位)的值压入系统堆栈。(3)将调用子程序返回地址(CALL语句的下一条语句的地址)保存到RETA中,当前循环标志保存到CFCT中。(4)将子程序的程序地址装入PC中,清除当前循环关系标志。注意:循环关系指的是当前重复循环的类型和状态记录。

281第四章程序流程控制2、无条件返回RET;执行无条件返回到主程序。返回过程:(1)RETA中的返回地址装入PC,从CFCT中恢复循环关系标志;(2)从数据堆栈(SP)中恢复RETA的低16位,SP指针加1;(2)从系统堆栈(SSP)恢复RETA的高8位和CFCT,SSP指针加1。

282第四章程序流程控制3、条件程序调用CALLCCL16,condCALLCCP24,cond子程序调用过程:在流水线寻址阶段(AD)将数据堆栈(SP)指针减1(字),然后将RETA的低16位压入数据堆栈。在流水线寻址阶段(AD)将系统堆栈(SSP)指针减1(字),然后将RETA的高8位和CFCT的值压入系统堆栈。将调用子程序返回地址保存到RETA中,当前循环标志保存到CFCT中。在程序流水线的读(R)阶段对cond条件判断。条件为真时调用子程序。

283第四章程序流程控制3、条件返回RETCCcond返回过程:RETA中的返回地址装入PC,从CFCT中恢复循环关系标志。从数据堆栈(SP)中恢复RETA的低16位,SP指针加1;从系统堆栈(SSP)恢复RETA的高8位和CFCT,SSP指针加1。在程序流水线的读(R)阶段对cond条件判断。条件为真时返回到主程序。

284第四章程序流程控制六、堆栈当程序调用中断服务程序或子程序时,将程序计数器PC的值或一些重要寄存器的值进行压栈保护,以便程序返回时能从间断处正常继续执行。1、数据堆栈和系统堆栈C55x支持两个16比特的软件堆栈,分别被称为数据堆栈(用SP访问)和系统堆栈(用SSP访问),SP和SSP指针寄存器的高8位是公用的为SPH,SPH可以分别与SP和SSP级联构成23位地址。扩展数据堆栈指针扩展系统堆栈指针

285第四章程序流程控制程序计数器PC的值是24位的,调用子程序时,通过压栈进行保护。数据堆栈保存返回地址的低16位,系统堆栈保存高8位。

286第四章程序流程控制2、堆栈配置C55x提供三种堆栈配置方式,一种为快返回过程,另两种为慢返回过程。它们的区别在于保护和恢复PC和循环关系寄存器的方式不同。(1)慢返回过程:将返回地址和循环关系标志保存到堆栈,但CPU从中断服务程序或子程序返回时,其速度与存储器的存取速度有关;具有慢速返回的双16比特堆栈:数据堆栈和系统堆栈相互独立,当访问数据堆栈时修改SP但SSP不变,执行返回时不使用返回地址寄存器(RETA)和流程控制寄存器(CFCT)。

287第四章程序流程控制具有慢速返回的32比特堆栈:数据堆栈和系统堆栈被视为单一的32比特堆栈,当访问数据堆栈时用相同的增量修改SP和SSP,执行返回时不使用返回地址寄存器(RETA)和流程控制寄存器(CFCT)。(2)快返回过程:将返回地址和循环关系标志保存到返回地址寄存器(RETA)和流程控制寄存器(CFCT)中,因而能够很快的恢复。具有快速返回的双16比特堆栈:数据堆栈和系统堆栈相互独立,当访问数据堆栈时修改SP但SSP不变,执行快速返回时使用返回地址寄存器(RETA)和流程控制寄存器(CFCT)。注:上文说的循环关系寄存器和流程控制寄存器都指CFCT

288第四章程序流程控制例:堆栈定义步骤以及初始化(1)声明具有适当长度的未初始化段(2)将堆栈指针指向栈顶(3)在连接命令文件(*.cmd)中,将堆栈段放入内部存储区内。sp_stack_len.set100ssp_stack_len.set100sp_stack.usect“stack”,sp_stack_lenssp_stack.usect“stack”,ssp_stack_len.textAMOV#(sp_stack+sp_stack_len),XSPMOV#(ssp_stack+sp_stack_len),SSP

289第四章程序流程控制3、自动前后关系转换(1)程序调用的快速返回关系转换调用前开始执行被调用程序之前SP和SSP指针值减1,将CFCT和RETA并行压入系统堆栈和数据堆栈然后将返回地址,循环关系标志分别保存到RETA和CFCT中返回时强迫CPU按相反顺序恢复保存的值,即先从RETA和CFCT中返回PC的值,再从堆栈中返回RETA和CFCT的值,堆栈指针加1。

290第四章程序流程控制(2)中断的快速返回关系转换调用时:将状态寄存器(ST0_55,ST1_55,ST2_55),调试状态寄存器(DBSTAT)以及CFCT和RETA并行压入系统堆栈和数据堆栈,每次压栈之前SP和SSP指针值减1。将返回地址,循环关系标志分别保存到RETA和CFCT中返回时:CPU按相反顺序恢复保存的值,先从RETA和CFCT中返回PC的值,再从堆栈中依次返回CFCT和RETA,调试状态寄存器(DBSTAT)以及状态寄存器(ST0_55,ST1_55,ST2_55)的值,每次弹出数据时堆栈指针加1。

291第四章程序流程控制(3)程序调用的慢速返回关系转换:调用子程序之前,CPU自动将返回地址(PC)和循环关系标志并行压入系统堆栈和数据堆栈,每次压栈之前SP和SSP指针值减1。返回时:强迫CPU从堆栈弹出返回地址到PC并恢复循环关系标志,在数据弹出堆栈后堆栈指针加1。

292第四章程序流程控制(4)中断的慢速返回关系转换:调用时:将状态寄存器(ST0_55,ST1_55,ST2_55),调试状态寄存器(DBSTAT)以及返回地址(PC)和循环关系标志并行压入系统堆栈和数据堆栈,每次压栈之前SP和SSP指针值减1。返回时:CPU从堆栈弹出返回地址到PC并恢复循环关系标志,再从堆栈中依次返回调试状态寄存器(DBSTAT)以及状态寄存器(ST0_55,ST1_55,ST2_55)的值,每次弹出数据时堆栈指针加1。

293第六章dsp开发环境

294第六章dsp开发环境

295第六章dsp开发环境U5-1、2、3、4分别按顺序对应连接TMS320VC5509DSP的GPIO0-GPIO3,当DSP在复位时读取这四个引脚上的状态确定使用哪一种bootloader启动模式:

296第六章dsp开发环境JTAG仿真插头:这是标准的DSP仿真接口,14芯,具有一个空脚是为了防插反而设计的。ICETEK-VC5509-A板具有一个14根引脚的接口,我们可以通过这个JTAG接口对TI生产的DSP芯片进行仿真(参见下图):

297第六章dsp开发环境TMS320VC5509的地址寻址也有比较特殊的地方,从逻辑上说,TMS320VC5509采用统一的编址方式,即存储器的地址号没有重叠。但是,存储器宽度分为两种不同的情况,当存储器按照程序存储空间使用时,地址编码采用字节寻址方式,即每8位存储器占用一个地址编号,此时,A0信号有效,而按照数据存储空间使用时,地址编码采用字寻址方式,即每16位存储器占用一个地址编号,此时,A0信号无效。因此按照不同的计算方法,5509dsp的存储器表示:

298TMS320VC5509评估板存储器映射图

299第六章dsp开发环境DSP开发环境建立

300开发环境建立:开发TMS320C55xx应用系统一般需要以下设备和软件调试工具:1)通用PC一台,安装Windows2000或WindowsXP操作系统及常用工具软件。2)TMS320C55xx评估板及相关电源。如:ICETEK–VC5509-A评估板。3)通用DSP仿真器一台及相关连线,如ICETEK-5100USB仿真器。4)控制对象(选用)。如:ICETEK-CTR控制板。5)TI的DSP开发集成环境CodeComposerStudio。如CCS3.3。6)仿真器驱动程序。7)实验程序及文档。第六章dsp开发环境

301第六章dsp开发环境ICETEK-DSP教学实验箱的硬件连接1.接通电源:检查实验箱上220V电源插座(箱体左侧)中保险管是否完好,在连接电源线以后,检查各模块供电连线是否正确连接,打开实验箱上的电源总开关(位于实验箱底板左上角),使开关位于“开”的位置,电源开关右侧的指示灯亮。2.确认DSP仿真器与PC机及DSP开发板连通。

302第六章dsp开发环境构造DSP开发软件环境(1)安装CCS软件。将CCS安装在默认目录C:\CCStudio_v3.3中,同时也建议用户按照默认安装目录安装;

303第六章dsp开发环境⑵打开软件“CCS3.3”目录;⑶双击其中的“Setup.exe”,进入安装程序;⑷选择“CodeComposerStudio”,按照安装提示进行安装,并重新启动计算机;⑸安装完毕,桌面上出现两个新的图标,如下图。

304第六章dsp开发环境

305第六章dsp开发环境安装DSP通用仿真器驱动需要安装三部分:1、仿真器的Windows驱动程序(usb口要安装);2、安装初始化仿真器程序;3、根据仿真的DSP芯片不同,设置仿真器在CCS环境中的对应驱动程序。

306⑴双击安装盘中的“开发系统驱动\USB”目录下的usbdrv54x.exe文件,然后再打开的页面中输入ccs的安装路径,例如C:\CCStudio_v3.x;⑵此时驱动已经被拷贝到C:\CCStudio_v3.1\icetek目录下;⑶然后把usb电缆连接到计算机的usb接口和usb仿真器上,计算机将提示找到新硬件,选择否,然后点下一步。1、仿真器的Windows驱动程序(usb口要安装)第六章dsp开发环境

307第六章dsp开发环境

308第六章dsp开发环境⑷选择从列表或指定位置安装,然后点下一步;

309⑸输入驱动所在的路径“C:\CCStudio_v3.1\icetek”,然后点下一步,就可以安装好USB接口驱动。第六章dsp开发环境

310第六章dsp开发环境2、安装初始化仿真器程序将安装盘中“工具”子目录下的“xdsresetUSB”目录拷贝到硬盘上的任意路径下,建议和实验程序目录放在一起,便一管理。然后用单击鼠标右键选择“xdsresetUSB”目录下“xdsrstusb”批处理文件,选择“发送到”->“桌面快捷方式”。注:如果您的CCS系统未安装在默认的C:\CCStudio_v3.x目录,请用鼠标右键单击桌面上“xdsrstusb”图标,选择“属性”,将“快捷方式”项和“起始位置”中的路径改成您所安装的路径。

311第六章dsp开发环境1.设置CCS工作在软件仿真环境CCS可以工作在纯软件仿真环境中,就是由软件在PC机内存中构造一个虚拟的DSP环境,可以调试、运行程序。但一般软件无法构造DSP中的外设,所以软件仿真通常用于调试纯软件的算法和进行效率分析等。在使用软件仿真方式工作时,无需连接板卡和仿真器等硬件。

3123、设置CCS软件仿真环境CCS软件仿真环境又包括纯软件仿真环境和借助仿真器的硬件仿真环境。CCS可以工作在纯软件仿真环境中,就是由软件在PC机内存中构造一个虚拟的DSP环境,可以调试、运行程序。但一般软件无法构造DSP中的外设,所以软件仿真通常用于调试纯软件的算法和进行效率分析等。在使用软件仿真方式工作时,无需连接板卡和仿真器等硬件。设置步骤:⑴双击桌面上图标:进入CCS设置窗口;第六章dsp开发环境

313⑵在出现的窗口中按标号顺序进行如下设置:第六章dsp开发环境

314(3)在出现的窗口中按标号顺序进行如下设置:第六章dsp开发环境

315第六章dsp开发环境(4)在下面出现的窗口中选择“否(N)”。此时CCS已经被设置成Simulator方式。

316第六章dsp开发环境设置CCS通过ICETEK-5100USB仿真器连接ICETEK–VC5509-A硬件环境进行软件调试和开发,具体实现步骤:⑴双击桌面上图标:进入CCS设置窗口。⑵在出现的窗口中按标号顺序进行如下设置:

317第六章dsp开发环境

318第六章dsp开发环境⑶接着在下面的窗口中按标号顺序进行如下选择:

319第六章dsp开发环境⑷在出现的窗口中按标号顺序进行如下设置:

320第六章dsp开发环境(5)接着在下面的窗口中按标号顺序进行如下选择:

321(6)在出现的窗口中按标号顺序进行如下设置:第六章dsp开发环境

322(7)在出现的窗口中按标号顺序进行如下设置:第六章dsp开发环境

323以上设置完成后,CCS已经被设置成Emulator的方式(用仿真器连接硬件板卡的方式),并且指定通过ICETEK-5100USB仿真器连接ICETEK–VC5509-A评估板。第六章dsp开发环境

324第七章TMS320C55xDSP应用实例§7.1CCS软件开发流程一、软件开发工具1、软件集成开发环境CCS:完成系统的软件开发,进行软件和硬件仿真调试。它也是硬件调试的辅助手段。2、仿真器ICETEK5100-USB:实现硬件在线仿真调试时与硬件开发平台的通信,控制和读取硬件平台的状态和数据。3、硬件开发平台C5509:提供软件运行和调试时的物理硬件平台。

325第七章TMS320C55xDSP应用实例二、程序实验步骤(1)实验准备:连接好相关实验设备。(2)设置CCS在硬件仿真方式下运行。(3)启动CCS,选择菜单Debug→ResetCPU。(4)创建工程。(5)编辑修改工程中的文件。(6)基本调试功能:下载程序、调试程序、执行程序。(7)使用观察窗口:观察、修改变量。

326第七章TMS320C55xDSP应用实例(8)文件输入/输出:可以从PC机上加载数据到DSP上,用于利用已知的数据流测试算法。(9)图形功能简介:(10)选择菜单File→workspace→saveworkspacsAs…,输入文件名SY.wks。(11)退出CCS。①选择菜单②选择此菜单项⑦单击按钮完成设置⑥修改数据类型④输入数据起始地址③修改名称⑤输入数据个数

327第七章TMS320C55xDSP应用实例三、基础实例:编写一个以C语言为基础的DSP程序1、程序设计要求开设三个整型变量x,y,z赋初值:x=1,y=2x,y,z数值运算计算x+y循环输出结果到z

328第七章TMS320C55xDSP应用实例2、实验步骤(1)实验准备:设置软件仿真模式。(2)建立新的工程文件CProgram.pjt。(3)设置工程文件。(4)编辑输入源程序:先新建源程序窗口、输入源程序、保存源程序。(5)编译源文件、下载可执行程序。(6)打开观察窗口:开启CPU寄存器观察窗口:单击菜单View->Registers->CPURegisters。(7)观察程序运行结果:在内存观察窗口中观察变量的值。(8)退出CCS。

329第七章TMS320C55xDSP应用实例3、实验结果通过实验可以发现,修改cmd文件可以安排程序和数据在DSP内存资源中的分配和位置;map文件中描述了程序和数据所占用的实际尺寸和地址。C语言编制的程序,在经过编译器编译后,需要连接若干C标准程序辅助运行。以下是运行流程:程序入口为_c_int00,执行标准C库中的程序,负责初始化C环境、申请堆栈、初始化有初始值的变量等。程序最终转到用户编制的主函数运行。程序在主函数中的无限循环中持续运行。

330第七章TMS320C55xDSP应用实例四、上述的基础实例可以以汇编(ASM)语言编写,也可以采用C和汇编混合编程。相应实例见教材7.1.3和7.1.4节

331第七章TMS320C55xDSP应用实例7.2DSP算法实验一、有限冲激响应滤波器(FIR)算法实验1、实验原理:利用FIR算法,根据要求设计低通FIR滤波器,确定数字滤波器系数。2、程序流程图:

332第七章TMS320C55xDSP应用实例3、实验步骤:(1)实验准备:设置软件仿真模式,启动CCS。(2)打开工程Fir.pjt。(3)编译并下载程序。(4)打开观察窗口:选择菜单View->Graph->Time/Frequency…,进行相应所示设置。(5)设置断点:在有注释“breakpoint”的语句设置软件断点。(6)运行并观察结果:观察窗口中时域图形,观察滤波效果。(7)退出CCS。

333第七章TMS320C55xDSP应用实例4、实验结果输入波形为一个低频率的正弦波与一个高频的正弦波叠加而成,当输入波形中的低频波形通过了滤波器,高频部分则大部分被滤除。

334第七章TMS320C55xDSP应用实例二、快速傅立叶变换(FFT)算法1、实验原理FFT的原理和参数生成公式:2、程序流程图:初始化工作变量开始调用波形发生子程序产生波形(3个正弦波)调用FFT子程序计算功率谱用标准C的sin函数计算当前波形值(128点)计算步长结束波形发生按照编码逆序排列输入序列用蝶形算法计算计算功率谱FFT返回计算结果

335第七章TMS320C55xDSP应用实例3、实验步骤:(1)实验准备:设置软件仿真模式,启动CCS。(2)打开工程FFT.pjt。(3)编译并下载程序。(4)打开观察窗口:选择菜单View->Graph->Time/Frequency…,进行相应所示设置。(5)设置断点:在有注释“breakpoint”的语句设置软件断点。(6)运行并观察结果:观察窗口中时域和频域图形。(7)退出CCS。

336第七章TMS320C55xDSP应用实例4、实验结果通过观察频域和时域图,程序计算出了测试波形的功率谱,与CCS计算的FFT结果相近。

337第七章TMS320C55xDSP应用实例7.3通信与语音信号采集与分析实验一、语音采集和放送1、实验原理:当已知一个数字音源后,可以利用计算机的处理能力,用数字的方式通过计算模拟回声效应。ICETEK-C5509-A实验箱板上语音codec芯片TLV320AIC23。立体声输入控制接口立体声输出语音codec时钟输入TLV320AIC23耳机输出麦克风输入

338第七章TMS320C55xDSP应用实例2.程序流程图:

339第七章TMS320C55xDSP应用实例3、实验步骤:(1)实验准备:准备音频输入、输出设备,设置硬件仿真模式,启动CCS。(2)打开工程文件。(3)编译并下载程序。(4)打开观察窗口:将相应变量假如观察窗口。(5)运行程序观察结果:适当调整变量值,同时听听输出语音有何变化。(6)退出CCS。

340第七章TMS320C55xDSP应用实例4、实验结果声音放送可以加入数字回声,数字回声的强弱和与原声的延迟均可在程序中设定和调整。本实验也可以使用TI的算法库dsplib提高程序运行效率的方法。在TI的算法库dsplib中有很多比较经典的算法函数,只要选择合适的函数就能方便快速实验任务。本次实例详见教材7.3.2节。

341第七章TMS320C55xDSP应用实例7.4数字图像信号处理实验一、数字图像直方图统计1、实验原理灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数,其横坐标表示像素的灰度级别,纵坐标是该灰度出现的频率(像素个数与图像像素总数之比)。

342第七章TMS320C55xDSP应用实例2、程序流程图

343第七章TMS320C55xDSP应用实例3、实验步骤:(1)实验准备:设置软件仿真模式,启动CCS。(2)打开工程文件。(3)编译并下载程序。(4)设置断点:在有注释“breakpoint”的语句设置软件断点.(4)打开观察窗口:选择菜单View->Graph->Image,选择菜单View->Graph->Time/Frequency设置相应参数。(5)运行程序观察结果:观察图像和直方图统计结果。(6)退出CCS。

344第七章TMS320C55xDSP应用实例4、实验结果由于图像由16级灰度条组成所以直方图统计的结果各灰度的值是离散的,而且各灰度所占百分比大致相同。图像由连续灰度组成,大部分由亮度为140左右的像素组成,没有明显的前景和背景,直方图中只有一个“峰”。

345第七章TMS320C55xDSP应用实例二、数字图像的锐化(LAPLACE算子)1、实验原理图像锐化处理的目的是使模糊的图像变得更加清晰。图像的模糊实质是图像受到平均或积分运算造成的,因此可以对图像进行逆运算如微分运算来使图像清晰化锐化有两种方法:微分法,高通滤波器。

346第七章TMS320C55xDSP应用实例2、程序流程图开始用不同参数调用构造图像的函数产生图像调用锐化子程序产生检测图初始化工作变量锐化结束锐化子程序针对图像中每一像素用拉普拉斯算子进行运算循环

347第七章TMS320C55xDSP应用实例3、实验步骤:(1)实验准备:设置软件仿真模式,启动CCS。(2)打开工程文件。(3)编译并下载程序。(4)设置断点:在有注释“breakpoint”的语句设置软件断点.(4)打开观察窗口:选择菜单View->Graph->Image,设置相应参数。(5)运行程序观察结果:观察图像和锐化结果。(6)退出CCS。

348第七章TMS320C55xDSP应用实例4、实验结果由于图像由16级灰度条组成,在灰度条的交接处存在不太明显的边缘,拉普拉斯锐化算子突出了这些灰度条连接的地方,使得在原先暗区和亮区的不太明显的分界变得明显了。手的纹路被突出显示。

349第八章OMAP5912双核处理器8.1:OMAP5912简介OMAP5912是由一个TMS320C55xDSP内核和一个高性能的ARM926EJ-SARM内核构成的双核处理器,是一种高度集中的软硬件开发平台。OMAP5912的应用领域:应用处理设备移动通信:GPRS,CDMA,蓝牙高级语音识别处理和图像处理音频处理图形和视频加速通用Web接入数据分析处理

350第八章OMAP5912双核处理器特点:低功耗、高性能CMOS技术ARM926EJ-S(MPU)内核和TMS320C55xDSP内核共享内部SRAM的250K空间内存通信控制器DSP的存储器管理单元和DSP外设MPU外设共享外围尾段转换单元密码函数的硬件加速器MPU/DSP/TC的独立省电模式片上SCAN_BASED仿真逻辑和JTAG边界扫描逻辑3种289脚的球形(BGA)封装

351第八章OMAP5912双核处理器8.1.1TMS320C55xDSP内核每周期可以执行1或2条指令;双乘法器;两个算术/逻辑单元;五条内部数据总线(3条读总线和2条写总线);32K×16位片上双存取RAM(DARAM)(64K字节);48K×16位片上单存取RAM(SARAM)(96K字节);指令缓存(24K字节);离散余弦变换DCT及反变换IDCT,像素插值的视频硬件加速器,以及用于视频压缩的运动估计。

352第八章OMAP5912双核处理器8.1.1ARM926EJ-S(MPU)内核支持32位和16位(模式C)指令集;16K字节指令缓存;8K字节数据缓存;数据和程序存储器管理单元(MMU);17个字的写缓冲器;两个为MMU的64个入口转换旁视缓冲器(TLBs)

353第八章OMAP5912双核处理器8.2OMAP5912的功能简介OMAP5912芯片的功能框图:

354第八章OMAP5912双核处理器一、MPU存储区映射MPU外设只能被MPU和系统DMA控制器访问,DSP不能访问这些外设。MPU的地址空间采用字节寻址方式。表8-1给出了MPU可寻址的寄存器空间,表8-2为片选映射空间二、DSP存储区映射DSP总体存储器映射:DSP子系统包括16KB的片内SRAM〔64KB的DARAM和96KB的SARAM)。片内双访问RAM(DARAM):该DARAM位于字节的地址范围为000000h-00FFFFh,是每8个字节一块的8块组成的(见表8-4),每个DARAM块可以执行两个周期。片上单存取RAM(SRAM):SRAM位于字节的地址范围010000h-027FFFh,是每块8个字节的12块组成的(见表8-5)。每个SRAM块每次循环执行可以一次访问(一读或一写)。

355第八章OMAP5912双核处理器三、MPU和DSP专用外设MPU和DSP都有自己独立的专用外设总线。挂在这些专用总线上的外设只能由它们各自对应的处理器访问:定时器:MPU和DSP在各自的TIPBs上有三个可用的32bit定时器。看门狗定时器:MPU和DSP备有1个看门狗定时器,它们都可以配置为看门狗定时器或通用功能定时器。中断处理器:DSP有98个中断源,MPU有160个中断源。LCDCONV(仅MPU具有):支持16bitLCD模式和18bitLCD模式随机数据发生器(RNG)(仅MPU具有):提供了总线接口、时钟、复位和测试接口。DES/3DES(仅MPU具有):提供了硬件加速的数据加/解密功能。SHA1/MD5(仅MPU):提供了硬件加速hash功能。

356第八章OMAP5912双核处理器四、MPU公共外设MPU外设只能被MPU和系统DMA控制器访问。由于该总线能够被系统DMA访问,因此称为公共总线。DSP不能访问该总线上的外设。这些外设包括:USB主机控制器、USB功能外设、多通道缓存串口(McBSP)、主/从接口、MicroWire串口、多媒体卡/安全数字(MMC/SD)接口、HDQ/1-Wire接口、摄像机接口、MPUIO/键盘接口、脉宽调光、脉宽调音、LED脉冲发生器、实时时钟、帧调整计数器、操作系统(OS)定时器。

357第八章OMAP5912双核处理器五、DSP公共外设DSP公共外设总线,可由DSP及DSPDMA直接访问。这些外设也可通过MPUI接口,由MPU和DMA控制器直接访问。公共外设有:多通道缓冲串口(McBSP)和多通道串行接口(MCSI)。六、MPU和DSP共享外设共享外设同时连接到MPU和DSP的公共外设总线上。公共外设有:通用同步接收/发送器(UART)、通用输入输出(GPIO)、邮箱寄存器、通用定时器、串行接口(SPI)、主/从接口、多通道缓冲串口(McBSP2)、多媒体卡/安全数字(MMC/SDIO2)接口和32kHz的同步计数器。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭