文档库 最新最全的文档下载
当前位置:文档库 › DSP启动详解

DSP启动详解

DSP启动详解

DSP2812 启动详解

1. 从0X3F FFC0处复位→执行0X3F FC00地址处的初始化引导函数(Initboot) →根据GPIO选择引导模式→确定用户程序入口地址→从入口处开始执行用户程序。

输入外部引脚为/XRS, 当/XRS为低电平时,DSP终止执行,PC指向地址:0x3FFFC0,当/xRS变成高电平时,DSP开始执行0x3FFFC0中存放的指令。这条指令是条跳转指令或者说是复位中断向量,这个中断向量指向地址0X3F FC00处的初始化引导函数(Initboot),即将地址0x3FFC00(函数initboot的首地址)发给PC,值得注意的是:地址0X3F FFC0也有片内、片外两种,具体的选择情况是:当系统上电运行时,根据XMP/MC引脚的状态决定是从片外的3fffc0处读取复位向量或者时从片内的rom的3fffc0处读取复位向量。低电平方式下从片内读取,高电平方式下从片外读取。InitBoot 函数所做工作有:1.初始化状态寄存器;2.将堆栈指针设为0x400(0x400 - 0x44F作为启动过程中的堆栈);3.读CSM密码保护部分;如果是从片内读取的,则以上程序都是被固化在rom中的,无法更改,4.调用SelectBootMode;模式的选择是由四个引脚GPIOF4(SCITXDA), GPIOF12(MDXA), GPIOF3 (SPISTEA), GPIOF2(SPICLK5).的状态决定的,若为1xxx则跳转到FLASH地址0x3F7FF6, 0010为H0 SARAM地址为0x3F8000.

调用ExitBoot

以上是BootROM完成的工作。从entrypoint开始,就进入用户程序区了。对于汇编程序,可以在程序起点处写一条跳转到Start(如果程序起点是Start)的指令。汇编情况比较简单,跳转到Start后,各项初始化代码工作都由自己完成。对于C语言程序,通常的做法是在程序起点处放置一条跳转指令,转到_c_init0。

这个程序可在

DSP281x_CodeStartBranch.asm中找到,然后程序的执行分为使用或不使用BIOS两种情况。

从rts.src中提取boot28.inc文件,其中包括对于不使用BIOS的情况下,启动后从_c_init0到main函数中间所做的工作。因为这段代码是由C编译器自动运行的,因而常被初学者忽视,以致对其后自己编写的C代码的运行环境不清楚。这一段程序主要完成以下工作:

◇ 分配C堆栈;

◇ 建立C运行环境(CPU寄存器和模式寄存器的配置);

◇ 复制cinit、pinit表、.const、.econst常量到工作区;

◇ 跳转到main函数。

这段代码声明了2个全局变量:__stack,系统堆栈栈底;_c_int00,启动函数。下面列出了C运行环境的初始化程序部分代码:

C28OBJ;选择C28x对象模式

C28ADDR;清除地址模式位

C28MAP;设置M0M1模式

CLRCPAGE0;使用堆栈寻址模式

MOVWDP,#0;初始化DP指向低64K地址

CLRCOVM;关闭溢出模式

ASP;确保SP对齐

这些代码设置了C语言的运行环境。在用户程序中编写的汇编代码不应该破坏这个环境,否则C语言将无法正常运行。

boot rom中存放的bootloader源文件可在文件TMS320x281x DSP Boot ROM Reference

Guide的附件中找到,可从TI网站上搜索该文件

PC的作用:为了保证程序(在操作系统中理解为进程)能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作用,所以通常又称为指令计数器。在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的内存单元地址送入PC,因此程序计数器(PC)的内容即是从内存提取的第一条指令的地址。当执行指令时,CPU将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。

DSP汇编指令学习笔记

Knowledge 问题 谁在DSP的汇编语言中加入了NOP指令? NOP指令加入的条件是什么? About DSP 1.DSP是实时数字信号处理的核心和标志。 2.DSP分为专用和通用两种类型。专用DSP一般采用定点数据结构(一般不支持小数), 数据结构简单,处理速度快;通用DSP灵活性好,但是处理速度有所降低。 3.DSP采用取指、译码、执行三个阶段的流水线(Pipeline)技术,缩短了执行时间,提高了 运行速率。DSP具有8个Functional unit,如果并行处理的话,以600MHz的时钟计算,如果执行的指令是single cycle指令,则可以4800MIPS(指令每秒)。 4.DSP的8个functional Unit,具有独特的功能,对滤波、矩阵运算、FFT(傅里叶变换) 具有 哈弗结构 把指令空间与数据空间隔离的存储方式。 这样实现是为了实现指令的连续读取,而实现pipeline流水线结构。 传统哈弗结构:两个独立的存储空间,还使用独立总线。让取指与执行存储独立,加快执行速度。 改进型哈弗结构:指令与数据的存储空间还是独立的。但是使用公共的总线(地址总线与数据总线)。这样实现的原因是因为出现了CACHE,数据的存储动作大部分被内部的CACHE 总线承接了,所以总线冲突的情况会大大减少。同时让总线的结构与控制变得简单,CACHE 存储的速度也明显快于外设存储器。 冯诺依曼结构:是指令空间与数据空间共享的存放方式。它不能实现pipeline的执行过程。 Pipeline(流水线)技术 是把指令的取指-译码和指令的执行独立开来的技术。虽然每条指令的过程还是要经过取指-译码-执行三个阶段最少3个CPU Cycle。但是多个指令同时并行先后进行,保证总体的指

DSP汇编指令总结

DSP汇编指令总结 一、寻址方式: 1、立即寻址: 短立即寻址(单指令字) 长立即数寻址(双指令字) 第一指令字 第二指令字 16位常数=16384=4000h 2、直接寻址 ARU 辅助寄存器更新代码,决定当前辅助寄存器是否和如何进行增或减。N规定是否改变ARP值,(N=0,不变)

4.3.1、算术逻辑指令(28条) 4.3.1.1、加法指令(4条); 4.3.1.2、减法指令(5条); 4.3.1.3、乘法指令(2条); 4.3.1.4、乘加与乘减指令(6条); 4.3.1.5、其它算数指令(3条); 4.3.1.6、移位和循环移位指令(4条); 4.3.1.7、逻辑运算指令(4条); 4.3.2、寄存器操作指令(35条) 4.3.2.1、累加器操作指令(6条) 4.3.2.2、临时寄存器指令(5条) 4.3.2.3、乘积寄存器指令(6条) 4.3.2.4、辅助寄存器指令(5条) 4.3.2.5、状态寄存器指令(9条) 4.3.2.6、堆栈操作指令(4条) 4.3.3、存储器与I/O操作指令(8条)4.3.3.1、数据移动指令(4条) 4.3.3.2、程序存储器读写指令(2条) 4.3.3.3、I/O操作指令(2条) 4.3.4、程序控制指令(15条) 4.3.4.1、程序分支或调用指令(7条) 4.3.4.2、中断指令(3条) 4.3.4.3、返回指令(2条) 4.3.4.4、其它控制指令(3条)

4.3.1、算术逻辑指令(28条) 4.3.1.1、加法指令(4条); ▲ADD ▲ADDC(带进位加法指令) ▲ADDS(抑制符号扩展加法指令) ▲ADDT(移位次数由TREG指定的加法指令) 4.3.1.2、减法指令(5条); ★SUB(带移位的减法指令) ★SUBB(带借位的减法指令) ★SUBC(条件减法指令) ★SUBS(减法指令) ★SUBT(带移位的减法指令,TREG决定移位次数)4.3.1.3、乘法指令(2条); ★MPY(带符号乘法指令) ★MPYU(无符号乘法指令) 4.3.1.4、乘加与乘减指令(6条); ★MAC(累加前次积并乘)(字数2,周期3) ★MAC(累加前次积并乘) ★MPYA(累加-乘指令) ★MPYS(减-乘指令) ★SQRA(累加平方值指令) ★SQRS(累减并平方指令) 4.3.1.5、其它算数指令(3条); ★ABS(累加器取绝对值指令) ★NEG(累加器取补码指令) ★NORM(累加器规格化指令) 返回 4.3.1.6、移位和循环移位指令(4条); ▲ SFL(累加器内容左移指令) ▲ SFR(累加器内容右移指令) ▲ROL(累加器内容循环左移指令) ▲ROR(累加器内容循环右移指令) 返回 4.3.1.7、逻辑运算指令(4条); ▲ AND(逻辑与指令) ▲ OR(逻辑或指令) ▲ XOR(逻辑异或指令) ▲ CMPL(累加器取反指令) 返回 4.3.2、寄存器操作指令(35条) 4.3.2.1、累加器操作指令(6条)

DSP 汇编指令缩写

ABS Absolute value of Accumulator ADD add to accumulator ADDC add to accumulator with carry ADDT add to accumulator with shift specified by TREG AND and with accumulator CMPL complement accumulator LACC load accumulator with shift LACL load low accumulator and clear high accumulator LACT load accumulator with shift specified by TREG NEG negate accumulator NORM normalize contents of accumulator OR or with accumulator ROL/ROR rotate accumulator left/right SACH/SACL store high/low accumulator with shift SFL/SFR shift accumulator left/right SUB subtract from accumulator SBUC conditional subtract SUBS subtract from accumulator with sign extension suppressed SUBT subtract from accumulator with shift specified by TREG XOR exclusive or with accumulator ZALR zero low accumulator and load high accumulator with rounding ADRK add short limmediate value to AR BANZ branch on AR not zero CMPR compare AR with AR0 LAR load AR MAR modify AR STR store AR SBRK subtract short limmediate APAC add PREG to accumulator LPH load PREG LT load TREG LTA load TREG and ACC previous product LTD load TREG ACC previous product and move date LTS load TREG and subtract previous product MAC multiply and accumulate MACD multiply and accumulate wit data move MPY multiply MPY A multiply and accumulate previous product MPYS multiply and subtract previous product MPYS multiply unsign PAC load accumulator with PREG SPAC subtract PREG from accumulator SPH/SPL store high/low PREG SPM set PREG output shift mode

DSP28335汇编教程

DSP28335汇编教程 当硬件执行指令时,寻找指令所指定的参与运算飞操作数的方式——寻址方式。根据程序的要求采用不同的寻址方式,可以有效地缩短程序的运行时间和提高代码执行效率。汇编指令是可执行指令,每一条指令对应一条机器码,用来控制处理器仲的执行部分进行各种操作。在本章节当中将主要以基于C28x的DSP芯片为例,为读者讲解DSP的寻址方式和汇编指令系统,其中大部分内容也可适用于其他Ti公司的DSP产品。 6.1汇编语言指令集概述 在学习C28x系列DSP的寻址方式和汇编指令指令之前,先来对一些基础的知识进行讲解一下先,在汇编程序当中开发人员会常常使用到许多的特殊符号和标志,它们都具有特殊的含义,在学习汇编之前读者们必须先理解这些符号和标志含义,在这里会对其中最常用最重要的操作数符号和寄存器经行详细说明。 在进行汇编讲解之前先来了解一下开发的核心——CPU。在TMS320C2000系列中,CPU 内核为: C20x/C24x/C240x:C2xLP: C27x/C28x:C27x、C28x 这些CPU的硬件结构有一定差别,指令集也不相同,但是,在C28x芯片中可以通过选择兼容特性模式,使C28xCPU与C27xCPU及C2xLPCPU具有最佳兼容性。可通过状寄存器STl的位OBJMODE和位AMODE的组合,选定模式。 C28x芯片具有3种操作模式: 1.C28x模式:在该模式中,用户可以使用C28x的所有有效特性、寻址方式和指令系统, 因此,一般应使C28x芯片工作于该种模式。 2.C27x目标——兼容模式:在复位时,C28x的CPU处于C27x目标-兼容模式。在该模式 下,目标码与C27xCPU完全兼容,且它的循环—计数也与C27xCPU兼容。 3.C2xLP源——兼容模式:该模式允许用户运行C2xLP的源代码,这些源代码是用C28x 代码生成工具编译生成的。 在下面的讲解当中会牵涉到模式的转换,希望读者要搞清楚每一个模式的对应关系。 本节假设条件为芯片工作于C28x模式(OBJMODE=1,AMODE=0)。复位后,通过执行指令C28OBJ或者SETC OBJMODE将ST1中的OBJMODE位置1,芯片即可工作于C28x模式。 6.1.1 DSP中的操作数 汇编语言离不开操作符和操作数,操作符可以认为就是CPU的指令或者编译器上的伪指令,操作数是指令执行过程中的参与者,也可以说操作数就是指令所控制的对象。 如表6-1,表6-2和表6-3对指令中常用到的一些操作数符号进行说明

dsp汇编指令系统介绍(精)

汇编指令集 本节根据指令的功能来分,提供六张表来说明指令集的概况: 累加器、算数和逻辑指令(表2); 辅助寄存器和数据页指针指令(表3); TREG、PREG和乘法指令(表4); 转移指令(表5); 控制指令(表6); I/O和存储器操作(表7)。 在每张表中,指令按字母顺序排列。执行每条指令所需要的周期数在表中给出,所有指令都假设从内部程序存储器和内部数据存储器中执行,指令的周期数适用于单指令执行,不适用于重复方式。编程时,用户必须对每条指令的寻址方式了解清楚,因此这里也在表中给出了每条指令的寻址方式。由于指令的操作码对用户编程没有多大指导意义,在这里就没有列出来。 为了参照起见,我们先定义这六张概述表的符号意义: ACC 累加器。 AR BITX CM 辅助寄存器。 4位数值,用于指定数据存储器数值中的哪一位将被BIT指令所测试。 2位数值,CMPR指令执行CM值所声明的比较: 若CM=00,测试当前AR=AR0否; 若CM=01,测试当前ARAR0否; 若CM=11,测试当前AR≠AR0否。 Shift TP 4位右移量。用于条件执行指令的2位数值,代表如下4种条件:若BIO引脚为低, TP=00;若TC位=1,TP=01;若TC位=0,TP=10;无条件TP=11。 ARX 用于LAR和SAR指令的3位数据值,指定被操作的辅助寄存器。 52 表2 累加器、算数和逻辑指令 ABS 周期 |(ACC)|→ACC 1 (ACC)+(数据存储器地址)×1 2shift→ACC (ACC)+(数据存储器地址)×

216→ACC 1(ACC)+k→ACC 1 shift (ACC)+lk×2→ACC 2 指令功能 (ACC)+(数据存储器地址)+(C)→ ACC 寻址方式 直接/间接 直接/间接短立即数长立即数 指令说明 ACC取绝对值 移位时低位填0,若SXM=1,高位用符号扩展;若SXM=0,高位填0;结果存在ACC中,该指令使C=0。寻址短立即数时,加操作不受SXM的影响,且不能重复执行。 ADD ADDC 1 直接/间接该指令抑制符号扩展 该指令抑制符号扩展;无论SXM为何值,数据均作无符号16位数看待。当SXM=0和 直接/间接 移位次数等于0时,ADDS与ADD指令结果相同。 被寻址的数据寄存器单元的内容左移并加 直接/间接到ACC,移位次数由TREG的低4位确定, SXM位的值控制移位时是否作符号扩展。 使用直接/间接寻址,ACC的低位字与数据直接/间接存储器单元的值作与运算,结果存在ACC 的低字,ACC的高位字清0。使用立即数寻 址,长立即数可以左移,移位时,32位中长立即数未被长立即操作数填充的位均被清零。 长立即数累加器中的内容用其逻辑反取代指定的数据存储器单元的内容或16位常数直接/间接左移并加载到ACC,低位填0,若SXM= 1,高位用符号位扩展;若SXM=0,则填直接/间接0。 长立即数 指定的数据存储器单元的内容或用0扩展

数字信号处理第四章附加题

第四章附加题 1. 由三阶巴特沃思低通滤波器的幅度平方函数推到其系统函数,设 1/c rad s Ω=。 2. 设计一个满足下列指标的模拟Butterworth 低通滤波器,要求通带的截止频率 6,p f kH z =,通带最大衰减3,p A dB =,阻带截止频率12,s f kH z =,阻带的最 小衰减25s A dB =,求出滤波器的系统函数。 3. 设计一个模拟切比雪夫低通滤波器,要求通带的截止频率 f p =3kHz ,通带衰 减要不大于0.2dB ,阻带截止频率 f s = 12kHz ,阻带衰减不小于 50dB 。 4. 数字滤波器经常以下图描述的方式来处理限带模拟信号。 (1) 如果系统()h n 的截止频率是rad s π,110T kHz =,等效模拟滤波器的截止频率是多少? (2) 设120T kHz =,重复(1)。 ( ) () () () () () () T T a x t x n y n y t a h n ???→ ???→ ???→ ???→ 模-数变换器 数-模变换器 采样周期采样周期 5. 一个线性时不变因果系统由下列差分方程描述 ()()()()10.51y n x n x n y n =---- (1) 系统函数()H Z ,判断系统属于FIR 和IIR 中的哪一类以及它的滤波特性(低通、高通等)。 (2) 若输入()()2cos 0.55x n n π=+ ()0n ≥,求系统输出信号达到稳态后的最大幅度値。 6. 设()a h t 表示一模拟滤波器的单位冲激响应, ()0.9,0 0,0 t a e t h t t -?≥=?

DSP汇编编程及应用举例.

1.DSP汇编语言程序的编写 (1)汇编语言源程序以.asm为其扩展名。 (2)汇编语言源程序的每一行都可以由4个部分组成,句法如下: [标号] [:] 助记符[操作数] [;注释] 其中可用空格或TAB键隔开 标号——供本程序的其他部分或其他程序调用。标号是任选项,标号后面可以加也可以不加冒号“:”。标号必须从第一列写起,标号最多可达到32个字符(A~Z ,a~z ,0~9 ,_ ,以及$),但第1个字符不能以数字开头。引用标号时,标号的大小写必须一致。标号的值就是SPC(段程序计数器)的值。如果不用标号,则第一个字符必须为空格、分号或星号(*)。助记符——助记符指令、汇编指令、宏指令和宏调用。作为助记符指令,一般用大写;汇编命令和宏指令,以英文句号“.”开始,且为小写。汇编命令可以形成常数和变量,当用它控制汇编和连接过程时,可以不占用存储空间。指令和汇编命令都不能写在第1列。 操作数——指令中的操作数或汇编命令中定义的内容。操作数之间必须用逗号“,”分开。有的指令操作无操作数,如NOP、RESET。 注释——注释从分号“;”开始,可以放在指令或汇编命令的后面,也可以放在单独的一行或数行。注释是任选项。如果注释从第1列开始,也可以用“*”表示注释。 (3)常用的汇编命令如表所示。

(4)汇编语言程序中的数据形式如表所示 2.程序 2.1 程序一 编程目的:了解DSP的输入和输出方法 程序功能:求乘积之和y=a1*x1+a2*x2+a3*x3+a4*x4 .title "mpy_add.asm" .mmregs ;将存储映像寄存器导入列表STACK .usect "STACK",10h ;给堆栈段分配空间 .bss a,4 ;将9个字空间分配给各个变量 .bss x,4 .bss y,1 PA0 .set 0 ;将端口PA0全部置0 .def start ;定义标号start .data ;定义数据代码段 table: .word 4,4,4,4 .word 4,4,4,4 .text ;定义文本代码段 start: STM #0,SWWSR ;将等待寄存器设为0,表示不等待

编写一个以c语言或汇编为基础的DSP程序(千一)

广州大学学生实验报告 开课学院及实验室:物理与电子工程学院 2015年3月22日 班级光信121 姓名学号指导老师 实验课程名称数字信号处理实验Ⅰ成绩 实验项目名称编写一个以c语言或汇编为基础的DSP程序 一、实验目的 二、使用仪器、材料 三、实验原理 四、实验步骤 五、实验过程原始记录(数据、图案、计算等) 六、实验结果及分析 一. 实验目的 1.学习用汇编语言编制程序;了解汇编语言程序与C 语言程序的区别和在设置上的不同。 2.了解TMS320C55x 汇编语言程序结果和一些简单的汇编语句用法。 3.学习在CCS 环境中调试汇编代码 二. 实验设备 PC 兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为Windows2000),安装Code Composer Studio 2.2 软件。 三. 实验原理 1.汇编语言程序: 汇编语言程序除了程序中必须使用汇编语句之外,其编译选项的设置与C 语言编制的程序也稍有不同。其区别为: ⑴汇编语言程序在执行时直接从用户指定入口开始,常见的入口标号为“start”,而C 语 言程序在执行时,先要调用 C 标准库中的初始化程序(入口标号为“_c_init00”),完成设置之后,才转入用户的主程序main()运行。 ⑵由于CCS 的代码链接器默认支持C 语言,在编制汇编语言程序时,需要设置链接参数, 选择非自动初始化,注明汇编程序的入口地址。 2.程序设计要求: 程序框图: 四.实验步骤

1.实验准备: 设置软件仿真模式,参看:第三部分、四、1。 2.建立新的工程文件:(1)启动Code Composer Studio 2.21。 ⑵进行以下设置:建立TASM.pjt。 3.设置工程文件: 4.编辑输入源程序: ⑴汇编语言程序: -先新建源程序窗口: 输入源程序: .mmregs sect “.text” .model call=c55_std .align 4

DSP第四章节

四、该应用的软件设计 1、系统初始化程序设计 DSP系统的硬件设计之后,软件设计就成为系统设计的关键,一个DSP系统在很大程度上取决于软件设计是否合理与可靠。在DSP进行数字滤波运算前必须进行一些初始化程序。在本系统中初始化程序主要包括:DSP芯片的初始化、矢量表初始和两个串行端口的初始化。 DSP芯片的初始化是设定DSP芯片工作状态的重要步骤,只有正确进行DSP芯片的初始化,才能保证芯片的正确运行。 中断矢量表是每个DSP系统必须用到的,对中断矢量表进行初始化是DSP初始化的一个重要的组成部分,正确设置中断矢量包括: 1)根据DSP芯片对各中断矢量的设置位置编写一个子程序。 2)设置PMST控制寄存器。该寄存器的高9位是IPTR,用于设置矢量表的起始地址。 3)连接时将矢量表重定位到IPTR指定的地址。 2、数字滤波程序设计流程 DSP实现数字滤波器流程图 本设计的程序工程中包含4个文件:filter,init.asm,vectors.asm,filter.cmd。四个文件实现不同的功能。filter.c文件为C语言编写的源文件,在本设计中主要功能是将各个子程序结合起来,便于阅读。init.asm文件为汇编语言编写的源文件,是本设计中的主要文件,

包含了各个初始化程序的具体操作和实现数字滤波的具体代码。vectors.asm文件为中断矢量表初始化子程序文件,中断矢量表是每个DSP系统必须用到的,对中断矢量表进行初始化是DSP初始化的一个重要的部分。filter.cmd为链接器命令文件。 3、软硬件联调与结论 进行软硬件联调是系统设计的最后一步,是检测系统的稳定性及可行性的重要方法。本系统的联调过程和实际结果如下:①在电脑中设置本系统软件开发环境的相关配置,连接DSP 仿真器与目标测试系统的JTAG接口,给系统上电。运行DSP开发平台,如果不能正常连接则需要检查JTAG电路的连接、整个硬件系统的工作状态、软件平台的配置。②编译修改程序代码,直到编译完全通过,本系统前期所设计的程序全部通过编译。③下载程序到目标系统,通过设置断点和单步运行,检查DSP相关寄存器的值是否配置为所需要的值。④运行完整的程序,给系统送入输入信号,用示波器观察输出信号的参数和特性是接近理想值。通过实际不断调试与改进,本系统能达到预期的数字滤波效果。

DSPC2000汇编指令汇编

第六章 DSP的寻址方式和汇编指令 当硬件执行指令时,寻找指令所指定的参与运算飞操作数的方式——寻址方式。根据程序的要求采用不同的寻址方式,可以有效地缩短程序的运行时间和提高代码执行效率。汇编指令是可执行指令,每一条指令对应一条机器码,用来控制处理器仲的执行部分进行各种操作。在本章节当中将主要以基于C28x的DSP芯片为例,为读者讲解DSP的寻址方式和汇编指令系统,其中大部分内容也可适用于其他Ti公司的DSP产品。 6.1汇编语言指令集概述 在学习C28x系列DSP的寻址方式和汇编指令指令之前,先来对一些基础的知识进行讲解一下先,在汇编程序当中开发人员会常常使用到许多的特殊符号和标志,它们都具有特殊的含义,在学习汇编之前读者们必须先理解这些符号和标志含义,在这里会对其中最常用最重要的操作数符号和寄存器经行详细说明。 在进行汇编讲解之前先来了解一下开发的核心——CPU。在TMS320C2000系列中,CPU 内核为: C20x/C24x/C240x:C2xLP: C27x/C28x:C27x、C28x 这些CPU的硬件结构有一定差别,指令集也不相同,但是,在C28x芯片中可以通过选择兼容特性模式,使C28xCPU与C27xCPU及C2xLPCPU具有最佳兼容性。可通过状寄存器STl的位OBJMODE和位AMODE的组合,选定模式。 C28x芯片具有3种操作模式: 1.C28x模式:在该模式中,用户可以使用C28x的所有有效特性、寻址方式和指令系统, 因此,一般应使C28x芯片工作于该种模式。 2.C27x目标——兼容模式:在复位时,C28x的CPU处于C27x目标-兼容模式。在该模式 下,目标码与C27xCPU完全兼容,且它的循环—计数也与C27xCPU兼容。 3.C2xLP源——兼容模式:该模式允许用户运行C2xLP的源代码,这些源代码是用C28x 代码生成工具编译生成的。 在下面的讲解当中会牵涉到模式的转换,希望读者要搞清楚每一个模式的对应关系。 本节假设条件为芯片工作于C28x模式(OBJMODE=1,AMODE=0)。复位后,通过执行指令C28OBJ或者SETC OBJMODE将ST1中的OBJMODE位置1,芯片即可工作于C28x模式。 6.1.1 DSP中的操作数 汇编语言离不开操作符和操作数,操作符可以认为就是CPU的指令或者编译器上的伪指令,操作数是指令执行过程中的参与者,也可以说操作数就是指令所控制的对象。

DSP汇编指令总结

DS P汇编指令总结 一、寻址方式: 1、立即寻址: 短立即寻址(单指令字) D1 D14 D13 D12 D 1D 1 D9 D8 D7 D 6 D5 D4 D3 D 2 D1 D0 长立即数寻址(双指令字) 第一指令字 D 1D14 D13 D12 D 1D10 D9 D8 D7 D 6 D5 D4 D3 D2 D1 D0 第二指令字 D 1D14 D 1 D12 D11 D1 0 D 9 D 8 D7 D 6 D 5 D4 D 3 D 2 D1 D 0 16位常数=16384=4000h 2、直接寻址 ARU 辅助寄存器更新代码,决定当前辅助寄存器是否和如何进行增或减。

N规定是否改变ARP值,(N=0,不变) 4.3.1、算术逻辑指令(28条) 4.3.1.1、加法指令(4条); 4.3.1.2、减法指令(5条); 4.3.1.3、乘法指令(2条); 4.3.1.4、乘加与乘减指令(6条); 4.3.1.5、其它算数指令(3条); 4.3.1.6、移位和循环移位指令(4条);4.3.1.7、逻辑运算指令(4条); 4.3.2、寄存器操作指令(35条) 4.3.2.1、累加器操作指令(6条) 4.3.2.2、临时寄存器指令(5条) 4.3.2.3、乘积寄存器指令(6条) 4.3.2.4、辅助寄存器指令(5条) 4.3.2.5、状态寄存器指令(9条) 4.3.2.6、堆栈操作指令(4条) 4.3.3、存储器与I/O操作指令(8条) 4.3.3.1、数据移动指令( 4条) 4.3.3.2、程序存储器读写指令(2条) 4.3.3.3、I/O操作指令(2条) 4.3.4、程序控制指令(15条) 4.3.4.1、程序分支或调用指令(7条) 4.3.4.2、中断指令(3条) 4.3.4.3、返回指令(2条) 4.3.4.4、其它控制指令(3条)

相关文档