具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图2为本申请实施例提供的一种记账过程,具体可包括以下步骤:
S101:获取业务数据,并确定所述业务数据对应的各记账明细。
在本申请实施例中,该分录记账过程可视为是在企业内部进行的,并入图1所示的结构示意图,在该企业内部存在该客户账务系统、该总账系统以及该客户信息系统。
另外,由于现有技术中通常采用的记账明细的登记方法为分录登记,所以在本申请实施例中以分录登记为例继续后续说明,当然本申请实施例也不限定采用其他登记方法进行记账明细的登记。具体的该分录记账的过程,可以是指将客户账务系统将业务数据对应的各记账明细分录记账在总账系统的过程。其中,具体由该客户账务系统将各记账明细写入该总账系统,还是有该总账系统从该客户账务系统调取各记账明细并存储,或者由第三方执行这一过程,本申请并不做具体限定。可以由企业根据实际应用的需要进行设置。但是,无论采用何种方法进行分录记账,该客户账务系统首先需要确定业务数据。
具体的,在本申请实施例中,所述业务数据为用户或者系统在执行业务后,产生的需要以记账形式记录的数据。也就是说,该业务数据可仅视为一个业务对应的需要记账的数据。
例如,用户A通过企业B向用户C借方100元为例,该业务可以是用户A发起的转账业务,也可以是该用户C发起的贷方业务。可见,对于不同的业务,执行之后所产生的数据可能存在不同,如,若是转账业务产生交易凭证,而若是贷方业务则产生贷方信息等等。但是,无论用户A通过企业B向用户C借方100元这一行为是通过何种业务执行的,该企业B在记账过程中,均需要记录3条记账明细。即,表1中所示的用户A账户减少100元,机构B账户增加手续费1元,用户C的账户增加99元,以上3条记账明细。上述3条记账明细对应的数据,可视为本申请实施例中所述的业务数据,而如交易凭证等数据,在本申请中可视为是处理业务产生的其他数据,而非业务数据。
通过上例可见,由于通常该客户账务系统用于业务执行结果进行记账,所以该客户账务系统确定的该业务数据,也可视为是用于记账的数据。当然,正如前述,本申请所述的分录记账过程的执行过程,可以由工作人员设置,所以确定该业务数据也可以是该客户账务系统、该总账系统或者第三方中的任一一方。为了方便后续描述,在本申请中以该客户账务系统执行该分录记账过程为例继续后续说明。也就是说,后续若做不特别说明,可视为该分录记账过程的执行主体为该客户账务系统。
S102:根据所述业务数据,确定所述各记账明细对应的核算模板。
在本申请实施例中,该客户账务系统在确定了该业务数据之后,便可进一步确定该业务数据对应的核算模板。其中,该核算模板可以是该企业的财会人员,根据业务逻辑设置的核算模板。并且,该核算模板可以是基于复试记账法确定的。
具体的,由于该企业可能涉及的需要记账的业务是可以预先确定的,而不同业务对应的需要记账的内容也是可以确定的,所以该企业的工作人员可以根据需要记账的业务所要记录的内容,确定各业务对应的核算模板。并且,由于存在不同的业务记账的内容雷同的情况,所以可以针对不同的业务确定相同的核算模板。
另外,由于通常企业在记账时,采用的是复式记账法。而复式记账法的特征之一就是便于核算,具体来说,就是一个业务对应的借方和贷方的发生额是平衡的,即,借贷平衡。所以根据复试记账法确定的该核算模板,也可视为是根据复试记账法确定的业务记账明细。
继续沿用上例,用户A通过企业B向用户C借方100元,根据复试记账法,确定的3条记账明细如表1所示。也就是说,对于第一个账户借方,第二个账户以及第三个账户贷方模式的业务,均可以拆分为3条记账明细,并且3条记账明细为一借两贷,并且这一借两贷的记账明细应该借贷平衡。也就是说,在该企业B所涉及的所有记账明细为一借两贷的业务,均可以对应于同一个核算模板。
进一步假设,在该企业B中存在用户D向用户E和用户F借方,但是无需手续费的业务,以及该企业B向用户G和用户H借方的业务。上述两种业务,与用户A通过企业B向用户C借方的业务均可以对应于同一个核算模板。也就是说,多个业务若记账模式相同,则无论该业务具体实施细节有何不同,在该客户账务系统中,均可以确定相同的核算模板。
于是,在本申请实施例中,该企业的工作人员可以根据预先确定的各业务逻辑,确定需要记账的各业务对应的核算模板,并将各核算模板存储在该客户账务系统中。则当确定该业务数据时,该客户账务系统可以根据预先存储个核算模板,确定该业务数据对应的核算模板。
S103:根据所述核算模板,确定所述各记账明细分别对应的记账标识。
在本申请实施例中,当该客户账务系统确定该业务数据对应的核算模板之后,由于该核算模板对应了该业务需要记账的模板(例如,存在几个借方以及几个贷方),并且由于通常在分录记账时是存在先后顺序的(例如,一个业务数据对应至少两个记账明细,那么在分录记账时需要逐一将记账明细登记在该总账系统中),所以该核算模板中也可存在记账顺序。于是,该客户账务系统为了方便后续在检测异常记账明细时,准确定位是那一条记账明细出现问题,所以还可根据该核算模板,确定该业务数据对应的各记账明细对应的记账标识。
具体的,该核算模板除了可以包括,该业务的贷方记账明细的数量以及借方的记账明细数量。该核算模板还可以包含各记账明细的分录记账的顺序。所以当该客户账务系统根据该业务数据,确定与该业务数据对应的各记账明细时,还可以根据该核算模板确定各记账明细分别对应的记账顺序,并且确定各记账明细分别对应的记账标识。、
继续沿用上例用户A通过企业B向用户C借方100元,该业务数据对应的核算模板可以如表2所示。
表2
其中,可见转账1为该业务数据对应的核算模板的标识,对应的记账明细数量为3条,其中一借两贷。并且,通过该记账标识1、2、3,可以确定各记账明细在分录记账时的顺序为按照表2中的记账内容从上至下的顺序记账。若由于该业务数据对应的记账明细在分录记账时出现异常,如,缺少记账标识为2的记账明细,则可快速确定是第一条贷方记账明细缺失或者错误。
另外,需要说明的是,由于为了方便后续核算,所以在分录记账时对于同一个业务数据对应的各记账明细,通常是按照业务各步骤执行产生的记账明细的时间先后顺序,确定各记账明细的先后记账顺序的。于是,在本申请实施例中,该核算模板对应的记账标识也可以是按照业务各步骤执行产生的记账明细的时间先后顺序确定的。
例如,继续沿用上例中用户A通过企业B向用户C借方100元,该业务的各步骤执行顺序应为:该用户A的账户借方,该企业B的账户贷方以及该用户C的账户贷方,所以在表2中记账标识为2的记账明细应为该企业B的账户贷方1元。
当然,具体的该核算模板中的记账标识如何确定,也可由工作人员根据实际应用的需要进行设定,例如,按照金额大小从大到小,记录各记账明细等等。本申请对此并不做限定,该记账标识主要用于后续在进行核算时,可根据该核算模板的设置,以及该记账标识,确定缺失的记账明细的内容。
S104:针对每个记账明细,将该记账明细、该记账明细对应的记账标识以及该记账明细对应的核算模板,登记在总账系统中。
在本申请实施例中,当该客户账务系统确定了该业务数据对应的各记账明细,该业务数据对应核算模板,以及每个记账明细对应的记账标识时,便可以将各记账明细分录登记在该总账系统中。
具体的,该客户账务系统可以将该核算模板以及该记账明细对应的该记账标识,写入该记账明细的内容中。之后再将携带有该核算模板以及该记账标识的记账明细存储在该总账系统中。其中,针对每个记账明细,该记账明细的内容示意可如表3所示。
表3
其中,该账务流水号为该记账明细的标识;该业务流水号为该业务数据对应的业务的标识;账号为该记账明细对应的借方或者贷方的账号标识;借方以及贷方发生额为该记账明细对应的具体金额。
继续沿用上例,继续沿用上例中用户A通过企业B向用户C借方100元,则可生成如表4至表6所示的3条记账明细。
字段名称 |
内容 |
账务流水号 |
6325989 |
业务流水号 |
20170413 |
账号 |
用户A的账户 |
借方发生额 |
100 |
贷方发生额 |
0 |
核算模板标识 |
转账1 |
记账标识 |
1 |
表4
表5
字段名称 |
内容 |
账务流水号 |
6325991 |
业务流水号 |
20170413 |
账号 |
用户C的账户 |
借方发生额 |
0 |
贷方发生额 |
99 |
核算模板标识 |
转账1 |
记账标识 |
3 |
表6
于是该客户账务系统可将上述3条记账明细分录登记在该总账系统中,完成该分录记账的过程。
在总账系统登记的各记账明细中,在正常情况下对应于同一个业务数据的记账明细,要么全部不登记,要么全部登记。而只有当一个业务数据对应的部分记账明细登记在该总账系统中时,才会出现异常记账明细的情况。所以通过本申请实施例提供的方法,在各分账明细中增加核算模板以及记账标识,可以快速的确定总账系统中借贷不平衡的核算模板以及异常的记账标识,从而快速定位异常记账明细。可见通过如图1所示的记账方法,无需依赖于系统日志对异常记账明细的记录,也无需依赖客户账务系统中未登记的记账明细,便可确定总账系统中异常记账明细。使得由于各种原因引起的异常记账明细,均可以通过本申请提供的方法快速的确定异常记账明细,并使得确定异常记账明细的效率提高。
需要说明的是,本申请实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤S101和步骤S102的执行主体可以为设备1,步骤S103的执行主体可以为设备2;又比如,步骤S101的执行主体可以为设备1,步骤S102和步骤S103的执行主体可以为设备2;等等。
基于图2所示的分录记账方法,本申请实施例还对应提供一种异常记账明细检测方法,如图3所示。
图3为本申请实施例提供的一种异常记账明细检测的过程,具体包括以下步骤:
S201:获取属于同一业务数据的各记账明细,并确定获取的任一所述记账明细对应的核算模板。
在本申请实施例中,由于通常在出现总账系统日切不通过时,才需要排查异常记账明细,所以本申请所述的异常记账明细检测过程,也可以是在总账系统日切不通过之后开始的检测过程。当然,本申请并不限定该异常记账明细检测的开始时机,可以是由工作人员根据实际应用的需要随时发起的。当然,为了方便后续说明本申请以总账系统日切不通过之后开始的检测过程为例继续后续说明。于是,首先需要确定参与日切核算过程的各记账明细,以及各记账明细对应的核算模板。
具体的,正如图1所示的分录记账过程步骤S101中所述的,该分录记账过程并不限定有某一具体系统执行。同理,本申请所示的该日切异常检测也有该客户账务系统或者该总账系统或者第三方执行。由于日切核算主要有总账系统执行,所以为方便实施该日切异常检测过程,可由该总账系统确定在当前结算日内该总账系统登记的各记账明细。同时为了方便后续说明,在本申请实施例中,若不做特别说明,该日切异常检测过程可视为由该总账系统执行。
另外,由于本申请实施例提供的日切异常检测过程基于图1所示的分录记账过程,所以该总账系统中登记的各记账明细中可包含对应的核算模板以及记账标识。所以该总账系统在确定各记账明细时,可同时确定各记账明细分别对应的核算模板。
进一步地,由于对于一个业务数据来说,该业务数据对应的各记账明细的发生额是平衡的,所以可以通过累计计算每个业务数据对应的各记账明细的发生额,确定异常记账明细。
具体的,该总账系统可获取属于同一业务数据的各记账明细。并且,基于图2所示的记账过程,可见对于属于同一业务数据的各记账明细,各记账明细包含的核算模板是相同的,所以该总账系统还可确定获取的任一记账明细对应的核算模板。以便后续进一步操作。
例如,以表4至表6所示的记账明细为例,该3条记账明细均对应于同一个业务流水号。也就是说,该3条记账明细是属于同一业务数据的各记账明细。并且可进一步确定任一记账明细对应的核算模板为:转账1。
S202:根据所述核算模板,确定应有的记账标识。
在本申请实施例中,当确定了该核算模板之后,便可确定该核算模板对应的应有记账标识。
具体的,基于图2所述的记账过程中步骤S102所述的,该核算模板可以是由工作人员根据业务执行时,需要登记在该总账系统中的记账明细的借贷情况确定的。所以根据在步骤S201中确定的该核算模板,该总账系统可以确定该核算模板对应的应有记账标识。
继续沿用上例,由于该3条记账明细均对应于同一个核算模板(即,转账1),所以该总账系统可以确定该核算模板对应的记账标识应有1、2以及3。则当该总账系统在确定属于同一个业务数据(即,业务流水号为20170413的业务数据)的各记账明细时,可以确定各记账明细应有的记账标识应该包括1、2以及3。
S203:将所述应有的记账标识与所述获取的各记账明细中包含的记账标识进行对比。
在本申请实施例中,由于通过步骤S201该总账系统获取的各记账明细,由通过步骤S202确定了获取的各记账明细应有的记账标识,则该总账系统便可将该应有的记账标识与该获取的各记账明细中包含的记账标识进行对比,以便后续根据对比结果,检测获取的各记账明细是否出现异常。
具体的,由于在步骤S202中确定的获取的各记账明细应有的记账标识,是在各记账明细均正确的情况下的记账标识,所以可以以该应有的记账标识为标准,对比获取的各记账明细中包含的记账标识是否与该应有的记账标识一致。
其中,若一致,则可确定该对比结果为正常,若不一致,则可确定该对比结果为异常。
继续沿用上例,假设在步骤S201中,该总账系统仅获取了该表4以及表6所示的记账明细。则通过步骤S202,该总账系统确定各记账明细应有的记账标识应该包括1、2以及3。于是,通过对比表4以及表6中包含的记账标识(即,1以及3),可以确定对比不一致,进而确定该对比结果为异常。同理,若该总账系统在步骤S201中获取了表4至表6所示的各记账明细,则可确定对比一致,进而确定该对比结果为正常。
进一步假设,该总账系统中获取了2个表4、1个表5及1个表6所示的记账明细,则可确定获取的各记账明细包含的记账标识为:1、1、2、3。同样与应有的记账标识不一致,可确定对比结果为异常。
S204:根据对比结果,检测所述获取的各记账明细是否出现异常。
在本申请实施例中,当该总账系统通过步骤S203进行对比之后,便可根据对比结果,检测该总账系统在步骤S201中获取的各记账明细是否出现异常。
具体的,正如在步骤S203中所述的,若对比结果存在正常以及异常,若正常,则说明该总账系统在步骤S201中获取的各记账明细未出现异常。但是若对比结果为异常,则说明该总账系统在步骤S201中获取的各记账明细中,存在至少一个记账明细的异常情况。其中,记账明细的异常情况包括:记账明细缺失、记账明细重复登记、以及记账明细错误登记等等情况。
其中,记账明细缺失,即,在步骤S202中确定的该应有记账标识的数量,大于在步骤S201中确定的各记账明细包含的记账标识的数量。则通过该应用的记账标识可以确定在该总账系统中,缺失的记账明细。
例如,以表4至表6所示的记账明细为例,假设该总账系统获取了表4和表6所示的记账明细,则通过该对比结果,可以确定缺少记账标识为2的记账明细,且可以确定该记账明细对应的业务流水号为20170413,该记账明细的贷方发生额为1,等等。则该总账系统可以根据该业务流水号,以及该贷方发生额,确定该记账明细中其他对应的内容。
另外,记账明细重复登记,即,在步骤S201中确定的各记账明细包含的记账标识存在重复记录的情况。记账明细错误登记,可以是步骤S202中确定的该应有记账标识,无法包含步骤S201中确定的各记账明细包含的记账标识。例如,步骤S201确定的记账标识为1、2、3、4,而步骤S202确定的记账标识为1、2、3。则,该总账系统需要根据该业务流水号,重新确定同一个业务数据对应的各记账明细,并重新登记。
当然,由于记账明细的异常情况还可以包含其他形式,而本申请仅列举了几种异常情况下,通过记账标识以及业务流水号进行检测异常的方式,所以本申请并不限定采用其他方式进行异常检测,具体检测方式也可由工作人员根基实际应用的需要自行设置,本申请对此不再一一赘述。可以明确的一点是,只要在步骤S201中确定的各记账明细包含的记账标识与步骤S202中确定的各应有的记账标识不一致,则可确定获取的各记账明细存在出现异常的情况。
进一步地,通过重复执行步骤S201~步骤S204的异常记账明细检测过程,当对该总账系统中登记的各记账明细均进行检测之后,便可确定导致日切不通过的异常记账明细,则通过修正异常记账明细,可使总账系统的日切通过。
基于图3所示的异常记账明细检测方法,由于在总账系统中登记的各记账明细均包含核算模板以及记账标识,所以总账系统可以通过获取属于同一业务数据的各记账明细,确定获取的各记账明细对应的核算模板,同时通过该核算模板,确定应有的记账标识,从而通过将应有的记账标识与获取的记账明细包含的记账标识进行对比,检测所述获取的各记账明细是否出现异常。可见,由于通过图2所示的记账方法,使得记账明细中包含了核算模板以及记账标识,使得再进行异常记账明细的检测时,可以无需依赖系统日志,或者客户账务系统中的记账明细,仅通过总账系统中登记的记账明细即可进行异常检测。在提高了异常检测的范围的同时,提高了异常检测的效率。
另外,在本申请实施例步骤S201中,该总账系统在获取属于同一业务数据的各记账明细时,可先确定出现异常的核算模板,再从包含该异常的核算模板的各记账明细中,获取属于同一业务数据的各记账明细。
具体的,该总账系统可以首先,针对预先设置的每个核算模板,获取包含该核算模板的各记账明细。之后再统计包含该核算模板的各记账明细的借方发生总额以及贷方发生总额。然后在对比该借方发生总额与该贷方发生总额是否一致,若一致,则确定该核算模板正常,若不一致,则确定该核算模板出现异常。最后,根据该出现异常的核算模板,从包含该异常的核算模板的各记账明细中,获取属于同一业务数据的各记账明细。
进一步地,当该总账系统出现日切不通过时,除了依上述步骤S201至步骤S204的过程,基于属于同一业务数据的各记账明细进行异常记账明细检测以外。在本申请实施例中,该总账系统还可以从一开始便遍历各记账明细,并逐步缩小对异常记账明细的检测范围,直到确定异常记账明细。
具体的,在本申请实施例中,该总账系统可先确定登记的各记账明细。在确定了各记账明细以及各记账明细对应的核算模板后,便可针对每个预设的核算模板,根据该核算模板对应的各记账明细,累计计算该核算模板的发生额。由于对于一个业务数据来说,该业务数据对应于一个核算模板,若该业务数据对应的所有记账明细均登记在该总账系统中,则对于该业务数据来说,该核算模板累计计算的借贷发送额是平衡的。所以通过对每个核算模板的发生额进行累计计算,可以确定发生额不平衡的核算模板为出现异常的核算模板。
具体的,该总账系统在确定每个记账明细的同时,可以确定该记账明细的具体内容,并且根据该记账明细对应的核算模板,将该记账明细的借方发生额以及贷方发生额累计计算在该核算模板下。也就是说,该总账系统可遍历确定的各记账明细,并针对每个记账明细,根据该记账明细对应的核算模板,将该记账明细的发生额,按照该对应的核算模板累计计算,作为该对应的核算模板的发生总额。
于是在本申请实施例中,该总账系统可以以核算模板为累计计算的标准,计算属于该核算模板的各记账明细的累计发生总额。由于对于正常分录登记在该总账系统中的业务数据对应的各记账明细来说,一个业务数据对应的各记账明细在该核算模板中的累计发生总额是平衡的,即,借方发生总额等于贷方发生总额。于是,对于每个核算模板来说,若该核算模板对应的各业务数据的记账明细均正常分录登记在该总账系统中,则该核算模板的累计发生总额是平衡的。
例如,以表4至表6所示的3条记账明细为例,若,表5所示的记账明细未登记在该总账系统中,或者表5所示的记账明细在该总账系统中登记的贷方发生额是错误的,则对于核算模板:转账1来说,该标识为转账1的核算模板的累计发生额为借方发生额100,贷方发生额99。借方发生额不等于贷方发生额,该核算模板的发生额不平衡。
进一步地,由于产生借贷不平衡是该总账系统日切无法通过的原因,所以在本申请实施例中,可以在遍历各记账明细后,确定每个核算模板的发生额。并且,可以确定发生额不平衡的核算模板,则异常记账明细对应的核算模板就是该发生额不平衡的核算模板。将该发生额不平衡的核算模板的核算模板作为异常核算模板,在后续步骤中则可采用步骤S201至步骤S204的方法,进一步排查包含异常核算模板的各记账明细中的异常记账明细。
另外,在本申请实施例步骤S201中,在获取属于同一业务数据的各记账明细时,可以确定各记账明细对应的核算模板是一致的,再继续执行后续步骤。若确定各记账明细对应的核算模板不一致,则可确定获取各记账明细中存在异常记账明细。
具体的,由于属于同一业务数据的各记账明细,应该对应相同的核算模板,则在出现核算模板不同的情况下,可以直接确定各记账明细中,至少有一个记账明细存在异常。则该总账系统可以通过调用该业务数据,确定该业务数据对应的各记账明细,应该对应的核算模板修复获取的各记账明细中的异常记账明细。
需要说明的是,本申请实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤S201和步骤S202的执行主体可以为设备1,步骤S203的执行主体可以为设备2;又比如,步骤S201的执行主体可以为设备1,步骤S202和步骤S203的执行主体可以为设备2;等等。
基于图2所示记账方法,本申请实施例还对应提供一种记账装置的结构示意图,如图4所示。
图4为本申请实施例提供的一种记账装置的结构示意图,所述装置包括:
获取模块301,获取业务数据,并确定所述业务数据对应的各记账明细;
核算确定模块302,根据所述业务数据,确定所述各记账明细对应的核算模板;
标识确定模块303,根据所述核算模板,确定所述各记账明细分别对应的记账标识;
登记模块304,针对每个记账明细,将该记账明细、该记账明细对应的记账标识以及该记账明细对应的核算模板,登记在总账系统中,以使得在检测异常记账明细时,通过各记账明细对应的核算模板以及记账标识,确定异常记账明细。
所述登记模块304,将所述核算模板以及该记账明细对应的所述记账标识,写入该记账明细的内容中,并登记在总账系统中。
具体的,该记账装置,可以位于客户账务系统中。该客户账务系统可以是一台服务器,或者由多台服务器组成的系统。
基于图3所示异常记账明细检测方法,本申请实施例还对应提供一种异常记账明细检测装置的结构示意图,如图5所示。
图5为本申请实施例提供的一种异常记账明细检测装置的结构示意图,所述装置包括:
核算确定模块401,获取属于同一业务数据的各记账明细,并确定获取的任一所述记账明细对应的核算模板;
标识确定模块402,根据所述核算模板,确定应有的记账标识;
对比模块403,将所述应有的记账标识与所述获取的各记账明细中包含的记账标识进行对比;
检测模块404,根据对比结果,检测所述获取的各记账明细是否出现异常。
所述核算确定模块401,确定出现异常的核算模板,从包含所述异常的核算模板的各记账明细中,获取属于同一业务数据的各记账明细。
所述核算确定模块401,针对预先设置的每个核算模板,获取包含该核算模板的各记账明细,统计包含该核算模板的各记账明细的借方发生总额以及贷方发生总额,对比所述借方发生总额与所述贷方发生总额是否一致,若一致,则确定该核算模板正常,若不一致,则确定该核算模板出现异常。
具体的,该异常记账明细检测装置,可以位于总账系统中。该总账系统可以是一台服务器,或者由多台服务器组成的系统。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。