信号计数方法、装置和数字电路与流程

文档序号:19663799发布日期:2020-01-10 21:20阅读:364来源:国知局
信号计数方法、装置和数字电路与流程

本发明涉及数字电路技术领域,尤其涉及一种信号计数方法、装置和数字电路。



背景技术:

在数字电路系统中,时常会出现系统待机,程序卡死特殊事件,为了了解数字电路系统中发生某个事件的时间,保证数字电路系统的可靠性以及了解数字系统的运行状态,通常需要提供一些计数装置来对某个事件对应的信号进行统计,通过统计数据计算出事件持续的时间,以查看数字电路系统的工作状态。要记录某个事件持续的时间可通过统计该事件对应的信号出现的次数,将信号出现的次数乘上时钟周期即可得出该事件持续的时间,即事件持续的时间=出现次数*时钟周期。在数字电路系统中,常见的信号计数装置多采用计数器来对某个事件对应的信号出现的次数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能。最常用、最基本的计数器是由触发器构成的二进制计数器,它的计数方式是从0开始每个脉冲进行+1操作,直到最大值。计数器能表达的最大值,也称为计数器的最大模,最大模依赖于计数器内的触发器的数量,计数器的最大模越大,需要的触发器的数量越多。在数字电路系统中,当某个事件持续的时间很长时,若通过计数器对该事件对应的信号出现的次数进行统计,则需要计数器的最大计数值足够大,因此需要提高计数器的最大计数值,也就是提高计数器的最大模,然而提高计数器的最大模就意味着需要更多的触发器,从而引发了硬件成本过高,硬件面积占用过大,以及硬件功耗过高等问题。



技术实现要素:

有鉴于此,本发明提供了一种信号计数方法、装置和数字电路,以解决数字电路系统中用于计数的计数器硬件成本高,硬件面积占用过大,以及硬件功耗过高等问题。

第一方面,本发明实施例提供了一种信号计数方法。提供信号计数模块、数值存储模块、一个加法器地址计数模块,在信号计数模块中包括信号计数器,在数值存储模块中包括数值存储单元,地址计数模块提供地址值,地址值中包括第一地址值和第二地址值,该方法包括以下步骤:

步骤101:获取第一地址值,该第一地址值对应一个信号计数器和一个数值存储单元;

步骤102:加法器获取存储值,该存储值为与第一地址值对应的数值存储单元中的值;获取存储值需要花费p个时钟周期;加法器获取信号计数值,信号计数值为与第一地址值对应的信号计数器中的值,信号计数值等于输入电平处于高电平状态的时钟周期数值;

步骤103:加法器获取加法控制信号,并将此时获取到的信号计数值作为计数值;加法器根据加法控制信号将存储值和计数值执行相加操作,得到相加结果;执行相加操作需要花费q个时钟周期;在相加操作开始时,将与第一地址值对应的信号计数器置零;

步骤104:将所述相加结果写回与第一地址值对应的数值存储单元,替换存储值;

步骤105:将第一地址值更新,得到第二地址值;

步骤106:将第二地址值作为新的第一地址值从头开始执行步骤101-106;

其中,信号计数模块中的信号计数器的数量为m,且m不小于2,每个信号计数器的最大模不小于(p+q)*m。

优选地,地址值中包括首地址值和尾地址值;当以尾地址值作为第一地址值时,在步骤105中,第一地址值为尾地址值,第二地址值为首地址值。通过在将与尾地址值对应的信号计数器中的计数值和与尾地址对应的数值存储模块中的存储值完成相加操作后,从尾地址值跳回首地址值,以首地址值开始对每一个信号计数器进行新一轮的相加操作,将信号计数器中的计数值加到与信号计数器对应数值存储单元中,实现了对信号计数模块中每个信号计数器周期性循环累加操作。

更为优选地,地址计数模块中包括第一计数器,第一计数器用于记录地址值,且第一计数器从首地址值开始计数,按递增或递减的方式到达尾地址值;第一计数器的最大模为m。

更为优选地,地址计数模块还包括第二计数器,第二计数器用于记录获取存储值所需的时钟周期数和执行相加操作所需的时钟周期数;第二计数器的计数值包括初值和末值;第二计数器从初值开始计数,按递增或递减的方式到达末值,达到末值后跳回初值;第二计数器的最大模为前述p和q的总和。通过第二计数器记录获取存储值和执行相加操作所需要的时钟周期数,以保证在操作完成后及时进行下一个信号计数器的计数值的相加操作。

更为优选地,第二计数器在从初值开始计数计数的第p个时钟周期,发出加法控制信号,在第p+1个时钟周期发出置零信号,置零信号用于将信号计数器置零。通过在特定时间点发出置零信号,从而将信号计数器置零,可以及时使信号计数器重新开始计数,避免了数值溢出的情况。

特别地,前述信号计数方法还包括初始化步骤,初始化步骤包括将信号计数模块和数值存储模块中的信号计数器和数值存储器置零,将地址计数模块设置为初始状态。通过初始化步骤可以保证方法以正确的初始值有序运行,同时也保证了执行结果的正确性。

第二方面,本发明实施例提供了一种信号计数装置,包括信号计数模块和数值存储模块,还包括地址计数模块和一个加法器,信号计数模块、数值存储模块以及地址计数模块均连接加法器,地址计数模块还连接信号计数模块和数值存储模块;

数值存储模块包括m个数值存储单元,数值存储单元用于保存存储值;信号计数模块包括m个信号计数器,信号计数器由触发器构成,信号计数器用于产生计数值;

地址计数模块用于提供地址值;地址值用于将数值存储单元和信号计数器一一对应;地址值包括首地址值和尾地址值,地址计数模块还用于从首地址值开始,向尾地址值更新地址值;地址计数模块还用于将尾地址值更新为首地址值,即当地址值更新至尾地址值时,地址计数模块还用于将尾地址值跳变至首地址值。

加法器每次接收一组与地址值对应的存储值和计数值,并将存储值和计数值进行相加操作,得到相加结果;

数值存储单元还用于接收和存储相加结果,并用相加结果替代存储值;信号计数器还用于接收置零信号,置零信号还用于将信号计数器置零;每个信号计数器的最大模不小于(p+q)*m,其中,p为加法器从数值存储单元获取存储值需要花费的时钟周期数,q为执行相加操作需要花费的时钟周期数,m为信号计数模块中信号计数器的数量,且m不小于2。

本申请通过多个信号计数器对不同事件对应的信号出现的次数进行计数,并产生计数值;通过多个数值存储单元提供各自对应的信号计数器的存储值;通过一个加法器将有对应关系的存储值和计数值相加,得到相加结果,并将相加结果写回数值存储单元;通过地址计数模块提供地址值,使用地址值将信号计数器和数值存储单元一一对应;在加法器将一个信号计数器中的计数值加到对应的数值存储单元中后,地址计数模块更新地址值,地址值变化后,加法器将与新地址值对应的信号计数器中的计数值加到与该信号计数器对应的数值存储单元中,之后地址计数模块继续更新地址值。随着地址值持续更新,则加法器持续地将每一个与地址值对应的信号计数器中的计数值加到与该信号计数器对应的数值存储单元中,以实现通过一个加法器将不同信号计数器的计数值加到数值存储单元中的目的。本申请通过一个加法器和地址计数模块的配合使用,完成了多个信号计数器的计数值的循环累加,避免为每一个计数器都提供一个对应的运算单元,从而减少硬件成本,释放硬件占用面积以及降低硬件功耗。同时,本申请根据加法器取值和加法器执行相加操作所需的时钟周期数以及信号计数模块中的信号计数器的数量来确定每个信号计数器的最大模。不仅避免了信号计数器的计数值溢出,而且使得硬件开销最小化。

优选地,地址计数模块包括第一计数器和第二计数器;第一计数器连接信号计数模块、数值存储模块以及第二计数器;第二计数器连接信号计数模块、数值存储模块以及加法器;

第一计数器用于产生地址值,第一计数器的最大模不小于m,第二计数器用于发出加法控制信号和置零信号,加法控制信号用于控制加法器执行相加操作,置零信号用于将信号计数器置零;第二计数器的最大模不小于p和q的和。通过第一计数器中的值,即地址值来实现信号计数器和数值存储单元的对应。使得同一信号的数据信息能正确存储至对应的数值存储单元中,保证了计数数据的正确性。通过第二计数器记录加法器取值和执行相加操作所需的时钟周期数。

本申请提供的方法和装置通过地址计数模块中的第一计数器提供地址值,通过地址值定位信号计数器和数值存储单元,并将与地址值对应的信号计数器中的值累加到数值存储单元中;通过第二计数器记录加法器取值和执行相加操作所需要花费的时钟周期数,并在完成相加操作后更新第一计数器中的地址值,以新的地址值定位新的信号计数器和新的数值存储单元,通过加法器执行新的相加操作,每次执行相加操作均通过同一个加法器完成,实现了加法器的复用,即通过一个加法器结合地址计数模块中第一计数器提供的地址值将至少两个信号计数器中的计数值依次加到与之各自对应的数值存储单元中,不再需要为每个信号计数器设置单独对应的运算单元。相对于现有技术为每一个计数器都配置一个运算单元的计数方法,本申请不仅简化了硬件构成,而且节约了硬件成本,还释放了硬件占用面积,实现了硬件开销最小化。

通过设置记录地址值的第一计数器的最大模为m,第二计数器的最大模为p+q,每个信号计数器的最大模为(p+q)*m,以(p+q)*m为一个循环周期,保证了能在信号计数器计数溢出前将其中的信号计数值累加到对应的数值存储单元中。通过第二计数器记录加法器执行相加操作的周期值(p+q),第二计数器每完成一次从初值到末值的计数,则加法器完成一次相加操作,以此实现相加操作的循环;通过将第一计数器的最大模(m)和第二计数器的最大模(p+q)的乘积(p+q)*m作为单个信号计数器执行相加操作的周期值,即同一个信号计数器每隔(p+q)*m个时钟周期将其中的计数值加到对应的数值存储单元中,以此实现对某个事件对应的信号出现次数的的循环累加,保证了在使用单个加法器的时候,每个信号计数器中的信号计数值不会溢出。

本申请提供的方法和装置中提及的信号计数器、第一计数器以及第二计数器均由触发器构成。假设现需要对16种事件对应的信号进行统计,每种信号可能出现的最大次数n为,本申请中的加法器取存储值需要2个时钟周期,执行相加操作需要2个时钟周期,在以上条件下,对于传统的计数方法则需要m*个触发器,代入以上数值即需要16*32=512个触发器,而本申请则的信号计数模块需要由(m+1)*个触发器构成,代入以上数值即约为17*4=68个触发器;第一计数器和第二计数器分别需要个触发器,共计74个触发器,以及一个32位的数值存储模块即可完成对n*m个信号的计数。对比可知,在以上条件下,现有计数方法需要的触发器的数量约为本申请的7倍,本申请还需要一个32位的数值存储模块,而32位存储模块的的成本远小于触发器的成本,因此,本申请提供的计数方法所需要的触发器数量远小于传统的计数方法,极大地节省了硬件成本,释放了大量的硬件占用面积,降低了硬件功耗。并且当每次信号可能出现的最大次数n为时,现有计数方法需要的触发器的数量约为本申请的14倍,由此可见,在信号的种类和数量越多的情况下,本申请的优势越明显。且在海量数据并行处理的大趋势下,各种信号的种类和数量必然会急剧增长,这将进一步凸显本申请的优势。

此外,当需要处理的事件数量庞大时,可通过将其进行分组,每个分组使用各自的信号计数装置进行信号计数,以此来实现缩短数值存储模块的存储值的更新间隔时间。例如,现需要对100种事件的信号进行计数,加法器完成一次取值和相加操作的总时间为4个时钟周期,如果不进行分组,则使用一个信号计数装置进行计数,那么信号计数装置中的每一个信号计数器的最大模需设置为100*4=400。也就是说,一个信号计数器每间隔400个时钟周期进行一次计数值的累加,即一个数值存储单元中的存储值每隔400个时钟周期更新一次。如果将事件进行分组,每25种事件为一组,共计四组,则每一组中的每个信号计数器的最大模需设置为25*4=100。也就是说,每一组中的每个数值存储单元中的存储值每隔100个时钟周期更新一次。相对于不进行分组的情况,进行分组之后可减小信号计数装置中的数值存储单元中的存储值的更新间隔时间。因此,在面对需要处理的事件数量庞大的情况下,可将事件分为多个分组,通过多个相应的信号计数装置对每组事件对应的信号进行计数,以此来实现缩短数值存储模块中的存储值的更新间隔时间的目的。同时,事件分组的数量可以灵活处理,在对数值存储单元中的存储值的更新间隔时间要求较高时,可根据实际情况多设置几个分组,以此来缩短存储值的更新间隔时间;当对数值存储单元中的存储值的更新间隔时间要求不高时,可根据实际情况少设置分组或者不设置分组,以此来节省硬件开销。因此,本申请提供了可供选择的灵活性。

第三方面,本发明实施例提供了一种数字电路。该电路包括计算机可读存储介质,计算机可读存储介质用于存储计算机程序;该电路还包括处理器,该处理器包括前述揭示的信号计数装置;该处理器用于执行可读存储介质中存储的计算机程序时,实现前述提及的信号计数方法的步骤。

本发明在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。

附图说明

为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图:

图1是本发明实施例提供的一种信号计数方法的流程示意图;

图2是本发明实施例提供的一种信号计数装置200的结构示意图;

图3是本发明实施例提供的另一种信号计数装置300的结构示意图;

图4是本发明实施例提供的信号计数装置300运行的时序图;

图5是本发明实施例提供的一种数字电路500的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,当一个元件被称为是“连接于”另一个元件,或称一个元件与另一个或多个元件“连接”、“相连”时,它可以是直接连接到另一个元件或间接连接至该另一个元件上。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

下面对本发明实施例进行具体说明。本发明实施例提及的某个事件对应的信号可以是脉冲信号或触发电平,以及与脉冲信号或者触发电平具有相同或相似特性的其他信号。

本发明实施例提供了一种信号计数方法,请参见图1,是本发明实施例提供的一种信号计数方法的流程示意图。该方法提供信号计数模块、数值存储模块、一个加法器以及地址计数模块,其中,信号计数模块中包括至少两个信号计数器,信号计数器由触发器构成,信号计数器在接收到的输入电平为高电平时,其中的信号计数值+1。数值存储模块中包括至少两个数值存储单元。地址计数模块中包括一个第一计数器和一个第二计数器,该方法包括以下步骤:

步骤101:获取地址值。地址值为地址计数模块中的第一计数器产生的值,该地址值对应数值存储模块中的其中一个数值存储单元的编号,还对应信号计数模块中的其中一个信号计数器的编号。第一计数器的最大模为信号计数模块中的信号计数器的数量m。数值存储单元的数量等于信号计数器的数量。第一计数器从首地址值开始计数,更新方式为达到更新条件后当前值递增或递减,直至达到尾地址值。当第一计数器达到尾地址值时,将第一计数器的值更新为首地址值。

步骤102:获取与地址值对应的存储值和计数值。地址计数模块中的第一计数器将地址值发送到信号计数模块以及数值存储模块,编号与该地址值对应的数值存储单元则发送其当前值至加法器,该值即为存储值。

编号与该地址值对应的信号计数器则发出其当前信号计数值至加法器,当前信号计数值中包括计数值。第二计数器从初值开始计数,每个时钟周期其当前值+1或-1。信号计数器每个时钟周期都会发送其当前信号计数值至加法器,并且是实时到达。从数值存储单元中发送存储值至加法器需要花费p个时钟周期。第二计数器会在从初值开始计算的第p个时周期发出加法控制信号,加法器控制信号实时到达加法器。由于信号计数器每个时钟周期都会发送当前信号计数值至加法器,但并不是每次发送的信号计数值都被加法器使用,仅在第二计数器从初值开始计算的第p个时周期发送的信号计数值才会被加法器用于相加操作,该值即为计数值,也可以说加法器将与加法控制信号同时收到的信号计数值视为计数值。此外,第二计数器在达到末值后跳回初值重新开始计数。

步骤103:加法器根据加法控制信号将存储值和计数值执行相加操作,相加完成后得到相加结果。加法器从数值存储单元和信号计数器获取存储值和计数值以及获取加法控制信号的下一个时钟周期开始执行相加操作,将存储值和计数值相加,得到相加结果。从执行加法操作开始到得到相加结果需要q个时钟周期。在开始进行加法操作的同时,也即是第二计数器的值为p时,第二计数器向编号与当前地址值对应的信号计数器发出置零信号,该信号计数器实时响应并置零。

在其中一个优选的实施例中,p与q的和为第二计数器的最大模。第二计数器的初值为零,末值为最大模,第二计数器每个时钟周期+1,达到最大模后的下一个周期被置零,即达到末值后跳回初值。第二计数器完成一次末值向初值的跳变,则第一计数器的值更新一次,即第一计数器的其中一个更新条件是第二计数器完成一次末值向初值的跳变。在另一个优选的实施例中,第二计数器的最大模还可以大于p与q的和,具体值可根据实际情况确定。

步骤104:将第相加结果写回数值存储单元。其中,第二计数器在值为末值时发出写回信号,将相加结果写回编号与地址值对应的数值存储单元,并替换使用相加结果替换其中的存储值。

步骤105:更新地址值。在加法器完成相加操作的同时,地址计数模块中的第二计数器达到末值,并在下一个时钟周期跳变至初值,此时第一计数器中的地址值更新为新的地址值。第一计数器的地址值可以按递增或递减的方式更新。

步骤106:根据新的地址值执行步骤101-106。地址值更新为新地址值后,加法器将与新地址值对应的信号计数器中的计数值加到与该信号计数器对应的数值存储单元中,完成之后地址值继续更新。随着地址值持续更新,则加法器持续地将每一个与地址值对应的信号计数器中的计数值加到与该信号计数器对应的数值存储单元中,以实现通过一个加法器将不同信号计数器的计数值加到数值存储单元中的目的。

在前述方法中,信号计数器的数量m不小于2,其中每个信号计数器的最大模可以等于(p+q)*m,也可以大于(p+q)*m,具体值可根据实际情况确定。

本发明实施例提供了一种信号计数装置,请参见图2,是本发明实施例提供的一种信号计数装置200的结构示意图。如图2所示,信号计数装置200包括地址计数模块201,信号计数模块202,数值存储模块203,加法器204。信号计数模块202中包括信号计数器2021,信号计数器2021由触发器构成,信号计数器2021在接收到的输入电平为高电平时,其中的信号计数值+1。数值存储模块203中包括数值存储单元2031。地址计数模块201中包括第一计数器2011,第二计数器2012,第一计数器2011的值为地址值,其中,地址值与信号计数器2021以及数值存储单元2031的编号对应。

地址计数模块201与信号计数模块202、数值存储模块203、加法器204连接。加法器204还与信号计数模块202以及数值存储模块203连接。地址计数模块201用于在每个时钟周期向信号计数模块202、数值存储模块203发送地址值;还用于向加法器204发送加法控制信号;还用于向信号计数模块202发送置零信号;还用于向数值存储模块203发送写回信号。其中,地址值由第一计数器2011发出,加法控制信号、置零信号、写回信号由第二计数器2012发出。

数值存储模块203用于在接收到地址值后,将编号与地址值对应的数值存储单元2031中的值发送至加法器204,该值即为存储值。信号计数模块202用于在接收到地址值后将编号与地址值对应的信号计数器2021中的值发送至加法器204。信号计数模块202用于记录接收到的信号的次数,并生成信号计数值,还用于将信号计数值发送至加法器204,在前述信号计数值中包括计数值。

加法器204用于接收存储值和计数值,以及加法控制信号,并根据加法控制信号将存储值和计数值相加,得到相加结果。得到相加结果后将其发送至数值存储模块203。前述计数值加法器204在接收到加法控制信号时接收到的来自信号计数模块202的信号计数值。

信号计数模块202还用于接收置零信号,并根据置零信号将编号与地址值对应信号计数器2021置零。数值存储模块203还用于接收写回信号和相加结果,并根据写回信号将相加结果写入编号与地址值对应的数值存储单元2031。

为更好的理解本发明,现给出使用前述信号计数方法的信号计数装置的工作过程的简单示例。请参见图3,是本发明实施例提供的另一种信号计数装置300的结构示意图。如图3所示,信号计数装置300包括地址计数模块301,信号计数模块302,数值存储模块303,加法器304。其中,地址计数模块301中包括第一计数器3011,第二计数器3012;信号计数模块302包括2个信号计数器,信号计数器由触发器构成,信号计数器在接收到的输入电平为高电平时,其中的信号计数值+1。数值存储模块303包括2个数值存储单元。第一计数器3011与第二计数器3012以及数值存储模块303连接,第一计数器3011还与信号计数模块302中的每一个信号计数器连接。为了便于理解,本实施例中信号计数器和数值存储单元的数量取2,但在实际应用中,并不限制,仅要求两者数量相等即可。

第二计数器3012与数值存储模块303以及加法器304连接,第二计数器3012还与信号计数模块302中的所有信号计数器一一连接。加法器304与数值存储模块303连接,加法器304还与信号计数模块302中的所有信号计数器一一连接。由于信号计数模块302中的信号计数器的数量为2,故设置第一计数器3011的最大模为2。现示例性地设定从第一计数器3011发送地址值到数值存储模块303,数值存储模块303向加法器304发送其当前值数据需要2个时钟周期,加法器304执行相加操作得出相加结果需要2个时钟周期,这两个时间段的总和4,则将第二计数器3012的最大模设置为4。将信号计数模块302中的每个信号计数器的最大模设置为(2+2)*2=8;信号计数模块302中的信号计数器,即信号计数器0和信号计数器1在接收到一个触发电平为高电平时其值+1。

本发明实施例提供的信号计数装置300时,还可进行初始化操作,即接收外部初始化信号,并根据初始化信号,将信号计数器0,信号计数器1,数值存储单元0以及数值存储单元1全部置零;将地址计数模块设置为初始状态,包括将第一计数器3011设置为首地址值0,第二计数器3012设置为初值0。

请参见图4,是本发明实施例提供的信号计数装置300运行的时序图。如图4所示,信号计数器0用于接收信号0,信号计数器1用于接收信号1。当接收到的触发电平有高电平时,信号计数器的值+1。其中,第一计数器中的首地址值为0,尾地址值为1,第一计数器更新地址值的方式为从首地址值开始,递增地向尾地址值更新,当达到尾地址值时,跳变回首地址值;第二计数器中的初值为0,末值为3,第二计数器更新其计数值的方式为从初值开始,递增地向末值更新,当达到末值时,跳变回初值。图4中共有三个阶段,每个阶段历时四个时钟周期。

在阶段一中,第一计数器3011的值为0,即地址值为0,第一计数器3011每个时钟周期都会将地址值0发送至信号计数器0和数值存储单元0。则信号计数器0在每个时钟周期都会向加法器304发送当前的信号计数值。该信号计数值实时到达加法器304。数值存储单元0在每个时钟周期都会向加法器304发送当前存储的数值0。该数值即为存储值,存储值0需要花费2个时钟周期才能到达加法器304。当第二计数器3012的值为1时,第二计数器3012向加法器304发送加法控制信号。加法器304在接收加法控制信号的同时,即第二计数器3012的值为1时,还接收到信号计数器0发送过来的值2,该值即为计数值。计数值一定是第二计数器3012发出加法控制信号时,信号计数器0发送过来的信号计数值。加法器304在接收到存储值0、计数值2以及加法控制信号时执行加法操作,即在第二计数器3012的值为2时开始执行加法操作。加法操作耗时2个时钟周期,结束后得出相加结果2。在第二计数器的值为3时,也即是第二计数器达到末值时,第二计数器3012发出写回信号,将相加结果2写回与地址值0对应数值存储单元0,并覆盖其中原有的存储值0。在第二计数器3012发出加法控制信号的下一个时钟周期,即第二计数器3012的值为2时,第二计数器3012向与当前地址值对应信号计数器,即信号计数器0发送置零信号。信号计数器0在接收到置零信号后,立即将计数器置零,后续如接收到高电平的话则重新从零开始计数。在第二计数器3012的值达到最大值3,也即是达到末值(此处为最大模)时,下一时钟周期第二计数器3012将跳变为初值0,同时第一计数器3011的值更新为1,即在原有值上加1。第二计数器3012跳变为初值0后重新从初值0开始计数。第一计数器3011的值变化后则进入阶段二。

在阶段二中,第一计数器3011的值为1,则地址值为1,第一计数器3011每个时钟周期都会将地址值1发送至信号计数器1和数值存储单元1。与地址值1对应的数值存储单元1向加法器304发送当前数值0,当前数值0即为存储值。与地址值1对应的信号计数器1在每个时钟周期都会向加法器304发送当前的信号计数值。当第二计数器3012的值为1时,第二计数器3012向加法器304发送加法控制信号。加法器304接收加法控制信号,并将同时接收到的信号计数器1发送的值4作为计数值。在接收到加法控制信号的下一时钟周期开始加法操作。加法操作持续两个时钟周期,结束后得到相加结果4。第二计数器3012在其计数值为3时,也即是达到末值时,向数值存储模块303发送写回信号,数值存储模块303将相加结果4写入与地址值1对应的数值存储单元1中,并替代数值存储单元1中的原有存储值0。第二计数器3012在其计数值为2时,向与地址值1对应的信号计数器1发送置零信号。信号计数器1接收到置零信号后置零。同样地,第二计数器3012在达到最大模后置零,也就是由末值向初值跳变,同时第一计数器3011的值更新。此时,由于第一计数器3011已达到最大值,即达到了尾地址值,故其更新方式不再是加1,而是由尾地址值向首地址值跳变,也即是由1跳变至0。第一计数器3011的值变化后则进入阶段三。

在阶段三中,第一计数器3011由尾地址值1跳变到了首地址值0,第一计数器3011每个时钟周期都会将地址值0发送至信号计数器0和数值存储单元0。与地址值0对应的数值存储单元0向加法器304发送当前存储的数值2,当前存储的数值2即为存储值。与地址值0对应的信号计数器0在每个时钟周期都会向加法器304发送当前的计数值。当第二计数器3012的值为1时,第二计数器3012向加法器304发送加法控制信号。加法器304接收加法控制信号,并将同时接收到的信号计数器0发送的信号计数值6作为计数值。在接收到加法控制信号的下一个时钟周期开始加法操作。加法操作持续两个时钟周期,结束后得到相加结果8。第二计数器3012在其值为3时,也即是达到末值时,向数值存储模块303发送写回信号,数值存储模块303将相加结果8写回与地址值0对应的数值存储单元0中,并替代数值存储单元0中的原有存储值。第二计数值3012在其计数值为2时,即在发出加法控制信号的下一个时钟周期,向与地址值0对应的信号计数器0发送置零信号。信号计数器0在接收到置零信号后置零。由于信号计数器0置零的同一时钟周期接收到触发高电平,图4中的信号计数器0在置零后的一个时钟周期的值为1。同样地,第一计数器3011和第二计数器3012的值变化后,继续进行新一轮的循环操作。为了便于理解,本发明实施例仅采用了信号计数器0和信号计数器1来说明本发明的实现方式和计数器间的相互配合,可理解地,本发明的使用,可以轻易从2个信号计数器的原理和情形推广到m个信号计数器。

在另一个优选的实施例中,信号计数装置包括地址计数模块,信号计数模块,数值存储模块以及加法器。其中,信号计数模块包括m个信号计数器,数值存储模块包括m个数值存储单元,地址计数模块包括第一计数器和第二计数器。第一计数器连接第二计数器和数值存储模块,还连接信号计数模块中的每一个信号计数器;第二计数器连接加法器和数值存储模块,还与信号计数模块中的每一个信号计数器连接;加法器连接数值存储模块以及信号计数模块中的每一个信号计数器。当第一计数器的值为k(即地址值k)时,第一计数器每个时钟周期都会将地址值k发送至信号计数器k和数值存储模块,则信号计数器k在每个时钟周期都会向加法器发送当前的信号计数值。数值存储模块在每个时钟周期都会向加法器发送数值存储单元k的当前存储的数值。该值即为存储值。存储值需要花费p个时钟周期到达加法器。第二计数器从初值0开始计数,每个时钟周期器当前值+1。当第二计数器的值为p-1时,第二计数器向加法器发送加法控制信号。加法器在接收到加法控制信号的同时,即第二计数器的值为p-1时,还接收到信号计数器k的发送过来的信号计数值,该值即为计数值。加法器根据加法控制信号将存储值和计数值执行相加操作,得到相加结果。相加操作持续q个时钟周期,当第二计数器的值为末值p+q-1时,第二计数器发送写回信号至数值存储模块,加法器将相加结果发送至数值存储模块,数值存储模块根据写回信号将相加结果写回数值存储单元k,并覆盖掉原有存储值。由于信号计数器的数量为k,第一计数器的最大模可设置为不小于k,本实施例优选第一计数器的最大模等于k。第二计数器的最大模可设置为不小于p与q的和,本实施例优选第二计数器的最大模等于p与q的和。第二计数器在达到最大模(p+q-1)的下一个时钟周期跳变至初值0。当第二计数器进行末值向初值的跳变时,第一计数器的值更新为k+1。若第一计数器的首地址值为0,第一计数器在达到尾地址值时,也即是达到最大模(m-1)时,下一个时钟周期跳变至首地址值0。第一计数器完成尾地址值向首地址值的跳变后,以首地址值为开端进行新一轮循环操作,周而复始地将信号计数器中的计数值加到对应的数值存储单元中。

本申请提供的方法和装置通过地址计数模块中的第一计数器提供地址值,通过地址值定位信号计数器和数值存储单元,并将与地址值对应的信号计数器中的值累加到数值存储单元中;通过第二计数器记录加法器取值和执行相加操作所需要花费的时钟周期数,并在完成相加操作后更新第一计数器中的地址值,以新的地址值定位新的信号计数器和新的数值存储单元,通过加法器执行新的相加操作,每次执行相加操作均通过同一个加法器完成,实现了加法器的复用,即通过一个加法器结合地址计数模块中的第一计数器提供的地址值将至少两个信号计数器中的计数值依次加到与之各自对应的数值存储单元中,不再需要为每个信号计数器设置单独对应的运算单元。相对于现有技术为每一个计数器都配置一个运算单元的计数方法,本申请不仅简化了硬件构成,而且节约了硬件成本,还释放了硬件占用面积,实现了硬件开销最小化。

通过设置记录地址值的第一计数器的最大模为m,第二计数器的最大模为p+q,每个信号计数器的最大模为(p+q)*m,以(p+q)*m为一个循环周期,保证了能在信号计数器计数溢出前将其中的信号计数值累加到对应的数值存储单元中。通过第二计数器记录加法器执行相加操作的周期值(p+q),第二计数器每完成一次从初值到末值的计数,则加法器完成一次相加操作,以此实现相加操作的循环;通过将第一计数器的最大模(m)和第二计数器的最大模(p+q)的乘积(p+q)*m作为单个信号计数器执行相加操作的周期值,即同一个信号计数器每隔(p+q)*m个时钟周期将其中的计数值加到对应的数值存储单元中,以此实现对某个事件对应的信号出现次数的的循环累加,保证了在使用单个加法器的时候,每个信号计数器中的信号计数值不会溢出。

本申请提供的方法和装置中提及的信号计数器、第一计数器以及第二计数器均由触发器构成。假设现需要对16种事件对应的信号进行统计,每种信号可能出现的最大次数n为,本申请中的加法器取存储值需要2个时钟周期,执行相加操作需要2个时钟周期,在以上条件下,对于传统的计数方法则需要m*个触发器,代入以上数值即需要16*32=512个触发器,而本申请则的信号计数模块需要由(m+1)*个触发器构成,代入以上数值即约为17*4=68个触发器;第一计数器和第二计数器分别需要个触发器,共计74个触发器,以及一个32位的数值存储模块即可完成对n*m个信号的计数。对比可知,在以上条件下,现有计数方法需要的触发器的数量约为本申请的7倍,本申请还需要一个32位的数值存储模块,而32位存储模块的的成本远小于触发器的成本,因此,本申请提供的计数方法所需要的触发器数量远小于传统的计数方法,极大地节省了硬件成本,释放了大量的硬件占用面积,降低了硬件功耗。并且当每次信号可能出现的最大次数n为时,现有计数方法需要的触发器的数量约为本申请的14倍,由此可见,在信号的种类和数量越多的情况下,本申请的优势越明显。且在海量数据并行处理的大趋势下,各种信号的种类和数量必然会急剧增长,这将进一步凸显本申请的优势。

此外,当需要处理的事件数量庞大时,可通过将其进行分组,每个分组使用各自的信号计数装置进行信号计数,以此来实现缩短数值存储模块的存储值的更新间隔时间。例如,现需要对100种事件的信号进行计数,加法器完成一次取值和相加操作的总时间为4个时钟周期,如果不进行分组,则使用一个信号计数装置进行计数,那么信号计数装置中的每一个信号计数器的最大模需设置为100*4=400。也就是说,一个信号计数器每间隔400个时钟周期进行一次计数值的累加,即一个数值存储单元中的存储值每隔400个时钟周期更新一次。如果将事件进行分组,每25种事件为一组,共计四组,则每一组中的每个信号计数器的最大模需设置为25*4=100。也就是说,每一组中的每个数值存储单元中的存储值每隔100个时钟周期更新一次。相对于不进行分组的情况,进行分组之后可减小信号计数装置中的数值存储单元中的存储值的更新间隔时间。因此,在面对需要处理的事件数量庞大的情况下,可通过对事件分为多个分组,通过多个相应的信号计数装置进行计数,以此来实现缩短数值存储模块中的存储值的更新间隔时间的目的。同时,事件分组的数量可以灵活处理,在对数值存储单元中的存储值的更新间隔时间要求较高时,可根据实际情况多设置几个分组,以此来缩短存储值的更新间隔时间;当对数值存储单元中的存储值的更新间隔时间要求不高时,可根据实际情况少设置分组或者不设置分组,以此来节省硬件开销。因此,本申请提供了可供选择的灵活性。

请参见图5,是本发明实施例提供的一种数字电路500的结构示意图。如图5所示的数字电路500包括一个或多个处理器501、通信接口502和计算机可读存储介质503,处理器501、通信接口502和计算机可读存储介质503可通过总线方式连接,也可通过无线传输等其他手段实现通信。本发明实施例以通过总线504连接为例。其中,该计算机可读存储介质503用于存储指令,该处理器501包括上述实施例中揭示的信号计数装置,用于执行该计算机可读存储介质503存储的指令。在另一个实施例中该计算机可读存储介质503用于存储程序代码,且处理器501可以调用计算机可读存储介质503中存储的程序代码实现前述信号计数设备的相关功能,具体可参见前述实施例中的相关阐述,这里不再赘述。

应当理解,在本发明实施例中,所称处理器501可以是中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

通信接口502可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他模块或装置设备进行通信。例如,本申请实施例中通信接口502具体可用于接收用户输入的输入数据;或者接收外部设备的数据等。

计算机可读存储介质503可以包括易失性存储器(volatilememory),例如随机存取存储器(randomaccessmemory,ram);存储器也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom)、快闪存储器(flashmemory)、硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);存储器还可以包括上述种类的存储器的组合。存储器可用于存储一组程序代码,以便于处理器调用计算机可读存储介质中存储的程序代码以实现前述信号计数方法或信号计数装置的相关功能。

需要说明的,图5仅仅是本发明实施例的一种可能的实现方式,实际应用中,数字电路500还可以包括更多或更少的部件,这里不作限制。关于本发明实施例中未示出或未描述的内容,可参见前述方法实施例中的相关阐述,这里不再赘述。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在处理器上运行时,前述信号计数方法流程得以实现。该存储介质包括rom/ram、磁碟、光盘等。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本发明实施例公开了一种信号计数方法、装置和数字电路,可用于估算数字电路发生某个事件(例如系统待机、程序卡死)持续的时间,通过本申请提供的信号计数方法或信号计数装置对某个事件对应的信号出现的次数进行计数,持续的时间=对应信号出现次数*时钟周期。

本发明提供信号计数模块、数值存储模块、地址值计数模块以及一个加法器,通过信号计数模块记录电路接收到的各种信号出现的次数,通过使用数值存储模块存储信号计数模块的计数值,周期性地将信号计数模块的计数值加到数值存储模块中的相应数值存储单元中。且仅用一个加法器即可将信号计数模块中的多个信号计数器的计数值的加到相应的数值存储单元中。根据加法器取值和加法器执行相加操作所需的时钟周期数以及信号计数模块中的信号计数器的数量来确定每个信号计数器的最大模,不仅减小了信号计数模块中的的触发器使用数量,节约了硬件成本,而且还优化硬件整体面积,同时还降低硬件的功耗。

以上所述,仅为本发明的部分较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本本技术领域的技术人员在本发明揭露的技术范围内,在不付出创造性劳动的前提下,轻易得到的各种的等效的修改或替换,这些修改或替换都应该涵盖在本发明的包括范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1