发明内容
本发明解决的技术问题在于提供一种计时方法及装置,用于减少计数单元的个数并且减少多路输出同时跳变的情况,从而减少硬件资源的浪费以及提高计时准确性。
为此,本发明解决技术问题的技术方案是:
本发明提供了一种计时方法,所述方法包括:
对基本时钟进行格雷码计数,得到格雷码计数输出;
分别对所述格雷码计数输出中的最低位输出进行移相,得到m路子时钟,其中,所述m路子时钟中各路子时钟与所述最低位输出的相位差满足:且180°能被α整除,n为满足0<n<(180°/α)的整数;若 90°能α被整除,m=180/α-2,若90°不能被α整除,m=180/α-1;
当预定事件发生时,根据所述格雷码计数输出的输出值、所述m路子时钟的输出、所述基本时钟的周期和所述α,获得对所述预定事件的计时结果。
可选的,所述计时结果为(B×90°/α+X)×Δt;
其中,B为所述格雷码计数输出的输出值,X为子时钟计数值,若B被4 除得到的余数为0,X为SP中高电平的个数,SP为所述m路子时钟的输出,若B被4除得到的余数为1,X为SP中高电平的个数与i的差值,若B被4 除得到的余数为2,X为2×i的积与SP中高电平的个数的差值,若B被4除得到的余数为3,X为i与SP中高电平的个数的差值,i为大于或等于90°/α-1 的最小整数,Δt=t0×α/90°,t0为所述基本时钟的周期。
可选的,所述获得对所述预定事件的计时结果,包括:
获得所述格雷码计数输出的输出值被4除的余数;
若所述余数为0,获得所述m路子时钟的输出中高电平的个数作为子时钟计数值;若所述余数为1,将所述m路子时钟的输出右移90°/α-1位后,获得高电平的个数作为子时钟计数值;若所述余数为2,将所述m路子时钟的输出取反后,获得高电平的个数作为子时钟计数值;若所述余数为3,将所述 m路子时钟的输出先取反再右移90°/α-1位后,获得高电平的个数作为子时钟计数值;
根据所述格雷码计数输出的输出值、所述子时钟计数值、所述基本时钟的周期和所述α,获得对所述预定事件的计时结果。
可选的,所述获得对所述预定事件的计时结果,包括:
通过查表方式获得对所述预定事件的计时结果。
可选的,所述对基本时钟进行格雷码计数得到格雷码计数输出,包括:
对所述基本时钟进行二进制计数,得到二进制计数输出;
将所述二进制计数输出转换为格雷码计数输出。
可选的,所述对基本时钟进行格雷码计数得到格雷码计数输出,包括:
对所述基本时钟进行分频和延时,得到所述格雷码计数输出。
本发明提供了一种计时装置,所述装置包括:
计数单元,用于对基本时钟进行格雷码计数,得到格雷码计数输出;
m个子时钟单元,用于分别对所述格雷码计数输出中的最低位输出进行移相,得到m路子时钟,其中,所述m路子时钟中各路子时钟与所述最低位输出的相位差满足:且180°能被α整除,n为满足 0<n<(180°/α)的整数;若90°能α被整除,m=180/α-2,若90°不能被α整除,m=180/α-1;
锁存单元,用于当预定事件发生时,锁存所述格雷码计数输出和所述m 路子时钟的输出;
计时单元,用于根据所述锁存单元锁存的格雷码计数输出的输出值、所述锁存单元锁存的所述m路子时钟的输出、以及所述基本时钟的周期和所述α,获得对所述预定事件的计时结果。
可选的,所述计时结果为(B×90°/α+X)×Δt;
其中,B为所述格雷码计数输出的输出值,X为子时钟计数值,若B被4 除得到的余数为0,X为SP中高电平的个数,SP为所述m路子时钟的输出,若B被4除得到的余数为1,X为SP中高电平的个数与i的差值,若B被4 除得到的余数为2,X为2×i的积与SP中高电平的个数的差值,若B被4除得到的余数为3,X为i与SP中高电平的个数的差值,i为大于或等于90°/α-1 的最小整数,Δt=t0×α/90°,t0为所述基本时钟的周期。
可选的,所述计时单元具体用于:
获得所述格雷码计数输出的输出值被4除的余数;
若所述余数为0,获得所述m路子时钟的输出中高电平的个数作为子时钟计数值;若所述余数为1,将所述m路子时钟的输出右移90°/α-1位后,获得高电平的个数作为子时钟计数值;若所述余数为2,将所述m路子时钟的输出取反后,获得高电平的个数作为子时钟计数值;若所述余数为3,将所述 m路子时钟的输出先取反再右移90°/α-1位后,获得高电平的个数作为子时钟计数值;
根据所述格雷码计数输出的输出值、所述子时钟计数值、所述基本时钟的周期和所述α,获得对所述预定事件的计时结果。
可选的,所述计时单元具体用于,通过查表方式获得对所述预定事件的计时结果。
可选的,所述计数单元包括:
计数子单元,用于对所述基本时钟进行二进制计数,得到二进制计数输出;
转换单元,用于将所述二进制计数输出转换为格雷码计数输出。
可选的,所述计数单元包括:分频延时单元,用于对所述基本时钟进行分频和延时,得到所述格雷码计数输出。
通过上述技术方案可知,本发明实施例对基本时钟进行格雷码计数,得到格雷码计数输出;之后对格雷码计数输出的最低位输出分别进行移相,得到m路子时钟,其中,m路子时钟中各路子时钟与所述最低位输出的相位差为且n为满足0<n<180°/α的整数。若90°能被α整除,m=180/α-2,若90°不能被α整除,m=180/α-1;当预定事件发生时,根据格雷码计数输出的输出值、m路子时钟的输出、基本时钟的周期和所述α,获得对预定事件的计时结果。可见,在本发明实施例中,由于只需对基本时钟进行计数,而无需再对多个子时钟进行计数,因此减少了计数单元的个数,从而减少了硬件资源。同时,本发明实施例中不再采用二进制计数,而是进行格雷码计数,因此格雷码计数输出的多路输出不会出现同时跳变的情况,而且m路子时钟与所述最低位输出的相位差也能够保证,m路子时钟的输出与格雷码计数输出不会出现同时跳变的情况,因此提高了计时准确性。
具体实施方式
对预定事件进行计时,指的是获得从起始时刻到预定事件的发生时刻的时间间隔,将该时间间隔作为计时结果。
请参阅图1,一种常用的计时过程包括:时钟输入单元输出基本时钟,由m个子时钟单元分别对基本时钟进行移相,得到m路子时钟,相邻子时钟的相位差相同,每个计数单元分别对应一个子时钟单元和一个锁存单元,每个计数单元分别对其对应的子时钟单元输出的子时钟进行计数。当计时开始时,可以通过触发清零单元将所有的计数单元和锁存单元清零,当预定事件发生时,每个锁存单元分别对其对应的计数单元的计数结果进行锁存,求和单元对所有锁存单元锁存的计数结果进行求和,根据求和结果以及相邻子时钟的相位差得到对预定事件的计时结果。其中,计时结果为 Z×t0×β/360°,Z为所述求和结果,β为所述相邻子时钟的相位差,t0为所述基本时钟的周期。
显然在上述计时方式中,由于每个子时钟单元都对应一个计数单元,例如当存在20个子时钟单元时,就需要至少20个计数单元,造成了计数单元的个数较多,从而导致硬件资源的浪费。并且,由于计数单元采用的是二进制计数,会出现计数结果的多路输出同时跳变的情况,导致锁存的计数结果不准确,从而影响计时的准确性。
本发明实施例提供一种计时方法及装置,用于减少计数单元的个数并且减少多路输出同时跳变的情况,从而减少硬件资源的浪费以及提高计时准确性。
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
请参阅图2,本发明实施例提供了计时方法的一种方法实施例。
本实施例的所述方法包括:
S201:对基本时钟进行格雷(Gray)码计数,得到格雷码计数输出。
本实施例中,不再采用二进制计数,而是采用格雷码计数,得到格雷码计数输出,从而能够保证格雷码计数输出的多路输出不会出现同时跳变的情况。例如,格雷码计数输出可以如图3所示,其中clk为基本时钟,c[0]、c[1]、 c[2]、c[3]和c[4]分别为格雷码计数输出的第0位输出、第1位输出、第2位输出、第3位输出和第4位输出。
在本实施例中,所述基本时钟可以是对原始时钟倍频后得到的时钟信号,是否需要倍频根据计时精度确定。其中原始时钟可以由时钟输入单元输出。
S202:分别对所述格雷码计数输出中的最低位输出进行移相,得到m路子时钟。
其中,所述格雷码计数输出中的最低位输出即相当于所述格雷码计数输出的第0位输出,例如具体为图3中的c[0]。
在移相时,将所述格雷码计数输出的最低位输出分别移相0,α,2α,..., 180°,能够得到180°/α+1个子时钟,其中180°能被α整除。由于在本实施例中,所述最低位输出的周期为所述基本时钟的周期的4倍,因此所述格雷码计数输出的输出值每变化1时,对应所述最低位输出的相位变化90°,因此本实施例中不需要对所述最低位输出移相0,90°和180°,也能够通过格雷码计数输出的输出值对这三个相位差与其他相位差进行区分,本实施例中不需要产生这三个相位差的子时钟。因此,本实施例中所述m路子时钟中各路子时钟与所述最低位输出的相位差满足:且n为满足 0<n<(180°/α)的整数。若90°能被α整除,子时钟的路数为:m=180/α-2,若90°不能被α整除,子时钟的路数为:m=180/α-1。因此,本实施例中能够保证m路子时钟的输出与格雷码计数输出不会出现边沿重合的问题,即不会出现同时跳变的情况,
例如,假设α=18°,本实施例中m路子时钟与所述最低位输出的相位差分别为18°,36°,54°,72°,108°,126°,144°和162°。其中需要说明的是,由于相位差为72°时,以及相位差为90°时,所对应的格雷码计数输出的输出值不同,例如相位差为72°时格雷码计数输出的输出值为0,相位差为90°时格雷码计数输出的输出值为1,因此通过格雷码计数输出的输出值就能够区分相位差72°和相位差90°,不需要产生相位差为90°的子时钟。基于类似的理由,也不需要产生相位差为0°和180°的子时钟。从而减少了子时钟的路数。
本实施例的计时精度,即最小计时单位与移相角度相关,其中计时精度Δt 具体为Δt=t0×α/90°,t0为所述基本时钟的周期。
S203:当预定事件发生时,根据所述格雷码计数输出的输出值、所述m 路子时钟的输出、所述基本时钟的周期和所述α,获得对所述预定事件的计时结果。
在本实施例中,所述计时结果为从起始时刻到预定事件的发生时刻的时间间隔。在一般情况下,在起始时刻开始时(即计时开始时),将所述格雷码计数输出以及m路子时钟的输出全部清零,从而能够根据预定事件发生时的所述格雷码计数输出的输出值和所述m路子时钟的输出,并根据所述基本时钟的周期和所述α,获得对所述预定事件的计时结果。
其中,当预定事件发生时,可以锁存所述格雷码计数输出和所述m路子时钟的输出,之后根据锁存的所述格雷码计数输出的输出值、锁存的所述m 路子时钟的输出、所述基本时钟的周期和所述α,获得所述计时结果。此外,由于目前机器语言一般只识别二进制,因此可以根据所述格雷码计数输出得到二进制输出值,作为所述格雷码计数输出的输出值。
通过上述技术方案可知,本发明实施例对基本时钟进行格雷码计数,得到格雷码计数输出;之后对格雷码计数输出的最低位输出分别进行移相,得到m路子时钟,其中,m路子时钟中各路子时钟与所述最低位输出的相位差为且n为满足0<n<180°/α的整数。若90°能被α整除,m=180/α-2,若90°不能被α整除,m=180/α-1;当预定事件发生时,根据格雷码计数输出的输出值、m路子时钟的输出、基本时钟的周期和所述α,获得对预定事件的计时结果。
可见,在本发明实施例中,由于只需对基本时钟进行计数,而无需再对多个子时钟进行计数,因此减少了计数单元的个数,从而减少了硬件资源。同时,本发明实施例中不再采用二进制计数,而是进行格雷码计数,因此格雷码计数输出的多路输出不会出现同时跳变的情况,而且m路子时钟与所述最低位输出的相位差也能够保证,m路子时钟的输出与格雷码计数输出不会出现同时跳变的情况。也就是说,本实施例的输出在相邻位间转换时,只有一位产生变化,减少了由一个状态到下一个状态时的逻辑混乱,因此提高了计时准确性。
本实施例所述的方法可以用于PET系统中,即对光子到达探测器的时间进行计时,因此,所述预定事件可以为探测到一个光子到达探测器。
本实施例具体可以用于如图4所示的计时装置中,所述计时装置包括:计数单元401、m个子时钟单元402、锁存单元403和计时单元404。m个子时钟单元可以如图5所示,包括子时钟单元0、子时钟单元1、...、子时钟单元m-1。其中,计数单元401对基本时钟进行格雷码计数得到格雷码计数输出; m个子时钟单元402分别对所述格雷码计数输出中的最低位输出进行移相,得到m路子时钟,当预定事件发生时,锁存单元403锁存所述格雷码计数输出和所述m路子时钟的输出,计时单元404根据锁存单元403锁存的所述格雷码计数输出的输出值和所述m路子时钟的输出,以及所述基本时钟的周期和所述α,获得对所述预定事件的计时结果。所述装置可以用于FPGA(Field -Programmable Gate Array现场可编程门阵列)、或者CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)等电子器件中。
下面分别对本发明实施例中:所述格雷码计数输出、所述子时钟的输出以及所述计时结果进行详细说明。
1、首先说明格雷码计数输出。
本发明实施例中,对基本时钟进行格雷码计数得到所述格雷码计数输出。其中,格雷码计数输出的位数决定了最大计时长度,具体地,格雷码计数输出的位数越多,所述计时方法的最大计时长度则越长。下面提供格雷码计数输出的两种可选的生成方式。
第一种方式是先对所述基本时钟进行二进制计数,得到二进制计数输出,再将所述二进制计数输出转换为格雷码计数输出。其中,将所述二进制计数输出转换为格雷码计数输出的转换方式可以为GC=BC^(BC>>1),BC为所述二进制计数输出,GC为所述格雷码计数输出,“^”表示异或操作,“>>”表示右移操作。
第二种方式是对所述基本时钟进行分频和延时,得到所述格雷码计数输出。
其中,可以先对所述基本时钟进行分频得到多路分频输出,再对所述多路分频输出进行延时,得到所述格雷码计数输出。
例如,若所述格雷码计数输出的位数为j,具体的分频方式是:当0≤k<j-1 时,所述多路分频输出的第k路输出的分频数为fk=4×2k,即所述多路分频输出的第k路输出的周期为所述基本时钟的周期的4×2k,当k=j-1时,所述多路分频输出的第k路输出的分频数为fk=4×2k-1,即与上一路分频数相同;具体的延时方式是:当0<k≤j-1时,通过将所述多路分频输出的第k路输出延时qk个基本时钟的周期得到所述格雷码计数输出的第k位输出,qk=qk-1-1+fk-1/4,qk-1为所述格雷码计数输出的第k-1位输出所延时的基本时钟的周期个数,fk-1为多路分频输出的第k-1路输出的分频数;当k=0 时,qk=0。
例如,对所述基本时钟进行分频的分频数分别为4、8、16、32和64,得到5路分频输出,再对5路分频输出进行延时,即可得到如图3所示的格雷码计数输出。其中在对所述基本时钟进行分频时,可以采用如下方式得到5 路分频输出d[0],d[1],d[2],d[3]和d[4]。其中,d[1],d[2],d[3]和d[4]的分频数分别为4、8、16和32。
d[0]=!d[0];
d[1]=d[0]^d[1];
d[2]=(d[0]&d[1])^d[2];
d[3]=(d[0]&d[1]&d[2])^d[3];
d[4]=(d[0]&d[1]&d[2]&d[3])^d[4]。
其中,“!”表示非操作,“&”表示与操作。在根据上述方式获得d[0]时,具体可以是由所述基本时钟输入D触发器的时钟输入端,所述D触发器的输出端通过非门接到D触发器的输入端,非门的输出为d[0]。类似的,可以根据上述方式,通过与门、D触发器和异或门的组合得到d[1]、d[2]、d[3]和d[4],这里不再赘述。
2、其次说明子时钟的输出。
在本实施例中,分别对所述格雷码计数输出中的最低位输出进行移相,得到m路子时钟。所述m路子时钟中各路子时钟与所述最低位输出的相位差满足:且n为满足0<n<180°/α的整数。例如,若α=18°,如图6所示,本实施例中得到8路子时钟SP[0]、SP[1]、SP[2]、SP[3]、SP[4]、 SP[5]、SP[6]和SP[7],该8路子时钟与所述最低位输出的相位差分别为18°, 36°,54°,72°,108°,126°,144°和162°。
其中可以通过延时的方式实现移相,具体地,对所述基本时钟分别延时能够得到所述m路子时钟,t0为所述基本时钟的周期。
3、下面对所述计时结果的表达式进行推导。
本发明实施例中,计时结果可以表示为总计数值与最小计时单位的乘积,其中最小计时单位,即计时精度为Δt=t0×α/90°。而总计数值为计数时钟计数值与子时钟计数值(记为X)之和。下面通过一个例子说明计数时钟计数值和子时钟计数值X如何获得。
假设α=18°,即分别对所述格雷码计数输出中的最低位输出进行移相18°, 36°,54°,72°,108°,126°,144°和162°,得到8路子时钟。当所述格雷码计数输出的输出值分别为0,1,2,3时,所述8路子时钟SP[0]、SP[1]、SP[2]、 SP[3]、SP[4]、SP[5]、SP[6]和SP[7]的输出如表1所示,其中1代表高电平, 0代表低电平。
表1
根据表1可以看出所述格雷码计数输出的输出值(记为B)每变化1时,对应5个计数,因此,计数时钟计数值为B乘以5的积,所述计时结果为 (B×5+X)×Δt。其中,若B被4除的商为0,X与SP的高电平的个数相等, SP为所述8路子时钟的输出,即SP[0]至SP[7]。若B被4除的商为1,X为 SP的高电平的个数减去4的差,若B被4除的商为2,X为8减去SP中的高电平的个数的差,若B被4除的商为3,X为4减去SP中的高电平的个数的差。
因此,所述计时结果通用的表达式为:(B×90°/α+X)×Δt。
其中,B为所述格雷码计数输出的输出值,X为子时钟计数值,若B被4 除得到的余数为0,X为SP中高电平的个数,SP为所述m路子时钟的输出,若B被4除得到的余数为1,X为SP中高电平的个数与i的差值,若B被4 除得到的余数为2,X为2×i的积与SP中高电平的个数的差值,若B被4除得到的余数为3,X为i与SP中高电平的个数的差值,i为大于或等于90°/α-1 的最小整数,Δt=t0×α/90°,t0为所述基本时钟的周期。
在本发明实施例中,B一般为二进制输出值,因此本发明实施例中还需要将所述格雷码计数输出转换为二进制计数输出,从而得到二进制输出值B。例如若格雷码计数输出具有32位,将格雷码计数输出转换为二进制计数输出的转换方式为,依次执行以下5个转换公式:
BC=GC^(GC>>1);
BC=BC^(BC>>2);
BC=BC^(BC>>4);
BC=BC^(BC>>8);
BC=BC^(BC>>16)。
其中,BC为所述二进制计数输出,GC为所述格雷码计数输出。
除了上述转换方式之外,本发明实施例中也可以采用查表或者简单的运算,例如加法运算等方式,将格雷码计数输出转换为二进制计数输出。
在本发明实施例中,既可以通过查表的方式获得所述计时结果,例如通过查询表1获得所述计时结果;也可以通过计算的方式获得所述计时结果。下面具体说明一种可选的所述计时结果的计算方式。
请参阅图7,S203中的所述获得对所述预定事件的计时结果,包括:
S2031:获得所述格雷码计数输出的输出值被4除的余数。
S2031:若所述余数为0,获得所述m路子时钟的输出中高电平的个数作为子时钟计数值X;若所述余数为1,将所述m路子时钟的输出右移90°/α-1 位后,获得高电平的个数作为X;若所述余数为2,将所述m路子时钟的输出取反后,获得高电平的个数作为X;若所述余数为3,将所述m路子时钟的输出先取反再右移90°/α-1位后,获得高电平的个数作为X。
例如,若α=18°,若所述余数为0,将8路子时钟的输出SP中高电平的个数作为X;若所述余数为1,将SP右移4位后,将高电平的个数作为X;若所述余数为2,将SP取反后,将高电平的个数作为X;若所述余数为3,将SP先取反再右移4位,将高电平的个数作为X。其中,可以通过一个统一的方式对SP进行处理得到DP,之后只需计算DP中高电平的个数即可得到X。上述统一的方式为依次执行以下2个公式:
Rem=B&0x03;
DP=(SP^{4×Rem[1]})>>(Rem[0]<<2)。
其中,Rem[0]表示Rem的第0位,Rem[1]表示Rem的第1位。“<<”表示左移操作。
计算DP的高电平的个数(即X)可以通过依次执行以下3个公式:
X=DP;
X=(X&0x5)+((X>>1)&0x5);
X=(X&0x3)+((X>>2)&0x3)。
S2031:根据所述格雷码计数输出的输出值、所述子时钟计数值X、所述基本时钟的周期和所述α,获得对所述预定事件的计时结果。
其中,所述计时结果具体为:(B×90°/α+X)×Δt。B为所述格雷码计数输出的输出值。
需要说明的是,本发明实施例中的所有公式,在有括号的情况下先执行括号中的运算,在没有括号的情况下,先执行乘除运算,再执行加减运算。
对应上述方法实施例,本申请还提供了计时装置的实施例,下面具体说明。
请参阅图4,本申请提供了计时装置的一种装置实施例。所述装置可以用于FPGA或者CPLD等电子器件中。
本实施例的所述装置包括:计数单元401、m个子时钟单元402、锁存单元403以及计时单元。
计数单元401,用于对基本时钟进行格雷码计数,得到格雷码计数输出。
本实施例中,不再采用二进制计数,而是采用格雷码计数,得到格雷码计数输出,从而能够保证格雷码计数输出的多路输出不会出现同时跳变的情况。
在本实施例中,所述基本时钟可以是对原始时钟倍频后得到的时钟信号,是否需要倍频根据计时精度确定。其中原始时钟可以由时钟输入单元输出。
m个子时钟单元402,用于分别对所述格雷码计数输出中的最低位输出进行移相,得到m路子时钟。m个子时钟单元可以如图5所示,包括子时钟单元0、子时钟单元1、...、子时钟单元m-1。
其中,所述m路子时钟中各路子时钟与所述最低位输出的相位差满足:且180°能被α整除,n为满足0<n<(180°/α)的整数;若 90°能α被整除,m=180/α-2,若90°不能被α整除,m=180/α-1。
锁存单元403,用于当预定事件发生时,锁存所述格雷码计数输出和所述 m路子时钟的输出。本实施例所述的装置可以用于PET系统中,即对光子到达探测器的时间进行计时,因此,所述预定事件可以为探测到一个光子到达探测器。
计时单元404,用于根据锁存单元403锁存的格雷码计数输出的输出值、锁存单元403锁存的所述m路子时钟的输出、以及所述基本时钟的周期和所述α,获得对所述预定事件的计时结果。
在本实施例中,所述计时结果为从起始时刻到预定事件的发生时刻的时间间隔。在一般情况下,在起始时刻开始时(即计时开始时),将所述格雷码计数输出以及m路子时钟的输出全部清零,从而能够根据预定事件发生时的所述格雷码计数输出的输出值和所述m路子时钟的输出,并根据所述基本时钟的周期和所述α,获得对所述预定事件的计时结果。
本实施例中,所述计时结果可以为(B×90°/α+X)×Δt;其中,B为所述格雷码计数输出的输出值,X为子时钟计数值,若B被4除得到的余数为0,X 为SP中高电平的个数,SP为所述m路子时钟的输出,若B被4除得到的余数为1,X为SP中高电平的个数与i的差值,若B被4除得到的余数为2,X 为2×i的积与SP中高电平的个数的差值,若B被4除得到的余数为3,X为 i与SP中高电平的个数的差值,i为大于或等于90°/α-1的最小整数,Δt=t0×α/90°,t0为所述基本时钟的周期。
本发明实施例中,对基本时钟进行格雷码计数得到所述格雷码计数输出。下面提供格雷码计数输出的两种可选的生成方式。
第一种方式中,计数单元401包括:计数子单元,用于对所述基本时钟进行二进制计数,得到二进制计数输出;转换单元,用于将所述二进制计数输出转换为格雷码计数输出。其中,将所述二进制计数输出转换为格雷码计数输出的转换方式可以为GC=BC^(BC>>1),BC为所述二进制计数输出,GC 为所述格雷码计数输出。
第二种方式中,计数单元401包括:分频延时单元,用于对所述基本时钟进行分频和延时,得到所述格雷码计数输出。其中,可以通过分频单元先对所述基本时钟进行分频得到多路分频输出,再通过延时单元对所述多路分频输出进行延时,得到所述格雷码计数输出。
在本发明实施例中,计时单元404可以具体用于通过查表方式获得对所述预定事件的计时结果,例如通过查询表1获得所述计时结果;也可以通过计算的方式获得所述计时结果,下面具体说明。
计时单元404可以具体用于:
获得所述格雷码计数输出的输出值被4除的余数;
若所述余数为0,获得所述m路子时钟的输出中高电平的个数作为子时钟计数值;若所述余数为1,将所述m路子时钟的输出右移90°/α-1位后,获得高电平的个数作为子时钟计数值;若所述余数为2,将所述m路子时钟的输出取反后,获得高电平的个数作为子时钟计数值;若所述余数为3,将所述 m路子时钟的输出先取反再右移90°/α-1位后,获得高电平的个数作为子时钟计数值;
根据所述格雷码计数输出的输出值、所述子时钟计数值、所述基本时钟的周期和所述α,获得对所述预定事件的计时结果。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。