青岛科技大学信息工程DSP考试复习-浓缩版_第1页
青岛科技大学信息工程DSP考试复习-浓缩版_第2页
青岛科技大学信息工程DSP考试复习-浓缩版_第3页
青岛科技大学信息工程DSP考试复习-浓缩版_第4页
青岛科技大学信息工程DSP考试复习-浓缩版_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2.1 C55x 的CPU体系结构 TMS320C55x CPU结构图结构图 地址总线与数据总线lC55x的CPU总线u1组32位程序总线:PBu5组16位数据总线: BB、CB、DB、EB、FBu6组24位地址总线:PAB、BAB、CAB、DAB、EAB、FABl特点: 这种总线并行机构使CPU在一个机器周期内,能够读1次32位程序代码、读3次16位数据、写2次16位地址2.2 TMS320VC5509A的主要特性 CPU 两个乘法累加单元(MAC) 40位的算术逻辑单元(ALU)和一个16位的算术逻辑单元 采用先进的多总线结构 存储器存储器 128K x 16位的片上RAM【64KB的DA

2、RAM和192KB的SARAM】 8M x 16位的最大可访问外部寻址空间(同步DRAM) 外部存储器接口(EMIF)与通用输入/输出(GPIO)共用引脚 片上外设片上外设 两个20位的定时器 一个看门狗定时器 6通道直接存储器存取控制器(DMA) 三个串口支持最多三个多通道缓冲串口(McBSP) 增强型主机接口(EHPI) 可编程锁相环(DPLL)时钟发生器 USB全速(12Mbps)从端口 I2C主从接口 一个实时时钟 k16绝对寻址绝对寻址程序执行的结果是: T2= 。 例3-1:汇编语言k16绝对寻址程序阅读与分析 .def start .mmregs .text start: MOV

3、 #03H , DPH MOV #24 , *abs16(#2002h) MOV *abs16(#2002h) , T2here: b here操作数*abs16(#2002h)的寻址地址 : 。 032002H0018H DP 直接寻址直接寻址偏移量(Doffset)的计算 Doffset数据存储器Doffset =(Daddr-.dp) & 7FhDaddr是读/写操作的16bit地址,.dp是利用汇编伪指令分配的数值(一般DP的匹配),&表示按位“与”Doffset = Daddr & 7FhDaddr是读/写操作的16bit地址,&表示按位“与”,mmap( )迫使CPU把数据页视为0

4、来操作。Doffset的计算有两种情况:表2-1 DP 直接寻址直接寻址Doffset的计算一、 DP 直接寻址 DP 直接寻址偏移量(直接寻址偏移量(Doffset)的计算)的计算 DP 直接寻址直接寻址 Doffset 的计算代码示例:的计算代码示例:The assembler calculates Doffset: Doffset =(1) 寻址数据存储器寻址数据存储器 At run time, the 23-bit data-space address is generated: 23-bit address =(Daddr .dp) & 7Fh = (FFF4h FFF0h) & 7

5、Fh = 04hDPH:(DP + Doffset) = 03:(FFF0h + 0004h) = 03 FFF4hAMOV #03FFF0h, XDP.dp #0FFF0hMOV 0FFF4h, T2指令实例:指令实例:; Main data page is 03. For run-time, ;DP is FFF0h.; For assembly time, .dp is FFF0h.;Load T2 with the value at local ;address FFF4h.分析:分析:一、 DP 直接寻址 DP 直接寻址偏移量(直接寻址偏移量(Doffset)的计算)的计算 DP 直

6、接寻址直接寻址 Doffset 的计算代码示例:的计算代码示例:汇编器计算偏移量: Doffset =(2) 寻址寻址 程序运行时: ( CPU : DPH = DP = 0) 23-bit 地址产生如下: 23-bit address =Daddr & 7Fh = 0010h & 7Fh = 10hDPH:(DP + Doffset) = 00:(0000h + 0010h) = 00 0010hMOV mmap(AR0), T2 ; Load T2 with the value in AR0. ; mmap( ) qualifier indicates access to MMR. ; A

7、R0 is mapped to address 000010h in data space指令实例:指令实例:分析:分析:一、 DP 直接寻址(1)偶地址排列法 指令中给出的地址为偶地址,存储器中低地址存放高16位操作数。如: MOV dbl(*AR3+) ,AC0执行前:AC0=00 0000 0000 执行后:ACO=00 6CAC BD90 AR3=0100 AR3=0102 (0100h)=6CAC(高字) (0100h)=6CAC (0101h)=BD90(低字) (0101h)=BD90二、TMS320C55XDSP的汇编指令算术运算指令位操作指令扩展辅助寄存器操作指令逻辑运算指令

8、移动指令程序控制指令 4.2.2 汇编器对段的处理l汇编器通过段伪指令自动识别各个段,并将段名相同的语句汇编在一起l汇编器有5条伪指令可以识别汇编语言程序的各个不同段u.text、.data、.sect创建初始化段u.bss和.usect创建未初始化段u.sect与.usect创建自定义段和子段4.6.3 链接器命令文件的编写与使用链接命令文件的作用和主要指令1、链接命令文件用来为链接器提供链接信息,可将链接操作所需的信息放在一个文件中,这在多次使用同样的链接信息时,可以方便地调用2、在链接命令文件中,可使用MEMORY和SECTIONS伪指令,为实际应用指定存储器结构和地址的映射uMEMOR

9、Y:用来指定目标存储器结构uSECTIONS:用来控制段的构成与地址分配 第五章、TMS320C55X的片内集成外设开发及测试 C55x片内外设与芯片支持库简介 时钟发生器通用定时器外部存储器接口 主机接口(EHPI)多通道缓冲串口McBSP异步串口(UART) 通用输入/输出端口GPIODMA控制器I2C总线 多媒体卡控制器通用串行总线(USB)模/数转换器(ADC) 实时时钟(RTC)看门狗定时器(Watchdog)l饱和方式位SATD和SATAuSATD控制D单元的操作,SATA控制A单元的操作。u如果SATD=1,当D单元发生溢出时,对D单元的结果进行饱和处理。不管饱和方式位的值是什么

10、,当累加器发生溢出时,相应的溢出标志位都会被置位uA单元没有溢出标志位,但如果SATA=1,发生溢出时,结果也会进行饱和处理 饱和处理是用最近的边界值代替溢出结果。饱和处理是用最近的边界值代替溢出结果。例如,例如,1616位寄存器的范围是位寄存器的范围是8000h8000h(最小负数)(最小负数)7FFFh7FFFh(最大正数),饱和处理就是用(最大正数),饱和处理就是用7FFFh7FFFh代替比代替比7FFFh7FFFh大的大的结果;用结果;用8000h8000h代替比代替比8000h8000h小的结果。小的结果。堆栈配置中快返回与慢返回过程的区别l快返回与慢返回过程的区别在于CPU怎样保存

11、和恢复两个内部存储器(即程序计数器PC和一个循环现场寄存器)的值。l在快返回过程里l返回地址保存在寄存器RETA中l循环现场保存在寄存器CFCT中l用专门的32位装入和存储指令可同时读/写RETA 和CFCTl在慢返回过程里,返回地址和循环现场保存在堆栈里(在存储器里),当CPU从子程序返回时,这些数据的恢复速度取决于访问存储器的速度DSP处理中断的步骤1)接收中断请求。软件和硬件都要求DSP将当前程序挂起。2)响应中断请求。CPU必须响应中断。如果是可屏蔽中断,响应必须满足某些条件。如果是不可屏蔽中断,则CPU立即响应。3)准备进入中断服务子程序。保护现场,保存寄存器中的值。4)执行中断服务

12、子程序。CPU执行用户编写的ISR。ISR以一条中断返回指令结束,自动恢复步骤中自动保存的寄存器值。4.7 一个完整的TMS320C55x汇编程序 例4-20,这是一个完整的C55x 汇编程序,其功能计算:y = x0 + x3 + x1 + x2。通过该例程可以加深对C55x 汇编程序的了解,熟悉C55x 的寻址方式和开发调试方法。(1)汇编源程序(test.asm)* Step 1: 定义有关代码段和数据段 .title “test.asm”.def x,y,initx .bss x,4 ; 为变量x保留4个未初始化16位存储单元y .bss y,1 ; 为变量y保留1个未初始化16位存储

13、单元.data; 创建初始化段”.data”,存储x的初始化值init .word 1,2,3,4 .text ; 创建代码段(.text).global start ; 定义代码段的起始标号start* Step 2: 处理器模式初始化BCLR C54CM ; 设置处理器为55x模式BCLR AR0LC ;设置AR0为线性模式BCLR AR6LC ;设置AR6为线性模式* Step 3a: 采用间接寻址方法复制x的初始化值到xcopyAMOV #x,XAR0 ; XAR0 指向变量xAMOV #init,AR6 ; XAR6指向初始化表table RPT #3 ; 复制开始MOV *AR6+

14、,*AR0+* Step 3b: 采用直接寻址方法将x的值相加addAMOV #x,XDP ; XDP 指向变量x.dp x MOV x,AC0ADD x+3,AC0ADD x+1,AC0ADD x+2,AC0* Step 3c: 用绝对寻址方法把运算结果写到变量y中MOV AC0,*(#y)endnopB end .end7.2.2乘法运算lC55x提供了硬件乘法器,16位乘法可在一个指令周期内完成。l高于16位的乘法运算可以采用下述方法实现(以32位乘法为例)。例7-3,32位整数乘法运算。文件名:mpy32.asm.title “mpy32.asm” .mmregs.model call

15、=c55_std.model mem=large;*; 本子程序是两个32位整数乘法,得到一个64位结果。操作数取自数; 据存储器,运算结果送回数据存储器。; 数据存储: 指针分配:; X1 X0 32位操作数 AR0 - X1; Y1 Y0 32位操作数 X0; W3 W2 W1 W0 64位结果 AR1 - Y1; Y0; 入口条件: AR2 - W0; SXMD = 1 (允许符号扩展) W1; SATD = 0 (不做饱和处理) W2; FRCT = 0 (关小数模式) W3; ;限制条件:延迟链和输入序列必须指定为长字类型。;*.sect.text.align 4.global startstart:MOV #0100h,AR0 MOV #0102h,AR1 MOV #0104h,AR2 BSET SXMD BCLR SATD BCLR FRCTL1: AMAR *AR0+ ;AR0指向X0 |AMAR *AR1+ ;AR1指向Y0MPYM uns(*AR0-),uns(*AR1),A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论