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跨时钟重汇聚问题将不会存在。




审核编辑:刘清

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

    关注

    30

    文章

    5028

    浏览量

    117719
  • IC设计
    +关注

    关注

    37

    文章

    1264

    浏览量

    102955
  • PHY
    PHY
    +关注

    关注

    2

    文章

    264

    浏览量

    51005
  • CLK
    CLK
    +关注

    关注

    0

    文章

    122

    浏览量

    16908

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

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

收藏 人收藏

    评论

    相关推荐

    请问AD7799状态寄存器读取错误,数据位与错误位关系?

    ,状态寄存器读数有两种状态8A(1000 1010)与4A(0100 1010),按照官方DataSheet,第位判断数据准备状态,第二位是错误位,8A数据没有准备好,未报错,4A数据准备好了,但是提醒报错,是怎么回事?还是数
    发表于 07-27 06:47

    如何处理使用另一个寄存器引用寄存器中的位的错误

    数据 输出reg [7:0] spi_out, 输出reg [(NUM_REG)* 8 - 1:0]寄存器);spi_out我以为这是允许的......我错过了什么?有没有更好的方法来做到这点?我看到的唯选择是
    发表于 07-31 07:23

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

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

    如何处理好FPGA设计中时钟域问题?

    第二级寄存器的延拍,所以意义是不大的。02方法二:异步双口 RAM处理多 bit 数据的时钟域,般采用异步双口 RAM。假设我们现在有
    发表于 09-22 10:24

    SysTick寄存器介绍

    设置系统时钟SYSCLK 等于72M。当重装载数值寄存器的值递减到0 的时候,系统定时就产生次中断,以此循环往复。SysTick 寄存器
    发表于 01-21 11:37

    256bits用户密钥寄存器, 是不是普通的可读寄存器

    看了说明书,有地方不是很明白 256bits 用户密钥寄存器, 是不是普通的可读寄存器?如果哪样的话理论上解密者跟据原代码,可以找到密
    发表于 05-26 07:37

    AD7799状态寄存器读取错误是怎么回事?

    ,状态寄存器读数有两种状态8A(1000 1010)与4A(0100 1010),按照官方DataSheet,第位判断数据准备状态,第二位是错误位,8A数据没有准备好,未报错,4A数据准备好了,但是提醒报错,是怎么回事?还是数
    发表于 12-08 06:52

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

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

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

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

    51单片机的寄存器组详细介绍和使用说明

    大家都知道51单片机有的寄存器R0-R7共有四组。最近1年来,我在与新手朋友交流时发现,很多朋友对寄存器组的使用时经常出现问题。虽然这并不是多难的问题,但如果出现错误,也会造成很严重的后果。首先
    发表于 07-05 17:41 6次下载
    51单片机的<b class='flag-5'>寄存器</b>组详细<b class='flag-5'>介绍</b>和使用说明

    Debug】串口发送数据时部分字节被拉长,出现帧错误,原因MCU进入低功耗模式导致串口时钟停了!...

    Debug】串口发送数据时部分字节被拉长,出现帧错误,原因MCU进入低功耗模式导致串口时钟停了!...
    发表于 12-07 20:21 7次下载
    【<b class='flag-5'>Debug</b>】串口发送数据时部分字节被拉长,出现帧<b class='flag-5'>错误</b>,原因MCU进入低功耗模式导致串口<b class='flag-5'>时钟</b>停了!...

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

    每个 RPU 处理器都有 1 个 DBGDRAR 寄存器,其中包含 CoreSight 根 ROM 表的地址。但读取此寄存器时会返回错误的地址 0xfe800003。正确的返回地址应为 0xf0800003。尝试访问包含
    的头像 发表于 08-02 15:57 752次阅读

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

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

    你一定要懂的CDC错误

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

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

    STM32 CAN接收/发送错误寄存器如何清零?  CAN总线是一种常用的串行总线,其具有高可靠性、高速率、容错能力强等特点,广泛应用于汽车电子、制造业自动化、工程控制等领域。在CAN总线的标准
    的头像 发表于 09-14 14:22 2798次阅读