【前端设计】寄存器与主功能电路为异步时钟时的功能影响探索

简介: 【前端设计】寄存器与主功能电路为异步时钟时的功能影响探索


前言

今天想探究一个小问题,就是寄存器的时钟如果与主时钟是异步时钟,那么会不会对主功能有影响。当然,这样做肯定不是合理的,我知道的比较多的是寄存器使用降频到同源同相的时钟,或者使用主时钟再对寄存器读取时钟做跨异步。


不过我想了几天总是感觉如果使用异步时钟,是否也可能对功能影响有限?


场景

主要想探究三个场景:RW型配置寄存器、RO型状态记录寄存器和W1C型上报寄存器。


RW型配置寄存器

对于软件配置的RW型寄存器,配置时钟为apb_clk(假定使用apb总线配置,令其为125M),工作时钟为work_clk(令其为800M)。那么在寄存器配置后的几个时钟周期内,内部工作电路看到的值是不定的,最终会在几个周期后获取的正确的配置值,rtl内关联逻辑也会在几个周期后恢复正确:



那么如果rtl对这个值以及这个值的变化非常敏感,或者在电路工作中频繁的配置,则这样会引起电路内部的功能问题。而如果工作的流程是先配置寄存器,稳定后再启动电路工作,并且在工作过程中不会改配,则配置项可以视为准静态信号,此时即使配置寄存器在异步时钟域,也不会影响主电路动作。


举个例子,寄存器配置启动信号,电路中获取配置的沿跳变开始启动,这种场景下即使晚几拍开始工作实际也是没有影响的,而且启动配置一旦稳定为1后也不会随意跳变为0了,因此电路时可以正确工作:



因此我个人认为,如果对于一个系统,配置项在工作之前稳定,在工作过程中可视为准静态信号的话,寄存器处于异步时钟域是可以接受的。


RO型状态记录寄存器

状态寄存器一般用来记录内部的busy、cnt、接口等状态信息,主要用于在出现bug时“甩锅”。比如系统卡死了,我一查自己的模块ostd_cnt都是0,接口和内部的valid都是0,那就可以拍胸脯说:不是卡死在我这的!因此这一类记录寄存器基本为电平上报(即使为脉冲,在高频工作低频寄存器的场景下也会展宽),简单的电路如下图:



对于这种情况,同样的如果软件不需要实时的获取最新最准确的值,且在读取时(比如挂死的场景)这些状态已经稳定在某个值一段时间,那么应该说直接异步采样是不会有问题的,最后总是能够读取到需要的值。如果软件需要实时准确值,那么这样会导致状态读取错误。


W1C型上报寄存器

w1c型寄存器一般用来上报中断、上报完成等软件可以清掉的状态,这类状态一般在电路内部以脉冲的方式上报(总不能中断一直起,清掉了立马又上报吧,致命中断除外)。因此如果电路在高频工作,状态上报时是需要脉冲展宽的,当然如果以电平的方式上报则没有这个问题。那么还是刚刚的思考,脉冲展宽之后虽然有亚稳态的影响会导致寄存器在几拍之后才会采样的正确的值,但是只要正确的值能够被采样到,就可以软件读取到正确的值。


在这里我又多想了一些,w1c型寄存器提供给rtl的接口都是两个(以中断为例):irq_in和irq_wen。如果irq_wen和irq_in做相同的展宽(我印象中需要展宽到慢时钟两个周期),但是apb_clk在信号下降时采样到了亚稳态,irq_wen恢复到了1而irq_in恢复到了0,那是否会使得最终寄存器中保存的值为错误值?换而言之,是否需要将irq_in做更高的展宽确保一定最终上报正确的值呢?


以上就是这两天我的思考内容,并非来自工作经验因此结论很可能是错误的,请大家不吝勘误。


相关文章
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
850 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
存储 前端开发 JavaScript
调用DeepSeek API增强版纯前端实现方案,支持文件上传和内容解析功能
本方案基于DeepSeek API增强版,提供纯前端实现的文件上传与内容解析功能。通过HTML和JavaScript,用户可选择文件并调用API完成上传及解析操作。方案支持多种文件格式(如PDF、TXT、DOCX),具备简化架构、提高响应速度和增强安全性等优势。示例代码展示了文件上传、内容解析及结果展示的完整流程,适合快速构建高效Web应用。开发者可根据需求扩展功能,满足多样化场景要求。
4496 64
|
存储 开发框架 前端开发
循序渐进VUE+Element 前端应用开发(18)--- 功能点管理及权限控制
循序渐进VUE+Element 前端应用开发(18)--- 功能点管理及权限控制
|
前端开发 JavaScript API
前端:事件循环/异步
前端开发中的事件循环和异步处理是核心机制,用于管理任务执行、性能优化及响应用户操作,确保网页流畅运行。事件循环负责调度任务,而异步则通过回调、Promise等实现非阻塞操作。
|
JSON 前端开发 搜索推荐
惊!这些前端技术竟然能让你的网站实现个性化推荐功能!
【10月更文挑战第30天】随着互联网技术的发展,个性化推荐已成为提升用户体验的重要手段。前端技术如JavaScript通过捕获用户行为数据、实时更新推荐结果等方式,在实现个性化推荐中扮演关键角色。本文将深入解析这些技术,并通过示例代码展示其实际应用。
927 4
|
移动开发 前端开发 JavaScript
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
3029 1
|
前端开发 JavaScript Shell
深入解析前端构建利器:webpack核心概念与基本功能全览
深入解析前端构建利器:webpack核心概念与基本功能全览—
572 1
|
设计模式 前端开发 JavaScript
前端编程的异步解决方案有哪些?
本文首发于微信公众号“前端徐徐”,介绍了异步编程的背景和几种常见方案,包括回调、事件监听、发布订阅、Promise、Generator、async/await和响应式编程。每种方案都有详细的例子和优缺点分析,帮助开发者根据具体需求选择最合适的异步编程方式。
576 1
|
前端开发 开发者
在前端开发中,webpack 作为一个强大的模块打包工具,为我们提供了丰富的功能和扩展性
【9月更文挑战第1天】在前端开发中,Webpack 作为强大的模块打包工具,提供了丰富的功能和扩展性。本文重点介绍 DefinePlugin 插件,详细探讨其原理、功能及实际应用。DefinePlugin 可在编译过程中动态定义全局变量,适用于环境变量配置、动态加载资源、接口地址配置等场景,有助于提升代码质量和开发效率。通过具体配置示例和注意事项,帮助开发者更好地利用此插件优化项目。
320 13
|
前端开发 JavaScript
前端中的“+”连接符,居然有鲜为人知的强大功能!
【10月更文挑战第9天】前端中的“+”连接符,居然有鲜为人知的强大功能!
384 0
前端中的“+”连接符,居然有鲜为人知的强大功能!

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1427
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    707
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    564
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    571
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    658
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    838
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1638
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    393
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1356
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    669