用于同步在高速与低速时钟域之间的数据传送的集成电路、方法和接口电路与流程

文档序号:14860445发布日期:2018-07-04 06:58阅读:360来源:国知局
用于同步在高速与低速时钟域之间的数据传送的集成电路、方法和接口电路与流程

许多电路和系统包含在不同的时钟域中操作的电路。例如,处理器电路通常以高时钟速度操作,而外围电路以低得多的时钟速度运行。通常期望不同时钟域的电路交换数据。例如,高时钟速度中央处理器单元(cpu)可以对由低时钟速度外围装置使用的数据或控制寄存器进行写入以控制外设的操作。这种cpu还可以读取存储在低时钟速度电路的寄存器中的数据。然而,在不同时钟域的电路之间传送数据呈现出问题,尤其是在高时钟速度与低时钟速度非常不同的情况下。在一个示例中,以非常低的频率(例如,10-100khz)操作的外围电路可能需要由以1-100mhz或甚至更高的高时钟频率操作的cpu服务。通过cpu执行的应用软件可能需要频繁地更新或写入外围电路寄存器中的值,诸如在高速处理器上运行的软件操作低时钟速度脉宽调制(pwm)控制电路以控制输出信号或致动器。在该示例中,处理器可以通过频繁地改变由外设控制的脉宽值来实施闭环控制算法。通过对低速电路寄存器的数据写入而进行的频繁更新可能导致cpu必须等待可能大量的高速时钟周期以允许先前的数据写操作在再次更新外设之前与低速时钟域同步。在一些情况下,经过超过一千个cpu周期,只是为了确保正确的数据同步。使用请求-确认外设写同步协议的握手方案可能引起从快时钟域到慢时钟域的背靠背更新的显著性数据时延,这可能抑制使用经编程处理器和低速外设来执行高带宽闭环控制的能力。

在从低时钟速度外设读取数据时也可能产生问题。从外围寄存器进行读取造成从低时钟速度域寄存器读取的数据中的亚稳态的可能性。cpu可以执行多次读取,例如,三次读取,其中cpu在连续读取两次时比较读取结果并选择数据。另一方法是cpu仅在状态位指示外设数据被同步且稳定之后读取外围寄存器。然而,这些方法需要额外的cpu软件并引入数据时延。此外,这些技术可能引起增加的系统功耗。



技术实现要素:

所公开的示例包含接口电路,所述接口电路用于在高速或快时钟域中的第一寄存器与低速或慢时钟域中的第二寄存器之间传送数据。接口电路包含可重置同步器,所述可重置同步器用于提供与慢时钟信号同步的经同步起始信号以根据写请求信号来开始从第一寄存器到第二寄存器的写入。脉冲发生器电路根据经同步起始信号提供写启用脉冲信号,并且写控制电路根据写启用脉冲信号选择性地将第一寄存器的输出端连接到第二寄存器的输入端以将数据从第一寄存器写入到第二寄存器,并且双重双稳态门(flip-flop)电路用于根据写请求信号来提供与快时钟信号同步的重置信号以将任何先前未决的写请求清除并开始新的写操作。进一步公开的示例提供用于同步从慢时钟域寄存器到快时钟域寄存器的数据读取的接口电路,所述接口电路包含:脉冲发生器,所述脉冲发生器用于提供与快时钟信号同步的读启用脉冲信号;以及触发器电路,所述触发器电路使得脉冲发生器每第二时钟信号的整数l个周期提供新的读启用脉冲信号。其它公开的示例提供集成电路,所述集成电路包含:第一电路,所述第一电路具有根据第一时钟信号操作的第一寄存器和主处理器;第二电路,所述第二电路具有根据较慢的第二时钟信号操作的外围电路和第二寄存器;以及接口电路,所述接口电路用于同步在第一寄存器与第二寄存器之间的数据传送。

附图说明

图1是根据实施例的用于同步数据以用于从高速时钟域寄存器写入到低速时钟域寄存器的接口电路的示意图。

图2是示出图1的电路中的信号波形的信号图。

图3是根据实施例的用于同步数据以用于从低速时钟域寄存器读取到高速时钟域寄存器的接口电路的示意图。

图4是示出图3的电路中的信号波形的信号图。

图5是根据实施例的具有高速时钟域和低速时钟域以及相关联的寄存器的集成电路的示意图,所述集成电路包含用于同步在高速时钟域寄存器和低速时钟域寄存器之间的数据传送的接口电路。

图6是根据另一实施例的具有高速时钟域和低速时钟域以及相关联的寄存器的集成电路的示意图,所述集成电路包含用于同步在高速时钟域寄存器和低速时钟域寄存器之间的数据传送的接口电路。

图7是根据另一实施例的具有高速时钟域和低速时钟域以及相关联的寄存器的另一集成电路的示意图,所述集成电路包含用于同步在高速时钟域寄存器和低速时钟域寄存器之间的数据传送的接口电路。

具体实施方式

在附图中,相同的附图标记贯穿全文指代相同的元件,且各种特征件不必按比例绘制。在以下论述中且在权利要求书中,术语“包含”、“包括”、“具有”、“带有”、“含有”或其变体意图以类似于术语“包括”的方式为包含性的,且因此应被解释为意指“包含但不限于...”。并且,术语“耦合”、“耦接”意图包含间接或直接的电气或机械连接或其组合。例如,如果第一装置耦合到第二装置或与第二装置耦合,那么该连接可以通过直接的电气连接进行,或通过经由一个或多个中间装置和连接的间接的电气连接进行。

所公开的示例包含便于同步在不同的第一时钟速度域和第二时钟速度域之间的数据传送的集成电路和接口电路。对于到较慢外围寄存器的写操作,所公开的示例使用来自主机的写请求信号来开始与较慢的第二时钟信号同步的写操作,而不需要确认。写请求开始写操作,并且接口电路取消任何先前未决的写操作以重置同步电路。这允许cpu或其它主机电路简单地开始写操作而不必等待确认,同时确保最近的写数据到达第二时钟域寄存器。此外,某些示例提供在两个低速时钟域周期内的同步。所公开的示例有助于在闭环控制和其它低时延应用中使用,而没有显著的数据时延且没有不必要的主处理器软件开销和复杂性。

图1示出具有根据不同的时钟信号操作的第一电路102(fast)和第二电路130(slow)的系统。电路102和电路130可以以单独的集成电路(ic)形成,或者可以为在单个ic上的电路。电路102和电路130通过根据对应的时钟信号操作而作为两个单独的时钟域的一部分,电路102和电路130可以关于时钟定相和/或时钟频率独立于彼此操作,但这不是所有实施例的严格要求。快域第一电路102根据电路节点108上的第一时钟信号fast_clk操作,并且第二电路130根据节点138上的第二时钟信号slow_clk操作。第二时钟信号slow_clk慢于第一时钟信号fast_clk。

第一电路102包含用于从主机电路(图1中未示出)接收n位写数据信号wdata的n位总线104,其中n为大于或等于1的正整数。第一电路102还包含n位第一寄存器110。第一寄存器110包含连接到电路节点108以接收fast_clk信号的时钟输入端,以及n位数据输出端112(在图中被命名为寄存器110的“q”输出端)。寄存器110将n位数据信号w_data提供到第二电路130以用于将数据从第一寄存器110写入到第二电路130的第二寄存器140的写操作。第一电路102包含具有控制输入端的n位多路复用器114,所述控制输入端连接到节点106以从主机接收单个位总线写请求信号bus_wr。当信号bus_wr在第一状态(低或“0”)下时,多路复用器114将n位输出端112连接到寄存器110的n位数据输入端(“d”)。在此状态下,寄存器110中的当前数据针对第一时钟信号fast_clk的每一周期被刷新。当主机电路希望开始写操作以将数据wdata从第一寄存器110传送到第二寄存器140时,主机电路将信号bus_wr改变成第二状态(高或“1”)。在此条件下,多路复用器114将写数据w_data传送到寄存器110。另外,总线写请求信号bus_wr到第二状态的转变开始通过接口电路100同步的写操作,如下文进一步描述。

接口电路100同步在第一寄存器110与第二寄存器140之间的数据传送。图1中的接口电路100促进写操作以将数据从第一时钟域中的第一寄存器110传送到第二时钟域中的第二寄存器140。接口电路100可以被认为是单独的电路或被认为是第一电路102和第二电路130两者中的一部分。接口电路100的部分根据第一时钟信号fast_clk操作(例如,通过第一时钟信号fast_clk定时),并且接口电路100的其它部分根据第二时钟信号slow_clk操作。

接口电路100包含具有输出端124的启动电路109,启动电路109将起始信号start提供到第二电路130。在操作中,启动电路109在主机电路的加电和重置之后初始地提供在第一状态(例如,低或“0”)下的start信号,并且之后启动电路109响应于第一总线写请求信号bus_wr而提供在不同的第二状态(高或“1”)下的start输出信号。启动电路109防止第二电路130的写启用信号wr_en在加电重置后的无意中启用。启动电路109包含双稳态门123(被命名为“f3”),双稳态门123具有连接到快时钟节点108的时钟输入端、数据输入端(d),以及连接到启动电路输出端124以提供start信号的数据输出端(q)。电路109还包含“与”门125,“与”门125具有连接到总线写请求节点106以接收信号bus_wr的第一输入端,以及从快时钟双重双稳态门电路120接收信号的第二反相输入端。双重双稳态门电路操作以中断时序关键路径,所述时序关键路径起源于主处理器到达慢时钟域电路150中的同步器双稳态门151和同步器双稳态门152的清除输入端clrz引脚。“与”门125的输出端将控制信号提供到多路复用器128。多路复用器128包含连接到双稳态门123的数据输入端的输出端,以及通过来自“与”门125的低(例如,“0”)控制信号选择以将双稳态门123的数据输出端连接到双稳态门123的数据输入端的第一输入端。在此状态下,双稳态门123提供start输出信号作为在第一时钟信号fast_clk的每一周期被刷新的常数值。在系统加电时,“与”门125初始地将低控制信号提供到多路复用器128。此低控制信号使得多路复用器128将start信号维持在第一状态(低)下。响应于主机电路升高总线写请求节点106(高),“与”门125将高控制信号提供到多路复用器128,使得双稳态门123接收高数据输入信号。双稳态门123在其数据输出端124处提供对应的高输出信号。之后,在启动电路输出端处的start信号在正常操作期间保持为高(“1”)。这提供慢时钟域同步器电路150的输入值,如下文进一步描述。

快时钟域双重双稳态门电路120根据第一时钟信号fast_clk操作。双重双稳态门电路120包含连接到节点106以接收写请求信号bus_wr的输入端,和用于将重置信号reset提供到在慢时钟域中的另一同步器电路150的输入端的输出端157。双重双稳态门电路120分别包含第一双稳态门121、第二双稳态门122,以及第一“与”门126和第二“与”门156。“与”门156的输出端将重置信号reset提供到慢时钟域的同步器电路150。在操作中,双重双稳态门电路120响应于输入端106接收到在预定状态(高)下的写请求信号bus_wr而提供重置信号reset作为从第一状态(高)转变到第二状态(低)的脉冲信号。reset脉冲在返回高之前在保持为低达同步到第一时钟信号fast_clk的非零时间。重置脉冲信号reset重置慢时钟域同步器电路150并将任何先前未决的写请求清除。reset脉冲信号还开始从第一寄存器110到第二寄存器140的新的写入,而不管当在先前使bus_wr有效(asserted)(为高)时先前未决的写操作是否在进行中。以此方式,双重双稳态门电路120允许主机电路在没有握手(handshaking)的情况下开始写操作,并且主机电路可以在不等待来自慢时钟域电路130的任何确认的情况下开始背靠背(back-to-back)写操作。

第一双稳态门121包含连接到节点108以接收第一时钟信号fast_clk的时钟输入端,以及经耦合以接收写请求信号bus_wr的数据输入端d,以及数据输出端q。第二双稳态门122包含还连接到节点108的时钟输入端、连接到第一双稳态门121的数据输出端q的数据输入端d,以及数据输出端q。第一“与”门126包含连接到第一双稳态门121的数据输出端q的第一输入端,以及连接到第二双稳态门122的数据输出端q的第二反相输入端。“与”门126的输出端127将清除信号clear提供到“与”门156的第一反相输入端136。“与”门156包含第二输入端,“与”门156的该第二输入端连接到慢时钟域电路节点148以接收有效低清除或重置信号nreset_sclk,以允许外围电路(未示出)重置慢时钟域同步器电路150。当信号nreset_clk在正常操作期间为高时,“与”门156将clear信号反相以在输出端157处提供reset信号。

慢时钟域第二电路130包含n位第二寄存器140,n位第二寄存器140具有连接到节点138的时钟输入端以根据第二时钟信号slow_clk操作。第二电路130还包含多路复用器144,多路复用器144具有经连接以从脉冲发生器电路155接收写启用信号wr_en的控制输入端146,以及将n位寄存器数据输入信号reg_data提供到寄存器140的n位数据输入端141的n位输出端。同步器电路150的输入端157经连接以从高速时钟域同步器120接收重置信号reset。低速时钟域同步器150包含输出端158,该输出端158提供经同步起始信号s2作为到脉冲发生器电路155的输入。

在操作中,同步器电路150响应于输入端157接收到在第一状态(低)下的重置信号reset而提供在第一状态(低)下的信号s2。同步器电路150在重置信号reset转变到第二状态(高)之后在第二时钟信号slow_clk的整数k个边沿中提供在不同的第二状态(高)下的信号s2,其中k为非零正整数。在一个示例中,k=3。在此示例中,同步器电路150确保通过主机电路从快时钟域寄存器110写入到慢时钟域寄存器140的数据在第二时钟信号slow_clk的两个时钟周期内传送。第一双稳态门151包含经连接以接收第二时钟信号slow_clk的时钟输入端,和经耦合以接收信号start的数据输入端(d)。在正常操作中,在总线写请求信号bus_wr在加电重置后的第一致动之后,start信号为高。第一双稳态门151和第二双稳态门152各自包含清除输入端clrz,该清除输入端连接到高速时钟域同步器电路120的输出端157以接收重置信号reset。第二双稳态门152包含连接到节点138以接收第二时钟信号slow_clk的反相时钟输入端,以及连接到第一双稳态门151的数据输出端(q)的数据输入端(d),以及提供经同步起始信号s2的数据输出端(q)。

脉冲发生器电路155的输入端158接收经同步起始信号s2。脉冲发生器电路155的输出端连接到多路复用器144的输入端146。脉冲发生器电路155响应于经同步起始信号s2从第一状态(低)转变到第二状态(高)而将写启用脉冲信号wr_en提供到多路复用器144。多路复用器144实施写控制电路144,写控制电路144响应于写启用脉冲信号wr_en而选择性地将第一寄存器110的输出端112连接到寄存器140的n位输入端141,以便将数据从第一寄存器110写入到第二寄存器140。脉冲发生器电路155包含第三双稳态门153,第三双稳态门153具有连接到节点138以接收第二时钟信号slow_clk的时钟输入端、连接到第二双稳态门152的数据输出端(q)的数据输入端(d),以及数据输出端(q)。脉冲发生器电路155还包含“与”门154,“与”门154具有连接到第三双稳态门153的数据输出端q的第一反相输入端,和连接到第二双稳态门152的数据输出端(q)的第二输入端。“与”门154的输出端连接到多路复用器144的输入端146以提供写启用脉冲信号wr_en。在所图示说明的示例中,定时双稳态门153和到“与”门154的输入连接提供具有低速时钟信号slow_clk的一半周期的高状态脉宽的写启用脉冲信号wr_en。

图2示出图示说明在图1中的接口电路100的操作期间的信号波形的信号图200。曲线202示出第一时钟信号fast_clk,并且曲线208示出第二时钟信号slow_clk。曲线204图示说明在电路100的操作期间的示例总线写请求信号bus_wr,并且曲线206表示提供到第一电路102中的多路复用器输入端104的n位数据输入信号wdata。图2中的曲线210示出来自慢时钟域同步器电路150的第一双稳态门151的输出信号s1。曲线212和214分别示出来自双稳态门152和153的输出s2和s3。曲线216示出来自脉冲发生器电路155的写启用信号wr_en,并且曲线218表示提供到慢时钟速度寄存器140的数据输入端的数据reg_data。另外,曲线206和218包含特定数据的字符表示。

在图2的示例中,主机电路开始示出为bus_wr曲线204中的脉冲的三个示例总线写请求。响应于总线写请求脉冲的上升沿,来自第一寄存器100的n位输出数据w_data转变成由主机电路提供的数据wdata。在图2中示出的时间的部分中,主机电路先前已开始关于曲线218上被命名为“xxxxxxx”的数据的写操作,并且该写操作在图2的所图示说明的时间帧中完成。主机电路随后开始与bus_wr曲线204中的所图示说明的第一请求脉冲相关联的写请求以便写入被命名为“abc”的数据。响应于该写请求脉冲,同步器电路120将信号传播经过双稳态门121和双稳态门122,并在输出端157处产生reset信号以将慢时钟域同步器电路150的双稳态门151和双稳态门152清除。这使得双稳态门输出信号s1和s2变低,如图2中的曲线210和212所示。脉冲发生器电路双稳态门153还响应于与数据“abc”相关联的bus_wr脉冲信号而提供低输出信号s3(曲线214)。start信号传播经过与第二时钟信号slow_clk同步的双稳态门151、152以及153,并且脉冲发生器电路155将写启用信号wr_en(曲线216)提供到多路复用器144,其中上升沿对应于s2信号(曲线212)的上升沿,并且下降沿对应于s3信号(曲线214)的上升沿。这传送数据“abc”作为在第二寄存器140的输入端处的寄存器数据输入信号reg_data,以完成从快时钟域电路102到慢时钟域电路130的写操作。在此示例中,写操作具有图2中示出的持续时间221,持续时间211小于第二时钟信号slow_clk的两个周期。

主机电路随后发起针对写入数据“def”的进一步总线写请求。此请求在主机电路随后尝试写入被命名为“ghi”的数据时仍为未决的。因此,在图示说明的示例中,主机电路尝试“背靠背”写操作,在总线写请求信号波形204中造成在220处指示的两个对应的脉冲,其中第二总线写请求信号脉冲在先前的写请求完成之前出现。写请求脉冲信号bus_wr使得reset信号变低以将同步器电路150的双稳态门151和152清除,示出为曲线210和212中的朝下的边沿。快时钟域同步器电路120将bus_wr信号传播经过双稳态门121和122以使得“与”门126在输出端127处产生脉冲信号clear。在图示说明的示例中,使在输出端127处的clear脉冲有效达第一时钟信号fast_clk的单个周期,并且在输出端127处的clear脉冲在“与”门156的输出端157处产生反相脉冲信号reset。另外,第三双稳态门153的输出信号s3响应于写请求脉冲信号bus_wr而变低,在曲线214中示出。

不同于其它多时钟域同步电路,图1的图示说明的接口电路100有利地响应于在220处的背靠背写入的第二总线写请求脉冲而将与数据“def”相关联的未决写操作清除。接口电路100有利地允许主机电路实施背靠背写请求,而不必等待确认先前未决的请求的完成。这避免与在电路102与电路130之间实施请求/确认协议相关联的主机和外围电路软件/逻辑开销。另外,通过接口电路100实施的先前未决的写请求的取消减少系统中的数据时延。这在图示说明的实施方式中通过在使控制慢时钟域写控制电路多路复用器144的wr_en信号有效之前reset信号将慢时钟域同步器电路150的双稳态门151和双稳态门152清除来实现。如该示例中所见,在220处的第二bus_wr脉冲开始来自双稳态门151的输出信号s1的进一步重置,输出信号s1作为响应而变低。双稳态门151、152以及153以第二时钟信号slow_clk的连续的周期传播start信号状态,并且脉冲发生器电路155产生曲线216中的wr_en信号脉冲。wr_en脉冲在s2信号(曲线212)的上升沿处转变至高第二状态,并且在s3信号(曲线214)的上升沿处转变至低第一状态。以此方式,wr_en信号的脉宽近似为第二时钟信号slow_clk的一半时钟周期。接口电路100因此在终止与数据“def”相关联的先前开始的写操作之后同步更新的写数据“ghi”的传送。已完成的与数据“ghi”相关联的写操作具有持续时间222,持续时间222小于第二时钟信号slow_clk的两个周期。

如图2的示例中所见,来自快时钟域主机电路的每一总线写请求将慢时钟域中的任何未决的请求清除并传播自身。因此,接口电路100可以在慢时钟周期内适应背靠背请求,并且最后的请求得到可靠传播。这确保有效的写入在慢时钟域的固定最大两个周期内到达目的地。此外,写操作同步到慢时钟域寄存器140的数据传送,并且系统不需要复杂的主机或外围电路软件或逻辑。此外,数据时延问题可被最小化,即使是在第一时钟速度和第二时钟速度显著不同的情况下。注意,在图2的示例中,信号经过慢时钟域同步器电路150和慢时钟域同步器电路155的传播是主要的数据时延驱动器,并且图示说明的示例提供在两个慢时钟周期内的稳健的写操作。如先前所提及的,其它解决方案使用基于请求-确认的同步,其中另一写请求直到请求-确认循环完成才开始。相比之下,当前公开的示例接口电路100不需要与实施基于确认的系统相关联的软件和/或逻辑复杂性,并有利地允许主机系统执行背靠背写操作。这在例如主cpu频繁地更新闭环控制应用中的外围慢时钟域电路130(例如,处理器将计数器值提供到pwm控制外围电路)的控制寄存器的情况下为有益的。所公开的接口电路100有利地允许主机电路快速地将最新的控制值提供到外围电路寄存器140,而不管先前提交的写操作在同步电路中是否为当前未决的。因此,所公开的示例便于闭环控制情况和其中期望到外围慢时钟域寄存器140的快速数据写入的其它应用。

还参考图3和图4,图3示出包含根据第一时钟信号fast_clk操作的具有第一n位寄存器310的第一电路302的另一示例多时钟域系统。第二电路330根据慢于第一时钟信号fast_clk的第二时钟信号slow_clk操作,并且第二电路330包含第二寄存器340。第一寄存器310从第一电路302的节点308接收fast_clk信号,并且第一寄存器310包含n位数据输入端(d)和n位数据输出端(q)。电路302还包含第一n位多路复用器314和第二n位多路复用器315。多路复用器314的第一n位输入端连接到快时钟域寄存器310的n位输出端(q),以在多路复用器314和多路复用器315的控制输入端在第一状态(低)下时根据第一时钟信号fast_clk来刷新寄存器数据信号fast_reg_data。第一多路复用器314的第二n位输入端312连接到慢时钟域寄存器340的n位输出端332以接收n位寄存器读数据信号reg_r_data。当多路复用器314的控制输入端在第二状态(高)下时,reg_r_data信号被传递到第二多路复用器315的n位输入端。第二多路复用器315的n位输出端连接到寄存器310的n位输入端。当多路复用器控制输入端306从主机电路(图3中未示出)接收在第一状态(低)下的cpu写控制输入信号cpu_write时,来自第一多路复用器314的输出数据被传递到寄存器310的n位数据输入端(d)。当cpu_write信号在第二状态(高)下时,多路复用器315经由第二n位多路复用器或其它读控制电路314将n位cpu_w_data信号从主机电路传递到寄存器数据输入端。读控制电路314响应于读启用脉冲信号pulse在第二状态(高)下而选择性地将第二寄存器340的输出端332与第一寄存器310的输入端耦合,以将数据从第二寄存器340读取到第一寄存器310。

慢时钟域寄存器340包含连接到第二电路330的节点338以接收时钟信号slow_clk的时钟输入端。寄存器340可以通过任何合适的外围电路(未示出)被写入以存储数据reg_r_data,并且寄存器340可以包含用于根据慢域时钟信号slow_clk来刷新数据的合适的电路(未示出)。

接口电路300针对读操作同步数据传送以将n位数据从慢时钟域寄存器340读取到快时钟域寄存器310。接口电路300包含根据第一时钟信号fast_clk操作(例如,通过第一时钟信号fast_clk钟控(clocked))的读同步器电路320和读脉冲发生器电路325,以及根据第二时钟信号slow_clk操作的触发器电路360。第一电路302包含有效低重置输入端316,有效低重置输入端316用于从主机电路(未示出)接收快时钟域重置信号nreset_fclk以重置读同步器电路320。第二电路330包含有效低重置输入端348,有效低重置输入端348用于从外围电路(未示出)接收慢时钟域重置信号nreset_sclk以选择性地重置触发器电路360。读脉冲发生器电路325提供在第一状态低和第二状态高中的一个下与第一时钟信号fast_clk同步的读启用脉冲信号pulse。在图示说明的示例的操作中,电路325包含用于从读同步器电路320的输出端接收经同步起始脉冲信号ss的输入端327。读脉冲发生器电路325还包含用于提供与第一时钟信号fast_clk同步的读启用脉冲信号pulse的输出端329。读脉冲发生器电路325在此示例中响应于经同步起始脉冲信号ss的低至高转变(上升沿)而提供高pulse信号,并且之后提供低pulse信号。

慢时钟域电路330的触发器电路360提供置位脉冲信号sp以使得读脉冲发生器325每第二时钟信号slow_clk的整数l个周期提供新的读启用脉冲信号pulse。以此方式,读数据被连续更新,允许与高时钟速度域相关联的主机电路按需要开始读操作。这针对从慢时钟域寄存器到快时钟域寄存器的读取提供了相对于其它解决方案的多个优点。举例来说,其它方法利用多次读取,其中主机电路比较读数据并确定哪个数据可能为正确的(例如,基于来自至少三分之二的读取的一致结果)。此方法需要主机电路中的额外的软件或逻辑,并引入数据时延。在另一替代方法中,慢时钟域电路提供读事件控制信号,所述控制信号在快时钟域中同步,并且快时钟域主机电路等待读取数据直到控制信号有效。此方法还引入数据时延,并需要在快时钟域电路中的额外的软件和/或硬件逻辑。相比之下,图3的示例中的接口电路300允许快时钟域电路在任何时间处从慢时钟域电路寄存器340读取数据,无需任何握手或额外的处理开销或时延。另外,接口电路300将数据同步到目标时钟信号fast_clk以在没有任何限制的情况下提供正确的读数据,并且没有亚稳态问题。就此而言,电路300在没有任何特殊的主处理器软件实施方式的情况下提供完全同步的逻辑。

触发器电路360根据第二时钟信号slow_clk操作,并且触发器电路360包含逻辑电路346和双稳态门342,双稳态门342具有连接到电路节点338以接收第二时钟信号slow_clk的输入端。逻辑电路346在一个示例中为包含可配置值的计数器。在第二时钟信号slow_clk的每一周期中,并且逻辑电路346的输出端提供具有第一状态(例如,低)的信号,直到计数器值达到零。一旦计数器达到零,逻辑电路346就输出具有第二状态(例如,高)的信号。来自逻辑电路346的输出信号被提供到双稳态门342的数据输入端。双稳态门342包含连接到节点338以接收slow_clk信号的时钟输入端,以及将置位信号at提供到另一双稳态门348的时钟输入端的数据输出端(q)。双稳态门348的数据输入端连接到具有高值(例如,“1”)的恒定信号,并且双稳态门348的数据输出端(q)将置位脉冲信号sp提供到输出节点334。

双稳态门348提供sp信号作为读同步器电路320的数据输入。同步器电路320传播该信号并产生经同步起始脉冲信号ss以使得读脉冲发生器325提供新的读启用脉冲信号pulse。触发器电路360的双稳态门348还包含连接到“与”门350的输出端的清除输入端(clrz)。“与”门350包含连接到重置信号节点348以接收nreset_sclk信号的第一输入端,和从读脉冲发生器电路325接收pulse信号的第二反相输入端336。“与”门350提供清除信号以将双稳态门348的数据输出重置为第一状态(例如,低)。通过此操作,逻辑电路346每第二时钟信号slow_clk的整数l个周期提供高输出信号。这些信号中的每一个开始新的pulse信号以使得读控制电路多路复用器314用来自慢时钟域寄存器340的输出端的寄存器数据reg_r_data来更新快时钟域寄存器310。因此,无论何时主机电路需要读取寄存器,寄存器都为当前的。另外,读脉冲发生器电路325响应于pulse信号而重置触发器电路360以便提供连续的更新。以此方式,主cpu可以容易地读取寄存器310的内容而无需任何握手或过多的软件开销,并且没有显著的数据时延问题。在某些示例中,逻辑电路346中的计数器的值可以通过主机电路配置,因此允许整数l的值编程为大于1的任何整数。

图3的快时钟域电路302中的示例读同步器电路320包含用于接收置位脉冲信号sp的输入端318,和将经同步起始脉冲信号ss提供到读脉冲发生器电路325的输入端327的输出端。读同步器电路320在置位脉冲信号sp转变为低之后在第一时钟信号fast_clk的非零整数j个边沿处提供低经同步起始脉冲信号ss。读同步器电路320还在置位脉冲信号sp转变为高之后在第一时钟信号fast_clk的整数j个边沿处提供高ss信号。在图示说明的示例中,同步器电路320包含第一双稳态门322,第一双稳态门322具有接收置位脉冲信号sp的数据输入端和连接到第二双稳态门324的数据输入端的数据输出端。在图示说明的示例中,电路320包含两个双稳态门322和双稳态门324,并且j=2。使用不同数目的双稳态门的其它实施方式是可能的,其中j对应于读同步器电路320中的双稳态门的数目。图示说明的示例中的第一双稳态门322和第二双稳态门324包含连接到节点308以接收第一时钟信号fast_clk的时钟输入端,以及连接到节点316以从主机电路接收nreset_fclk信号的清除输入端。第二双稳态门324包含数据输出端(q),该数据输出端(q)连接到节点327以将经同步起始脉冲信号ss提供到读脉冲发生器电路325。

读脉冲发生器电路325包含“与”门326,“与”门326具有连接到节点327以接收ss信号的第一输入端,以及连接到节点329以接收pulse信号的第二反相输入端。读脉冲发生器电路的双稳态门328包含连接到“与”门326的输出端的数据输入端(d),和连接到输出节点329以提供pulse信号的数据输出端(q)。在此示例中,电路325提供具有第一时钟信号fast_clk的一个周期的脉宽的高信号pulse。其它实施方式是可能的,其中脉宽可以通过在读脉冲发生器电路325中包含另外的双稳态门或通过使用脉冲扩展器电路(未示出)来增加。

图4说明示出图3的接口电路300的信号波形的信号图400。图式400包含示出示例第二时钟信号slow_clk的曲线402、表示在慢时钟域寄存器340的输出端q处的n位寄存器读数据信号reg_r_data的曲线404、图示说明置位信号set的曲线406、图示说明示例第一时钟信号fast_clk的曲线408、图示说明pulse信号的曲线410,以及表示快时钟域寄存器310的n位数据fast_reg_data的曲线412。reg_r_data根据曲线410中示出的重复的pulse信号被传送到快时钟域寄存器310,并且读数据与第一时钟信号fast_clk同步。图4示出一种示例情况,其中经传送的n位数据信号reg_r_data连续地依次表示值“3、2、1、0、2、1以及0”。此外,在此示例中,读时延短,这是因为pulse信号在第一时钟信号fast_clk的两个周期内被触发,并且目标寄存器310在另一快时钟周期内接收reg_r_data,总时延近似为第一时钟信号fast_clk的三个周期。

现在参考图5和图6,写接口电路100和读接口电路300可以同时使用以使快时钟域电路102、302与慢时钟域电路130、330交互以促进其间的写操作和读操作两者。这些概念可以被组合以与专用寄存器联合使用,或用于其中快时钟域电路和慢时钟域电路中的任一者或两者中的单个寄存器进行写入和读取两者的情况中,或其组合。另外,快时钟域电路和慢时钟域电路可以在单独的集成电路装置上,或这些电路可为单个集成电路的一部分,如图5至图7的示例中所图示说明的。

图5示出包含快域电路510和慢域(外围)电路520的集成电路(ic)500。ic500在此示例中包含高速或快时钟域电路102和高速或快时钟域电路302,以及低速(慢)时钟域电路130和低速(慢)时钟域电路330,如先前所描述。图5的ic500中的快域电路510使用单独的快域寄存器110和快域寄存器310以用于分别将数据写入到慢域电路520的单独的寄存器140和寄存器340和从单独的寄存器140和寄存器340接收读数据。图6说明包含快域电路510和外围(慢域)电路520的另一集成电路示例600,其中单个慢时钟域寄存器140、340用于读操作和写操作两者。在这些示例中,快域电路510包含主处理器电路530,主处理器电路530包含用于提供第一时钟信号fast_clk的时钟源。慢域电路520在这些示例中包含具有时钟源的外围电路550,该时钟源提供第二时钟信号slow_clk。在该示例中,电路510和520在单个ic500、600中制造,并且ic500、600包含如上文先前结合图1和图3分别描述的接口电路100、300。

图7示出另一ic示例,该ic示例包含高速时钟域和低速时钟域以及相关联的寄存器,连同用于相应地同步在高速时钟域寄存器和低速时钟域寄存器之间的数据传送的接口电路。在图5至图7的示例中,写接口电路100和读接口电路300的组合提供以上描述的针对读操作和写操作两者的组合的益处。此外,这些益处的组合还将额外的能力提供给快时钟域中的主处理器或cpu530。例如,如果主处理器530刚好在写入慢时钟域寄存器140之后如图7中所示开始从单个低速时钟域寄存器到单个高速时钟域寄存器的读操作,那么接口电路100、300更新快时钟域寄存器110、310并且随后写同步过程将如上文所描述而开始。此机制促进通过由主处理器电路530执行的软件和/或固件开始的“写和立即读”操作。

所公开的示例接口电路100、300可以用作在任何快时钟域和慢时钟域之间的通用数据同步器,无论是在单个集成电路500、600上制造,还是在其中第一时钟域电路和第二时钟域电路在单独的ic上实施的系统中。所公开的示例为在两个时钟域电路之间的数据传送提供完全同步的逻辑,而不需要任何特定软件或添加的逻辑。另外,所公开的示例允许背靠背写操作,并且某些实施例仅需要减慢写操作的时钟域周期,而其它解决方案需要六个周期来实施握手请求/确认协议。因此,通过所公开的示例消除了软件开销负担并且减少了数据时延。此外,所公开的解决方案在快时钟域电路和慢时钟域电路之间的数据的传送中提供功率效率,例如,其中从快时钟域寄存器110到慢时钟域寄存器140的数据写操作只是用于减慢时钟周期。另外,如上文结合图3所描述的,用于将数据从外围寄存器342传送到快时钟域寄存器310的读操作可以在没有任何限制的情况下执行。所公开的示例允许较快且稳健的数据传送操作,所述操作尤其有益于以比主处理器低得多时钟速度操作的外围电路。

本公开的进一步的方面包含用于在快时钟域和慢时钟域的寄存器之间传送数据的方法。该方法可使用任何合适的硬件实施,包含但不限于以上描述的示例接口电路100和/或300。对于从快时钟域的寄存器到慢时钟域的寄存器的写操作,示例方法包含响应于写请求信号(例如,bus_wr)提供或产生重置信号(例如,以上描述的reset信号)。写操作方法进一步包含响应于重置信号而清除或重置同步器电路(例如,重置以上同步器电路150)、提供与慢时钟域时钟信号(例如,slow_clk)同步的经同步起始信号(例如,以上信号s2),以及产生写启用脉冲信号(例如,wr_en)以将快时钟域寄存器(例如,110)的输出端(例如,112)连接到慢时钟域寄存器的数据输入端(例如,141)。如上文所描述的,此技术响应于写请求信号而清除或重置同步器电路,并且可以有利地用于促进背靠背写操作,而无需握手或其它请求/确认软件/固件开销。

在另一方面中,提供用于从慢时钟域寄存器读取到快时钟域寄存器的方法,该方法可以单独地实施或与写操作方法结合而实施。读方法在一个示例中包含每慢时钟域时钟信号(例如,slow_clk)的整数l个周期产生或提供置位脉冲信号(例如,上述sp),其中l大于1,响应于置位脉冲信号而每整数l个慢时钟周期提供读启用脉冲信号(例如,上述pulse),以及响应于读启用脉冲信号(例如,pulse)而选择性地将慢时钟域寄存器(例如,以上寄存器340)的输出端与快时钟域寄存器(例如,以上310)的输入端耦合,以将数据从慢时钟寄存器读取到快时钟寄存器。

上述示例仅图示说明本公开的各方面的若干可能的实施例,其中本领域的其他技术人员在阅读并理解此说明书和附图后将想到等效的改变和/或修改。在权利要求书的范围内,所描述的实施例中修改是可能的,并且其它实施例是可能的。

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