searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

异步时序处理及常见问题分析

2024-03-18 05:43:32
94
0

判断时钟的同步异步,是否同源是一个决定性的因素。不同源的时钟一定是异步的,但是同源的却不一定是同步的。 对于同一个PLL的整数倍分频,可以做同步处理。 对于同一个PLL的分频倍数是小数,我们一般做异步处理。 

两个来自不同晶振的时钟,一定是异步时钟。通常情况下设计中不同的主时钟肯定是异步时钟,因此可以将这两个主时钟及其衍生时钟约束成不同的时钟组。

:是组合逻辑,不是同步电路; 

 

:是组合逻辑和锁存器,不是同步电路; 

 

 

:是同步电路 

 

 

CLKA、CLKC、CLKD、CLKE都是由300M这个时钟源分频而来。

CLKA与CLKC、CLKD、CLKE之间无法用clken去同步传递信息,因此要当异步处理。

CLKC与CLKD、CLKE之间可以用clken去同步传递信息,因此可以当同步处理。 

 

 

二、异步时序怎么处理

单bit信号:

打2拍处理(先进工艺要求3拍)。---慢时钟域同步到快时钟域 

cdc_s信号必须做到glitch free,也就是我们通常说的寄存输出;

int_s信号链路禁止组合逻辑,其本质也是杜绝glitch的出现;

 

单bit信号:

展宽处理。---快时钟域同步到慢时钟域 例如100M时钟域向50M时钟域传递信号,在100M时钟域至少将信号展宽3个周期,在50M时钟域下才能使用打拍同步。 

多bit信号:

DMUX同步器适用于慢时钟域向快时钟域传递(因为两级同步器),且数据有效信号在数据信号的前一个周期或者数据有效信号在数据信号的第一个周期。数据信号要保证在有效信号同步期间保持不变。 

tx_sel、rx_sel有效时,cdc_d数据总线必须保持稳定 。

异步fifo:fifo深度不能为奇数。 

 

单bit/多bit信号:握手处理。---不关心两边时钟域情况 

三、异步复位

由于异步复位信号与时钟无必然联系,两者都是独立的,所以复位信号的释放将有一定的概率导致电路出现亚稳态。 

异步复位的亚稳态:当异步复位信号的撤销时间在Trecovery(恢复时间)和Tremoval(移除时间)之间时,输出结果就会出现亚稳态,造成复位失败。 

四、异步复位同步释放

在对异步复位进行同步释放前,需要对异步复位进行滤毛刺操作。 

 

所谓异步复位同步释放,就是在rst_filt_n信号为低时,立刻进行复位,即复位信号与时钟相互独立;而rst_filt_n信号由低到高释放时,为了防止亚稳态的出现,将rst_filt_n信号用DFF向后延两周期,外部复位信号不会在出现释放时与clk信号竞争,整个系统将与全局时钟clk信号同步。 

五、异步问题分析

1、下面电路图路径中允许有组合逻辑的是(     AD       )。 

2、siga是clka(频率为125Mhz)时钟域下的信号,有效电平为高。clkb(频率为125Mhz)为另外一个与clka异步的时钟,对于下面电路,说法正确的是(        ABCD       )。 

A. 如果siga是一个单周期脉冲信号,在clkb时钟域有可能采样不到。

B. 如果siga是一个多周期(持续时间大于单bit信号跨异步的时间要求)信号,在clkb时钟域可以采样到。

C. 如果siga是一个静态配置信号,这个电路处理正确。

D. 如果siga是一个单周期脉冲信号,上面电路不能做异步处理,可以考虑用异步脉冲握手电路处理。 

 

3、clka与clkb为异步时钟,为了提高信号的驱动能力,把异步处理进行了复制。在以后真实的芯片中,当valid_a信号发生从0变为1的跳变后,valid_b0和valid_b1的关系是(      ABC         )。 

A. 根据芯片的实现情况,valid_b0可能和valid_b1同一个cycle为1。

B. 根据芯片的实现情况,valid_b0可能比valid_b1提前一个cycle为1。

C. 根据芯片的实现情况,valid_b1可能比valid_b0提前一个cycle为1。

D. valid_b0和valid_b1一定同一个cycle为1。 

4、clka时钟频率是clkb的3倍,两个时钟为异步,clka时钟域产生的fifo_err信号为脉冲信号,只维持一拍,为了使clkb时钟域不漏采fifo_err指示,进行了展宽处理。指出下图存在的问题。 

经过或逻辑的信号在进行异步处理之前应在clka时钟域下寄存,异步处理前不能有组合逻辑。 

5、async_rst_n是一个异步复位信号,和clka异步。所有寄存器都被clka驱动,预期输出 out信号一直为1,请问下面电路有什么问题?如何改进?“+1”表示一个加1电路,”=“表示一个比较电路。其他的都为带异步复位端的D触发器。 

虽然经过比较强端口的两个电路功能相同,但由于异步复位信号在路径1和路径2上相位可能存在差异,经过”+1“电路送到比较端的信号可能相互延迟一拍,也可能同拍。最后out输出可能为1,也可能为0. 

应改为:异步复位同步释放后再驱动逻辑 

6、请描述你对静态配置寄存器和动态配置寄存器的理解。 

静态配置寄存器:上电初始化时配置,正常工作时不配置。

动态配置寄存器:正常工作时也可进行配置,动态配置要考虑是否需要进行异步处理。

7、模块A和模块B的接口都在同一个clka时钟域下,每个模块都有一个系统控制器发出的复位请求控制,分别为a_rst_req和b_rst_req。系统控制器的时钟和clka异步。发送到模块A和模块B的异步复位已经做了异步复位同步撤离处理。模块A和模块B之间的接口信号不仅仅只有1个,图上只是其中1个信号的示意图。    

 1、请问下面的电路,工作过程中,如果控制对A模块单独复位,可能会有什么问题?      2、采用什么方法,可以使模块A独立复位? 

             1、对模块A独立复位后输出a_out与模块B形成组合逻辑,可能产生毛刺,影响b_out的输出值。

             2、在确保模块B的组合逻辑部分其他信号不变的时候,可以对模块A进行复位。 

8、指出下面异步处理电路图存在的问题。 

          错误类型是:Reconvergence。应先对a b c进行逻辑运算后,再打一拍再进行异步处理。 

9、如下图所示,siga_clk1和sigb_clk1信号是clk1时钟域的寄存输出信号;sigc在clk1时钟域下为单脉冲信号 ;clk1的时钟频率为500Mhz,clk2的时钟频率为250Mhz。clk1和clk2异步。      1、指出电路中的问题,如何更改。 

siga和sigb做完组合逻辑后,进行异步处理前应先寄存一拍。 送到clk2之前先做展宽处理,寄存后再在clk2时钟域下打两拍。 异步处理过程中不允许有组合逻辑,sigd处的组合逻辑应在sige处进行。 

0条评论
0 / 1000
z****n
4文章数
0粉丝数
z****n
4 文章 | 0 粉丝
z****n
4文章数
0粉丝数
z****n
4 文章 | 0 粉丝
原创

异步时序处理及常见问题分析

2024-03-18 05:43:32
94
0

判断时钟的同步异步,是否同源是一个决定性的因素。不同源的时钟一定是异步的,但是同源的却不一定是同步的。 对于同一个PLL的整数倍分频,可以做同步处理。 对于同一个PLL的分频倍数是小数,我们一般做异步处理。 

两个来自不同晶振的时钟,一定是异步时钟。通常情况下设计中不同的主时钟肯定是异步时钟,因此可以将这两个主时钟及其衍生时钟约束成不同的时钟组。

:是组合逻辑,不是同步电路; 

 

:是组合逻辑和锁存器,不是同步电路; 

 

 

:是同步电路 

 

 

CLKA、CLKC、CLKD、CLKE都是由300M这个时钟源分频而来。

CLKA与CLKC、CLKD、CLKE之间无法用clken去同步传递信息,因此要当异步处理。

CLKC与CLKD、CLKE之间可以用clken去同步传递信息,因此可以当同步处理。 

 

 

二、异步时序怎么处理

单bit信号:

打2拍处理(先进工艺要求3拍)。---慢时钟域同步到快时钟域 

cdc_s信号必须做到glitch free,也就是我们通常说的寄存输出;

int_s信号链路禁止组合逻辑,其本质也是杜绝glitch的出现;

 

单bit信号:

展宽处理。---快时钟域同步到慢时钟域 例如100M时钟域向50M时钟域传递信号,在100M时钟域至少将信号展宽3个周期,在50M时钟域下才能使用打拍同步。 

多bit信号:

DMUX同步器适用于慢时钟域向快时钟域传递(因为两级同步器),且数据有效信号在数据信号的前一个周期或者数据有效信号在数据信号的第一个周期。数据信号要保证在有效信号同步期间保持不变。 

tx_sel、rx_sel有效时,cdc_d数据总线必须保持稳定 。

异步fifo:fifo深度不能为奇数。 

 

单bit/多bit信号:握手处理。---不关心两边时钟域情况 

三、异步复位

由于异步复位信号与时钟无必然联系,两者都是独立的,所以复位信号的释放将有一定的概率导致电路出现亚稳态。 

异步复位的亚稳态:当异步复位信号的撤销时间在Trecovery(恢复时间)和Tremoval(移除时间)之间时,输出结果就会出现亚稳态,造成复位失败。 

四、异步复位同步释放

在对异步复位进行同步释放前,需要对异步复位进行滤毛刺操作。 

 

所谓异步复位同步释放,就是在rst_filt_n信号为低时,立刻进行复位,即复位信号与时钟相互独立;而rst_filt_n信号由低到高释放时,为了防止亚稳态的出现,将rst_filt_n信号用DFF向后延两周期,外部复位信号不会在出现释放时与clk信号竞争,整个系统将与全局时钟clk信号同步。 

五、异步问题分析

1、下面电路图路径中允许有组合逻辑的是(     AD       )。 

2、siga是clka(频率为125Mhz)时钟域下的信号,有效电平为高。clkb(频率为125Mhz)为另外一个与clka异步的时钟,对于下面电路,说法正确的是(        ABCD       )。 

A. 如果siga是一个单周期脉冲信号,在clkb时钟域有可能采样不到。

B. 如果siga是一个多周期(持续时间大于单bit信号跨异步的时间要求)信号,在clkb时钟域可以采样到。

C. 如果siga是一个静态配置信号,这个电路处理正确。

D. 如果siga是一个单周期脉冲信号,上面电路不能做异步处理,可以考虑用异步脉冲握手电路处理。 

 

3、clka与clkb为异步时钟,为了提高信号的驱动能力,把异步处理进行了复制。在以后真实的芯片中,当valid_a信号发生从0变为1的跳变后,valid_b0和valid_b1的关系是(      ABC         )。 

A. 根据芯片的实现情况,valid_b0可能和valid_b1同一个cycle为1。

B. 根据芯片的实现情况,valid_b0可能比valid_b1提前一个cycle为1。

C. 根据芯片的实现情况,valid_b1可能比valid_b0提前一个cycle为1。

D. valid_b0和valid_b1一定同一个cycle为1。 

4、clka时钟频率是clkb的3倍,两个时钟为异步,clka时钟域产生的fifo_err信号为脉冲信号,只维持一拍,为了使clkb时钟域不漏采fifo_err指示,进行了展宽处理。指出下图存在的问题。 

经过或逻辑的信号在进行异步处理之前应在clka时钟域下寄存,异步处理前不能有组合逻辑。 

5、async_rst_n是一个异步复位信号,和clka异步。所有寄存器都被clka驱动,预期输出 out信号一直为1,请问下面电路有什么问题?如何改进?“+1”表示一个加1电路,”=“表示一个比较电路。其他的都为带异步复位端的D触发器。 

虽然经过比较强端口的两个电路功能相同,但由于异步复位信号在路径1和路径2上相位可能存在差异,经过”+1“电路送到比较端的信号可能相互延迟一拍,也可能同拍。最后out输出可能为1,也可能为0. 

应改为:异步复位同步释放后再驱动逻辑 

6、请描述你对静态配置寄存器和动态配置寄存器的理解。 

静态配置寄存器:上电初始化时配置,正常工作时不配置。

动态配置寄存器:正常工作时也可进行配置,动态配置要考虑是否需要进行异步处理。

7、模块A和模块B的接口都在同一个clka时钟域下,每个模块都有一个系统控制器发出的复位请求控制,分别为a_rst_req和b_rst_req。系统控制器的时钟和clka异步。发送到模块A和模块B的异步复位已经做了异步复位同步撤离处理。模块A和模块B之间的接口信号不仅仅只有1个,图上只是其中1个信号的示意图。    

 1、请问下面的电路,工作过程中,如果控制对A模块单独复位,可能会有什么问题?      2、采用什么方法,可以使模块A独立复位? 

             1、对模块A独立复位后输出a_out与模块B形成组合逻辑,可能产生毛刺,影响b_out的输出值。

             2、在确保模块B的组合逻辑部分其他信号不变的时候,可以对模块A进行复位。 

8、指出下面异步处理电路图存在的问题。 

          错误类型是:Reconvergence。应先对a b c进行逻辑运算后,再打一拍再进行异步处理。 

9、如下图所示,siga_clk1和sigb_clk1信号是clk1时钟域的寄存输出信号;sigc在clk1时钟域下为单脉冲信号 ;clk1的时钟频率为500Mhz,clk2的时钟频率为250Mhz。clk1和clk2异步。      1、指出电路中的问题,如何更改。 

siga和sigb做完组合逻辑后,进行异步处理前应先寄存一拍。 送到clk2之前先做展宽处理,寄存后再在clk2时钟域下打两拍。 异步处理过程中不允许有组合逻辑,sigd处的组合逻辑应在sige处进行。 

文章来自个人专栏
异步时序处理
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
3
2