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

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

3天内不再提示

关于跨时钟域的详细解答

FPGA之家 来源:似猿非猿的FPGA 作者:似猿非猿的FPGA 2021-04-27 10:52 次阅读

每一个做数字逻辑的都绕不开跨时钟域处理,谈一谈SpinalHDL里用于跨时钟域处理的一些手段方法。

打拍处理 跨时钟域信号的打拍处理往往用于单比特信号或类似于格林码这种信号的跨时钟域处理。其逻辑电路很简单。SpinalHDL提供了BufferCC用于实现这种跨时钟域打拍处理方式:

BufferCC(input: T, init: T = null, bufferDepth: Int = 2)

bufferDepth可用于指定打拍级数。input信号的时钟域为源时钟域,BUfferCC调用的地方的时钟域为目的时钟域。 在日常的电路设计里,计数器是常见的DFX信号,有些情况下需要将一个时钟域的DFX信号转换到另一个时钟域进行HPI读取,这种情况也可以通过打拍进行处理,不过前提是需转换成格林码,如此在源时钟域和目的时钟域需分别做一次转换与反转换。但如果计数器采用格林码进行计数则可以少进行一次转换。SpinalHDL有提供一个GrayCounter方法用于生成格林码计数器:

GrayCounter(width: Int, enable: Bool)

提供一个小demo,GtayCounter+BufferCC:

f4efce9e-a67e-11eb-aece-12bb97331649.png

这里GrayCounter在时钟域clkA中实现,通过BufferCC将其跨时钟域至clkB,bufferDepth为3.Tips:BufferCC的第二个参数init数据类型是T,而T《:Data,即意味着init数据类型为“硬件”数据类型,因而上面init赋值需为U(0,8 bits)而不能直接写0》》脉冲信号处理 脉冲信号的跨时钟域处理,SpinalHDL提供了PulseCCByToggle方法:

PulseCCByToggle(input: Bool,clockIn: ClockDomain,clockOut: ClockDomain): Bool

握手处理

对于吞吐要求不是特别高的场合,跨时钟域信号采用握手形式 进行处理也是一种不错的选择。SpinalHDL有两个抽象类型个人一直很喜欢:Stream,Flow。这两种形式基本囊括了所有的信号交互行为,其也可以说是SpinalHDL lib库的基石。针对跨时钟域的握手处理,SpinalHDL有一个StreamCCByToggle可以使用:

StreamCCByToggle(input: Stream[T], inputClock: ClockDomain, outputClock: ClockDomain): Stream[T]

其输入参数包含源时钟域信号,源时钟域,目的时钟域,其返回一个目的时钟域的Stream信号:

f54fad50-a67e-11eb-aece-12bb97331649.png

这里srcIn隶属于时钟域clkA,destOut隶属于时钟域clkB。 除了StreamCCByToggle,SpinalHDL里还有一个FlowCCByToggle。由于Flow类型没有反压,因而从低时钟域向高时钟域进行传输则没什么问题,但从高时钟域向低时钟域进行转换则存在丢失数据的风险。》》FIFO跨时钟域缓存 对于高吞吐的多比特信号跨时钟域处理,则往往采用FIFO的形式进行处理。在SpinalHDL里则有StreamFifoCC供使用:

val myFifo = StreamFifoCC( dataType = Bits(8 bits), depth = 128, pushClock = clockA, popClock = clockB)myFifo.io.push 《《 streamAmyFifo.io.pop 》》 streamB
编辑:lyn

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

    关注

    6673

    文章

    2451

    浏览量

    204166
  • 计数器
    +关注

    关注

    32

    文章

    2256

    浏览量

    94477
  • 时钟域
    +关注

    关注

    0

    文章

    52

    浏览量

    9535

原文标题:跨时钟域那点事儿

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一文解析时钟传输

    一、单比特CDC传输1.1 慢到快 快时钟相比慢时钟采样速度更快,也就是说从慢时钟来到快
    的头像 发表于 11-16 11:55 503次阅读
    一文解析<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>传输

    京准时钟科普:关于北斗卫星同步时钟的那些事?

    京准时钟科普:关于北斗卫星同步时钟的那些事?
    的头像 发表于 10-29 09:28 276次阅读
    京准<b class='flag-5'>时钟</b>科普:<b class='flag-5'>关于</b>北斗卫星同步<b class='flag-5'>时钟</b>的那些事?

    关于\"OPA615\"的SOTA的导大小的疑问求解

    关于OPA615的SOTA部分,看datasheet的page9的figure22,我们可以知道导大小大概是35mA/V左右,并且可以知道其Chold输出一般在5mA以内,但是我从社区里面找到
    发表于 09-13 06:25

    关于UCC25640x LLC谐振控制器的常见问题解答

    电子发烧友网站提供《关于UCC25640x LLC谐振控制器的常见问题解答.pdf》资料免费下载
    发表于 09-04 09:37 0次下载
    <b class='flag-5'>关于</b>UCC25640x LLC谐振控制器的常见问题<b class='flag-5'>解答</b>

    极限失控的大模型使电力系统面临的攻击风险及应对措施

    分析大规模生成式预训练模型(以下简称为大模型)发生极限失控、使电力系统面临的攻击风险及相关的应对措施,以期引起业内对这一风险的重视、讨论与行动。基于大模型的现状、发展趋势以及它与人工智能反叛之间
    发表于 07-22 12:09 0次下载

    单芯片运行六个操作系统,芯驰科技交卷融合

    关于智能汽车的整车架构如何发展,行业内已经达成了三步走的共识。过去汽车行业采用的是分布式的计算架构,目前正迈入更加集成化的融合阶段,而对于未来的设想则是实现中央计算。
    的头像 发表于 05-09 15:17 530次阅读

    航盛与高通发布全新一代墨子舱驾融合平台

    在2024年的北京国际汽车展览会上,深圳市航盛电子股份有限公司携手高通技术公司,共同发布了全新一代墨子舱驾融合平台。该平台是基于高通技术公司领先的Snapdragon Ride™ Flex SoC(SA8775P)研发的,针对中央计算舱驾融合域控制器系统进行了深度设计
    的头像 发表于 05-07 10:31 615次阅读

    利用LWIP实现的Web server,如何修改响应报文中HTTP header里面的Access-Control-Allow-Origin的值?

    请求。 注:通过不在同一个下浏览器页面,给跑着lwip-httpServer的板子发送get请求,会涉及到问题,需要改变响应HTTP header里面的Access-Contr
    发表于 04-30 06:54

    黑芝麻智能与斑马智行达成单芯片融合平台项目合作

    第十八届北京国际汽车展览会如火如荼进行中。4月26日,黑芝麻智能参展期间再度公布产业链新伙伴,与斑马智行达成单芯片融合平台项目合作。
    的头像 发表于 04-26 18:16 628次阅读

    介绍一个IC设计错误案例:可读debug寄存器错误时钟

    本文将介绍一个时钟错误的案例如图所示,phy_status作为一个多bit的phy_clk时钟的信号,需要输入csr模块作为一个可读状态寄存器
    的头像 发表于 03-11 15:56 505次阅读
    介绍一个IC设计错误案例:可读debug寄存器错误<b class='flag-5'>跨</b><b class='flag-5'>时钟</b>

    联合电子推出面向融合的新一代整车运动域控制器VCU8.6平台

    3月3日,联合电子官微发布,推出面向融合的新一代整车运动域控制器VCU8.6平台。
    的头像 发表于 03-04 09:52 2048次阅读
    联合电子推出面向<b class='flag-5'>跨</b><b class='flag-5'>域</b>融合的新一代整车运动域控制器VCU8.6平台

    芯片时钟设计案例简析(一)

    最经典的2DFF 1-bit同步器如下,下图结构通常用于单bit控制信号的异步处理
    的头像 发表于 01-18 09:24 1047次阅读
    芯片<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>设计案例简析(一)

    如何生成关于时钟同步功能的DTC?

    如何生成关于时钟同步功能的DTC? 时钟同步功能是指在一个系统内的多个时钟源进行同步,确保它们的时间保持一致。这在许多实时系统中都非常重要,特别是在需要多个设备或组件协同工作的场景中。
    的头像 发表于 01-16 15:10 604次阅读

    时钟的解决方案

    在很久之前便陆续谈过亚稳态,FIFO,复位的设计。本次亦安做一个简单的总结,从宏观上给大家展示时钟的解决方案。
    的头像 发表于 01-08 09:42 903次阅读
    <b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>的解决方案

    如何处理时钟这些基础问题

    对于数字设计人员来讲,只要信号从一个时钟跨越到另一个时钟,那么就可能发生亚稳态。我们称为“时钟
    发表于 01-08 09:39 633次阅读
    如何处理<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>这些基础问题