如何在DSP上实现二进制数折半查找算法

发布者:tetsika最新更新时间:2014-06-07 来源: 互联网关键字:DSP  二进制数折半查找算法 手机看文章 扫描二维码
随时随地手机看文章

  折半查找是采用跳跃跃方式先将顺序数列中的“中间值”与所查询值进行比较,然后按照比值大于或小于“中间值”来判断所查找数的甩在区域。文章给出了将折半算法应用于数字信号处理器上以实现二进制数的查找算法的一种具体方法。并给出了采用这种方法的软件程序。

  1 折半查找的基本原理

  近十几年来,随着各类集成化单片数字信号处理器(DSP,Digital Signal Processor)性能的不断改时,相庆的软件和开发工具日臻完善,价格也迅速下降。它们所具有的功能强、集成度高、应用灵活及性能价格比高的优点使其信息处理(如语音与图像各种的处理)、通信、多媒体、综合网络、控制、消费电子、医疗设备、测试与仪器等诸多领域得到了极为广泛的。有一种看法认为:单片机是事物处理型的处理器,如开关的通断或逻辑操作等;数字信号处理器是数据处理型的处理器,如进行大量的包括FFT在内的数据运行等。这种看法在某种程序上是有一定道理的。一般地说,DSP应用系统要处理的数据多、运算量大而且实时性要求较高,研究DSP本身(包括硬件方面和软件方面)的优势对快速有效地执行某种算法有着重要的实用价值。

  查找是智能系统经常用到的操作,实现查找的方法有多种,如顺序查找、折半查找和分块查找等。在这些方法中,如果按顺序存储结构组织的查找表中的所有数据元素按关键字有序,则可以执行折半查找(或称二分查找)。它的基本思想是:由于查找表中的数据按关键字有序(假设递增有序),则在查找时不必逐个顺序比较,而可以采用跳跃式方式先与“中间位置”的记录关键字比较,若相同,则查找成功,若给定值大于“中间位置”的关键字,则在后半部分进行折半查找,否则在前半部进行折半查找。

  2 折音查找算法在DSP上的实现

  二进制折半查找算法(Binary Search Algorithm)在DSP上实现并不难,但是一般查找程序都未能充发利用DSP内部先进的结构和指令集,从而使得程序运行的时间未能缩至最短。这在某些时候不会防碍系统效率,但在系统数据量较大而且实时性要求较高的情况下,则必须尽一切可能提高程序的效率。本文以TMS320C50为例给出了一个二进制查找算法的子程序,该程序可使系统的查找效率得到较大提高。

  程序中充分利用了TMS320C50的位反址寻址指令,该指令可以在每一个测试过程中使搜寻的工作减半并释放累加器以进行其它工作。此外,该程序利用了条件执行指令(XC),而不是使用传统的条件转换指令,这样一来便节省了指令周期并提高了效率。具体的TMS320C50的指令集可以参考其它文献[1]。

  本文介绍的二进搜寻程序是在有序状态下进行的。它假设表格中的数据按由低到高的次序排列,最大数在存储器中的地址最大。当然,反之(最小数在地址的最高位)亦是如此。此外,程序还假设数据中的最大个数是2的幂次方,在下面给出的源程序中个数2 11个。

  TMS320C50的源程序:

  .bss NTABLE,800h ;2的11次幂的数据空间(按由低到高排列)

  .bss LOOK,1 ;要查找的数

  .mmregs

  .text

  .

  .

  .

  call bsearch

  .

  .

  .

  ;***********************

  ;二进制查找子程序

  ;程序名:binsearch

  ;入口参数: (ACC)所要查找的二进制数

  ;出口参数:(ACC)所要查找的二进制数的地址(数据被找到)

  (ACC)=0(数据未找到)

  ;***********************

  bin-search lar AR0,#0800h ;AR0数据的总数目

  mar *,AR0

  mar *BR0+ ,AR3 ;总数目的一半

  lar AR3, #NTABLE;AR3指向数更的开始

  lacl #11 ;重复2的N次方,数列数据的个数为2的N次方

  samm BRCR ;重复次数存放在BRCR中

  ldp #LOOK

  lace LOOK ;要查找数据存放在ACC中

  sub * ;与AR3所指的存储单元的数据相减

  bcnd nothere , LT ;ACC值小于0,要查找的数据不在本数列中

  rptd nothere-1

  bend found,EQ ;打到数据

  xc 1, GT ;若ACC中的数据较大

  mar *0+, AR0 ;

  xc 1, LT ;若ACC中的数据较小

  mar *0-, AR0 ;

  mar *BR0+, AR3 ;查找空间减半

  lacc LOOK

  sub *

  ;***********************

  ;未找到,将ACC置0后返回

  ;***********************

  nothere retd

  zac

  nop

  ;***********************

  ;找到数据,将数据地址存放在ACC中返回

  ;***********************

  found ldp #0

  apl #0fffeh,PMST ;复位PMST位

  retd

  lamm AR3 ;存数据地址

  nop

  3 辅助说明

  程序中较为详细的介绍了每个步骤所需完成的功能,下面就一些关键的地方进行一些说明。

  (1)程序如果找到查找的数据则返回数据所在的地址,未找到则送0至ACC寄存器。

  (2)程序中的mar BR0+,AR3是将当前AR(辅助寄存器)指定的数据存储器的内容按逆向进位方式加AR0的内容。由于      在该指令前有一条mar*,AR0指令,这条指令指定了下一条指令的辅助寄存器。因此在执行MAR BR0+,AR3时,实际上是辅助寄存器AR0与自身逆向相位相加:

如何在DSP上实现二进制数折半查找算法

  其结果是数据为原来的一半。实际上这条指令确定了折半查找算法中的“中间位置”。

  (3)samm BRCR指令程序执行是是与rptp nothere-1指令配合使用的。Samm指令的功能是将循环次数的值(这里是11)存放在BRCR中。BRCR(Block Repeat Counter Register)是个16位的寄存器,用于存放程序块重复操作的次数。Rptp指令是重复操作指令,它的功能是重复执行下一条指令到该指令指定的地址之内的程序代码,重复执行的次数由brcr决定。在上面的程序中,RPTR指令指定的地址是nothere-1,也就是说:重复执行的程序代码从bcnd found直到nthere的前一指令Sub*。

  xc指令的用法如下:

  xc K[,COND1][COND2][,…]

  指令中的K=1或2。COND1、COND2是条件。xc指令功能是在条件满足的情况下,执行该指令下面的K条指令,K为1,则执行一条指令,K为2则执行两条指令。条件不满足就执行K条NOP指令。

  (4)该源程序是采用TMS320C5X的指令集编写的,如果是TMS320C5X系列的DSP,则可以直接将上面给出的程序作为一个子程序来使用。而对于TMS320C2XX系列的DSP来说,由于TMS320C5X的指令对TMS320C2XX的指令是向下兼容的,所以在编写TMS320C2XX的折半查找程序时应作一些修改,比如前面提到的程序中的samm指令,在TMS320C2XX指令集中就没有。这样,如果希望用TMS320C2XX来实现本例中的samm语句 功能,则可以将重复操作的次数存放在内部的RAM中,再配合TMS320C2XX循环指令来完成samm与rptp指令的功能。但这样做将导致程序执行效率的降低。也可以认为TMS320C2XX的数据处理能力较TMS320C5X为弱,其原因主要是两者指令集的差异。

关键字:DSP  二进制数折半查找算法 引用地址:如何在DSP上实现二进制数折半查找算法

上一篇:DSP H.264编码器的电路设计
下一篇:集成工具提高嵌入式DSP系统设计与自动化程度

推荐阅读最新更新时间:2024-05-02 23:05

一种基于FPGA的全光纤电流互感器控制电路设计
  电流 互感器 作为高压电网检测主要设备,不仅为电能的计量提供参数,而且是为继电保护提供动作的依据。随着国家智能电网和特高压电网的发展,传统电磁式电流 互感器 逐渐暴露出其致命缺陷,例如高电压等级时绝缘极为困难、更高电压下易磁饱和导致测量精度下降等。相比之下,光纤电流 互感器 具有抗电磁干扰能力强、绝缘可靠、测量精度高、结构简单和体积小巧等诸多优点,是当前研究热点。作为光纤电流互感器的核心部件,其检测和控制电路对电流检测精度和范围具有非常重要的影响。   目前检测和控制电路实现主要有两种方案,一种是以数字信号处理芯片( DSP )为核心,由于 DSP 的速度越来越快,使得 DSP 成为很多数据处理和信号检测方案
[嵌入式]
一种基于FPGA的全光纤电流互感器控制电路设计
天惠微代理山景AP8264A2 适用DSP方案 可烧录 USB声卡USB麦克风
AP8264A2高性能32位音频应用处理器AP82系列音频处理器是面向音频应用领域设计的新一代SoC平台产品,适用于传统音响系统、新兴的蓝牙或WiFi无线音频产品、Sound Bar和调音台等市场。该处理器在总体架构和系统组成上,充分考虑了音频领域的特点,支持MP3、WMA、WAV、FLAC、APE、AAC等多种解码格式和MP3编码。同时,提供回声消除(AEC)、魔术低音(VB)、3D环绕和Parametric EQ等丰富的声学和音效处理功能。并可以灵活选用不同容量的程序Flash芯片,以达到整个系统设计的超高性价比。 内核和存储 ➢ 高性能 32 位 RISC 内核,最高频率 240MHz, 支持 DSP 指令,集
[嵌入式]
天惠微代理山景AP8264A2 适用<font color='red'>DSP</font>方案 可烧录 USB声卡USB麦克风
CEVA发布低功耗DSP架构CEVA-XC4000
CEVA公司宣布推出完全可编程的低功耗DSP架构框架CEVA-XC4000,支持用于蜂窝、Wi-Fi、DTV、白色空间 (white space) 等应用的最严苛的通信标准。CEVA-XC4000 架构以其大获成功的上一代产品为基础,利用创新性指令集以软件方式实现了通常只能由专用硬件完成的高度复杂的基带处理,并树立了新的功耗里程碑。以LTE-A处理为例,CEVA-XC4000的性能相比CEVA-XC323 DSP提高了五倍,而功耗降低了50%。 CEVA-XC4000架构为一个系列,共有六款完全可编程的DSP内核,为调制解调器开发人员提供了广泛的性能选择,同时符合最严苛的功耗限制。利用各内核代码兼容且有统一的开发基础结构、优化的
[嵌入式]
APCI控机的变压器保护装置
  1 装置的配置及硬件特点   葛洲坝大江电厂主接线如图I所示。变压器主保护的硬件平台采用的是北京康拓公司与华中科技大学、葛洲坝能达电器公司联合开发的APCI5000系列工控机。APCI5000系列工控机采用欧洲直插式工业结构,同时支持与ISA总线兼容的AT96总线及与PCI总线兼容的CompactPCI总线,总线传输速率达132Mbit/s。 APCI5000系列工控机取消了康拓STD工控机模板的“金手指”插接和扁平电缆连接进行信号交互方式,母板采用标准96芯针孔连接器,用户I/O接口为欧式96芯插座,通过无源母板上的96芯压接插头引线,从而系统具有更高的可靠性。AT96机箱高度为6U,具有强的抗电磁辐射干扰功能 。
[电源管理]
APCI控机的变压器保护装置
设计技术问答:FPGA设计的安全性考量
  Q1:FPGA设计与DSP设计相比,最大的不同之处在哪里?    A1:这个问题要从多个角度看。它们都用于某个功能的硬件电路实现,但是它们的侧重点有所不同。这里涵盖的说一下。   1)内部资源   FPGA侧重于设计具有某个功能的硬件电路,内部资源是VersaTiles(ActelFPGA)之类的微小单元,FPGA的内部单元初始在编程前都是使用的是HDL语言实现硬件电路的设计描述。FPGA内部的连线资源将这些功能模块的内部和模块之间的信号连接起来,构成较大的模块。FPGA可以内部实现ALU,加法器,乘法器,累加器,FIFO,SRAM,DDRcontroller,FFT,HDLC,DMA,PWM等等数字电路,也就说我们要用
[嵌入式]
基于TMS320DM642的视频采集驱动程序
  视频终端的核心是图像的数字化处理模块.基于PC机的数字视频处理,给出了算法研究的途径,而基于高速DSP的应用模块才提供了实时嵌入式视频处理的可能.然而,基于DSP的海量视频数据的实时处理的关键则是实时、合理的视频数据采集.本文针对自行研制的基于TMS320DM642(以下简称DM642)DSP的视频处理板卡,使其在C64x系列DSP的实时操作系统DSP/BIOS的环境下运行,实现基于类/微驱动模型的视频采集驱动程序,并进一步描述采用EDMA(增强的直接存储器存取控制器)的数字视频图像信号的实时传输.   1 类/微驱动程序模型   C64x系列的DSP系统给出了类/微驱动模型 的驱动程序结构,采用该模型进行驱动程序设计
[嵌入式]
基于TMS320DM642的视频采集驱动程序
基于TLC2274新的电流采样方案及其在DSP中的实现
引言 在绝大多数电机调速以及其它控制系统中都要用到电流采样,以用于电流反馈控制。目前在高性能的电机变频调速系统中,数字信号处理品(DSP)越来越多地被使用。其中以德州仪器(TI)公司TMS320C/LF240(X)为代表的C2000系列的DSP用得较多。现有的电流采样方法大多采用文献 的模数采样方案,如下图1所示: 图1(b) 图1(c) 图1(d) 图1所示方案的原理是:首先用电流互感器或电流传感器(如瑞士LEM公司的LTS系列传感器等)采样两相电流值;然后将采样结果经运算放大器使电流值变换到-2.5~+2.5v 的电压区间中,最后再加上+2.5v的电压偏移量形成0~5v的电压送给DSP采样。这种方法
[模拟电子]
基于DSP的数字示波器GUI的开发
随着嵌入式系统应用领域的不断扩大,系统复杂性也在不断提高。所以在嵌入式系统中实现用户图形化(GUI),已经成为大势所趋。在测量仪器中,图形化界面也是广泛采用,一种是嵌入操作系统,大多数的用户图形化界面(GUI)都是在操作系统(如OS、WinCE、Linix)的支持下, 调用系统的各种API函数实现的。这些操作系统为实现GUI提供了大量的库函数,也为编程人员提供了界面设计的良好平台。但是这种嵌入技术,对硬件要求高,相当于嵌入一台计算机,如利用WinCE就可以十分方便的设计出具有Windows风格的图形界面。另一种是,直接利用DSP技术,开发小型系统。这种系统精简,对硬件要求低,但功能相对单一。 本文这款数字示波器是普源精电(RIG
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved