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

发布时间:2015-05-25 阅读量:918 来源: 我爱方案网 作者:

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

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

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

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

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

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

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

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

TMS320C50的源程序:

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

bss LOOK,1 ;要查找的数.mmregs.textcall 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控UPS不间断电源技术原理及典型应用

基于ARM/DSP 的高性能驱动解决方案


智能显示——32位DSP及电机驱动芯片的悬挂运动控制系统设计方案

相关资讯
半导体产业升级战:三星电子新一代1c DRAM量产布局解析

在全球半导体产业加速迭代的背景下,三星电子日前披露了其第六代10纳米级DRAM(1c DRAM)的产能规划方案。根据产业研究机构TechInsights于2023年8月22日发布的行业简报,这家韩国科技巨头正在同步推进华城厂区和平泽P4基地的设备升级工作,预计将于2023年第四季度形成规模化量产能力。这项技术的突破不仅标志着存储芯片制程进入新纪元,更将直接影响下一代高带宽存储器(HBM4)的市场格局。

蓝牙信道探测技术落地:MOKO联手Nordic破解室内定位三大痛点

全球领先的物联网设备制造商MOKO SMART近期推出基于Nordic Semiconductor新一代nRF54L15 SoC的L03蓝牙6.0信标,标志着低功耗蓝牙(BLE)定位技术进入高精度、长续航的新阶段。该方案集成蓝牙信道探测(Channel Sounding)、多协议兼容性与超低功耗设计,覆盖室内外复杂场景,定位误差率较传统方案降低60%以上,同时续航能力突破10年,为智慧城市、工业4.0等场景提供基础设施支持。

财报季再现黑天鹅!ADI营收超预期为何股价暴跌5%?

半导体行业风向标企业亚德诺(ADI)最新财报引发市场深度博弈。尽管公司第三财季营收预期上修至27.5亿美元,显著超出市场共识,但受关税政策驱动的汽车电子产品需求透支风险显露,致使股价单日重挫5%。这一背离现象揭示了当前半导体产业面临的复杂生态:在供应链重构与政策扰动交织下,短期业绩爆发与长期可持续增长之间的矛盾日益凸显。

全球可穿戴腕带市场首季激增13%,生态服务成决胜关键

根据国际权威市场研究机构Canalys于5月23日发布的调研报告,2025年第一季度全球可穿戴腕带设备市场呈现显著增长态势,总出货量达到4660万台,较去年同期增长13%。这一数据表明,消费者对健康监测、运动管理及智能互联设备的需求持续升温,行业竞争格局亦同步加速重构。

RP2350 vs STM32H7:性能翻倍,成本减半的MCU革新之战

2025年5月23日,全球领先的半导体与电子元器件代理商贸泽电子(Mouser Electronics)宣布,正式开售Raspberry Pi新一代RP2350微控制器。作为RP2040的迭代升级产品,RP2350凭借双核异构架构(Arm Cortex-M33 + RISC-V)、硬件级安全防护及工业级性价比,重新定义了中高端嵌入式开发场景的技术边界。该芯片通过多架构动态切换、可编程I/O扩展及4MB片上存储等创新设计,解决了传统微控制器在实时响应能力、跨生态兼容性与安全成本矛盾上的核心痛点,为工业自动化、消费电子及边缘AI设备提供了更具竞争力的底层硬件方案。