公开/公告号CN101226560A
专利类型发明专利
公开/公告日2008-07-23
原文格式PDF
申请/专利权人 北京中星微电子有限公司;
申请/专利号CN200710177742.1
申请日2007-11-20
分类号G06F17/50;G06F9/44;
代理机构北京安信方达知识产权代理有限公司;
代理人龙洪
地址 100083 北京市海淀区学院路35号世宁大厦16层
入库时间 2023-12-17 20:32:26
法律状态公告日
法律状态信息
法律状态
2015-01-07
未缴年费专利权终止 IPC(主分类):G06F17/50 授权公告日:20111130 终止日期:20131120 申请日:20071120
专利权的终止
2011-11-30
授权
授权
2008-09-17
实质审查的生效
实质审查的生效
2008-07-23
公开
公开
技术领域
本发明涉及数字信号处理器(DSP,Digital Signal Processor)的设计验证技术,尤其涉及通过软件工具实现对DSP功能验证的系统及方法。
背景技术
随着半导体工艺的进步和工业民用领域的大量采用,近几年来,DSP价格大幅下调,而性能却不断提高,正以不可阻挡的趋势,进入通信、工业控制和消费领域,日渐成为现代信息产业的重要基石。
由于DSP不同于通用的嵌入式处理器,它是用来运行复杂的信号处理算法的。DSP技术往往涉及两个分支,一个是硬件实施的大规模集成电路(IC,Integrated Circuit)设计,另一则是软件验证的算法设计,借以对DSP算法功能模块进行模拟,从而验证DSP功能IC设计的正确性。
现有的算法设计C模式(C model)工具软件在开发组内部命名为Puma,如图1所示。由该图可以看出,该工具软件内含两部分内容:一是算法处理部分,如图1中的算法处理1、算法处理2、......以及算法处理n,表示在该工具软件设计的多个算法处理模块;另一则是各个算法处理模块之间的数据流通道,譬如图1中以级联方式的数据流通道,它表示出一个算法处理模块的输入-输出数据流。在此,不妨将算法处理(简称算法)部分称为Box,将各Box之间的数据流通道称为Pin。
图1所示的方案将作用于同一数据流的不同算法处理较好地分离,简化了程序开发,提升了软件的可重用性及可维护性。但当构成的系统比较大时,其复杂度也相应增加。图2表示了在上述级联的算法处理模型中,对于每一个算法的具体实现程序框图,包括如下步骤:
201:查询输入允许标志是真(True)还是假(False),为真则执行步骤202,为假则结束流程;
即检查输出Pin是否为空,只有当输出Pin为空时才能进行,否则,不能进行本次处理。这是因为需要等待下一级算法读取所有本级算法产生的输出数据,不然,会造成有效数据被覆盖。当处于算法链的最后一级,输出条件始终允许执行。这时,最后的数据接受者为文件。
202:查询输入缓存(Input Buffer)是否还有待处理的数据;如果有,就不进行数据读入的工作,否则会冲掉Input Buffer的有效数据;如果没有,才进行数据读入的工作;
203查询输入端口(Inport)是否连接Pin(即算法处理Box之间的数据流通道),是则执行步骤204,否则执行步骤213(Pin比文件file优先,只有不连接Pin的情况下才可能从文件中获得输入数据);
204:查询Pin里是否有数据,是则执行步骤205,否则执行步骤213;
205:读入新的待处理数据到Input Buffer;
206:判断Pin是否已读空;是则执行步骤207,否则执行步骤208;
207:设置上一级算法输入允许标志为True(参考步骤212);
208:进行必要的算法处理;
209:判断是否需要输出到文件;是则执行步骤210,否则执行步骤211;
210:将结果写入文件中;
每一个算法都可以输出到文件,这不影响输出到下一级,这为程序调试(debug)提供了极大方便。
211:将结果写入输出Pin中(在步骤201中已经保证输出pin是空的,故不会覆盖有效数据);
212:设置本级算法的输入允许标志为False,结束流程;
本步骤需要和步骤207配合理解。为了在步骤201检查中保证等到下一级算法在它自己的步骤207中已经取走了当前的输出数据,再设置当前的算法才可以做进一步输出。
213:查询Inport是否连接输入文件(Input File),是则执行步骤214,否则结束流程;
214:从文件读入有效数据进行处理(通常这是首个算法的行为),结束流程。
本流程的核心如图3所,当前(本级)算法输出数据到输出Pin中,必须等待下一级算法(Box m+1)完全读取这些数据,才能进一步输出其它有效数据,即上一级算法(Box m-1)对本级算法(Box m)输入数据的写入,示;这就依靠了图2两级算法的步骤212和步骤207相互配合来完成。
由此可见,现有的算法实现流程将算法与算法之间的关联混在一起,使得算法工程师在编写算法时,既要顾及算法实现本身,又要顾及算法之间的关联。实际上算法工程师只需要关心步骤208,而对于后一种处理(步骤207和步骤212),完全是为了算法连接性的考虑,和算法本身没有直接关系。
因此需要对现有算法设计系统进行进一步的升级,更细致地划分算法设计软件的功能模块,将算法与算法之间的关联分离开,使得算法工程师在进行算法设计时,能够集中精力考虑算法实现本身,而毋需过多顾及算法的连接性问题,从而降低算法开发的复杂性。
发明内容
本发明所要解决的技术问题是提供一种实现DSP设计验证的算法设计系统及方法,能够细致地划分算法设计软件的功能模块,从而降低算法开发的复杂性。
为了解决上述技术问题,本发明提供了一种实现数字信号处理器DSP功能验证的算法设计系统,包括相互分离的算法层实体和关联层实体,其中:
算法层实体,用于设计多个算法实体;
关联层实体,用于将对算法实体的互联关系采用图数据结构来描述,图数据结构中的一个顶点用于映射一个算法实体,图数据结构中的一个边用于映射算法实体之间的一个数据流通道。
进一步地,所述映射即顶点通过指向被映射的算法实体的入口地址实现对该算法实体的映射,边通过定义的接口实现对数据流通道的映射;通过访问接口进行写入输入数据或读取输出数据的操作实现算法实体的功能。
进一步地,当前算法实体的数据输出控制在下一级算法实体读取当前算法实体的数据输出通道中的有效数据之后进行。
为了解决上述技术问题,本发明提供了一种实现数字信号处理器DSP功能验证的算法设计方法,包括以下步骤:
(a)将算法的互联关系与算法分离,抽象成关联层;
(b)将关联层的互联关系采用图数据结构描述,图数据结构中的一个顶点用于映射一个算法实体;图数据结构中的一个边用于映射算法实体之间的一个数据流通道。
进一步地,步骤(b)映射即顶点通过指向被映射的算法实体的入口地址实现对该算法实体的映射,边通过定义的接口实现对数据流通道的映射;通过访问接口进行输入数据的写入或输出数据的读取实现算法实体的功能。
进一步地,步骤(b)算法实体的入口地址由所有算法实体都继承的一个祖先类的指针来指向;接口包括祖先类定义的虚接口写函数和读函数,通过重写写函数或读函数来实现所述算法实体,通过调用写函数执行向算法实体写入输入数据,通过调用读函数执行从算法实体读取输出数据。
进一步地,写函数的传递参数含有输入端口序号、输入缓存指针以及写入的有效数据长度;所述读函数的传递参数含有输出端口序号、输出缓存指针以及读取的有效数据长度。
进一步地,步骤(b)图数据结构的实现进一步包括步骤:
(b1)根据具体集成电路芯片的实现,构建图,并对图进行排序;
(b2)对图从头至尾遍历每一顶点,对符合运行条件的顶点调用其所映射的算法实体。
进一步地,运行条件是指当前算法实体的输出数据流通道为空。
进一步地,通过写函数的返回值和读函数的返回值判断输出数据流通道是否为空,即写函数的返回值使输出数据流通道中有效数据量减少,读函数的返回值使输出数据流通道中有效数据量增加等于初值,则输出数据流通道为空。
采用本发明提供的系统及方法,由于有效地将算法本身与算法的互联进行分离,使得编写算法的工程师只需关注具体的算法实现,而不必过多考虑其互联问题,故使软件开发的复杂性大大降低,既能加速软件的开发,亦能提高软件的可靠性。
附图说明
图1为现有的算法设计系统Puma的结构示意图;
图2为采用现有的算法设计具体实现的流程图;
图3是对图2所示算法设计过程中算法互联问题的解释;
图4为本发明提供的算法设计系统Puma结构示意图;
图5为用本发明的Puma图的实现流程图;
图6为本发明实现算法实体功能的流程图;
图7为本发明的Puma的一个应用实例。
具体实施方式
本发明提供的一种实现DSP功能验证的算法设计系统,包括算法层实体和关联层实体,其中:
算法层实体,用于设计多个算法实体Box;
关联层实体,用于对算法实体的互联关系进行抽象;其中,该互联关系采用通用数据结构——图来描述,图中的顶点用于映射一个算法实体,通过所有算法实体所继承的一个祖先类的指针实现对该算法实体的调用;图中的边(Edge)用于映射算法实体之间的一个数据流通道Pin,该祖先类定义的虚接口write、read函数用于实现算法实体的连接,通过重写该write、read函数实现Box的功能。
本发明提供的一种实现DSP功能验证的算法设计方法,包括以下步骤:
(a)将算法模块的互联关系与算法模块进行分离,并抽象成关联层;
(b)将该关联层采用图数据结构描述,图中的顶点(Vertex)用于映射一个算法实体(Box),通过所有算法实体所继承的一个祖先类的指针指向一个算法实体,实现对该算法实体的调用;图中的边(Edge)用于映射算法实体之间的一个数据流通道(Pin),该类定义的虚接口write、read函数用于实现算法实体的连接,通过重写该write、read函数实现算法实体的功能。
以下结合具体实施例和附图来详细说明本发明上述技术方案。
本发明为了更细致地划分算法设计软件模块的功能,考虑将算法的连接和算法本身进行分离,在算法层上抽象出关联层,如图4所示,并采用通用数据结构——“图”,来描述各算法实体的互联关系。其中:顶点(Vertex)代表“图”中的数据元素,在此用于映射一个算法实体;边(Edge)代表“图”中两个顶点之间的关联,在此用于映射算法实体之间的数据流通道。Vertex及Edge的具体含义在《数据结构》教科书中有明确定义。
对比图1,可以清楚的看到现有的Puma系统是单层结构,且算法与算法之间的连接是混在一起的;而本发明的Puma系统是在现有的Puma基础上,将算法之间的连接与算法本身分离而抽象出关联层。这样做的好处是:算法设计软件模块的功能划分更加明确和单一。编写算法的工程师只需要关注具体的算法实现,而不需要考虑互联的问题。同理,抽象出来的互联关系用“图”这种数据结构来表示,其实现完全不必考虑顶点(Vertex)和边(Edge)所实际代表的意义,而仅仅处理与互联关系有关的操作。
关于“图”在所有数据结构中是最复杂的一种,正因如此,将其独立出来实现是有意义的。因为“图”这一互联描述层的固有抽象属性,可以使它方便地应用在对更广泛的事物关系的描述上。经过充分讨论和测试抽象出的关联层,可以大大加快相似软件的开发,提高软件的可靠性。
同数组、链表及树一样,“图”也是人们所惯知的一种数据结构。本发明在程序上实现了图。利用它,使得算法设计的工作大为简化。从算法编写者的角度来看,算法工程师只需要完成图2中的步骤208的工作就可以了,不需要进行任何连接性的判断及处理。
本发明的Puma实现“图”的程序流程如图5所示,包括如下步骤:
501:根据具体IC芯片的实现,构建“图”;
请参见图6,图中U0~U10均代表顶点,顶点与顶点之间的连线代表边。
502:对“图”实施排序,保证“图”的运行效率;
503:对“图”中每一顶点进行从头至尾遍历的准备;
504:检查一顶点是否符合运行条件,若是,执行步骤505,若否则执行步骤506;
所谓运行条件,是指调用本级算法输出数据到输出Pin之前,下一级算法是否已完全读取了这些数据,即输出Pin是否为空。
505:对该顶点映射的算法进行调用;
506:指向下一顶点;
507:判断是否所有顶点都被遍历到,若是则结束流程,若否则返回步骤504执行。
下面将“图” (顶点和边的集合)和具体算法之间的映射说明如下:
本实施例的系统中所有的算法都继承同一个祖先类CAlgBase,它定义了两个虚接口write、read函数,即
class CAlgBase{
......
public:
virtual int Write(int index,char*buf,int len);
virtual int Read(int index,char*buf,int len);
......
};
在此,算法box可以看成是一个功能模块,它在重写write,read函数时实现,亦即将算法Box的内容写入write或read函数体中;而Write、Read函数可以分别看成是该功能模块的输入、输出接口。
其中,调用Write即向该算法box的第index个输入端口(Inport)输入缓存(buf)写入输入数据,其有效数据长度为len。Write的返回值表示算法实际处理了多少输入数据。
调用Read即从该算法box的第index个输出端口(Outport)读取数据,数据放在有效长度为len的输出缓存buf中。Read的返回值表示实际返回了多少有效数据。
Write函数调用时的参数index,表示该算法box1的输入Pin中的输入端口序号;相应地Read函数调用时的参数index,表示该算法box1的输出Pin的输出端口序号,即一个算法box可能会有多个输入端口或多个输出端口。
每一个“图”的顶点中都含有类CAlgBase的指针,用它指向不同的算法实体,以实现对相应算法实体的调用。具体的算法内容在write,read函数体中。当调用write或read函数便实现了算法的功能,其调用流程请参见图6,包括以下步骤:
601:检查本算法的输出Pin是否为空;若是则执行步骤602,若否则结束流程;
602:调用write函数,将输入数据写入算法box;
603:调用read函数,从算法box的读出数据,结束流程。
由于每级算法实现(调用)前都要先确定该算法的输出Pin为空,然后才去调用write、read函数来实现算法,这样就保证了每一级算法输出的有效数据不会被覆盖。
本实施例将“图”中的边映射成pin,在每调用一次write/read函数时,需要控制pin中有效数据的数量(即等于一个初值,譬如0),write的成功调用会使pin中的有效数据减少,减少量就是write返回值。read的成功调用会使pin中的有效数据增加,增加量就是read的返回值。利用pin中有效数据量这个值就可以方便的判断pin是否为空(即是否等于初值)。当然,在调用write或read函数时的传参index若大于1时,表示box的输入或输出可能是多个。这时,判断pin是否为空需要有个内循环流程来实施,这都是业界技术人员所熟知的,故此不再赘述。
通过本发明上述技术方案的实施,可以看出,算法工程师可以在本发明的算法设计系统中的算法层下,把自己写出的每一个算法都挂在该层下的算法库中,他只需关注一个一个具体的算法实现,而不需要考虑算法之间互联的问题。当一个DSP设计工程师(或者算法工程师本人)需要通过该算法库中的若干个算法实现对IC硬件功能的验证时,他只需在本发明的Puma上运行图5所示的流程,便可以方便获得验证结果。如图7所示的算法连接(只表示其中一部分),需要DSP设计工程师在使用puma时进行具体操作,其中的每一个box(即U0至U19)都是一个算法,替换其中的算法,重新运行,不会影响整个连接关系中其他的算法box运行。
由此可见,本发明提供的算法设计系统及方法,通过将算法的连接和算法本身进行分离,使得算法设计工作简化,且工作效率提高。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
机译: “财产识别方法”(“ PIM”)是一种新颖的算法,通过该算法,可以通过对文件(如市议会/房屋价格通知)进行图像处理来创建房地产管理局和/或产权转让数据。本发明建立了一种独特的算法,该算法结合了诸如深度学习分段和计算机视觉之类的技术来解码属性信息。该应用程序利用以某种方式配置的计算机实现的技术,以使运输商和房地产经纪人能够自动创建客户端文件。
机译: 本地数据介质智能卡,一种安全验证方法,涉及在介质中实现指令集,并通过使用功能集验证数据介质是否满足预定的安全要求
机译: 具有VPN(虚拟专用网)功能和WLAN(无线局域网)功能的混合网络设备-该设备通过在MAC CHIP上集成VPN硬件加速器并实现其方法来构成,该方法使用VPN算法和WLAN算法