DSP控制器汇编语言程序设计精.docx

上传人:b****0 文档编号:18353425 上传时间:2023-08-16 格式:DOCX 页数:14 大小:61.20KB
下载 相关 举报
DSP控制器汇编语言程序设计精.docx_第1页
第1页 / 共14页
DSP控制器汇编语言程序设计精.docx_第2页
第2页 / 共14页
DSP控制器汇编语言程序设计精.docx_第3页
第3页 / 共14页
DSP控制器汇编语言程序设计精.docx_第4页
第4页 / 共14页
DSP控制器汇编语言程序设计精.docx_第5页
第5页 / 共14页
DSP控制器汇编语言程序设计精.docx_第6页
第6页 / 共14页
DSP控制器汇编语言程序设计精.docx_第7页
第7页 / 共14页
DSP控制器汇编语言程序设计精.docx_第8页
第8页 / 共14页
DSP控制器汇编语言程序设计精.docx_第9页
第9页 / 共14页
DSP控制器汇编语言程序设计精.docx_第10页
第10页 / 共14页
DSP控制器汇编语言程序设计精.docx_第11页
第11页 / 共14页
DSP控制器汇编语言程序设计精.docx_第12页
第12页 / 共14页
DSP控制器汇编语言程序设计精.docx_第13页
第13页 / 共14页
DSP控制器汇编语言程序设计精.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

DSP控制器汇编语言程序设计精.docx

《DSP控制器汇编语言程序设计精.docx》由会员分享,可在线阅读,更多相关《DSP控制器汇编语言程序设计精.docx(14页珍藏版)》请在冰点文库上搜索。

DSP控制器汇编语言程序设计精.docx

DSP控制器汇编语言程序设计精

DSP控制器汇编语言程序设计

摘要:

在当今的数字化时代背景下,DSP控制器在数字信号处理中起着重要的作用。

本论文概括介绍了TMS320C6XDSP的硬件结构,并对TMS320C6XDSP的汇编语言指令系统做了重点说明。

在具备以上知识的基础上,详细介绍了基于DSP的高速数据采集和IIR数字滤波器在DSP上的实现,通过这两个应用实例了解DSP汇编语言程序开发的方法。

关键字:

TMS320C6XDSP汇编语言IIR数字滤波器高速数据采集

Abstract:

Indigitizedtime,DSPplaysanimportantroleinthedigitalsignalprocessing.ThispapersummarilydescribesthehardwarestructureoftheTMS320C6XDSP,andItintroducedindetailtheassemblylanguageintroductions.Onthebasisofhavingallaboveknowledge,ahighspeeddataacquisitionsystembasedonDSPandusingDSPtoIIRDigitalfilterdesignwasintroduced,inordertounderstandtheDSPassemblylanguageprogramdevelopmentmethod.

Keyword:

TMS320C6XDSPtheassemblylanguageIIRDigitalfilterdesign

ahighspeeddataacquisitionsystem

前言

数字信号处理是一种将现实世界中的连续信号转换为计算机能够处理的信息的过程。

比如人们说话的声音,这就是一个连续信号,除此之外,现实生活中还有很多这样的信号,比如光、压力、温度等等。

这些信号通过一个模拟向数字的转换过程(称之为AD,变成数字信号送给处理器,进行数字计算,处理结束后,再把结果通过数字向模拟的转换过程重新变成连续信号(称之为DA。

用一般的通用微处理器可以完成这些工作,但是面临的问题是满足如此高的计算速度,就很难保证耗电量很低,更难保证价格足够便宜。

因此,另一种微处理器应运而生:

数字信号处理器,简称DSP。

在当今的数字化时代,DSP已成为通信、计算机、消费类电子产品等领域的基础器件,被誉为信息社会革命的旗手。

未来10年,全球DSP产品将向着高性能、低功耗、加强融合和拓展多种应用的趋势发展,DSP芯片将越来越多地渗透到各种电子产品当中,成为各种电子产品尤其是通信类电子产品的技术核心,将会越来越受到业界的青睐。

因此,开发应用DSP及其软件是当今科学和社会发展的需要。

而DSP芯片的最大优越性在于其具有可重复编程的能力。

将各种不同应用的

数字信号处理技术以及软件的形式下载到DSP芯片中,可以实现相应的通信和控制功能。

DSP的发展和应用使得软件开发和硬件设计变得相对独立,DSP是数字信号处理的核心,DSP硬件系统具有灵活的可编程性。

对于DSP的程序员来说,主要的DSP应用程序都是用汇编语言写的(至少部分是汇编语言优化的)。

这里有两个理由:

首先,大多数广泛使用的高级语言,例如C,并不适合于描述典型的DSP算法。

其次,DSP结构的复杂性,如多存储器空间、多总线、不规则的指令集、高度专门化的硬件等,使得难于为其编写高效率的编译器。

因此,汇编语言程序设计是DSP应用软件设计的基础。

汇编语言是一种利用DSP处理器所有硬件特性并能直接控制硬件的程序设计语言,是被实践证明了的开发硬件系统最优秀的语言。

采用汇编语言开发,可合理地应用芯片提供的硬件资源,其代码效率高、占用资源少、程序执行速度快。

诸多优点,使汇编语言受到广大专业硬件程序设计人员的青睐。

汇编语言直接描述机器指令,比机器指令容易记忆和理解。

通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。

学习汇编语言是我们理解整个DSP处理器的最佳起点和最有效途径。

因此DSP控制器汇编语言程序设计是当今软件设计领域中系统编程人员密切关注的研究课题之一。

1DSP简介和结构特点

DSP芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。

DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速地实现各种数字信号处理算法。

TMS320C6x核心CPU由32个32比特字长的通用寄存器和8个功能单元组成(2个乘法器和6个算术逻辑单元),故而可以在一个时钟周期中完成8条指令。

它支持8/16/32比特的数据格式,并为声音合成或其它增强运算提供了对40比特数据算术运算的支持。

TMS320C6x拥有大容量的片内RAM(64KB的数据存储器的64KB的程序存储器),并通过32比特的EMIF支持SDRAM、SBSRAM、SRAM以及其它的非同步存储器。

此外TMS320C6x还提供了多通道的DMA操作,用以相对CPU进行后台的数据存取,DMA的辅助通道还提供了对主机端口界面(HPI)的支持,主机可以通过HPI异步地访问TMS320C6x内外存储器及外围设备。

C6x还为通信提供两个多通道、多缓冲的串行口。

此外,TMS320C6x也和一般的DSP一样具备较完善的中断处理机制、定时器结构,并可以以不同的方式启动系统。

2DSP的硬件结构和片内外设

TMS320C6000的CPU有两个数据通道A和B,每个通道有16个32位字长的寄存器(A0~A15,B0~B15),四个功能单元(L,S,M,D),每个功能单元负责完成一定的算术或者逻辑运行。

A、B两通道的寄存器并不是完全共享,只能通过TM320C6000提供的两个交换通道1X、2X,才能实现处理单元从不同通道的寄存器堆那里获取32位字长的操作数。

TMS320C6x系列DSP内部集成的外围设备也非常丰富:

具有4个独立通道的DMA控制器,外部存储器接口(EMIF),主机接口(HPI),扩展总线(XBUS),多通道缓冲串口(MCBSP),定时器等。

3DSP汇编语言程序设计

3.1DSP系统设计

在DSP系统设计中,应当先进行系统的总体设计。

首先采用高级语言或Matlab等对算法进行仿真,确定最佳算法并初步确定参数。

对系统中的哪些功能用软件实现,哪些功能用硬件实现进行初步的分工。

完成总体设计以后,就可以进入软硬件设计阶段。

这里介绍软件设计的过程,如图所示。

3.2DSP汇编语言的特点

汇编语言(AssemblyLanguage是面向机器、功能很强的程序设计语言,也是利用DSP处理器所有硬件特性并能直接控制硬件的语言。

汇编语言的主要优点是占用资源少、程序执行效率高。

在对速度有极高要求的场合(如DSP处理器的高速图像采集和图像解压缩),目前主要还要用汇编写程序。

汇编语言正是以其“体积”小和效率高而受到专业硬件程序设计人员的青睐,是被实践证明了的开发硬件系统最优秀的语言。

3.3DSP指令系统

3.3.1寻址方式

C6000指令的寻址模式比较单一,只有间接寻址模式,即以通用寄存器作为基址,而且偏移地址可以为通用寄存器或常数。

在存储器地址计算时,可以采取两种方式:

一种是线性寻址,即偏移量经过⨯1、⨯2、⨯4、⨯8(分别对应字节、半字、字和双字寻址)处理后直接加到基址上;另一种是循环寻址,即偏移量在经过⨯1、⨯2、⨯4、⨯8(分别对应字节、半字、字和双字寻址)处理后,还要以循环缓冲区的长度取模数后加到基址上。

由AMR寄存器选择是线性寻址还是循环寻址,并指定循环缓冲区的长度。

3.3.2句法格式

C6000汇编代码的基本形式为:

[标号][:

]并行符号[条件]指令功能单元[操作数][;注释]

3.3.3延迟间隙

C6000指令的执行具有延迟间隙(DelaySlots)。

延迟间隙在数量上等于指令的源操作数被读取直到执行的结果可以被访问所需要的指令周期数。

延迟间隙等于一个指令的执行或结果获得的潜在周期。

所有TMS320C62X系列和TMS320C67X系列DSPs指令都有一个功能单元潜在周期,这意味着每个周期均可有一条新指令在功能单元中开始。

3.3.4指令分类

汇编代码的指令包括伪指令和命令助记符。

一汇编器伪指令是汇编语言程序的一个重要内容,它给程序提供数据并控制汇编过程。

汇编器伪指令可完成以下工作:

将代码和数据汇编进指定的段;在存储

器中为未初始化的变量保留空间;控制是否产生清单文件;初始化存储器;汇编条件代码块;声明全局变量;为汇编器指定从中可以获得宏的库;考察符号调试信息。

下面对一些常用的伪指令的使用方法进行分类说明。

(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

二命令助记符是真正的处理器命令,它执行实际的程序操作。

它包括算术操作指令、逻辑操作指令、程序控制指令和加载存储指令四大类,详细的指令形式和执行操作分别介绍如下:

a、算术操作指令

C6X的算术指令很丰富,而且运算功能强大。

包括取绝对值指令、加法指令、减法指令、乘法指令、比较类指令以及特殊应用指令。

(1)取绝对值类指令

ABSsrc2,dst;ABS(src2→dst,取src的绝对值放入dst中。

(2)加/减法类指令

这里只对加法类指令详细介绍:

①不带饱和的有符号或者无符号的整数加法指令ADD[U]

ADD[U]src1,src2,dst;

src2被加到src1上,结果保存到dst中。

②使用寻址模式的整数加法指令ADDAB/ADDAH/ADDAW

ADDAB/ADDAH/ADDAWsrc2,src1,dst;

src1分别按字节(⨯1,B)、半字(⨯2,H)或字(⨯4,W)寻址模式与src2相加,结果放到dst中。

如果src2为A4~A7或B4~B7,src1还可以按循环寻址模式(ARM指定)与src2相加。

(3)乘法类指令MPY

①两个低16位的有符号或无符号整数相乘指令MPY

MPY[U/US/SU]src1,src2,dst

源操作数src1和src2相乘,结果放在目标寄存器dst中。

默认情况下,源操作数为无符号数。

后缀U表示两个无符号数相乘,US表示src1是无符号而src2是

有符号数,SU反之。

②一个高16位和一个低16位的有符号或无符号整数相乘指令

MPYHL[U]/MPYHULS/MPYHSLUsrc1,src2,dst

③两个高16位的有符号或无符号整数相乘指令

MPYH(U/US/SU)src1,src2,dst

④一个低16位和一个高16位的有符号或无符号整数相乘指令

MPYLH(U)/MPYLUHS/MPYLSHUsrc1,src2,dst

b、逻辑操作指令

逻辑运算指令包括与或异或、移位指令,分别叙述如下。

(1)位与指令AND

ANDsrc1,src2,dst;

将操作数src1和src2进行位与运算,结果保存到dst中。

(2)位清零指令CLR

CLRsrc2,csta,cstb,dst

或者CLRsrc2,src1,dst

src2操作数中,由csta和cstb指定的字段被清零。

csta和cstb可以是常数,也可以由scr1寄存器的低10位说明,0位~4位代表cstb的值,5位~9位代表csta的值。

csta指明src2要清零的最低位,cstb指明src2要清零的最高位。

换句话说,csta和cstb分别代表src2中要清零字段的起始和结束位置。

(3)移位类指令

①向左移位指令SHL

SHLsrc2,src1,dst

源操作数src2向左移位,移位的个数为源操作数src1中的值,结果保存在目标寄存器dst中。

②向右移位指令SHR

SHRsrc2,src1,dst

源操作数src2向右移位,移位的个数为源操作数src1中的值,结果进行符号扩展保存在目标寄存器dst中。

③逻辑右移位指令SHRU

SHRUsrc2,src1,dst

源操作数src2向右移位,移位的个数为源操作数src1中的值,结果进行零扩展保存在目标寄存器dst中。

c、程序控制指令

程序控制指令包括跳转指令、中断返回指令和空操作指令,分别叙述如下。

(1跳转类指令

①使用位移跳转指令B

Blabel

一个21位的常数左移2位,与包含跳转指令的取指包中第一条指令的地址相加,结果保存在程序取指包计数器(PFC)中。

编译器和连接器会根据下列公式自动地计算cst的值:

cst=(label-PCE1>>2

②使用寄存器跳转指令B

Bsrc2

Src2在PFC寄存器中。

③从中断返回的指令

BIRP;IRP→PFC,PGIE→GIE,从可屏蔽中断返回

BNRP;NRP→PFC,1→NMIE,从不可屏蔽中断返回

(2)空操作类指令

①空操作指令NOP

NOP.[count]

源操作数src被编码为count-1。

在src+1个指令周期中,CPU没有任何操作。

其中count的最大值是9。

②多个空操作指令IDLE

IDLE指令执行无限多个NOP,直到遇到中断服务或者一个跳转指令发生时才停止空操作。

d、加载存储指令

加载存储指令是把源操作数从源存储器送到目的操作数的存储器中。

包括从存储器取数指令、向存储器存数据指令和转移类指令等。

(1)从存储器取数指令LDB[U]/LDH[U]/LDW

LDB/LDH/LDW间接寻址,dst

LDB[U]/LDH[U]/LDW指令可以从存储器读取有符号或无符号数,其中地址偏移量可以是5位无符号数、寄存器偏移或者15位无符号数。

(2)向存储器存数据指令STB/STH/STW

与取数据指令类似,向存储器存数据指令的偏移量也可以是5位无符号数、寄存器偏移或者15位无符号数。

STB/STH/STWsrc,*+baseR[offsetR]

或STB/STH/STWsrc,*+B14/B15[ucst15]

(3)转移类指令

①将数据从一个寄存器转移到另一个寄存器指令MV

MVsrc,dst

②将数据在控制寄存器和通用寄存器之间转移指令MVC

MVCsrc2,dst

注意:

使用MVC指令向ISR或ICR寄存器中写入数据时会有一个延迟间隙。

③将一个16位有符号数转移到通用寄存器并且进行符号扩展指令MVK

MVKcst,dst

将一个16位常量进行符号扩展,结果保存到目标寄存器中。

④将一个16位常量转移到通用寄存器的高16位指令MVKH/MVKLH

MVKH/MVKLHcst,dst

使用MVKH可以将一个32位常量的高16位装载到目标寄存器中。

使用MVKLH可以将一个32位常量的低16位装载到目标寄存器中。

⑤将一个16位常量进行符号扩展转移到通用寄存器指令MVKL

MVKLcst,dst

4应用程序设计

4.1应用程序一:

高速数据采集系统设计

4.1.1概述

本系统设计的要求:

实现对信号频率在30MHz以下的模拟信号的采样,并分析信号的频谱,将频谱结果通过USB接口传送到计算机保存和显示。

由于本案例采用的是高速模数转换器,为了使处理器的速度跟上AD的速度,DSP每处理一批数据,在处理数据的时间内,停止对数据的采样,DSP处理完该批数据后,然后启动AD,开始下一批数据的采样。

并且在处理数据之前将这些数据保存到FIFO中。

此外,信号处理的算法编成程序保存到外部的Flash中,供DSP上电读程序到其内部RAM单元,全速运行程序。

系统的基本框图由AD、FIFO、DSP以及USB接口组成,其框图如图所示。

4.1.2器件的选择

对于AD转换器,选取的标准主要决定于采样频率和位数,以及价格、供货周期、应用情况等其他因数。

根据对各种AD芯片的查阅,选择TI公司的AD转换芯片ADS5422。

根据AD和DSP的接口,可选择美国IDT公司的FIFO芯片IDT72V2113,由于有1M多的数据量,而且IDT72V2113只有512K×9bit的数据单元,所以必须做字长和字深扩展。

根据数据的处理时间,选择TMS320C6203B型号的DSP。

USB选择CY7C68031。

Flash称为闪速存储器,是一种高速的、电擦除、电改写的非易失性的存储器。

选择128K8bit的闪速存储器SST29LE010。

4.1.3接口设计

使用TMS320C6203B的32bit外部扩展总线接口连接AD;使用TMS320C6203B的定时器输出信号TOUT0提供精确稳定的时钟给AD,控制AD的采样频率,并且该时钟可以根据定时器参数由软件设置,增加AD采样频率的灵活性。

在DSP内部寄存器中,将多通道缓冲串口(MBSP)的引脚配置成通用的I/O引脚,使用DR0、DR1以及DX0引脚读入或写入AD的控制信号OVR、DV以及OE。

FIFO与TMS320C6203B的外部扩展总线的XCE3空间,数据通过DMA方式从FIFO传送到TMS320C6203B的片内ROM。

FLASH的地址和数据总线连接到TMS320C6203B的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,当FIFO中的数据量大于128Byte时,FIFO的确将错就错空白标志信号(/PAE)由低电平变为高电平,使得TDS320C6203B的外部中断信号有效,从而触发DMA传输;TMS320C6203B的DMA通道0开始通过外部扩展总线读取8*128BYTE的数据,存储于内部RAM中,然后向TMS320C6203B发送中断,通知TMS320C6203B处理数据;TMS320C6203B处理完数据以后,重新启动DMA通道0,进行下一次DMA传输;如此循环,直到处理完所有的数据。

程序流程图如下:

4.2应用程序二:

IIR数字滤波器的DSP实现

4.2.1数字滤波器的基本介绍

滤波器可广义的理解为一个信号选择系统,它让某些信号成分通过又阻止或衰减另一些成分。

1411滤波器可分为三种:

模拟滤波器、采样滤波器和数字滤波器。

而从网络结构或者单位脉冲响应分类,可以分为无限脉冲响应(IIR)和有限脉冲响应(FIR)滤波器。

这里将介绍的就是无限脉冲响应(IIR)低通数字滤波器,它属于一个离散系统,主要采用递归结构。

数字滤波器的传递函数:

对IIR数字滤波器的差分方程的一般形式:

NMy(n=∑aky(n−k+∑bkx(n−kk=1k=0两边同时进行双边z变换得:

Y(z=∑aizX(z+∑biz−iY(zi=0i=1M−iN得IIR数字滤波器的传递函数:

MH(z=Y(z=X(z∑bk=0Nk=1kz−k=1−∑akz−kB(zA(z由上式可推得:

Y(z=B(zX(zA(z4.2.2IIR数字滤波器DSP程序的设计经常用来设计IIR滤波器的方法是借助于模拟器的设计方法进行。

其设计步骤是:

先将给定的数字滤波器的指标转换成模拟低通原型滤波器的指标,并得到满足这些指标要求的模拟低通原型滤波器的传递函数Ha(s,然后将Ha(s按某种方法转换成数字滤波器的系统函数H(z),最后将数字低通原型滤波器转换成所要求的数字滤波器。

本程序完成的是一个三阶切比雪夫Ⅰ型低通数字滤波器的滤波功能,为了简化汇编语言的汇编过程,程序中需要滤波的输入信号数据是由Matlab生成的,此输入信号是个双正弦信号,频率分别是62.5Hz和250Hz。

程序中的参数b0、b1、b2、b3和a1、a2、a3也是将滤波器性能指标输入Matlab,然后调用Matlab中的切比雪夫Ⅰ型函数生成的。

滤波后,输入信号为250Hz的频率成分会被削弱。

关于Matlab如何得到这两部分数据并不是研究的内容,在此不多做解释。

1412运用直接Ⅰ型结构,IIR滤波器的系统函数表示为:

Y(z=1[B(zX(z]A(zMk=0ω(n=∑bkx(n−k对应的差分方程为:

Ny(n=∑aky(n−k+ω(nk=1假如M=N,则由此差分方程可得到如下图所示的信号流程图:

x(nz-1z-1z-1z-1b0b1b2bN−1y(nz-1z-1z-1z-1-a1-a2-aN-1-aNbN根据差分方程的信号流程图进行编程,由于现在的参数和输入数据,所以在程序一开始就将输入数据和参数放在定义好的存储空间里,程序的主体就是进行乘加运算。

程序流程图如图所示。

1413开始将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指针修改到输入的第二个源数据地址。

将输出的三个数据依次存放到寄存器A8、A9、A10按信号流程图将上面输入的源数据与系数b相乘,并且将结果相加后的值存到寄存器A0中按信号流程图将输出数据和系数a相乘,将结果累加到寄存器A0中,并调整OUTPUT的指针B0是否为0?

B0〈=B0-1结束

1414

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2