首页 | 期刊简介 | 编辑部 | 广告部 | 发行部 | 在线投稿 | 联系我们 | 产品信息索取
2024年12月26日星期四
2011年第01期
 
2010年第12期
 
2010年第11期
2010年第11期
 
2010年第10期
2010年第10期
 
2010年第09期
2010年第09期
 
2010年第09期
2010年第08期
 
2010年第07期
2010年第07期
 
2010年第06期
2010年第06期
 
2010年第05期
2010年第05期
 
2010年第04期
2010年第04期
 
2010年第03期
2010年第03期
 
2010年第02期
2010年第02期
 
2010年第01期
2010年第01期
 
2009年第12期
2009年第12期
 
2009年第11期
2009年第11期
 
2009年第10期
2009年第10期
 
2009年第9期
2009年第9期
 
2009年第8期
2009年第8期
 
2009年第7期
2009年第7期
 
2009年第6期
2009年第6期
 
2009年第5期
2009年第5期
 
2009年第4期
2009年第4期
 
2009年第3期
2009年第3期
 
2009年第2期
2009年第2期
 
2009年第1期
2009年第1期
 
2008年第12期
2008年第12期
 
2008年第11期
2008年第11期
 
2008年第10期
2008年第10期
 
2008年第9期
2008年第9期
 
2008年第8期
2008年第8期
 
2008年第7期
2008年第7期
 
2008年第6期
2008年第6期
 
2008年第5期
2008年第5期
 
2008年第4期
2008年第4期
 
2008年第3期
2008年第3期
 
2008年第2期
2008年第2期
 
2008年第1期
2008年第1期
Motorola DSP及其开发

Motorola DSP and It's Development

北京航空航天大学 牛晔 周浩敏


摘 要: 本文在简要介绍了Motorola DSP56300系列和Motorola DSP56311后,结合信号处理中的常用算法FFT(快速傅立叶变换)说明了软件开发的过程,最后用作者使用DSP56311评估板开发的控制模型汽车运动的实例,说明了DSP56311软、硬件结合的开发过程,并给出了实例的源程序。

关键词: Motorola DSP;硬件结构;开发工具

当今社会是信息化的社会,面对海量信息,使用计算机进行处理成为首选。众所周知,计算机只能处理数字信号,因而在一定程度上,可以说信息化的基础是数字化,而数字化的核心技术之一是数字信号处理。数字信号处理的任务越来越多地应用DSP来完成,DSP技术已经日益受到人们的关注并且得到了迅速发展。

作为全球第一的嵌入式处理器制造商,摩托罗拉公司于1997年推出了24位DSP56300系列的首枚芯片DSP56301,并不断升级,如图1所示。本文作者所在实验室有幸于2001年11月获赠Motorola DSP56311开发装置及其相关开发工具。下面,作者将结合近两年的使用和开发经验,简要介绍Motorola DSP56300系列和DSP56311,并结合FFT说明软件调试过程,最后给出一个使用DSP56311评估板开发的控制模型汽车运动的实例。

图1 DSP56300系列(略)


Motorola DSP56300系列

对于许多通信基础设施和网络设备的生产厂商来说,DSP56300系列是数字信号处理器的选择之一,该系列24位DSP提供了大容量的片内存储器、滤波器、协处理器以及优异的性能与体积、价位、功耗比。通过设计和生产的革新,Motorola公司正致力于扩展DSP56300系列以提供更新的特点、更优异的性能,诸如:更快的速度,更高的集成度,更低的电压和功耗等。生产一个DSP芯片要综合考虑以上各点,才能获得优异的性能(见图2)。

图2 DSP应具有的性能(略)

DSP56300系列的主要特征如下:

⑴兼容性-与DSP56000系列兼容,可向上移植;

⑵快速性-内核150MIPS(Millions Instruction Per Second);

⑶片内存储器-DSP56311片内存储器容量高达384KB;

⑷低工作电压-1.8/2.5/3.3V内核电压;

⑸低功耗-1.8V 时0.7mA/MIPS,2.5V时 0.9mA/MIPS;

⑹易编程-24位的指令集,对用户透明的流水线,硬件堆栈扩展,完全嵌入式硬件循环和中断,自动返回中断,以及为高效软件Viterbi解码而设的VSL指令集;

⑺高速指令缓存-1K字高速指令缓存;

DSP56300系列的芯片主要有56301、56303、56307、56309和56311,下面将以本文作者使用的DSP56311为例进行介绍。


Motorola DSP56311

DSP56311是Motorola公司2000年推出的新产品,是24位数字信号处理器,现已投入量产。DSP56311是以DSP56300为内核,具有片内存储器和外围器件的单片结构,有196个引脚,为球形工艺插针阵列(PBGA,Process Ball Grid Array)的外封装形式。

DSP56311的片内增强型滤波器协处理器(EFCOP,Enhanced Filter Coprocessor)与内核并行工作,明显提高了DSP的整体性能和处理效率,由相应的算法而实现通用滤波技术,很好地支持了在无线通信等技术中的应用。DSP56311还包括了摩托罗拉的边界扫描测试端口和片内仿真端口。DSP56311还具有128K字大容量片内存储器阵列以及EFCOP,非常适合于高端多通道远程通信的应用,比如无线通信、多路语音/数据/传真处理,视频会议以及通用数字信号处理技术。

DSP56311硬件结构

DSP56311主要由24位DSP56300内核、数据ALU、内部总线、存储器扩展区、外围扩展区等组成,其功能模块如图3所示。

图3 DSP56311功能模块图(略)

DSP56311开发工具

Motorola公司为开发DSP56311的科技人员提供了强有力的软件开发工具:Suite56软件包,包括:硬件调试器(Debugger)、软件仿真器(Simulator),可以在Windows NT、Windows 95、 Hewlett-Packard HP-UX、 Sun OS4、Sun Solaris等多种平台上运行,同时针对C语言、汇编语言以及C语言和汇编语言的嵌套编程,分别有编译器(Compiler)、汇编器(Assembler)和链接器(linker),并提供了友好的人机界面,如图4所示。

图4 Simulator的界面(略)


开发过程

软件开发

在应用时,要生成一个DSP能够运行的程序需要如下步骤:

①编写C语言或汇编语言或二者嵌套的源程序。Motorola DSP所使用的汇编程序在书写的时候采用Windows中的记事本即可,在保存的时候要注意保存成为以 ".asm"为后缀名的文件。不同语言的源程序有不同的编译过程。本例使用的是汇编语言的源程序,以下各步均是汇编语言的编译、链接、执行过程,C语言源程序的执行过程要比汇编语言简单很多。

②在dos环境下(对于Windows2000、Windows XP操作系统可以使用C提示符),将当前目录转到源程序所在的目录下,在提示符后面键入asm56300 -b 文件名.asm,回车,屏幕会显示正在编译的过程,检查有无语法和词法方面的错误。编译结束时,若有错误,使用asm56300 -l 文件名.asm命令可以显示错误的位置,相关的提示,修改直至通过编译,会显示没有错误,没有警告。此时,系统就会自动在源程序所在路径生成以 ".cln" 为后缀名的中间文件。

③然后,在提示符后面键入dsplnk 文件名.cln,回车,会显示正在链接的过程,链接结束时,会自动在源程序所在路径生成一个与源程序同名的以".cld"为后缀名的目标文件。此".cld"文件就可以用于在软件仿真器 Simulator 或硬件调试器debugger上进行进一步的调试。

④如果只是调试程序,用软件仿真器就可以了。这时,除了必备的PC机或工作站环境不再需要配备其他硬件。它能实现寄存器/存储器状态指示/变更等操作,可模拟DSP的全部指令。此外,它还具备一些调试功能,如:单步(Single step)调试、断点(Break-point)调试等。但是,软件模拟并不是在某一DSP器件上仿真,所以不能实时处理。

FFT是数字信号处理中最基本、应用最广的算法,下面以一常见波形的FFT为例说明软件开发过程:

Motorola DSP56311芯片提供了并行操作,能在一个指令周期内完成一次乘法和一次加法运算,而且提供实现FFT所必需的比特反转指令,而这些都是普通的PC机所不具备的,使得FFT在DSP56311芯片上运行的速度将更快。因此,为了充分发挥DSP56311芯片的优势,用汇编语言编程。要在DSP56311处理器上实现FFT,可分为以下几步进行:

1.DSP56311汇编宏指令产生"波形"因子,sincos.asm;

2. DSP56311汇编宏指令完成位倒置重排输入序列x(n), bitrev.asm;

3. 在DSP56311处理器上实现FFT蝶形运算,buter1.asm;

4.用DSP56311处理器计算FFT组的偏离和计算系数的偏离,FFT1.asm;

5.实现完整的N点FFT。

为了测试设计的FFT算法是否正确,进入DSP56300 Software Simulator(GUI)进行调试。

利用 “File” 菜单中“Set-Path” 命令将调用目标程序的路径选择为已经生成好的“.cld” 文件所在的目录。再用 “File”菜单中 “Load-Memory COFF” 命令调用生成的“.cld” 文件。

执行 "Reset" 命令后,利用 "Next" 命令一步一步的执行程序。针对每小段程序,可以编写一个测试程序,给出适当的输入值,然后调试、执行,观察结果,由此分析确定程序编写的正确与否,由于是进行单步调试,因此,若有错误,能够及时发现并改正。

在本FFT程序中,输入序列的实部元素存在X存储器单元$18~$1f中。每个程序调用sincos宏指令以产生正余弦查找表,其中余弦表的值存在X存储器单元$8~$b中,而正弦表值存在Y存储器单元$8~$b中。程序调用bitrev宏指令按倒位次序存贮,实部倒位元素存在X存储器单元$0~$7中,虚部倒位元素存在Y存储器$0~$7中。FFT.asm调用FFT1在倒位输入序列上完成8点FFT,其中正常次序输入序列的实部元素存在X:$0~$7中,虚部元素存在Y: $0~$7中。

进行编译、链接产生fft.cld,在软件仿真器中装载(load) fft.cld,然后开始仿真执行,输入如下指令,将默认的十六进制表示改为易读的十进制小数形式:

radix f x:$18..$1f
radix f y: $18..$1f
radix f x:$0..$7
radix f y:$0..$7

在X和Y存储器中可以观察到如下结果:
输入序列实部元素:

X:$18 0.1000000 0.1000000 0.0500000 0.1000000
X:$1C 0.1000000 0.0500000 0.1000000 0.1000000

输入序列虚部元素:

Y:$18 0.0000000 0.0000000 0.0000000 0.0000000
Y:$1C 0.0000000 0.0000000 0.0000000 0.0000000


输出序列实部元素:
X:$0 0.7000000 0.0353554 0.0500001 -0.0353554
X:$4 0.0000000 -0.0353554 0.0500001 0.0353554

输出序列虚部元素:

Y:$0 0.0000000 0.0146446 0.0500001 -0.0853555
Y:$4 0.0000000 0.0853555 -0.0500001 -0.0146446

以上结果表明所编写的FFT程序是正确的。

软件和硬件开发相结合

下面以作者所做的基于DSP56311EVM(评估板)控制模型汽车运动的实例,加以详述。

本例的目的是使用DSP控制代替手动控制模型汽车的运动 。模型汽车有一套完整的发送接收装置,在使用DSP控制时,通过继电器电路,连接到模型汽车的控制电路,由DSP输出高、低电平信号,控制继电器线圈的吸合,继而控制模型汽车的运动。但由于DSP输出的功率信号很弱(500mW左右),不足以驱动继电器线圈吸合,所以在实际应用中,加入一运算放大电路,如图5所示。

图5 DSP控制模型汽车运动的硬件原理图(图)

DSP56311有多达34个用户可编程控制的通用输入输出接口(GPIO),诸如HI08、SCI、ESSI0、ESSI1等,本例中使用HI08(主机接口Host Interface 08)作为输出控制信号的接口。

HI08端口若要作为输入输出模式使用,则要求它所对应的端口控制寄存器HPCR(Host Port Control Register)的第6位-启动主端口HEN(Host Enable)置零;但仅把第6位HEN置零还不够,第0位-启动输入输出位HGEN(Host 输入输出 Port Enable)还需置一,因为该位是启用输入输出模式的控制位,它若为零,则作为输入输出的信号是断接的,输出呈高阻态;只有置一,才能得到要求的输入/输出。

在将端口HI08设为输入输出模式后,还必须设置另外两个寄存器,分别是:主端口数据寄存器HDR(Host Port Data Register)和主端口数据方向寄存器HDDR(Host Port Data Direction Register)。主端口数据寄存器是将数据(0或1)写入其中,这些数据就是将来要输出的数据:0表示低电平,输出时就是0V;1表示高电平,输出时就是+3.3V。主端口数据方向寄存器是用来控制该端口是作为输入使用,还是作为输出使用的:0表示输入;1表示输出。需要注意的是,主端口数据寄存器和主端口数据方向寄存器需要配合使用。对某一位的主端口数据寄存器(HDR)和主端口数据方向寄存器(HDDR)的配合使用,可简要表示如表1。

表1:HDR和HDDR的配合使用(略)

数据写入寄存器有几种方法,常用的两种方法分别是:对某一位的操作bset和bclr,和数据整体的移入movep。

HI08在评估板上对应的是J12,并且硬件上的管脚1~8对应于主端口寄存器中的0~7位。

自制的电路板由相同的四个子模块组成,分别为控制向前、向后、向左、向右运动的子模块,还有两个接口,分别接DSP的控制信号和电源,采用protel设计、PCB制板。

在进行硬件调试时,编译、链接过程如前所述,然后打开硬件调试器(Hardware Debugger),注意这时,DSP应连接电源,并与PC机相连。在文件(file)菜单下,设置源程序所在路径(path),在装载(load)菜单下,装载编译、链接好的cld文件,执行 "Reset" 命令后,单击执行(execute)菜单里的运行(run),或者工具栏里的运行(go),若要单步执行,利用 "Step" 命令一步一步的执行程序,通过观测寄存器、存储器内容,能够及时发现并改正错误,实现硬件调试。

源程序

该实例的源程序用汇编语言编写,如下:
//控制模型汽车向前运动子程序

org p:0
include "ioequ.asm" ;调用寄存器地址定义
bclr #6,x:M_HPCR ;设置HI08端口控制寄存器
bset #0,x:M_HPCR
movep #1,x:M_HDR ;设置管脚1作为输出
movep #1,x:M_HDDR ;设置管脚1高电平
//控制模型汽车向左运动子程序
org p:$1000
bclr #6,x:M_HPCR
bset #0,x:M_HPCR
movep #4,x:M_HDR ;设置管脚3作为输出
movep #4,x:M_HDDR ;设置管脚3高电平
//8字型运动源程序
org p:$1000
include "ioequ.asm"
bclr #6,x:M_HPCR
bset #0,x:M_HPCR
movep #5,x:M_HDR
movep #5,x:M_HDDR
delay_1 ;延迟子程序
do #4000,delay_loop1
rep #4000
nop
delay_loop1
rts
bclr #6,x:M_HPCR
bset #0,x:M_HPCR
movep #9,x:M_HDR
movep #9,x:M_HDDR
delay_2
do #4000,delay_loop2
rep #4000
nop
delay_loop2
rts

实验结果显示,模型汽车可以按照我们设计的要求运动,要改变模型汽车的运动状态,只要修改相应的程序即可。


结束语

随着信息化潮流的推进,电子信息产业正在进行一场数字技术革命,数字技术方案硬件实现的关键技术之一就是数字信号处理器技术,DSP是专为数字信号处理算法、方案实时实现而设计的硬件处理器,已在通信、网络、多媒体、图象、语音、雷达、导航等众多领域得到广泛的应用,DSP已经日益受到业内人士的关注,必将得到极大的发展。

         
版权所有《世界电子元器件》杂志社
地址:北京市海淀区上地东路35号颐泉汇 邮编:100085
电话:010-62985649
E-mail:dongmei@eccn.com