跨时钟域处理方法(一)——打拍

这篇具有很好参考价值的文章主要介绍了跨时钟域处理方法(一)——打拍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、说明

        处理跨时钟域的数据可以分为单bit数据和多bit数据,而打拍的方法主要常见于处理单bit数据的跨时钟域问题。

        打拍的本质是通过添加寄存器,对输入的数据进行延拍。其主要目标是消除亚稳态的影响。常见的是打2拍,也就是添加2级寄存器。

二、举例

        现实中,假设我们存在2个时钟域,一个是工作在50mhz时钟(一个时钟周期是20ns),一个工作在125mhz时钟(一个时钟周期是8ns)。现在50mhz时钟下需要读数据,产生了一个读使能信号rd_en,持续2个时钟(也就是40ns)。那么我们的打拍时序是什么样的呢?

寄存器打两拍,逻辑设计,fpga开发

 从图中可以看成,rd_d1是打一拍,rd_d2是打二拍,rd_d3是打三拍,rd_d4是打4拍。而我们通过rd_d3 & ~rd_d4,在第三拍的时候,产生一个内部使用的读请求脉冲信号rd_pl。

三、消除亚稳态的原理

        如果我们在时钟沿边沿进行相应数据的采集,由于数据的跳变不是瞬时发生的,我们采集到的数据是不确定的。通过打拍,我们在第二拍采集时,数据已经处在一个稳定的状态。文章来源地址https://www.toymoban.com/news/detail-591283.html

到了这里,关于跨时钟域处理方法(一)——打拍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【裸机开发】指定外设根时钟配置实验(三)—— 寄存器分析篇(PERCLK_CLK_ROOT、IPG_CLK_ROOT)

    前面已经完成了 PLL1 和 8 路 PFD 的初始化,至于其他 PLL 路,等实际需要的时候再初始化也不迟。接下来我们就挑选几个具体的外设时钟进行配置。 假设我们要初始化下面两个根时钟 PERCLK_CLK_ROOT 、 IPG_CLK_ROOT 。(中途可能还涉及到根时钟 AHB_CLK_ROOT ) 目录 一、路线选择 1、

    2024年02月08日
    浏览(31)
  • STM32 寄存器配置笔记——USART配置中断接收乒乓缓存处理

           本文主要介绍如何配置USART接收中断,使用乒乓缓存的设计接收数据并将其回显在PC 串口工具上。以stm32f10为例,配置USART1 9600波特率。具体配置参考上一章节STM32 寄存器配置笔记——USART配置 打印。         乒乓缓存的设计应用场景:当后面的处理单元在工作期间,

    2024年02月20日
    浏览(41)
  • 嵌入式中详解 ARM 几个常见的寄存器方法

    大家好,今天来聊聊对于ARM几个特殊寄存器的理解,FP、SP和LR。 1、介绍 FP:栈顶指针,指向一个栈帧的顶部,当函数发生跳转时,会记录当时的栈的起始位置。 SP:栈指针(也称为栈底指针),指向栈当前的位置, LR:链接寄存器,保存函数返回的地址。 关于gcc就有一个关

    2024年02月20日
    浏览(31)
  • [ARM 汇编]高级部分—系统控制协处理器—3.2.3 控制寄存器的读写操作

    在这一部分,我们将学习如何使用ARM汇编指令在系统控制协处理器(CP15)的控制寄存器上执行读写操作。我们将通过实例来讲解如何使用MCR(Move to Coprocessor Register)和MRC(Move from Coprocessor Register)指令进行读写操作。 MCR指令 MCR指令用于将ARM内核寄存器的值写入协处理器寄存

    2024年02月11日
    浏览(39)
  • 跨时钟域处理方法(一)——打拍

            处理跨时钟域的数据可以分为单bit数据和多bit数据,而打拍的方法主要常见于处理单bit数据的跨时钟域问题。         打拍的本质是通过添加寄存器,对输入的数据进行延拍。其主要目标是消除亚稳态的影响。常见的是打2拍,也就是添加2级寄存器。         现

    2024年02月16日
    浏览(32)
  • STM32 i2c读写寄存器地址8位,16位的方法

    一般常用的寄存器地址是8位的,遇到一个寄存器地址为16为的器件。总结一下代码编写。 寄存器地址16位的为SY103,寄存器地址为8位的为LT7911. 测试代码 lt7911该位置寄存器参考手册 sy103该位置寄存器参考手册 仿真测试 可以看到把值写入到相对应的寄存器内,并且读出。

    2024年01月19日
    浏览(51)
  • stm32的BRR寄存器和BSRR寄存器

    1、BRR---   bit   RESET(置0)  register   //高16位无,低16位置1为0,不能写1 2 、BSRR---   bit   SET(设置1或0)       register   //低16位设置1为0 BSRR:用于低16位的作用是让指定的IO口置1;而高16位的作用是让指定的IO口置0。  

    2024年02月11日
    浏览(35)
  • 【汇编中的寄存器分类与不同寄存器的用途】

    寄存器分类 在计算机体系结构中,8086CPU,寄存器可以分为以下几类: 1. 通用寄存器: 通用寄存器是用于存储数据和执行算术运算的寄存器。在 x86 架构中,这些通用寄存器通常包括 AX、BX、CX、DX、SI、DI、BP 和 SP。其中,AX、BX、CX 和 DX 寄存器可以分别作为累加器(accumulat

    2024年02月09日
    浏览(41)
  • 寄存器内存读写指令(二) —— 多寄存器读写 LDM / STM

    有的时候,CPU可能会遇到 a++; b++; c++,这个时候为了提升效率,CPU可能会一次将多个寄存器里的变量保存到内存中。这个时候之前介绍的 LDR / STR 指令虽然也能实现,但只能操作一个寄存器的读写。 因此,考虑到这点,下面介绍多个寄存器的读写指令 将 多个寄存器 的数据写

    2024年02月07日
    浏览(48)
  • 【正点原子STM32】RTC实时时钟(RTC方案、BCD码、时间戳、RTC相关寄存器和HAL库驱动、RTC基本配置步骤、RTC基本驱动步骤、时间设置和读取、RTC闹钟配置和RTC周期性自动唤醒配置)

    一、RTC简介 二、STM32 RTC框图介绍 2.1、STM32 F1 RTC结构框图 2.2、STM32 F4 / F7 / H7 RTC结构框图 三、RTC相关寄存器介绍 3.1、RTC基本配置步骤 3.2、RTC相关寄存器(F1) 3.3、RTC相关寄存器(F4 / F7 / H7) 四、RTC相关HAL库驱动介绍 4.1、RTC相关HAL库驱动(F1) 4.2、RTC相关HAL库驱动(F4 / F7 /

    2024年03月27日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包