dsp第六章汇编程序
DSP原理与应用(张卫宁)课后习题答案

第一章:1、数字信号处理的实现方法一般有哪几种?答:数字信号处理的实现是用硬件软件或软硬结合的方法来实现各种算法。
(1) 在通用的计算机上用软件实现;(2) 在通用计算机系统中加上专用的加速处理机实现;(3) 用通用的单片机实现,这种方法可用于一些不太复杂的数字信号处理,如数字控制;(4) 用通用的可编程DSP芯片实现。
与单片机相比,DSP芯片具有更加适合于数字信号处理的软件和硬件资源,可用于复杂的数字信号处理算法;(5) 用专用的DSP芯片实现。
在一些特殊的场合,要求的信号处理速度极高,用通用DSP 芯片很难实现(6)用基于通用dsp核的asic芯片实现。
2、简单的叙述一下dsp芯片的发展概况?答:第一阶段,DSP的雏形阶段(1980年前后)。
代表产品:S2811。
主要用途:军事或航空航天部门。
第二阶段,DSP的成熟阶段(1990年前后)。
代表产品:TI公司的TMS320C20主要用途:通信、计算机领域。
第三阶段,DSP的完善阶段(2000年以后)。
代表产品:TI公司的TMS320C54主要用途:各个行业领域。
3、可编程dsp芯片有哪些特点?答:1、采用哈佛结构(1)冯。
诺依曼结构,(2)哈佛结构(3)改进型哈佛结构2、采用多总线结构3.采用流水线技术4、配有专用的硬件乘法-累加器5、具有特殊的dsp指令6、快速的指令周期7、硬件配置强8、支持多处理器结构9、省电管理和低功耗4、什么是哈佛结构和冯。
诺依曼结构?它们有什么区别?答:哈佛结构:该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。
冯。
诺依曼结构:该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。
dsp汇编指令系统介绍(精)

汇编指令集本节根据指令的功能来分,提供六张表来说明指令集的概况:累加器、算数和逻辑指令(表2);辅助寄存器和数据页指针指令(表3);TREG、PREG和乘法指令(表4);转移指令(表5);控制指令(表6);I/O和存储器操作(表7)。
在每张表中,指令按字母顺序排列。
执行每条指令所需要的周期数在表中给出,所有指令都假设从内部程序存储器和内部数据存储器中执行,指令的周期数适用于单指令执行,不适用于重复方式。
编程时,用户必须对每条指令的寻址方式了解清楚,因此这里也在表中给出了每条指令的寻址方式。
由于指令的操作码对用户编程没有多大指导意义,在这里就没有列出来。
为了参照起见,我们先定义这六张概述表的符号意义:ACC 累加器。
ARBITXCM 辅助寄存器。
4位数值,用于指定数据存储器数值中的哪一位将被BIT指令所测试。
2位数值,CMPR指令执行CM值所声明的比较:若CM=00,测试当前AR=AR0否;若CM=01,测试当前AR<AR0否;若CM=10,测试当前AR>AR0否;若CM=11,测试当前AR≠AR0否。
ShiftTP 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)+(数据存储器地址)×12shift→ACC(ACC)+(数据存储器地址)×216→ACC 1(ACC)+k→ACC 1shift(ACC)+lk×2→ACC 2指令功能(ACC)+(数据存储器地址)+(C)→ACC寻址方式直接/间接直接/间接短立即数长立即数指令说明ACC取绝对值移位时低位填0,若SXM=1,高位用符号扩展;若SXM=0,高位填0;结果存在ACC中,该指令使C=0。
dsp第六章汇编程序

§6.3 宏指令
• 为了简化汇编语言程序的书写,常把一些频繁出现的程序段定义为宏指令
• 当程序需要执行这一段程序段时只要一条宏调用语句 ,减少汇编语言程序的重复书写
• TMS320系列DSP汇编器支持宏例指1 令
(1)宏定义
宏定义:
(2)宏调用 举例
parms
.macro x, y, z
LACC
x
• 这类伪指令使汇编器根据表达式 求值结果的真或假来汇编代码的某 些段。
• 伪指令分为8类。 1)段定义伪指令 2)初始化常数伪指令 3)段程序计数器排列伪指令 4)输出列表格式伪指令 5)引用其他文件伪指令 6)条件汇编伪指令 7)汇编时的符号伪指令 8)其他伪指令
• 该类伪指令使定义的符号名等同于 常数值或字符串
例 .set .equ .struct .endstruct
• 常用的伪指令
• 定义标题伪指令 .title 句法: .title “字符串” 例: .title “example
• 终止源程序汇编伪指令 .end
• 赋值伪指令 .set 和 .equ 句法: 符号 .set 数值 符号 .equ 数值 例: DAC0 .set 0001h
• 伪指令分为8类。 1)段定义伪指令 2)初始化常数伪指令 3)段程序计数器排列伪指令 4)输出列表格式伪指令 5)引用其他文件伪指令 6)条件汇编伪指令 7)汇编时的符号伪指令 8)其他伪指令
•该类伪指令为文件提供信息或提供这 些文件的信息。
• 伪指令分为8类。 1)段定义伪指令 2)初始化常数伪指令 3)段程序计数器排列伪指令 4)输出列表格式伪指令 5)引用其他文件伪指令 6)条件汇编伪指令 7)汇编时的符号伪指令 8)其他伪指令
第六章_DSP的汇编语法寻址及指令系统2

助记符方式汇编程序语法
[label][:] mnemonic [operand list] [;comment]
[标号][:] 助记符
[操作数]
[;注释]
汇编程序语法
1.所有的语句必须由语句标号、空格、*号或 ; 号开头。 2.语句标号不是必须的,如果用,就必须在第一 列。 3.语句中的各部分之间,由一个或多个空格分开。 4.注释不是必须的。注释可以从第一列的 * 号 或 ;号开头;如果不是从第一列开始,就必须 用 ;号开头。
MPY
乘法器
第六章 汇编语法,寻址及指令系统
• 1.汇编语法 • 2.寻址方式 • 3.指令系统
汇编程序语法
TMS320的汇编程序包含:
1. 汇 编 语 言 指 令 ( assembly language instructions)、 2. 汇编指令(伪指令,assembler directives)、 3. 宏指令(macro directives) 4. 注释(comments)。
片内DARAM配置位。该位用于确定x24x芯片内的可配置DARAM存储块的配置。当
XF
PM
1
符 号
名 称 累加器 辅助寄存器算术单元
说 明 一个32位寄存器.用来保存CALU计算结果,并为下一次CALU操作提供输入, 它具有移位和循环操作功能 一个无符号、16位算术单元间接寻址时,用辅助寄存器算数单元来计算辅 助寄存器地址 这些16位寄存器可用作指针,指向数据存储空间范围内的任何地址。它们 面向ARAU单元操作,由辅助寄存器指针(ARP)选定。AR0可用来作为更新 ARx(x为1~7)参考值,也可作为ARx的比较值 寄存器进位位由CALU输出,C被反馈到CALU单元,用于扩展运算操作。C位 位于状态寄存器(ST1),其状态可通过条件指令测试。C位也可用于累加器 移位和循环 TMS320C2xx核的32位主要算术逻辑单元。CALU在一个单机器周期内执行32 位操作。它对来自ISCALE或PSCALE的数据和来自ACC的数据进行运算,并将 运算后的状态结果存于PCTRL单元 如果片内RAM配置控制位(CNF)被设置为0,那么可配置的双口RAM(DARAM)块 BO被映射到数据存储空间;否则,BO被映射列程序存储空间。块B1和B2分 别映射到地址分别为0300h~03FFh和0060h—007Fh的数据存储器空间。块0 和1的容量为256宇,而块2的容量为32字 9位DP寄存器与一个指令字的低7位(LSBs)一起形成一个16位的直接寻址地 址。DP值可由LST和LDP指令改变 GREG指定全局数据存储器的空间大小。由于F240x器件没有使用全局。存储 器空间,这个寄存器被保留下来 MR寄存器的各位分别屏蔽或使能对应的7个中断 IFR的7位分别指示TMS320C2xx已进入7个可屏蔽的中断中的任意一个中断 一个16~32位的桶式左向移位器。ISCALE能将输入的16位数据的0~16位在 本周期内,向左移位以得到32位输出,因此输入定标移位操作不需要额外 的周期 经过16X16位乘法运算得到一个32位的乘积。MPY可在一个单周期内完成乘
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片内有一部件——软件可编程等待状态发生器,控制着外部总线的工作。
第6章 VisualDSP++

6.1.2 开发环境
(4) 调试窗口
VisualDSP++提供许多调试窗口来显示DSP程序的操作和 VisualDSP++提供许多调试窗口来显示DSP程序的操作和 结果。表6 结果。表6-5描述了这些窗口的功能。
调试窗口种类 编辑器 反汇编 表达式 跟踪 局部变量 线性性能分析结果 功 能 语法设置彩色,对不同文本的表达式求值,列状态图标,表示断 点,书签和当前的PC位置 提供反汇编形式的程序,该窗口还提供转存和填充功能 输入表达式的方法,以及单步执行程序时查看它的值 处理器在执行程序的活动经历,包括缓冲区深度(命令行),循 环计数,执行操作如内存存取,程序存储器写入 显示函数内的所有局部变量。在用户浏览程序时使用该窗口的 Step和Halt Halt命令可以显示变量 Step Halt (只适用于软件仿真)取出每条指令周期内目标PC寄存器所占用的 样本数,并给出了某条指令在什么地方执行的正确描述。线 性性能分析比统计性能分析慢得多
① ② ③ ④
显示标准的I/O文本信息,如文件的状态和错 显示标准的I/O文本信息,如文件的状态和错 误信息。 显示创建当前工程时的状态信息。 提供访问源文件中错误的方法。 作为一个用于脚本的工具命令语言(Tcl)的接 作为一个用于脚本的工具命令语言(Tcl1所示为包含了创建状态信息的输出窗口。 11所示为包含了创建状态信息的输出窗口。 点击输出窗口中的两个标签,Console和Build, 点击输出窗口中的两个标签,Console和Build, 将显示包含不同信息和性能的属性标签页。
6.1.2 开发环境
(3)工具栏和用户工具
表6-3显示了标准(默认)工具栏。 显示了标准(默认) 名 称 文件 编辑 帮助 工程 窗口 调试 用户工具 工作空间 工 具 栏
DSP原理与应用——汇编语言程序开发工具

12
** 仍然在.data 段中
**
13
**********************************
14 0003 0456 prt
.word 0456h
32
DSP原理及应用
第6章 汇编语言程序开发工具
15
**********************************
16
**
汇编代码到.text段
...... Section Header n Section Data Relocation Directives Line Numbers Symbol Table String Table
14 DSP原理及应用
第6章 汇编语言程序开发工具
6.3 COFF的一般概念
6.3.1 COFF文件的基本单元 COFF文件有3种类型:COFF0、COFF1、COFF2。
COFF目标文件都包含以下3种形式的段:
.text 段(文本段) .data 段(数据段) .bss 段(保留空间段)
16 DSP原理及应用
第6章 汇编语言程序开发工具
6.3.1 COFF文件的基本单元
2. 段的基本类型
COFF目标文件中的段有两种基本类型。
(1) 初始化段 初始化段
初始化段中包含有数据或程序代码。主要有:
.data
;初始化数据段
coeff .word 044h,055h,066h
;3组数据放入.data段
.bss buffer,8
;在.bss段保留8个单元
prt .word 0456h
;0456h放入.data段
.text
;初始化文本段
add: LD
DSP第6章

2.块程序重复操作
块程序重复操作RPTB将重复操作的范围扩大到任意长度的循环回 路。由于块程序重复指令RPTB的操作数是循环回路的结束地址,而 且,其下条指令就是重复操作的内容,因此必须先用STM指令将所 规定的迭代次数加载到块重复计数器(BRC)中。 RPTB指令的特点是:对任意长度的程序段的循环开销为0,其本 身是一条2字4周期指令;循环开始地址(RSA)是RPTB指令的下一 行,结束地址(REA)由RPTB指令的操作数规定。 【例6-10】对数组x[5]中的每个元素加1。 .bss x,5 start: LD #1,16,B STM #4,BRC STM #x,AR4 RPTB next-1 ADD *AR4,16,B,A STH A,*AR4+ next: LD #0,B
2.循环操作BANZ
在程序设计时,经常需要重复执行某段程序,利用 BANZ(当辅助寄存器不为0时转移)指令执行循环计数 和操作是十分方便的。 SUM: STM STM loop: ADD BANZ STL #x,AR3 #4,AR2 *AR3+,A loop,*AR2A,@y
;程序存储器
3.比较操作CMPR
【例6-7】计算 y =
a x
i 1
4
i i
程序: ******************************************** * example.asm * ******************************************** .title “example.asm” .mmregs ;为堆栈指定空间 stack .usect “STACK”,10h .bss a,4 ;为变量分配9个字的空间 .bss x,4 .bss y,1 .def start .data ; 变量初始化 table: .word 1,2,3,4 .word 8,6,4,2 .text
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、 常数、字符串和符号
1.常数 • 汇编器支持6种类型的常数; ➢ 二进制整数 ➢ 八进制整数 ➢ 十进制整数 ➢ 十六进制整数 ➢ 字符常数 ➢ 汇编时间常数
• 以字母B(或b)结尾, • 由二进制数字(0,1)组成的数字串。 • 长度最大为16位 例:
• 00101000b • 10001111B
•
当选用标号时,其值为段程序计数器(SPC)的当前值,标号指向与它们相关联的语句。
例: 行号 10
SPC 0040
目标代码 000A 0003 0007
源语句 START: .word
0Ah, 3, 7
标号START的值为40h,它指向字0Ah。
2. 助记符域 • 助记符是源语句中的关键部分,不能缺省,它表示本指令的操作类型。 • 助记符不能从源语句的第一列开始,如果从第一列开始,将被解释为标号。 • 助记符包括下列操作码之一
#SYMl ;将2装入DP
.word 016h ;初始化一个字为16h
1. 标号域
•
标号域是任选域,若使用必须从源语句的第一列开始书写。
•
标号包含1-32个字母、数字、字符,可识别符号的大小写,且规定第一个字符不能是数字;
•
标号后可加或不加冒号(:) ;
•
如果不使用标号,则第一个字必须是空格或分号或星号。
第六章 汇编语言程序设计
• 汇编语言包括汇编指令、伪指令和宏指令。 ➢ 汇编指令即为DSP指令系统,该类指令在汇编时将产生一一对应的目标代码; ➢ 伪指令仅在汇编和连接时提供控制信息和数据,并不产生目标代码; ➢ 宏指令则是用户自己创建的“指令”,在汇编时将其展开并汇编为对应的目标代码 • 汇编语言源程序经过汇编器汇编生成机器语言目标程序; • 再由连接器将多个目标程序连接成一个单一的可执行程序
DSP
汇 编 程 序 设 计 开 发 过 程
汇编语言程序的编辑、汇编、链接过程
编辑 Edit
.asm 汇编源 程序
汇编 dspa
-l
.lst 列表 文件
.cmd 连接命令
文件
.obj 目标 文件
链接 dsplnk
-m
.out 输出 文件
仿真 Simulator Emulator
.map 内存映像
二、 常数、字符串和符号
1.常数 • 汇编器支持6种类型的常数; ➢ 二进制整数 ➢ 八进制整数 ➢ 十进制整数 ➢ 十六进制整数 ➢ 字符常数 ➢ 汇编时间常数
• 以字母Q(或q)结尾 ; • 由八进制数宁(0-7)组成的数字串。 • 长度最大为6位 例:
• 103010q • 300000Q
二、 常数、字符串和符号
dsp第六章汇编程序
第六章 汇编语言程序设计
汇编语言——DSP的灵魂 有一位长期从事单片机开发的工程师说: • “每一条汇编指令都执行了一个硬件操作。” • “单片机本质上是一条条汇编语言。把一条条汇编指令搞清楚了,也就把单片机彻底掌
握了。”
第六章 汇编语言程序设计
使用汇编语言编写程序的好处: • 汇编速度快、效率高、实时性好; • 对汇编语言的理解和掌握能使程序员写出更好的C语言代码; • 对汇编语言编程可精确控制DSP的时间特性; • C语言存在无法控制的盲区(寄存器)
§6.2 伪指令
• 伪指令仅在汇编和连接时提供控制信息和数据,并不产生目标代码; • TMS320C2000的汇编伪指令的功能: ➢ 汇编代码和数据到指定的段; ➢ 为未定义的变量保存空间; ➢ 控制列表文件; ➢ 分配存储器; ➢ 汇编条件块; ➢ 定义全局变量; ➢ 指定汇编器能得到的宏; ➢ 检查符号调试信息。
1.常数 • 汇编器支持6种类型的常数; ➢ 二进制整数 ➢ 八进制整数 ➢ 十进制整数 ➢ 十六进制整数 ➢ 字符常数 ➢ 汇编时间常数
• 以字母H(或h)结尾; • 由十六进制数字。0-9和A-F(或a-f)组成的
数字串。 • 长度最大为4位 例:
• 032Fh • 1A03H
二、 常数、字符串和符号
汇编指令 —— 一般用大写 (例如ABS,MPY SPH); 伪指令 —— 用“ . ”开始,且为小写
(例如 .data, .list .set): 宏指令 —— 同伪指令 (例如 .macro .endm)。
3. 操作数域 • 操作数域是跟在助记符域后面的操作数列表,可缺省。 • 如果多于两个操作数,则用逗号隔开。 • 操作数可以是常数、符号和表达式。 4. 注释域 • 注释域可以从源语句行的任一列开始并直至本行的末尾; • 如果它从第一列开始则可以用分号(;)或星号(*)开始,在行的其他地方开始的注释,必须
1.常数 • 汇编器支持6种类型的常数; ➢ 二进制整数 ➢ 八进制整数 ➢ 十进制整数 ➢ 十六进制整数 ➢ 字符常数 ➢ 汇编时间常数
• 包含在单引号中的一个或两个字 符的串。 • 每个字符表示为8位ASCII码 例:
‘ a ’ 定义字符 a 其值为61H
二、 常数、字符串和符号
1.常数 • 汇编器支持6种类型的常数; ➢ 二进制整数 ➢ 八进制整数 ➢ 十进制整数 ➢ 十六进制整数 ➢ 字符常数 ➢ 汇编时间常数
• 用.set伪指令对符号进行赋值
例: SHIFT .set 3
即 SHIFT = 3
2.字符串 • 字符串是包含在双引号内的一串字符; • 字符在内部被表示为8位ASCII码 • 字符中用于下列场合:
.copy “filename ”中的文件名; .sect “section name”中的段名; .byte “charstring ”中数据初始化伪指令 .string 伪指令的操作数。 3.符号 • 符号被用做标号、常数及替代符号; • 符号名最多可由32个字母和数字混合组成; • 符号的第一个字符不能是数字,符号内不能有空格; • 由户定义的符号分大小写 例如汇编时ABc、Abc、 abc被识别为3个不同的符号。 • 用汇编器选项(-C)可消除对大小写的识别。
文件
§6.1 汇编语言格式
一、语言格式 • TMS320汇编语言源程序由源语句组成。 • 源语句包括汇编指令、伪指令、宏指令。 • 源语句的格式
[标号][:] 助记符 [操作数1,操作数2,…][;注释]
︸
︸
︸
︸
标号域
助记符域
操作数域
注释域
例:
SYMl
.set 2
;符号SYM1等于2
BEGIN: LDP