您当前的位置:五五电子网电子知识单片机-工控设备DSP/FPGA技术Motorola DSP及其开发 正文
Motorola DSP及其开发

Motorola DSP及其开发

点击数:7445 次   录入时间:03-04 11:55:02   整理:http://www.55dianzi.com   DSP/FPGA技术

当今社会是信息化的社会,面对海量信息,使用计算机进行处理成为首选。众所周知,计算机只能处理数字信号,因而在一定程度上,可以说信息化的基础是数字化,而数字化的核心技术之一是数字信号处理。数字信号处理的任务越来越多地应用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

[1] [2]  下一页


本文关键字:开发  DSP/FPGA技术单片机-工控设备 - DSP/FPGA技术