0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

控制信号从慢时钟域到快时钟域快递时会存在什么问题呢?

冬至子 来源:小鱼学IC 作者:小鱼 2023-06-21 11:07 次阅读

1.什么是控制交互信号

答:控制交互信号用于作为控制指示信号,比如当某个电路模块有数据输入端口data,但是电路不可能每个时钟周期都对端口输入的数据做处理,那一般上一级电路会同时给出一个指示信号,比如in_valid,用于表示当前端口data输入的数据是有效的,电路需要对其进行采集或做运算处理。同样的对于电路模块输出数据时,也需要给出类似的信号,表明当前输出端口的数据是否有效,例如o_valid信号等。

还有就是比如像FIFO,RAM的读写使能信号,用于控制FIFO,RAM是否需要正常进行工作;读写控制信号用于指示是读还是写操作行为。以及总线的一系列控制信号等,CPU的指令等等,都可以说是控制信号。常用于作为控制模块产生控制信号的就是状态机。

总结一下,就是没有控制信号只有运算电路,电路就是块板砖,我行我素,无任何意义,当我们设计电路模块的时候,往往最先需要搞明白的就是本电路模块的交互控制接口的时序。

2.跨时钟域时,控制信号从慢时钟域(时钟频率较小)到快时钟域(时钟频率较大)快递时会存在什么问题呢?

答:如下图所示,CLK1为慢时钟域的时钟,IN_VALID信号由慢时钟域电路生成,比如用于指示DATA(由CLK1时钟域电路生成)的有效,或者指示完成一次运算。原本IN_VALID在CLK1时钟域下只有一个脉冲宽度,表示完成一次运算。但是跨时钟域传递到CLK2(快时钟域下),CLK2由于频率较快,多个上升沿都采集到IN_VALID为高,在CLK1时钟域下就会误以为完成了多次运算(或者连续多个DATA为有效的)。

图片

3.上述问题怎么解决呢?

答:如果需要跨时钟域的控制信号不会出现多个脉冲连续为高的情况的话,则可以在快时钟域通过边沿检测电路解决。电路如下。将最后的IN_VALID_CLK2作为最后的控制信号。

图片

其波形如下:

图片

4.如果IN_VALID有多个连续的为高电平的情况怎么办?

答:如果IN_VALID是用来传递数据的,用来指示DATA有效的,则可以采用一个异步FIFO将数据进行缓存,将IN_VALID作为FIFO的写使能信号。如若是其他的这种情况则需要按情况来定制电路。

拓展问题

1.脉冲上升沿检测电路(被检测的脉冲宽度不小于一个时钟周期)。

图片

2.脉冲下降沿检测电路(被检测的脉冲宽度不小于一个时钟周期)

图片

3.脉冲边沿(IN_VALID的下降沿、上升沿时电路都会输出一个高脉冲)检测电路(被检测的脉冲宽度不小于一个时钟周期)。

图片

下面给出边沿检测电路的示例Verilog代码:

向上滑动阅览

module EDGE_DEC(

input clk2,

input rst_n,

input in_valid,

output in_valid_edge

);

reg in_valid_d;

reg in_valid_dd;

always @( posedge clk2 or negedge rst_n ) begin

if( !rst_n )

in_valid_d <= 1'b0;

else

in_valid_d <= in_valid;

end

always @( posedge clk2 or negedge rst_n ) begin

if( !rst_n )

in_valid_dd <= 1'b0;

else

in_valid_dd <= in_valid_d;

end

assign in_valid_edge = in_valid_d ^ in_valid_dd;

endmodule

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1332

    浏览量

    113947
  • 状态机
    +关注

    关注

    2

    文章

    487

    浏览量

    27286
  • FIFO存储
    +关注

    关注

    0

    文章

    103

    浏览量

    5919
  • CLK
    CLK
    +关注

    关注

    0

    文章

    123

    浏览量

    16969
  • 控制器
    +关注

    关注

    0

    文章

    21

    浏览量

    3274
收藏 人收藏

    评论

    相关推荐

    时钟控制信号传输设计方案

    clk2的时钟。当clk1比clk2的频率高时,则称模块1(相对于模块2)为时钟,而模块2位为
    发表于 10-16 15:47 1042次阅读
    跨<b class='flag-5'>时钟</b><b class='flag-5'>域</b><b class='flag-5'>控制</b><b class='flag-5'>信号</b>传输设计方案

    CDC跨时钟分单bit和多bit传输介绍

    单bit(时钟时钟):用
    的头像 发表于 08-29 11:13 3532次阅读
    CDC跨<b class='flag-5'>时钟</b><b class='flag-5'>域</b>分单bit和多bit传输介绍

    关于跨时钟信号的处理方法

    我在知乎看到了多bit信号时钟的问题,于是整理了一下自己对于跨时钟信号的处理方法。
    的头像 发表于 10-09 10:44 5121次阅读

    怎么将信号从一个时钟传递另一个时钟

    亲爱的朋友们, 我有一个多锁设计。时钟为50MHz,200MHz和400Mhz。如果仅使用400MHz时钟并使用时钟使能产生200Mhz和50Mhz时钟
    发表于 03-11 08:55

    同步从一个时钟另一个时钟的多位信号怎么实现?

    你好,我在Viv 2016.4上使用AC701板。我需要同步从一个时钟另一个时钟的多位信号
    发表于 08-17 07:48

    时钟的设计和综合技巧系列

    通常不是问题,因为时钟将对时钟控制
    发表于 04-11 17:06

    时钟信号同步的IP解决方案

    本文解释了在时钟和数据信号从一个时钟跨越到另一个时钟所发生的许多类型的同步问题。在任何情况下
    发表于 04-06 17:39 51次下载
    跨<b class='flag-5'>时钟</b><b class='flag-5'>域</b><b class='flag-5'>信号</b>同步的IP解决方案

    总线半握手跨时钟处理

    同步器应用场景: 适用有脉冲控制信号的总线跨时钟处理,不适用电平控制信号。慢到
    的头像 发表于 04-04 12:32 2514次阅读
    总线半握手跨<b class='flag-5'>时钟</b><b class='flag-5'>域</b>处理

    CDC跨时钟的基础概念

    时钟clock domain:以寄存器捕获的时钟来划分时钟。 单时钟
    的头像 发表于 08-29 15:11 2165次阅读

    时钟处理方法(一)

    理论上讲,时钟信号总会采集时钟
    的头像 发表于 03-28 13:50 1760次阅读
    跨<b class='flag-5'>时钟</b><b class='flag-5'>域</b>处理方法(一)

    时钟处理方法(二)

    时钟采集从快时钟传输来的信号时,需要根据信号
    的头像 发表于 03-28 13:52 633次阅读
    跨<b class='flag-5'>时钟</b><b class='flag-5'>域</b>处理方法(二)

    时钟电路设计:多位宽数据通过FIFO跨时钟

    FIFO是实现多位宽数据的异步跨时钟操作的常用方法,相比于握手方式,FIFO一方面允许发送端在每个时钟周期都发送数据,另一方面还可以对数据进行缓存。需要注意的是对FIFO控制
    的头像 发表于 05-11 14:01 2173次阅读
    跨<b class='flag-5'>时钟</b><b class='flag-5'>域</b>电路设计:多位宽数据通过FIFO跨<b class='flag-5'>时钟</b><b class='flag-5'>域</b>

    处理单bit跨时钟信号同步问题来入手

    在数字电路中,跨时钟处理是个很庞大的问题,因此将会作为一个专题来陆续分享。今天先来处理单bit跨时钟
    发表于 06-27 11:25 1087次阅读
    <b class='flag-5'>从</b>处理单bit跨<b class='flag-5'>时钟</b><b class='flag-5'>域</b><b class='flag-5'>信号</b>同步问题来入手

    时钟信号该如何处理

    时钟是如何产生的?现在的芯片(比如SOC,片上系统)集成度和复杂度越来越高,通常一颗芯片上会有许多不同的信号工作在不同的时钟频率下。
    的头像 发表于 06-27 11:39 1182次阅读
    跨<b class='flag-5'>时钟</b><b class='flag-5'>域</b><b class='flag-5'>信号</b>该如何处理<b class='flag-5'>呢</b>?

    fpga跨时钟通信时,时钟如何读取时钟发送过来的数据?

    fpga跨时钟通信时,时钟如何读取时钟发送过来的数据? 在FPGA设计中,通常需要跨
    的头像 发表于 10-18 15:23 766次阅读