分享
 
 
 

Motorola DSP及其开发

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

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

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

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

图1DSP56300系列

Motorola DSP56300系列

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

图2DSP应具有的性能

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所示。

图3DSP56311功能模块图

DSP56311开发工具

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

图4Simulator的界面

开发过程

软件开发

在应用时,要生成一个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所示。

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

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已经日益受到业内人士的关注,必将得到极大的发展。

本文摘自《世界电子元器件》

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有