DSP控制器汇编语言程序设计_第1页
DSP控制器汇编语言程序设计_第2页
DSP控制器汇编语言程序设计_第3页
DSP控制器汇编语言程序设计_第4页
DSP控制器汇编语言程序设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、DSP 控制器汇编语言程序设计摘 要:在当今的数字化时代背景下, DSP 控制器在数字信号处理中起着重要 的作用。本论文概括介绍了 TMS320C6XDSP 的硬件结构,并对 TMS320C6XDSP 的汇编语言指令系统做了重点说明。在具备以上知识的基础上,详细介绍了基于 DSP 的高速数据采集和 IIR 数字滤波器在 DSP 上的实现,通过这两个应用实例了 解 DSP 汇编语言程序开发的方法。关键字: TMS320C6X DSP 汇编语言 IIR 数字滤波器 高速数据采集Abstract :In digitized time ,DSP plays an important role in t

2、he digital signal processing. This paper summarily describes the hardware structure of the TMS320C6XDSP,and It introduced in detail the assembly language introductions.On the basis of having all above knowledge, a high speed data acquisition system based on DSP and using DSP to IIR Digital filter de

3、sign was introduced,in order to understand the DSP assembly language program development method.Keyword: TMS320C6X DSP the assembly language IIR Digital filter designa high speed data acquisition system前言数字信号处理是一种将现实世界中的连续信号转换为计算机能够处理的信息的 过程。比如人们说话的声音,这就是一个连续信号 , 除此之外,现实生活中还有很 多这样的信号,比如光、压力、温度等等。这些信

4、号通过一个模拟向数字的转换过 程 (称之为 AD ,变成数字信号送给处理器,进行数字计算,处理结束后,再把结 果通过数字向模拟的转换过程重新变成连续信号 (称之为 DA 。用一般的通用微处 理器可以完成这些工作,但是面临的问题是满足如此高的计算速度,就很难保证耗 电量很低,更难保证价格足够便宜。因此,另一种微处理器应运而生:数字信号处 理器,简称 DSP 。在当今的数字化时代, DSP 已成为通信、计算机、消费类电子产品等领域的 基础器件,被誉为信息社会革命的旗手。未来 10年,全球 DSP 产品将向着高性 能、低功耗、加强融合和拓展多种应用的趋势发展, DSP 芯片将越来越多地渗透 到各种电

5、子产品当中,成为各种电子产品尤其是通信类电子产品的技术核心,将会 越来越受到业界的青睐。因此,开发应用 DSP 及其软件是当今科学和社会发展的需要。而 DSP 芯片的最大优越性在于其具有可重复编程的能力。将各种不同应用的数字信号处理技术以及软件的形式下载到 DSP 芯片中,可以实现相应的通信 和控制功能。 DSP 的发展和应用使得软件开发和硬件设计变得相对独立, DSP 是 数字信号处理的核心, DSP 硬件系统具有灵活的可编程性。对于 DSP 的程序员来说,主要的 DSP 应用程序都是用汇编语言写的(至少部 分是汇编语言优化的)。这里有两个理由:首先,大多数广泛使用的高级语言,例 如 C ,

6、并不适合于描述典型的 DSP 算法。其次, DSP 结构的复杂性,如多存储器 空间、多总线、不规则的指令集、高度专门化的硬件等,使得难于为其编写高效率 的编译器。因此,汇编语言程序设计是 DSP 应用软件设计的基础。汇编语言是一种利用 DSP 处理器所有硬件特性并能直接控制硬件的程序设计 语言,是被实践证明了的开发硬件系统最优秀的语言。采用汇编语言开发,可合理 地应用芯片提供的硬件资源,其代码效率高、占用资源少、程序执行速度快。诸多 优点,使汇编语言受到广大专业硬件程序设计人员的青睐。汇编语言直接描述机器指令,比机器指令容易记忆和理解。通过学习和使用汇 编语言,能够感知、体会、理解机器的逻辑功

7、能,向上为理解各种软件系统的原 理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。学习汇 编语言是我们理解整个 DSP 处理器的最佳起点和最有效途径。因此 DSP 控制器汇编语言程序设计是当今软件设计领域中系统编程人员密切 关注的研究课题之一。1 DSP 简介和结构特点DSP 芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。 DSP 芯 片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水 线操作,提供特殊的 DSP 指令,可以用来快速地实现各种数字信号处理算法。TMS320C6x 核心 CPU 由 32个 32比特字长的通用寄存器和 8 个功能单元

8、组成 (2 个乘法器和 6 个算术逻辑单元),故而可以在一个时钟周期中完成 8 条指令。 它支持 8/16/32 比特的数据格式,并为声音合成或其它增强运算提供了对 40 比特数 据算术运算的支持。 TMS320C6x 拥有大容量的片内 RAM ( 64KB 的数据存储器的 64KB 的程序存储器),并通过 32 比特的 EMIF 支持 SDRAM 、SBSRAM 、 SRAM 以及其它的非同步存储器。此外 TMS320C6x 还提供了多通道的 DMA 操 作,用以相对 CPU 进行后台的数据存取, DMA 的辅助通道还提供了对主机端口 界面( HPI )的支持,主机可以通过 HPI 异步地访

9、问 TMS320C6x 内外存储器及外 围设备。 C6x 还为通信提供两个多通道、多缓冲的串行口。此外, TMS320C6x 也 和一般的 DSP 一样具备较完善的中断处理机制、定时器结构,并可以以不同的方 式启动系统。2 DSP 的硬件结构和片内外设TMS320C6000 的 CPU 有两个数据通道 A 和B ,每个通道有 16个 32位字长 的寄存器( A0A15,B0B15),四个功能单元( L ,S ,M ,D ),每个功能 单元负责完成一定的算术或者逻辑运行。 A 、B 两通道的寄存器并不是完全共享, 只能通过 TM320C6000 提供的两个交换通道 1X 、2X ,才能实现处理单

10、元从不同 通道的寄存器堆那里获取 32 位字长的操作数。TMS320C6x 系列 DSP 内部集成的外围设备也非常丰富:具有 4 个独立通道的DMA 控制器,外部存储器接口( EMIF ),主机接口( HPI ),扩展总线 (XBUS ),多通道缓冲串口( MCBSP ),定时器等。3 DSP 汇编语言程序设计3.1 DSP系统设计在 DSP 系统设计中,应当先进行系统的总体设计。首先采用高级语言或 Matlab 等对算法进行仿真,确定最佳算法并初步确定参数。对系统中的哪些功能 用软件实现,哪些功能用硬件实现进行初步的分工。完成总体设计以后,就可以进 入软硬件设计阶段。这里介绍软件设计的过程,

11、如图所示。3.2 DSP汇编语言的特点汇编语言 (Assembly Language 是面向机器、功能很强的程序设计语言 , 也是利 用 DSP 处理器所有硬件特性并能直接控制硬件的语言汇编语言的主要优点是占用资源少、程序执行效率高。在对速度有极高要求的 场合(如 DSP 处理器的高速图像采集和图像解压缩),目前主要还要用汇编写程 序。汇编语言正是以其 “体积 ”小和效率高而受到专业硬件程序设计人员的青睐,是 被实践证明了的开发硬件系统最优秀的语言。3.3 DSP指令系统3.3.1 寻址方式C6000指令的寻址模式比较单一,只有间接寻址模式,即以通用寄存器作为基 址,而且偏移地址可以为通用寄存

12、器或常数。在存储器地址计算时,可以采取两种方式:一种是线性寻址,即偏移量经过 ? 1、 ? 2、 ? 4、 ? 8(分别对应字节、半字、字和双字寻址)处理后直接加到基址 上;另一种是循环寻址,即偏移量在经过 ? 1、? 2、? 4、? 8(分别对应字节、半 字、字和双字寻址)处理后,还要以循环缓冲区的长度取模数后加到基址上。由 AMR 寄存器选择是线性寻址还是循环寻址,并指定循环缓冲区的长度。3.3.2句法格式C6000汇编代码的基本形式为:标号 : 并行符号 条件 指令 功能单元 操作数 ;注释3.3.3 延迟间隙C6000指令的执行具有延迟间隙( Delay Slots )。延迟间隙在数量

13、上等于指令 的源操作数被读取直到执行的结果可以被访问所需要的指令周期数。延迟间隙等于一个指令的执行或结果获得的潜在周期。所有 TMS320C62X 系 列和 TMS320C67X 系列 DSPs 指令都有一个功能单元潜在周期,这意味着每个周 期均可有一条新指令在功能单元中开始。3.3.4 指令分类汇编代码的指令包括伪指令和命令助记符。一 汇编器伪指令是汇编语言程序的一个重要内容,它给程序提供数据并控制 汇编过程。汇编器伪指令可完成以下工作:将代码和数据汇编进指定的段;在存储器中为未初始化的变量保留空间;控制是否产生清单文件;初始化存储器;汇 编条件代码块;声明全局变量;为汇编器指定从中可以获得

14、宏的库;考察符号调试 信息。下面对一些常用的伪指令的使用方法进行分类说明。(1)定义段的伪指令这些伪指令指定汇编语言程序的段,包括以下几种: .bss .data.sect.text(2)初始化常数的伪指令以下一些伪指令为当前的段中保留指定的位数: .byte,.char.field.float .half, .half, .int ,.uint, .short, .ushort , .word .uword(3)对准段程序计数器的伪指令.align 伪指令将段程序计数器对准 1字到 128字的边界。(4)引用其他文件的伪指令,包括: .copy.include.def.global.ref二

15、 命令助记符是真正的处理器命令,它执行实际的程序操作。它包括算术操 作指令、逻辑操作指令、程序控制指令和加载存储指令四大类,详细的指令形式和 执行操作分别介绍如下:a 、算术操作指令C6X 的算术指令很丰富,而且运算功能强大。包括取绝对值指令、加法指 令、减法指令、乘法指令、比较类指令以及特殊应用指令。1)取绝对值类指令ABS src2,dst ;ABS(src2 取dsts, rc 的绝对值放入 dst 中。(2)加/减法类指令这里只对加法类指令详细介绍: 不带饱和的有符号或者无符号的整数加法指令 ADDUADDU src1, src2,dst ;src2被加到 src1上,结果保存到 ds

16、t 中。 使用寻址模式的整数加法指令 ADDAB/ADDAH/ADDAWADDAB/ADDAH/ADDAW src2, src1,dst ;src1分别按字节( ?1,B )、半字( ?2,H )或字( ? 4,W )寻址模式与 src2相加,结果放到 dst 中。如果 src2为 A4A7 或 B4B7, src1还可以按循环寻 址模式( ARM 指定)与 src2 相加。(3)乘法类指令 MPY 两个低 16 位的有符号或无符号整数相乘指令 MPYMPYU/US/SU src1,src2,dst源操作数 src1和 src2相乘,结果放在目标寄存器 dst 中。默认情况下,源操作 数为无符

17、号数。后缀 U 表示两个无符号数相乘, US 表示 src1是无符号而 src2是有符号数, SU 反之。 一个高 16 位和一个低 16 位的有符号或无符号整数相乘指令MPYHLU/ MPYHULS/MPYHSLU src1,src2,dst 两个高 16 位的有符号或无符号整数相乘指令MPYH (U/US/SU) src1,src2,dst 一个低 16 位和一个高 16 位的有符号或无符号整数相乘指令MPYLH (U ) /MPYLUHS/MPYLSHU src1,src2,dstb 、 逻辑操作指令逻辑运算指令包括与或异或、移位指令,分别叙述如下。(1)位与指令 ANDAND src1

18、, src2,dst ;将操作数 src1和 src2进行位与运算,结果保存到 dst 中。(2)位清零指令 CLRCLR src2,csta,cstb,dst或者 CLR src2,src1,dstsrc2操作数中,由 csta 和 cstb 指定的字段被清零。 csta 和 cstb 可以是常数,也 可以由 scr1寄存器的低 10位说明, 0位4 位代表 cstb 的值, 5位9 位代表 csta 的 值。 csta 指明 src2要清零的最低位, cstb 指明 src2要清零的最高位。换句话说, csta 和 cstb 分别代表 src2中要清零字段的起始和结束位置。(3)移位类指令

19、 向左移位指令 SHLSHL src2,src1,dst源操作数 src2 向左移位,移位的个数为源操作数 src1中的值,结果保存在目 标寄存器 dst 中。 向右移位指令 SHRSHR src2,src1,dst源操作数 src2 向右移位,移位的个数为源操作数 src1中的值,结果进行符号 扩展保存在目标寄存器 dst 中。 逻辑右移位指令 SHRUSHRU src2,src1,dst源操作数 src2 向右移位,移位的个数为源操作数 src1中的值,结果进行零扩 展保存在目标寄存器 dst 中。c 、 程序控制指令程序控制指令包括跳转指令、中断返回指令和空操作指令,分别叙述如下 (1跳

20、转类指令使用位移跳转指令 BB label一个 21位的常数左移 2 位,与包含跳转指令的取指包中第一条指令的地址相 加,结果保存在程序取指包计数器( PFC )中。编译器和连接器会根据下列公式 自动地计算 cst 的值: cst=(label-PCE12使用寄存器跳转指令 BB src2Src2在 PFC 寄存器中。 从中断返回的指令B IRP ; IRP PFC, PGIE GIE ,从可屏蔽中断返回B NRP ;NRP PFC ,1NMIE ,从不可屏蔽中断返回(2)空操作类指令空操作指令 NOPNOP .count源操作数 src 被编码为 count-1。在 src+1个指令周期中,

21、 CPU 没有任何操作 其中 count 的最大值是 9。多个空操作指令 IDLEIDLE 指令执行无限多个 NOP ,直到遇到中断服务或者一个跳转指令发生时 才停止空操作。d 、 加载存储指令加载存储指令是把源操作数从源存储器送到目的操作数的存储器中。包括从存 储器取数指令、向存储器存数据指令和转移类指令等。(1)从存储器取数指令 LDBU/LDHU/LDWLDB/LDH/LDW 间接寻址, dstLDBU/LDHU/LDW 指令可以从存储器读取有符号或无符号数,其中地址偏 移量可以是 5位无符号数、寄存器偏移或者 15 位无符号数。2)向存储器存数据指令 STB/STH/STW与取数据指令

22、类似,向存储器存数据指令的偏移量也可以是 5 位无符号数、寄 存器偏移或者 15 位无符号数。STB/STH/STW src, *+baseRoffsetR或 STB/STH/STW src, *+B14/B15ucst15(3)转移类指令将数据从一个寄存器转移到另一个寄存器指令 MVMV src,dst将数据在控制寄存器和通用寄存器之间转移指令 MVCMVC src2,dst注意:使用 MVC 指令向 ISR 或 ICR 寄存器中写入数据时会有一个延迟间 隙。 将一个 16 位有符号数转移到通用寄存器并且进行符号扩展指令 MVKMVK cst,dst将一个 16 位常量进行符号扩展,结果保存

23、到目标寄存器中。 将一个 16 位常量转移到通用寄存器的高 16 位指令 MVKH/MVKLHMVKH/MVKLH cst,dst使用 MVKH 可以将一个 32 位常量的高 16位装载到目标寄存器中。使用MVKLH 可以将一个 32 位常量的低 16位装载到目标寄存器中。 将一个 16 位常量进行符号扩展转移到通用寄存器指令 MVKLMVKL cst,dst4 应用程序设计4.1应用程序一:高速数据采集系统设计4.1.1概述本系统设计的要求:实现对信号频率在 30MHz 以下的模拟信号的采样,并分 析信号的频谱,将频谱结果通过 USB 接口传送到计算机保存和显示。由于本案例采用的是高速模数转

24、换器,为了使处理器的速度跟上 AD 的速度, DSP 每处理一批数据,在处理数据的时间内,停止对数据的采样, DSP 处理完该 批数据后,然后启动 AD ,开始下一批数据的采样。并且在处理数据之前将这些数 据保存到 FIFO 中。此外,信号处理的算法编成程序保存到外部的 Flash 中,供 DSP 上电读程序到其内部 RAM 单元,全速运行程序。系统的基本框图由 AD 、FIFO 、DSP 以及 USB 接口组成,其框图如图所示。4.1.2器件的选择对于 AD 转换器,选取的标准主要决定于采样频率和位数,以及价格、供货周 期、应用情况等其他因数。根据对各种 AD 芯片的查阅,选择 TI 公司的

25、 AD 转换 芯片 ADS5422。根据 AD 和 DSP 的接口,可选择美国 IDT 公司的 FIFO 芯片 IDT72V2113 ,由 于有 1M 多的数据量,而且 IDT72V2113 只有 512K 9bit 的数据单元,所以必须做 字长和字深扩展。根据数据的处理时间,选择 TMS320C6203B 型号的 DSP 。USB 选择 CY7C68031。Flash 称为闪速存储器,是一种高速的、电擦除、电改写的非易失性的存储 器。选择 128K 8bit 的闪速存储器 SST29LE010。4.1.3 接口设计使用 TMS320C6203B 的 32bit 外部扩展总线接口连接 AD ;

26、使用 TMS320C6203B 的定时器输出信号 TOUT0 提供精确稳定的时钟给 AD ,控制 AD 的采样频率,并且该时钟可以根据定时器参数由软件设置,增加 AD 采样频率的灵 活性。在 DSP 内部寄存器中,将多通道缓冲串口( MBSP )的引脚配置成通用的 I/O 引脚,使用 DR0 、DR1 以及 DX0 引脚读入或写入 AD 的控制信号 OVR 、 DV 以及 OE 。FIFO与 TMS320C6203B 的外部扩展总线的 XCE3空间,数据通过 DMA 方式 从 FIFO 传送到 TMS320C6203B 的片内 ROM 。FLASH 的地址和数据总线连接到 TMS320C620

27、3B 的 EMIF 接口总线上, Flash 的片选信号连接到 DSP 的CE1引脚,配置成 DSP 的CE1空间,此外 FLASH 读写 信号分别连接到 EMIF 接口的读写信号引脚上。TMS320C6203B 通过 EMIF 接口的 CE2空间对 USB 进行读写操作4.1.4 程序部分上电后, TMS320C6203B 进行初始化,外部扩展总线的 /XCE3 空间设置为同 步 FIFO 读模式, DMA 通道 0 配置为每次传输含 8帧,每帧 128BYTE ,同步事件 设置为外部中断 4,触发极性为高电平;手动启动 DMA 通道 0。设置 DX0 为低电 平;随着数据不断写入 FIFO

28、 ,当 FIFO 中的数据量大于 128Byte 时, FIFO 的确将 错就错空白标志 信号 (/PAE)由低电平变为高电平,使得 TDS320C6203B 的外部 中断信号有效,从而触发 DMA 传输; TMS320C6203B 的DMA 通道 0开始通过外 部扩展总线读取 8*128BYTE 的数据,存储于内部 RAM 中,然后向 TMS320C6203B 发送中断,通知 TMS320C6203B 处理数据; TMS320C6203B 处理 完数据以后,重新启动 DMA 通道 0,进行下一次 DMA 传输;如此循环,直到处 理完所有的数据。程序流程图如下:4.2 应用程序二: IIR 数

29、字滤波器的 DSP 实现4.2.1 数字滤波器的基本介绍滤波器可广义的理解为一个信号选择系统,它让某些信号成分通过又阻止或衰 减另一些成分。ak z - k14 11 滤波器可分为三种:模拟滤波器、采样滤波器和数字滤波器。而从网络 结构或者单位脉冲响应分类,可以分为无限脉冲响应( IIR )和有限脉冲响应 (FIR)滤波器。这里将介绍的就是无限脉冲响应( IIR)低通数字滤波器,它属 于一个离散系统,主要采用递归结构。 数字滤波器的传递函数: 对 IIR 数字滤波 器的差分方程的一般形式: N M y ( n = ak y ( n - k + bk x ( n - k k =两1 边k =0

30、同时进行双边 z 变换得: Y ( z = ai z X ( z + bi z - iY ( z i =0 i =1 M得 - iI INR 数字滤波器的传递函数: M H (z = Y ( z = X (zb k =0 N k =1 k z-k = 1 -B( z A( z 由上式可推得: Y ( z = B( z X ( z A( z 4.2.2 IIR 数字滤波器 DSP 程序的设 计经常用来设计 IIR 滤波器的方法是借助于模拟器的设计方法进行。 其设计步骤 是:先将给定的数字滤波器的指标转换成模拟低通原型滤波器的指标,并得到 满 足这些指标要求的模拟低通原型滤波器的传递函数 Ha(s

31、,然后将 Ha(s按某种方法 转换成数字滤波器的系统函数 H(z),最后将数字低通原型滤波器转换成 所要求 的数字滤波器。本程序完成的是一个三阶切比雪夫型低通数字滤波器的滤波功 能,为了简化汇编语言的汇编过程,程序中需要滤波的输入信号数据是由 Matlab 生成的,此输入信号是个双正弦信号,频率分别是 62.5Hz 和 250Hz。程序中的参 数 b0、 b1、b2、b3 和 a1、a2、a3 也是将滤波器性能指标输入 Matlab,然后调用 Matlab 中的切比雪夫型函数生成的。 滤波后,输入信号为 250Hz 的频率成分会 被削弱。关于 Matlab 如何得到这两部分数据并不是研究的内容

32、,在此不多做解 释。14 12 运用直接型结构, IIR 滤波器的系统函数表示为: Y ( z = 1 B ( z X ( z A( z M k =0 (n = b对k 应x(n的 -差 k 分方程为: N y ( n = ak y ( n - k + ( n k =1 假如 M=N ,则由此差分方程可得到如下图所示的信号流程图: x(n z-1 z-1 z-1 z-1 b0 b1 b2 bN -1 y(n z-1 z-1 z-1 z-1 -a1 -a2 -aN-1 -aN bN 根据差分方程的信号 流程图进行编程,由于现在的参数和输入数据,所以在 程序一开始就将输入数据 和参数放在定义好的存储空间里, 程序的主体就是进行 乘加运算。程序流程图如 图所示。14 13 开 始 将 A0 清零 寄存器 A2 指向 inputdata:寄存器 A3 指向 filterdata; 寄 存器 B4 指向 b4; 寄存器 B3 指向 b3 寄存器 B2 指向 b2; 寄存器 B1 指向 b1; 寄存器 B7 指向 a3; 寄存器 B6 指向 a2; 寄存器 B5 指向 a1; 滤波个数保存到寄存器 B0 输入 4 个源数据依次到 A4 、A5、A6、A7,并将 ORIGIN 指针修改到输入的第二个源数 据地址。将 输出的

温馨提示

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

评论

0/150

提交评论