标题:
基于ADSP-BF533在低耗高速实时系统中的应用
[打印本页]
作者:
苹果也疯狂
时间:
2015-8-31 17:40
标题:
基于ADSP-BF533在低耗高速实时系统中的应用
1 引言
当今信息技术与计算机技术的飞速发展。使得数字信号处理发展成为一门非常关键的技术。而数字信号处理器(DSP芯片)的出现为数字信号处理算法的实现提供了可能,同时,DSP器件性能的不断提高又极大地促进了数字信号处理技术的进一步发展。Blackfin系列DSP芯片是美国模拟器件公司(ADI)与Intel联合开发的体现高性能体系结构的新一代嵌入式定点处理器。Blackfin处理器在一个芯片和一个开发平台上融合了DSP信号处理、RISC控制处理和音视频处理功能,具有高速实时数据处理、极佳的代码密度、动态电源管理、极低的功耗、方便的开发使用等优点。
Blackfin系列DSP具有一个双MAC 300刎,(每秒600 MHz)内核。其结构的核心是数据算术单元,包括两个16位乘法累加器(MAC),2个40位算术逻辑单元(ALU),4个8位视频ALU和一个40位桶形移位器。在每个周期内。每个MAC能在4个独立的数据操作数上执行16位乘法运算.算术逻辑单元能累加2个40位的数或4个16位的数。为获得最大效率.可利用这种体系结构处理8位、16位和32位的数据运算。同时,Blackfin系列DSP具有世界领先的功率管理和性能。Blackfin处理器采用低功耗和低电压的设计方法.具有动态功率管理的特点,即通过改变工作电压和频率来大大降低总功耗。与仅改变工作频率相比,既改变电压又改变频率能够使总功耗明显减少。对于便携式应用来说,这相当于延长了电池的寿命。
2 ADSP-BF533处理器简介
ADSP-BF533是Blackfin系列DSP产品中典型的一款。其主要特点有:16位定点DSP内核,可实现600MHz的高速持续工作:灵活的软件控制动态电源管理:0.8~1.2V内核电压、2.5~3.3V外部输入电压、实时时钟模块RTC、12通道DMA、4GB统一寻址空间、80KB的L1指令存储器、64KB的数据存储器:灵活的引导方式等。此外.ADSP-BF533还具有丰富的系统外设——并行外设接口(PPI)/GPIO、双通道全双丁同步串口(SPORT)、通用异步串口(UART)、SPI兼容端口、看门狗定时器等。
ADSP-BF533可实现600 MHz的高速持续工作,单片处理能力可达1.2GMIPS (每秒12亿次乘加运算),由于处理速度快,ADSP-BF533可适用于高速实时信号处理系统;另外,ADSP-BF533的动态电源管理模块通过改变供电电压和工作频率使得其功耗很低,典型数据为52毫瓦(200 MHz)、90毫瓦(300MHz、280毫瓦(600 MHz),当处理器处于深度休眠状态时,功耗会变得更低。与相似的DSP相比.ADSP-BF533在同等性能下功耗要低30%.尤其适用于对功耗有特殊要求的系统。
3 在低功耗高速实时信号处理系统中的应用
正因为ADSP-BF533具有实时处理速度快和低功耗的特点,可以将其应用在一些要求低功耗、高速度的实时信号处理系统中。如水下信号监测与处理系统、地下管道预警系统、高空信号探测与分析系统等.这些系统的共同特点是:1.任务具有“突发性”——平时不需要复杂的信号分析与处理,而一旦有分析与处理任务时,数据量、运算量都相当大,要求系统能够尽快及时地按照精准复杂的算法进行处理并得到准确的结果;2.功耗是瓶颈——由于系统所处的位置原因(水下、地下或高空),一般由电池供电且不宜频繁更换电池,故财功耗的要求很高——越低越好。而ADSP-BF533具有实时处理速度快和低功耗的特点,完全可以胜任这些系统。图1是一个以ADSP—BF533为核心模块的此类系统的原理框图。
图1以ADSP-BF533为核心模块的低功耗高速实时信号处理
图2 ADSP-BF533与单片机的连接示意图
系统由上位机和下位机组成.上、下位机的通信由GPRS/GSM模块实现。上位机软件负责对下位机的参数设置及状态查询界面的编写以及与GPRS/GSM模块间通信的实现;而信号采集、分析及处理等主要工作由下位机实现,并通过GPRS/GSM模块将信号处理结果告知上位机(如地面工作站)。下位机由传感器、数据采集模块、低功耗微处理器和高性能ADSP-BF533处理器组成。数据采集模块采集来自传感器的原始信号数据(如水下压力或声纳、管道应力或振幅、高空风力或温度变化等),并根据需要进行放大/衰减、模/数转换等处理,然后将数据送给后面的低功耗微处理器。后者对信号数据依照经验阈值进行简单判别——若与经验阈值有悖,即信号“可能异常但不确定”。则将信号数据传送给后面的ADSP-BF533处理器,后者利用其强大的数据处理能力按照复杂的算法对信号进行高速实时处理.得出信号是否“异常”的准确结果”,并将结果回送至低功耗MCU。并由后者通过GPRS/GSM模块通知上位机。
这种低性能低功耗微处理器和高性能ADSP—BF533相结合的双核模式非常适用于上述几种系统,试验中低功耗MCU选用51单片机。由于此类系统长期处于正常状态,不需要一直进行复杂的数据处理。正常状态下.仅由单片机接收数据并进行简单判别而ADSP-BF533处于深度休眠状态,此时DSP内核、外设时钟全部禁止,仅用0.8V电压维持RTC模块的实时时钟运转,电流仅为几十微安,功耗微乎其微——满足此类电池供电系统的节能要求;而一旦单片机判决数据“可能异常”,将唤醒休眠的ADSP-BF533并对信号进行高速实时处理——满足此类系统的高速实时性要求。
ADSP-BF533与单片机间通过异步串口UART传送数据。数据格式和波特率可编程设定。为了将DSP从深度休眠中唤醒,单片机另用一根输出线(如P2.0)接至RESET脚。另外,因为ADSP-BF533没有片内程序存储器,用户的代码必须通过外部的存储器来进行引导。ADSP-BF533的两个引脚BMODEO和BMODEl的最终状态决定ADSP-BF533的引导方式,试验中选用从外部FLASH引导的方式(BMODEO脚接高电平,BMODEI脚接低电平),将用户代码放入FLASH中,FLASH选用PSD4256G6V(IMB)。ADSP-BF533的地址线A[1:19]分别接至PSD4256G6V-10UI的ADl1~ADl5及PCO~PC3脚,数据线D[0:15]分别接至PSD4256G6V-IOUI的PFO~PF7及PG0~PG7脚,在读写控制部分,将ADSP-BF533的ABE0、ABE1、AMS0、AMS2、AOE分别接至PSD4256G6V-10UI的AD0、CNTL2、PC6、PC7及CNTLI脚,另将ADSP-BF533的而云和PSD4256G6V-10UI的CNTL、PD3脚相连。ADSP-BF533与单片机间的部分连接关系如图2所示。
系统上电复位后.7单片机先通过UART向ADSP-BF533发送一个握手信号.为了区别后面发送的正常数据,此握手信号可选用特殊符号“EOF",此后ADSP-BF533进入深度休眠的省电模式。系统下作时由单片机接收前端采集的数据并进行简单判别,若无异常则ADSP-BF533保持深度休眠,程序对实时时钟编程为每1天(24小时)产生一次中断(RTC中断),由中断唤醒DSP并通过UART向单片机传送一个特定数据(如10101010)表示DSP硬件正常并处于深度休眠,再由单片机通过GPBS/GSM模块通知上位机然后再次进入深度休眠:当单片机对前端数据初次判决为“可能异常”时,立即输出一个低电平信号(1毫秒)至ADSP-BF533的面面矛脚令其复位,然后ADSP-BF533切换到全速方式(通过对ADSP~BF533的PLL编程实现),接着单片机通过UART向ADSP-BF533传送数据(因数据量不大,将数据放在ADSP-BF533内部的L1数据存储器中)。接着533进行调用相应算法处理进行高速实时处理,若结果异常,则启用UART向单片机传送另一个特定数据(如11111111)告知异常,再由单片机通过GPRS/GSM模块通知上位机,然后ADSP-BF533再次进入深度休眠.直至下面发生两种情况之一才再次被激活:1.实时时钟再次计数满一天:2.单片机再次发出低电平复位信号。ADSP-BF533的工作流程如图3所示。
图3 ADSP-BF533的工作流程
对ADSP-BF533的编程是通过写相关寄存器实现的,在visual DSP++环境下使用汇编语言或C语言均可。试验中采用c语言实现,如PLL(片内锁相环)子函数的编程代码如下:
void Init-PLlXvoid)
{
*pSIC_IWR=Ox81; //写SIC_IWR寄存器使能实时时钟中断唤醒和PLL唤醒
*pPLL_CTL=Ox1100;//对输入27晶振16倍频,配置内核时钟为324MHz
*pPLL_DIV=0x2; //系统时钟频率=1/2内核时钟频率
ssync(); //抽空流水线,切换到设定的工作频率
idle();
} //end Init_PLL
4 结论
当今社会,电子技术广泛应用于各种领域。人们对电子系统的速度和功耗提出了越来越高的要求。综上所述。利用高性能ADSP-BF533处理器高速实时处理和低功耗的特点.可以使其在那些要求低功耗、高速度的实时信号处理系统中发挥无与伦比的作用。
本文作者创新点:提出了一种基于单片机+ADSP BF533的双核结构,适用于一些具有低功耗、高速实时处理特点的系统。利用这种双核结构,可以兼顾高速实时数据处理和节约能源的要求,可在许多相关领域发挥无与伦比的作用。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0