一种计时方法及装置的制造方法_2

文档序号:9887342阅读:来源:国知局
子时钟的相位差,to为所述基本时钟的周期。
[0051 ] 显然在上述计时方式中,由于每个子时钟单元都对应一个计数单元,例如当存在 20个子时钟单元时,就需要至少20个计数单元,造成了计数单元的个数较多,从而导致硬件 资源的浪费。并且,由于计数单元采用的是二进制计数,会出现计数结果的多路输出同时跳 变的情况,导致锁存的计数结果不准确,从而影响计时的准确性。
[0052]本发明实施例提供一种计时方法及装置,用于减少计数单元的个数并且减少多路 输出同时跳变的情况,从而减少硬件资源的浪费以及提高计时准确性。
[0053]为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实 施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施 例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通 技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护 的范围。
[0054]请参阅图2,本发明实施例提供了计时方法的一种方法实施例。
[0055]本实施例的所述方法包括:
[0056] S201:对基本时钟进行格雷(Gray)码计数,得到格雷码计数输出。
[0057] 本实施例中,不再采用二进制计数,而是采用格雷码计数,得到格雷码计数输出, 从而能够保证格雷码计数输出的多路输出不会出现同时跳变的情况。例如,格雷码计数输 出可以如图3所示,其中elk为基本时钟,(3[0]、(:[1]、(3[2]、(3[3]和(3[4]分别为格雷码计数输 出的第〇位输出、第1位输出、第2位输出、第3位输出和第4位输出。
[0058] 在本实施例中,所述基本时钟可以是对原始时钟倍频后得到的时钟信号,是否需 要倍频根据计时精度确定。其中原始时钟可以由时钟输入单元输出。
[0059] S202:分别对所述格雷码计数输出中的最低位输出进行移相,得到m路子时钟。
[0060]其中,所述格雷码计数输出中的最低位输出即相当于所述格雷码计数输出的第0 位输出,例如具体为图3中的c[0]。
[0061 ]在移相时,将所述格雷码计数输出的最低位输出分别移相〇,α,2α,. . .,180°,能够 得到180° /α+1个子时钟,其中180°能被α整除。由于在本实施例中,所述最低位输出的周期 为所述基本时钟的周期的4倍,因此所述格雷码计数输出的输出值每变化1时,对应所述最 低位输出的相位变化90°,因此本实施例中不需要对所述最低位输出移相0,90°和180°,也 能够通过格雷码计数输出的输出值对这三个相位差与其他相位差进行区分,本实施例中不 需要产生这三个相位差的子时钟。因此,本实施例中所述m路子时钟中各路子时钟与所述最 低位输出的相位差P满足:P = ? x ?且供矣90°心为满足〇 <n < (180° /α)的整数。若90°能被α 整除,子时钟的路数为:m=180/a-2,若90°不能被α整除,子时钟的路数为:m=180/a-l。因 此,本实施例中能够保证m路子时钟的输出与格雷码计数输出不会出现边沿重合的问题,即 不会出现同时跳变的情况,
[0062]例如,假设α = 18°,本实施例中m路子时钟与所述最低位输出的相位差分别为18°, 36°,54°,72°,108°,126°,144°和162°。其中需要说明的是,由于相位差为72°时,以及相位 差为90°时,所对应的格雷码计数输出的输出值不同,例如相位差为72°时格雷码计数输出 的输出值为〇,相位差为90°时格雷码计数输出的输出值为1,因此通过格雷码计数输出的输 出值就能够区分相位差72°和相位差90°,不需要产生相位差为90°的子时钟。基于类似的理 由,也不需要产生相位差为0°和180°的子时钟。从而减少了子时钟的路数。
[0063] 本实施例的计时精度,即最小计时单位与移相角度相关,其中计时精度△ t具体为 Δ t = t〇Xa/90°,to为所述基本时钟的周期。
[0064] S203:当预定事件发生时,根据所述格雷码计数输出的输出值、所述m路子时钟的 输出、所述基本时钟的周期和所述a,获得对所述预定事件的计时结果。
[0065] 在本实施例中,所述计时结果为从起始时刻到预定事件的发生时刻的时间间隔。 在一般情况下,在起始时刻开始时(即计时开始时),将所述格雷码计数输出以及m路子时钟 的输出全部清零,从而能够根据预定事件发生时的所述格雷码计数输出的输出值和所述m 路子时钟的输出,并根据所述基本时钟的周期和所述a,获得对所述预定事件的计时结果。
[0066] 其中,当预定事件发生时,可以锁存所述格雷码计数输出和所述m路子时钟的输 出,之后根据锁存的所述格雷码计数输出的输出值、锁存的所述m路子时钟的输出、所述基 本时钟的周期和所述a,获得所述计时结果。此外,由于目前机器语言一般只识别二进制,因 此可以根据所述格雷码计数输出得到二进制输出值,作为所述格雷码计数输出的输出值。
[0067] 通过上述技术方案可知,本发明实施例对基本时钟进行格雷码计数,得到格雷码 计数输出;之后对格雷码计数输出的最低位输出分别进行移相,得到m路子时钟,其中,m路 子时钟中各路子时钟与所述最低位输出的相位差为0 = ,且供# 90°,n为满足0<n< 180° /a的整数。若90°能被a整除,m= 180/a-2,若90°不能被a整除,m= 180/a-l;当预定事件 发生时,根据格雷码计数输出的输出值、m路子时钟的输出、基本时钟的周期和所述a,获得 对预定事件的计时结果。
[0068] 可见,在本发明实施例中,由于只需对基本时钟进行计数,而无需再对多个子时钟 进行计数,因此减少了计数单元的个数,从而减少了硬件资源。同时,本发明实施例中不再 采用二进制计数,而是进行格雷码计数,因此格雷码计数输出的多路输出不会出现同时跳 变的情况,而且m路子时钟与所述最低位输出的相位差也能够保证,m路子时钟的输出与格 雷码计数输出不会出现同时跳变的情况。也就是说,本实施例的输出在相邻位间转换时,只 有一位产生变化,减少了由一个状态到下一个状态时的逻辑混乱,因此提高了计时准确性。 [0069]本实施例所述的方法可以用于PET系统中,即对光子到达探测器的时间进行计时, 因此,所述预定事件可以为探测到一个光子到达探测器。
[0070]本实施例具体可以用于如图4所示的计时装置中,所述计时装置包括:计数单元 401、m个子时钟单元402、锁存单元403和计时单元404。111个子时钟单元可以如图5所示,包括 子时钟单元0、子时钟单元1、...、子时钟单元m-Ι。其中,计数单元401对基本时钟进行格雷 码计数得到格雷码计数输出;m个子时钟单元402分别对所述格雷码计数输出中的最低位输 出进行移相,得到m路子时钟,当预定事件发生时,锁存单元403锁存所述格雷码计数输出和 所述m路子时钟的输出,计时单元404根据锁存单元403锁存的所述格雷码计数输出的输出 值和所述m路子时钟的输出,以及所述基本时钟的周期和所述a,获得对所述预定事件的计 时结果。所述装置可以用于FPGA(Field_Programmable Gate Array现场可编程门阵列)、或 者CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)等电子器件中。 [0071]下面分别对本发明实施例中:所述格雷码计数输出、所述子时钟的输出以及所述 计时结果进行详细说明。
[0072] 1、首先说明格雷码计数输出。
[0073] 本发明实施例中,对基本时钟进行格雷码计数得到所述格雷码计数输出。其中,格 雷码计数输出的位数决定了最大计时长度,具体地,格雷码计数输出的位数越多,所述计时 方法的最大计时长度则越长。下面提供格雷码计数输出的两种可选的生成方式。
[0074] 第一种方式是先对所述基本时钟进行二进制计数,得到二进制计数输出,再将所 述二进制计数输出转换为格雷码计数输出。其中,将所述二进制计数输出转换为格雷码计 数输出的转换方式可以为GC = BC~ (BC> > 1),BC为所述二进制计数输出,GC为所述格雷码 计数输出,""'表示异或操作,">>"表示右移操作。
[0075] 第二种方式是对所述基本时钟进行分频和延时,得到所述格雷码计数输出。
[0076] 其中,可以先对所述基本时钟进行分频得到多路分频输出,再对所述多路分频输 出进行延时,得到所述格雷码计数输出。
[0077]例如,若所述格雷码计数输出的位数为j,具体的分频方式是:当0<k<j_l时,所 述多路分频输出的第k路输出的分频数为fk = 4X2k,即所述多路分频输出的第k路输出的周 期为所述基本时钟的周期的4X2k,当k = j-l时,所述多路分频输出的第k路输出的分频数 为& = 4 X 2>-1,即与上一路分频数相同;具体的延时方式是:当0<k ^丨时,通过将所述多 路分频输出的第k路输出延时qk个基本时钟的周期得到所述格雷码计数输出的第k位输出, qk = qk-i-l+fk-i/4,qk-i为所述格雷码计数输出的第k-Ι位输出所延时的基本时钟的周期个 数,fk-i为多路分频输出的第k-Ι路输出的分频数;当k = 0时,qk=0。
[0078]例如,对所述基本时钟进行分频的分频数分别为4、8、16、32和64,得到5路分频输 出,再对5路分频输出进行延时,即可得到如图3所示的格雷码计数输出。其中在对所述基本 时钟进行分频时,可以采用如下方式得到5路分频输出(1[0],(1[1],(1[2],(1[3]和(1[4]。其中, (1[1],(1[2],(1[3]和(1[4]的分频数分别为4、8、16和32。
[0079] d[0] = !d[0];
[0080] d[ 1 ] =d[0] 'd[ 1 ];
[0081] d[2] = (d[0]&d[l])'d[2];
[0082] d[3] = (d[0]&d[l]&d[2])'d[3];
[0083] d[4] = (d[0]&d[l]&d[2]&d[3])'d[4]〇
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1