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

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

3天内不再提示

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

ruikundianzi 来源:IC芯视界 2024-03-11 15:56 次阅读

本文将介绍一个跨时钟错误的案例如图所示,phy_status作为一个多bit的phy_clk时钟域的信号,需要输入csr模块作为一个可读状态寄存器,目的是方便debug,而csr模块是sys_clk时钟域,此时phy_status需要进行跨时钟,得到sys_clk时钟域的phy_status_sync送到csr模块。

phy_rst_n是由上电复位释放模块产生的phy_clk时钟域的复位信号,在上电处理流程的初期phy_rst_n一直是0,处于复位状态,上电解复位流程进行到一定阶段后才会将phy_rst_n置为1。

74d5c5e4-df7c-11ee-a297-92fbcf53809c.png          

ip_bus_sync跨时钟模块接口信号如下: 本模块的特点就是只有输入数据,没有vld信号。

phy_clk作为源时钟(i_src_clk),而phy_rst_n作为源时钟域复位信号(i_src_rst_n)。

sys_clk作为目的时钟(i_dst_clk),而sys_rst_n作为源时钟域复位信号(i_dst_rst_n)。

NOTE: 需要注意的是在在源时钟复位phy_rst_n为0时,输出的o_dst_dout(phy_status_sync)是跨时钟模块Ip_bus_sync的复位值(每bit都是0)

信号名称 信号IO 位宽 说明
i_src_clk in 1 源端时钟
i_src_rst_n in 1 源时钟域的复位信号,0表示复位。根据代码实现不同,可以是同步复位,也可以是异步复位
i_src_din in 1 源时钟域bus信号
i_dst_clk in 1 目的端时钟
i_dst_rst_n in 1 目的时钟域的复位信号,0表示复位。根据代码实现不同,可以是同步复位,也可以是异步复位
o_dst_dout out DATA_WDTH 已完成跨时钟的bus信号

错误设计:设计中将phy_status作为一个可读状态寄存器,本意是想在上电解复位流程出现异常的时候,能够读出phy_status的数值,从而进行分析上电流程异常的原因。而在部分场景中,一旦phy_rst_n没有从0跳变成1时,此时phy_status_sync为0,无法获取phy_status的真实数值 。

正确设计:本文场景中应该采用无复位的跨时钟模块进行实现,如果存在可用的无复位多bit跨时钟模块,可以直接采用,否则可以考虑采用多个无复位的bit跨时钟模块实现。虽然采用多个无复位的bit跨时钟模块实现多bit跨时钟可能存在重汇聚问题,但是此场景中,一旦出现上电解复位异常,phy_status信号通常是处于稳定状态,多bit跨时钟重汇聚问题将不会存在。




审核编辑:刘清

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

    关注

    31

    文章

    5363

    浏览量

    121034
  • IC设计
    +关注

    关注

    38

    文章

    1302

    浏览量

    104226
  • PHY
    PHY
    +关注

    关注

    2

    文章

    305

    浏览量

    51847
  • CLK
    CLK
    +关注

    关注

    0

    文章

    127

    浏览量

    17226

原文标题:IC设计错误案例:可读debug寄存器错误跨时钟

文章出处:【微信号:IP与SoC设计,微信公众号:IP与SoC设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    错误时钟偏移计算导致错误时序收敛的解决方案

    描述 本设计咨询主要介绍错误时钟偏移计算导致错误时序收敛的问题。 出现问题的情况: 这可能
    的头像 发表于 12-24 11:16 6092次阅读

    时钟域为什么要双寄存器同步

    出现了题目中的时钟域的同步问题?怎么办?十年不变的老难题。为了获取稳定可靠的异步时钟域送来的信号,种经典的处理方式就是双寄存器同步处理(
    发表于 08-20 11:32

    寄存器与移位寄存器

    寄存器与移位寄存器介绍寄存器原理和移位寄存器的原理及实现。
    发表于 05-20 11:47 0次下载

    GD32硬件中断错误寄存器及相应位功能

    本文描述的是GD32硬件中断错误的所有寄存器以及相应的位功能。
    发表于 08-28 15:32 10次下载

    主存和寄存器的区别介绍

    本文开始介绍了主存的概念和频率及主存的大小,其次介绍寄存器工作原理与寄存器用途,最后介绍了主存和寄存器
    发表于 04-11 14:27 2.3w次阅读

    PCIe总线的三种错误报告方式

    PCIe设备的配置空间中的状态与控制寄存器如上图所示,通过这些寄存器可以使能(或禁止)通过错误消息(Error Message)发送错误报告、查询
    的头像 发表于 08-23 10:14 1.4w次阅读
    PCIe总线的三种<b class='flag-5'>错误</b>报告方式

    ARM Cortex-M 系列 MCU 错误追踪库 --- CmBacktrace

    Fault, Memory Management Fault, Bus Fault, Usage Fault, Debug Fault)故障原因 自动诊断 :可在故障发生时,自动分析出故障的原因,定位发生故障的代码位置,而无需再手动分析繁杂的故障寄存器;输出
    发表于 11-30 20:21 0次下载
    ARM Cortex-M 系列 MCU <b class='flag-5'>错误</b>追踪库 --- CmBacktrace

    STM32学习笔记(2)——寄存器

    STM32 第二天寄存器寄存器功能:寄存器的功能是存储二进制代码,它是由具有存储功能的触发组合起来构成的。
    发表于 12-08 17:36 18次下载
    STM32学习笔记(2)——<b class='flag-5'>寄存器</b>

    如何在VHDL中实现简单的寄存器

    存储的位数上有所不同,具体取决于系统的配置。在本教程中,我们将学习如何在 VHDL 中实现简单的寄存器
    发表于 07-29 16:48 4727次阅读
    如何在VHDL中实现<b class='flag-5'>一</b><b class='flag-5'>个</b>简单的<b class='flag-5'>寄存器</b>

    为调试寄存器 DBGDRAR 设置的值错误

    每个 RPU 处理都有 1 DBGDRAR 寄存器,其中包含 CoreSight 根 ROM 表的地址。但读取此寄存器时会返回错误的地
    的头像 发表于 08-02 15:57 997次阅读

    Efinity在Debug时会出现UUID mismatch错误案例分享

    Efinity在Debug时会出现UUID mismatch错误。很多刚开始使用的人经常遇到。
    的头像 发表于 02-20 10:56 1916次阅读
    Efinity在<b class='flag-5'>Debug</b>时会出现UUID mismatch<b class='flag-5'>错误</b>案例分享

    虹科干货 | 带你全面认识“CAN总线错误”()——CAN总线错误错误

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误
    的头像 发表于 05-27 10:39 4685次阅读
    虹科干货 | 带你全面认识“CAN总线<b class='flag-5'>错误</b>”(<b class='flag-5'>一</b>)——CAN总线<b class='flag-5'>错误</b>与<b class='flag-5'>错误</b>帧

    定要懂的CDC错误

    本文描述的时钟错误在特定场景下,有些是允许的,甚至有些是正常设计。因此IC设计者想要确认时钟
    的头像 发表于 07-24 17:00 3733次阅读
    你<b class='flag-5'>一</b>定要懂的CDC<b class='flag-5'>错误</b>

    CAN总线错误分析与解决 CAN节点发送错误不成功是什么原因

    CAN总线状态直接进入了BUS OFF状态,这意味着错误计数已经超限,查看CPU收发寄存器的收发错误计数显示发送错误计数TEC达到248, 接收错误
    发表于 08-01 14:37 5253次阅读
    CAN总线<b class='flag-5'>错误</b>分析与解决 CAN节点发送<b class='flag-5'>错误</b>不成功是什么原因

    STM32 CAN接收/发送错误寄存器如何清零?

    ,每一个节点都有CAN控制,CAN控制通过内部寄存器和接口与CAN总线连接。其中,在CA
    的头像 发表于 09-14 14:22 5235次阅读