资料介绍
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与自身逆向相位相加:其结果是数据为原来的一半。实际上这条指令确定了折半查找算法中的“中间位置”。
(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,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与自身逆向相位相加:其结果是数据为原来的一半。实际上这条指令确定了折半查找算法中的“中间位置”。
(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为弱,其原因主要是两者指令集的差异。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 数字信号处理第四章IFFT算法PPT课件下载 4次下载
- 数字信号处理算法电子版资源下载 0次下载
- 使用Matlab算法集合用于数字信号处理的应用 0次下载
- 数字信号处理——理论、算法与实现 41次下载
- 数字信号处理器(DSP)实验报告 14次下载
- 数字信号处理应用论文讲解 12次下载
- 如何使用FPGA实现数字信号处理算法的研究 16次下载
- TMS320C6474数字信号处理器硅修订2.1, 1.2, 1.1, 1.0 勘误表 4次下载
- Builder数字信号处理器的FPGA设计 0次下载
- DSP数字信号处理器发展及应用简介 12次下载
- 数字信号处理器原理、结构及应用所附光盘 16次下载
- 数字信号处理-理论算法与实现 0次下载
- 定点数字信号处理器(DSP)技术与应用
- 了解数字信号处理器
- 二进制数折半查找算法在DSP上的实现
- 数字信号处理器的特点、作用及种类 1780次阅读
- 简单认识数字信号处理器 974次阅读
- 数字信号处理真题:离散卷积(和)与连续卷积大相径庭 484次阅读
- 利用数字信号处理器上的片上FIR和IIR硬件加速器 1232次阅读
- 中科昊芯推新版HXS320F28034数字信号处理器DSP 3913次阅读
- 基于TS101S芯片实现雷达信号处理系统的应用设计 2493次阅读
- PCI局部总线的性能特点及实现通用信号处理系统的软硬件设计 2241次阅读
- 数字信号处理器DSP与慢速外围设备接口的设计方法解析 2336次阅读
- 基于多核数字信号处理器的双千兆网络接口设计 1982次阅读
- 浅谈数字信号处理器的分类及选择 6156次阅读
- 一文了解dsp数字信号处理器 5839次阅读
- 解答数字信号处理学什么 4925次阅读
- 数字信号处理选型和介绍 7362次阅读
- 数字信号处理技术的优点分析 1.1w次阅读
- DSP是什么?详解DSP又称数字信号处理器 4.7w次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1489次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 91次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 9次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7基于单片机和 SG3525的程控开关电源设计
- 0.23 MB | 3次下载 | 免费
- 8基于单片机的红外风扇遥控
- 0.23 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30319次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多