DSP 2835 教程 附录3 DSP汇编语言
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,1PA0 .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,表示不等待STM #STACK+10h,SP ;设堆栈指针STM #a,AR1 ;将AR1指向变量a的地址RPT #7 ;从程序存储空间转移7+1个值到数据储存空间MVPD table,*AR1+CALL SUM ;调用SUM子程序end: B end ;循环等待SUM: STM #a,AR3 ;将AR3指向变量a的地址STM #x,AR4 ;将AR4指向变量x的地址RPTZ A,#3 ;将A清0,并重复执行下一条指令3+1次MAC *AR3+,*AR4+,ASTL A,@y ;将寄存器A中的低16位存入y地址空间PORTW @y,PA0 ;将y地址中的值输出到输出口RET ;子程序返回.end ;程序结束等待位的设置:C54x片内有一部件——软件可编程等待状态发生器,控制着外部总线的工作。
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代码生成工具编译生成的。
在下面的讲解当中会牵涉到模式的转换,希望读者要搞清楚每一个模式的对应关系。
DSP 28335 教程 附录4 DSP的C语言PPT课件
Appendix D TMS320C28x™ MCU Workshop
T TO
Technical Training Organization
Copyright © 2009 Texas Instruments. All rights reserved.
Learning Objectives
unsigned int
16
short (same as int or smaller) 16
unsigned short
16
Usually 0 .. 255, but can hold 16 bits -32K .. 32K, 16 bits signed 0 .. 64K, 16 bits unsigned same as int same as unsigned int
addresses.
Setting Up the Stack
Linker command file:
SECTIONS
{
.stack :>
RAM align=2
...
}
Boot.asm sets up SP to point at .stack
The .stack section has to be linked into the low 64k of data memory. The SP is a 16-bit register and cannot access addresses beyond 64K.
long (same as int or larger) 32 -2M .. 2M, 32 bits signed
unsigned long
32 0 .. 4M, 32 bits unsigned
DSP课件第六章汇编语言
;符号SYM1等于2
BEGIN: LDP SYM1 ;将2装入DP
.word 016h ;初始化一个字为16h
2021/3/5
2
1、标号域
标号包含1~32个字母、数字、字符(A~Z,a~2,0~9,—及$),可识别符号的大 小写,且规定第一个字符不能是数字。
标号可以后随冒号(:),冒号并不作为标号的一部分被处理。
如果不使用标号,则第一个字必须是空格或分号或星号。
当选用标号时,其值是段程序计数器(SPC)的当前值,标号指向与它们相关联的语句。 例如,如果用.word伪指令初始化几个字,那么标号将指向第一个字。
行号 SPC 目标代码 源语句
10 0040 000A START:.word 0Ah,3,7
0041 0003
2021/3/5
14
6.3 通用目标文件格式
CCS开发环境可以看成是一个大的软件包,里面包含了源代码编 辑器,以及工程文件组织、编译和调试等一切功能模块。该软件包 里,shell程序可以完成3个功能:编译、汇编和链接。shell程序缺省 在C盘安装时,被安装在C:\ti\c2400\cgtool子目录下,对应的文件名 为dspcl.exe。
0042 0007
标号也可以单独出现在行中,此时它指向下一行中的指令。如:
3 0050 HERE:
4 02002510/3/5 0003 .word 3 ;此行SPC无增量
3
2、助记符域
助记符是源语句中的关键部分,不能缺省,它表示本指令的操作 类型。助记符不能从源语句的第一列开始,如果从第一列开始,将被 解释为标号。
8
3、符号
符号被用做标号、常数及替代符号。符号名最多可由32个字母和数 字混合组成(A~Z,a~z,0~9,$和_)。符号的第一个字符不能是数字,符 号内不能有空格。用户定义的符号分大小写,例如汇编时ABC,Abc及 abc被识别为3个不同的符号。
dsp,tms320f28335,汇编编码,规范
竭诚为您提供优质文档/双击可除dsp,tms320f28335,汇编编码,规范篇一:tms320F28335中文资料tms320F28335中文资料tms320F28335采用176引脚lqFp四边形封装,其功能结构参见参考文献。
其主要性能如下:高性能的静态cmos技术,指令周期为6.67ns,主频达150mhz;高性能的32位cpu,单精度浮点运算单元(Fpu),采用哈佛流水线结构,能够快速执行中断响应,并具有统一的内存管理模式,可用c/c++语言实现复杂的数学算法;6通道的dma控制器;片上256kxl6的Flash存储器,34kxl6的saRam存储器.1kx16otpRom和8kxl6的bootRom。
其中Flash,otpRom,16kxl6的saRam均受密码保护;控制时钟系统具有片上振荡器,看门狗模块,支持动态pll调节,内部可编程锁相环,通过软件设置相应寄存器的值改变cpu的输入时钟频率;8个外部中断,相对tms320F281x系列的dsp,无专门的中断引脚。
gpi00~gpi063连接到该中断。
gpi00一gpi031连接到xintl,xint2及xnmi外部中断,gpl032~gpi063连接到xint3一xint7外部中断;支持58个外设中断的外设中断扩展控制器(pie),管理片上外设和外部引脚引起的中断请求;增强型的外设模块:18个pwm输出,包含6个高分辨率脉宽调制模块(hRpwm)、6个事件捕获输入,2通道的正交调制模块(qep);3个32位的定时器,定时器0和定时器1用作一般的定时器,定时器0接到pie模块,定时器1接到中断intl3;定时器2用于dsp/bios的片上实时系统,连接到中断intl4,如果系统不使用dsp/bios,定时器2可用于一般定时器;串行外设为2通道can模块、3通道sci模块、2个mcbsp(多通道缓冲串行接口)模块、1个spi模块、1个i2c主从兼容的串行总线接口模块;12位的a/d转换器具有16个转换通道、2个采样保持器、内外部参考电压,转换速度为80ns,同时支持多通道转换;88个可编程的复用gpio引脚;低功耗模式;1.9V内核,3.3Vi/o供电;符合ieeell49.1标准的片内扫描仿真接口(jtag);tms320F28335的存储器映射需注意以下几点:片上外设寄存器块0~3只能用于数据存储区,用户不能在该存储区内写入程序。
DSP28335教学板使用说明
• CCS 提供一个单一用户界面,指导用户完成应用程序开发流程的每一步骤。
• CCS 提供了基本的代码生成工具,它们具有一系列的调试、分析能力。CCS 支持如下 所示的开发周期的所有阶段。
• CCS 集成的软件工具: – 代码生成工具(包括 C6000 的 C 编译器、汇编优化器、汇编器和连接器)
– 软件模拟器(Simulator)
第8页
HFQJ
TMS320F28335 使用说明
合肥求精科技有限公司
第9页
HFQJ
2.2 如何建立一个 28335 的工程
Step 1.新建工程
TMS320F28335 使用说明
合肥求精科技有限公司
第 10 页
HFQJ
TMS320F28335 使用说明
Step 2.在 controlSUITE 文件夹中按下图所示路径选择 DSP28335_common 和 DSP28335_headers 复制这两个文件夹
合肥求精科技有限公司
第6页
HFQJ
exp19_ds1302
ds1302 时钟实验
TMS320F28335 使用说明
exp20_I2C_24C32 EEPROM 存储实验
exp21_shagweijian 完整的三相交流异步电机程序(带上位机) dspwm
合肥求精科技有限公司
第7页
HFQJ
第二部分 CCS V5 开发环境介绍
Boot ROM: 8K×16-位
OTP ROM: 1K×16-位
其中 FLASH、OTP ROM 和 16K×16-位 SRAM 受密码保护,保护用户程序。
片上外设:
ePWM: 12 路
HRPWM:
6路
DSP技术实验指导书28335
《DSP技术》课程实验指导书中原工学院电子信息学院2015-5-4《电能变换与控制试验平台—DSP技术》课程实验指导书一、课程的目的、任务本课程是电气工程及其自动化专业学生在学习电力电能变换及控制方向课程中的一门实践性技术课程,其目的在于通过实验使学生能更好地理解和掌握电能变换及控制基本理论,培养学生理论联系实际的学风和科学态度,提高学生的电工实验技能和分析处理实际问题的能力。
为后续课程的学习打下基础。
二、课程的教学内容与要求本试验平台可完成DSP技术CCS使用、时钟、中断、定时器、A/D转换、EV 事件管理模块和通信等实验,可根据教学大纲的要求进行选取。
三、各实验具体要求见P2四、实验报告学生结束实验后应完成相应的实验报告并交给指导老师。
其中实验报告的主要内容包括:实验目的,实验内容,实验结果和实验心得等。
实验一 CCS软件的认识实验目的1.熟悉 CCS 集成开发环境,掌握工程的生成方法;2.掌握 CCS 集成开发环境的调试方法;实验内容:1. DSP 源文件的建立;2. DSP 程序工程文件的建立;3.学习使用 CCS 集成开发工具的调试工具;实验知识背景:CCS 提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。
CCS 提供了基本的代码生成工具,它们具有一系列的调试、分析能力。
(1)CCS3.3的安装与配置和CCS3.1类似,先安装CCS3.3,路径可选择为C:\CCStudio_v3.3,桌面上会出现和两个图标,然后安装硬件仿真器usb驱动SEED-XDSUSB_CCS3.3,路径仍为C:\CCStudio_v3.3,C:\CCStudio_v3.3\drivers出现Seedusb2.cfg文件,安装完毕后,先双击图标进入Code Composer Studio Setup,在Family下拉列表中选择C28xx。
DSP实验三、TMS320F28335定时器控制LED亮灭
DSP实验三、TMS320F28335定时器控制LED亮灭继续我的第三个实验;实现定时器控制LED亮灭:学习⽬的:定时器的寄存器设置及准确定时功能,F28335共有三个定时器:timer0、timer1、timer2(timer2也可⽤于DSP/BIOS);功能描述:上电默认LD4灭;初始化完成后,LD4以1HZ(1S)频率做状态翻转;电路连接说明:LD4设置为通⽤GPIO 上拉输出初始化后默认为输出LD4灭状态;LD4控制LED灯的负极,如下图;本次实验选⽤定时器0,程序时刻读取计数器的值,当值为0时,LD4状态翻转,计数器重载;程序设计说明:定时器0的预定标寄存器和计数器设置:定时器时钟为sysclkout=135MHz,预定标寄存器设为1350,计数器设为100000;135Mhz/(1350*100000=1Hz)主要程序如下:CpuTimer0Regs.TPR.bit.TDDR = 0x546 & 0xFF;//0x546 预定标寄存器(预分频器)CpuTimer0Regs.TPRH.bit.TDDRH = (0x546>>8) & 0x00FF;//0x546 预定标寄存器(预分频器)注意:在对分配寄存器设置是出现问题,TDDR、TDDRH是两个8位寄存器组成的16位寄存器。
源程序如下:#include"DSP2833x_Device.h"// DSP2833x Headerfile Include File#include"DSP2833x_Examples.h"// DSP2833x Examples Include File#define LD3_ON() GpioDataRegs.GPACLEAR.bit.GPIO0 = 1#define LD3_OFF() GpioDataRegs.GPASET.bit.GPIO0 = 1#define LD3_TOGGLE() GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1#define LD4_ON() GpioDataRegs.GPBCLEAR.bit.GPIO34 = 1#define LD4_OFF() GpioDataRegs.GPBSET.bit.GPIO34 = 1#define LD4_TOGGLE() GpioDataRegs.GPBTOGGLE.bit.GPIO34 = 1#define Key_SW12() GpioDataRegs.GPBDAT.bit.GPIO50/** main.c*/int main(void) {InitSysCtrl();IER = 0x0000;IFR = 0x0000;InitPieCtrl();InitPieVectTable();InitGpio();EALLOW;//GPIO0 LD3 控制LED负极GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;//0 gpio modeGpioCtrlRegs.GPADIR.bit.GPIO0 = 1;//1 output 0 inputGpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;//1 enable pullup 0 disable pullup//GPIO34 LD4 控制LED负极GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;//0 gpio modeGpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;//1 output 0 inputGpioCtrlRegs.GPBPUD.bit.GPIO34 = 0;//1 enable pullup 0 disable pullup//GPIO50 按键矩阵SW12输⼊端GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 0;//0 gpio modeGpioCtrlRegs.GPBDIR.bit. GPIO50 = 0;//1 output 0 inputGpioCtrlRegs.GPBPUD.bit. GPIO50 = 0;//1 enable pullup 0 disable pullup GpioCtrlRegs.GPBCTRL.bit.QUALPRD2= 200;//采样周期=2*Tsysclkout*200GpioCtrlRegs.GPBQSEL2.bit.GPIO50 = 2;//采样窗内3次采样结构相同//GPIO53 按键矩阵负极输出0GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 0;//0 gpio modeGpioCtrlRegs.GPBDIR.bit. GPIO53 = 1;//1 output 0 inputGpioCtrlRegs.GPBPUD.bit. GPIO53 = 0;//1 enable pullup 0 disable pullupGpioDataRegs.GPBCLEAR.bit.GPIO53 = 1;LD3_ON();//默认输出亮状态LD4_OFF();EDIS;//定时器0 设为1Hz = 135MHz/(1350*100000)CpuTimer0Regs.PRD.all = 100000;//0x186A0 周期寄存器CpuTimer0Regs.TPR.bit.TDDR = 0x546 & 0xFF;//0x546 预定标寄存器(预分频器)CpuTimer0Regs.TPRH.bit.TDDRH= (0x546>>8) & 0x00FF;//0x546 预定标寄存器(预分频器)CpuTimer0Regs.TCR.bit.TSS = 1;//1停⽌定时器⼯作 0启动定时器CpuTimer0Regs.TCR.bit.TRB = 1;//重载定时器计数器和预分频器CpuTimer0Regs.TCR.bit.TSS = 0;//1停⽌定时器⼯作 0启动定时器{if(CpuTimer0Regs.TIM.all==0){LD4_TOGGLE() ;CpuTimer0Regs.TCR.bit.TSS = 1;//1停⽌定时器⼯作 0启动定时器CpuTimer0Regs.TCR.bit.TRB = 1;//重载定时器计数器和预分频器CpuTimer0Regs.TCR.bit.TSS = 0;//1停⽌定时器⼯作 0启动定时器}}}主循环应该采⽤⽤下⾯的语句更合理,即采⽤判断定时器中断标志的⽅式,来判断计数器为0,计数结束,如下:while(1){if(CpuTimer0Regs.TCR.bit.TIF==1){ //中断标志位,即使没有使能中断,但是定时计数器减到0时,该位置1,该位写1清0 CpuTimer0Regs.TCR.bit.TIF=1;//清中断标志位LD4_TOGGLE() ;}}。
TMS320F28335教程
低功耗模式和省电模式
支持IDLE,STANDBY,HALT模式
禁止外设独立时钟
179引脚BGA封装或176引脚LQFP封装
DSP技术应用
DSP技术应用
SEED-DEC28335
DSP技术应用
原理框图
片上存储器: FLASH:256K x 16 SRAM:34K x 18 Boot ROM:8K x 16 OTP ROM:1K x 16 片上外设 PWM脉冲输出 GAP/QEP输入 A/D模拟输入 RS232/RS485 CAN总线 RTC+EEPROM EPWM输出:12通道 HRPWM:6通道
简化软件开发,加快上手速度
无需再将程序转换为定点,节省开发时间 提供完善的用户手册和源程序,缩短新芯片的学习时间
DSP技术应用
处理器性能
300 MFLOPS at 150MHz Single-cycle 32-bit MAC 6-channel DMA support for EMIF, ADC, McBSP Code security 68 存储器 512 KB KB Flash 512KB flash and 68KB RAM RAM Configurable 16- or 32-bit EMIF Memory Bus 控制外设 DMA PWM outputs interfaces for three
使用
• 最佳的代码密度 • 兼容C54x™ DSP软件
• 兼容C62x™ DSP软件
DSP技术应用
C2000系列DSP
子系列
C2xx子系列:16位定点DSP、20MIPS
代表器件:TMS320F206PZ C24x子系列:16位定点DSP、20MIPS
DSP28335教程14-14页精选文档
Internet Product Information Center
TI Workshops Download Site
Device information Application notes Technical documentation
my.ti News and events Training
Enroll in Technical Training: ti/sc/training
USA - Product Information Center (PIC)
Available through TI authorized distributors and on the TI web
Part Number:
TMDSPREX28335
C2000 Digital Power Experimenter Kit
DPEK includes
2-rail DC/DC EVM using TI PowerTrain™ modules (10A)
Small form factor (9cm x 2.5cm) with standard 100-pin DIMM interface
analog I/O, digital I/O, and JTAG signals available at DIMM interface
GalvaniБайду номын сангаасally isolated RS-232 interface
DSP3-CCS5及汇编语言应用
2017/3/1 Wednesday
10
一、F28335汇编语句格式 1、汇编语句格式
[标号] [:] [||] 助记符 [操作数1,操作数2,...] [;注释]
2、基本规定
•语句以标号、空格、星号或分号开头; •标号必须写在第一列,由字符(A-Z、a-z、_或$)和 数字0-9构成,开头不能为数字,最多128个字符; •必须用一个或多个空格分隔每一个域,制表符 TAB 同空格等效; •在第一列开始的注释可以用星号或者分号打头,但 在其他列开始的注释必须以分号开头; •助记符不能从第一列开始,否则将被视为标号。
13
2017/3/1 Wednesday
3、条件判断符号
COND 0000 0001 符号 NEQ EQ 不等于 等于 描述 Z=0 Z=1 测试标志位
0010
0011 0100 0101
GT
GEQ LT LEQ
大于(有符号减法)
大于或等于(有符号减法) 小于(有符号减法) 小于或等于(有符号减法)
16
(3)段的分类 已初始化段:包含已初始化数据和代码; 未初始化段:为未初始化变量保留空间。
(4)汇编语言段与存储器映像的关系
汇编语言源文件 Data | Program .bss 段 (为变量保留的空间) .stack 段 .data 段 (已初始化数据或变量) .text 段 (可执行代码)
Origin简写
length简写
RAML1:o=0x009000,l=0x1000
PAGE 1: RAML4:o=0x00C000,l=0x1000
} SECTIONS { .text : > RAML1, PAGE = 0 .data : > RAML1, PAGE = 0 . bss : > RAML4, PAGE = 1 }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
y
sum:
AR3 COUNT
Program Control ALU / Multiply Operations Data Move
Logical Operations
Special Instructions
ALU and Accumulator
16/32 data mem,
Product (32)
16/32 bit registers
MUX
8/16 Imm
ALU and Barrel Shifter
ST0, ST1
ACC AH (31-16) AL (15-0)
AH.MSB AH.LSB AL.MSB AL.LSB
Accumulator - Basic Math Instructions
Format
loc16,ACC <<shift loc16,ACC <<shift
MOV ADD SUB AND OR XOR AND NOT NEG MOV
Ax, loc16 Ax, loc16 Ax, loc16 Ax, loc16 Ax, loc16 Ax, loc16 Ax,loc16,#16b Ax Ax loc16,Ax
Function Short Branch Fast Short Branch Fast Branch Absolute Branch Dynamic Branch SB SBF BF LB LB BAR Instruction 8bit,cond 8bit,EQ|NEQ|TC|NTC 16bit,cond 16bit,cond 22bit *XAR7 16bit,ARn,ARn,EQ|NEQ Cycles T/F Size 7/4 4/4 7/4 4/4 4 4 1 1 2 2 2 1
Perform simple program control using branch and conditional codes Write C28x code to perform basic arithmetic Use the multiplier to implement sum-of-products equations Use the RPT instruction (repeat) to optimize loops Use MAC for long sum-of-products Efficiently transfer the contents of one area of memory to another Examine read-modify-write operations
ቤተ መጻሕፍቲ ባይዱ
Program Control ALU / Multiply Operations Data Move
Logical Operations
Special Instructions
Branch Types and Range
3 Branch Types
0x000000
Program Memory
y xn
n 0
4
Data
x x0 x1 x2 x3 x4 XAR2
len x y
.set .usect .set
.sect MOVL MOV MOV ADD BANZ MOV
5 “samp”,6 (x+len)
“code” XAR2,#x AR3,#len-2 AL,*XAR2++ AL,*XAR2++ sum,AR3-*(0:y),AL
Fast Relative Branch B
Branch on AR
Branch on compare Condition Code
NEQ EQ GT GEQ LT LEQ HI HIS (C)
BANZ 16bit,ARn--
4/2
4/2
2
2
LO (NC) LOS NOV OV
NTC TC UNC NBIO
Sum-of-Products
Y = A*X1 + B*X2 + C*X3 + D*X4
ZAPA MOV MPY MOVA MPY MOVA MPY MOVA MPY ADDL MOVL ;ACC T,@X1 ;T = P,T,@A ;P = T,@X2 ;T = P,T,@B ;P = T,@X3 ;T = P,T,@C ;P = T,@X4 ;T = P,T,@D ;P = ACC,P<<PM ;ACC @y,ACC = P = OVC = 0 X1 A*X1 X2 ;ACC = A*X1 B*X2 X3 ;ACC = A*X1 + B*X2 C*X3 X4;ACC = A*X1 + B*X2 + C*X3 D*X4 = Y
P Register (32)
Shift (PM)
ACC (32)
Multiplier Instructions
Instruction MOV MPY MPY MPYB MPYB MOV ADD SUB T,loc16 ACC,T,loc16 P,T,loc16 ACC,T,#8bu P,T,#8bu ACC,P ACC,P ACC,P T ACC P ACC P ACC ACC ACC Execution = loc16 = T*loc16 = T*loc16 = T*8bu = T*8bu = P += P -= P Purpose Get first operand For single or first product For nth product Using 8-bit unsigned const Using 8-bit unsigned const Move 1st product<<PM to ACC Add nth product<<PM to ACC Sub nth product<<PM fr. ACC
32x32 Long Multiplication
X X Y XO Y1 Z3 * X1 Z2 Z1 Z0 * Y0
Integer long multiplication u(long) = u(long) * u(long) Fraction long multiplication: (long) = (long) * (long) (long) 64 = (long) 32 * (long) 32
Local Var
22-bit old RPC
PC
BANZ Loop Control Example
Auxiliary register used as loop counter Branch if Auxiliary Register not zero Test performed on lower 16-bits of XARx only
Ex
Ax = AH or AL Operations
ACC Operations Variation
MOV ADD SUB MOV ADD SUB MOV MOVH
} }
ACC,loc16<<shift from memory (left shift optional) ACC,#16b<<shift 16-bit constant (left shift optional) ;AL ;AH
Assembly Programming
Appendix C TMS320C28x™ MCU Workshop
T TO
Technical Training Organization
Copyright © 2009 Texas Instruments. All rights reserved.
Learning Objectives
0 or 1
based on SXM
C
Arithmetic Shift Right – Long: ASRL
Multiply Unit
XT Register T Register 32x32 Multiply Unit 16x16 MUX Data Mem or Register
Prog Mem (16) or Immed (8,16)
Shift the Accumulator
Shift full ACC
LSL SFR LSL SFR ACC <<shift ACC >>shift ACC <<T ACC >>T (1-16) (0-15) SXM C
31 ……… 0 ACC
31 ……… 0 ACC
0
LSL
C
SFR
Shift AL or AH
31 ……… 0 ACC
C
0
Logical Shift Left – Long: LSLL
0
31 ……… 0 ACC
C
Examples: LSLL ACC, T LSRL ACC, T ASRL ACC, T
Note: T(4:0) are used; other bits are ignored
Logical Shift Right – Long: LSRL 31 ……… 0 ACC
Short Branch offset +127/128 1-word instruction
Branch offset +/-32K 2-word instruction
Long Branch absolute 4M
2-word instruction
PC 0x3FFFFF
Program Control - Branches