D-012 时钟硬件电路设计

news2024/9/22 15:37:09

时钟硬件电路设计

  • 1 简介
  • 2 晶振电路中电容的选择
  • 3 时钟电路设计要点
  • 4 晶振选型
  • 5 电路实战

1 简介

晶振时数字电路的心脏,数字电路需要一个稳定的工作时钟信号,时钟电路时硬件电路设计中不可或缺的一个重要内容。晶振一般指晶体振荡器。而在封装内部添加 IC 组成振荡电路的晶体元件称为晶体振荡器。其产品一般用金属外壳、玻璃壳、陶瓷或塑料封装。

晶振工作的原理:

石英晶体振荡器是利用石英晶体的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片,在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振。若在石英晶体的两个电极上加一电场,晶片就会产生机械变形。反之,若在晶片的两侧施加机械压力,则在晶片相应的方向上将产生电场,这种物理现象称为压电效应。

晶振的分类:

晶振可以分为有源晶振(crystal)无源晶振(oscillator)

内部时钟与外部时钟:

时钟描述
内部时钟单片机的 XTAL1 和 XTAL2 内部有一片内振荡器结构,但仍需要在XTAL1 和 XTAL2 两端连接一个晶振和两个电容才能组成时钟电路,这种使用晶振配合产生信号的方法是内部时钟方式。
外部时钟单片机还可以工作在外部时钟方式下,外部时钟方式较为简单,可直接向单片机 XTAL1 引脚输入时钟信号方波,而 XTAL2 管脚悬空。

外部时钟方式相对内部时钟较为方便,大多数单片机系统还是选择内部时钟方式。这是因为单片机的内部振荡器能与晶振、电容构成一个性能非常好的时钟信号源,而如果要产生这样的信号作为外部时钟信号输入到单片机中,则需要添加的器件远不止一个晶振和两个电容这么简单。

2 晶振电路中电容的选择

  • 因为每一种晶振都有各自的特性,所以按制造厂商所提供的数值选择外部元器件。

  • 在许可范围内,C1,C2 值越低越好。C 值偏大虽有利于振荡器的稳定,但将会增加起振时间。

不同厂家生产的石英晶体谐振器和陶瓷谐振器的特性和品质都存在较大差异,在选用,要了解该型号振荡器的关键指标,如等效电阻,厂家建议负载电容,频率偏差等。在实际电路中,也可以通过示波器观察振荡波形来判断振荡器是否工作在状态。

3 时钟电路设计要点

顶层设计模块时钟选择:

时钟大小一把都说时时钟频率或者时钟周期,

1、接口类

  • 有些标准接口,协议就订好了时钟频率,比如Ethernet、USB、UART等;
  • 有些接口,时钟频率没有限定,就由需求来确定时钟频率,比如SPI、IIC等。

2、系统内部

比如CPU、总线、Memory等,关乎系统性能,希望吸能高,时钟频率就要高。做到尽量低,尽量少

  • 尽量低是指做工作频率可以尽可能设定得比较低,比满足需要的时钟频率略高或者相等。这样可以提高系统的稳定性降低功耗,时许也会更加宽松。
  • 尽量少是指时钟域的数量尽量少。不同模块尽量使用相同的时钟频率,这样可以有效减少跨时钟域的情况发生。Xilinx 的 FPGA 的时钟信号会使用特定的时钟资源,使用过多的时钟频率会导致布线困难。

3、时钟设计

一般是由FPGA板上提供源时钟,使用FPGA内部的MMCM(Mixed-Model Clock Manager—混合模式时钟管理器,实现了最低的抖动和抖动滤波,为高性能的 FPGA 设计提供更高性能的时钟管理功能)。等倍频得到系统所需要的时钟,比较简单的设计中,源时钟直接驱动逻辑电路也是可以的。为方便约束,时钟逻辑最好都在一个module中,包括MMCM、BUFG、BUFGMUX、clock Gating、除频等。时钟约束不用设计,需要设计的时系统的时钟结构,时钟约束时使用综合工具所支持的语法将时钟结构描述出来,以便工具进行综合。

FPGA设计要点:时钟树

对于FPGA来说,要尽可能避免异步设计,尽可能采用同步设计。同步设计的第一关键就是时钟树。具体的设计细则如下:

  • 尽可能使用单一时钟。

  • 如果有多个时钟域,一定要仔细划分。

  • 跨时钟域的信号一定要做同步处理。

    对于控制信号,可以采用双采样;

    对于数据信号,可以采用异步FIFO。

    注意:异步FIFO不是万能的,一个异步FIFO也只能解决一定范围内的频差问题。

  • 尽可能将FPGA内部的PLL、DLL利用起来。

  • 对于特殊的IO接口,需要仔细计算

  • Tsu(setup time)、Tco(clock output delay)、Th(hold time),并利用 PLL、DLL、DDIO、管脚可设置的 delay

    等多种工具来实现。简单对管脚进行 Tsu、Tco、Th 的约束往往是不行的。

4 晶振选型

  • 频率选择:频率越高、价格越高。频率越高,频差越大。综合考虑,一般工程师会选用频率低但稳定的晶振,自己做倍频电路。(总之,频率时根据需求选择,并不是频率越大越好。)
  • 频率稳定度:ppm。
  • 电源电压:常用的有1.8V、2.5V、3.3V、5V等。
  • 4输出:根据需要采用不同输出。(HCMOS,TTL,PECL,LVDS,LVHCMOS 等)每种输出类型都有它的独特波形特性和用途。对称性、上升和下降时间以及逻辑电平对某些应用来说也有具体要求。

5 电路实战

若直接将晶振接入单片机晶振引脚,会发现系统工作不稳定,这是因为晶振起振的一瞬间会产生一些电感,为了消除这个电感所带来的干扰,可以在此晶振两端分别加上一个电容,电容的选取需要无极性的,另一端需要共地。根据选取的晶振大小决定电容值,通常电容可在 10-33PF 值范围内选取。

有源晶振设计
在这里插入图片描述

下一篇…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/32912.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Shell脚本学习指南(四)——管道的神奇魔力

文章目录前言从结构化文本文件中提取数据针对Web的结构型数据文字解谜好帮手单词列表标签列表前言 当你在UNIX里对付文字处理作业时,必须谨记一个UNIX工具使用原则就是:想清楚这个问题该如何划分为更简单的工作,每个部分是不是已有现成的工具…

Servlet上传文件

一、核心方法 1、HttpServletRequest类相关方法 方法描述Part getPart(String name)获取请求中给定name的文件Collection<Part> getParts()获取所有的文件 2、Part类相关方法 方法描述String getSubmittedFileName()获取文件名String getContentType()获取文件类型…

【Hack The Box】Linux练习-- Knife

HTB 学习笔记 【Hack The Box】Linux练习-- Knife &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#x1f36…

Docker——镜像操作命令

目录 一、镜像操作命令 1.1 镜像操作命令&#xff08;常用图示&#xff09; 1.2 查看docker帮助文档 1.3 案例&#xff1a;从DockerHub拉取Nginx镜像并查看 1.3.1 拉取 1.3.2 查看 1.4 案例&#xff1a;利用docker save将Nginx镜像导出磁盘&#xff0c;然后再通过load加…

一文讲清场景工程方法论及运维组织能力内化

随着业务支撑要求的变化&#xff0c;和技术架构的升级&#xff0c;运维管理建设模式跟之前也有了很大区别&#xff0c;场景上更注重主动工作、防范风险&#xff0c;而体系上更注重赋能组织、平台化、一体化。 因而&#xff0c;我们基于过去几年的大量客户实践&#xff0c;分享…

关于HashMap默认容量的选择

HashMap默认容量思量什么是容量容量与哈希hash的实现指定容量初始化扩容思考总结集合是Java开发日常开发中经常会使用到的&#xff0c;而作为一种典型的K-V结构的数据结构&#xff0c;HashMap对于Java开发者一定不陌生。 在日常开发中&#xff0c;经常会像如下方式创建一个Has…

使用IntelliJ IDEA创建Maven项目并上传项目至gitlab等远程仓库

步骤&#xff1a; 新建Maven项目&#xff0c;添加web.xml文件&#xff0c;只编写一个html页面用于测试&#xff0c;tomcat部署&#xff0c;配置git&#xff0c;上传到gitlab 1. Maven创建Web项目&#xff0c;命名为testci 2. 点击File —> Project Structure —>Facets—…

分享35个ASP源码,总有一款适合您

链接&#xff1a;https://pan.baidu.com/s/1t-Biw9LihpPwrwfJNLoTPw?pwdfxol 提取码&#xff1a;fxol 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c;大家下载后可以看到。 40400互联网上报名系统 医院会员注册系统…

132-142-Hadoop-Yarn-常用命令生产环境等配置

132-Hadoop-Yarn-常用命令生产环境等配置&#xff1a; Yarn常用命令&#xff1a; 1、启动集群 2、执行一个案例 [roothadoop102 hadoop-3.1.4]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar wordcount /input /ouput013、查看结果 yarn applic…

【云原生 | Kubernetes 实战】02、k8s 核心资源 Pod 介绍

目录 一、Pod是什么&#xff1f; 白话解释&#xff1a; 1.1 Pod如何管理多个容器&#xff1f; 1.1.2 Pod网络 1.1.3 Pod存储 1.2 之前学习过容器&#xff08;如docker&#xff09;&#xff0c;为什么还需要Pod&#xff1f; 1.2.1 代码自动发版更新 1.2.2 收集业务日志 …

【Kubernetes系列】工作负载资源之ReplicaSet

文章目录概述工作原理何时使用示例ReplicaSet的配置Pod 模板Pod 选择算符Replicas操作使用ReplicaSet删除 ReplicaSet 和它的 Pod只删除 ReplicaSet将 Pod 从 ReplicaSet 中隔离扩缩 ReplicaSetReplicaSet 的替代方案Deployment&#xff08;推荐&#xff09;裸 PodJobDaemonSet…

twitter推文采集案例

案例内容:twitter的推文采集。 通过游客身份获取twitter中用户的推文。 用户推文:只能翻22页,1页45条左右。 每个用户最多获取最近900条推文 (登录后),不登录区别也不大。 UserByScreenName 一般只有用户名的时候,需要先通过UserByScreenName接口获取 rest_id 用于后…

frp穿透你的远程桌面

缘起 作为一个程序员&#xff0c;经常会遇到需要使用远程桌面的述求&#xff08;居家办公、加班&#xff0c;你懂的&#xff09;。所以&#xff0c;在网上找一圈远程桌面解决方案之后&#xff0c;最终还是使用frp来穿透远程桌面。&#xff08;推荐使用&#xff09; 前提 需要…

计算机内功修炼:程序的机器级表示(C与汇编)

程序的机器级表示历史观点程序编码1. 机器级代码2. 代码示例数据格式访问信息1. 操作数指示符2. 数据传送指令算术与逻辑操作1. 加载有效地址2. 一元操作和二元操作3. 移位操作例子特殊的算术操作控制1. 条件码2. 访问条件码3. 跳转指令及编码4. 翻译条件分支5. 循环6. 条件传送…

[附源码]计算机毕业设计JAVA龙虎时代健身房管理系统

[附源码]计算机毕业设计JAVA龙虎时代健身房管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM …

JDBC数据库的连接

JDBC数据库的连接 简介&#xff1a;本文以简洁的篇幅带领大家快速入门java连接数据库&#xff0c;以查询为演示方案。 编写代码步骤 创建工程&#xff0c;导入驱动jar包 下载官网&#xff1a;https://downloads.mysql.com/archives/c-j/ 注册驱动 # mysql5的注册驱动的办法…

BEV感知PETR-V1和PETR-V2

参考代码&#xff1a;PETR 1. 概述 介绍&#xff1a;这两篇文章提出了以位置编码转换&#xff08;PETR&#xff0c;position embedding transformation&#xff09;为基础的BEV感知方法&#xff0c;按照方法中组件不同可将PETR划分为V1和V2版本。在V1版本中提出了基础版本的PE…

【C++】c++11学习-常用特性总结

前言 由于种种历史原因&#xff0c;C的C11版本更新带来了很多有用的东西~&#xff0c;在C98的基础语法体系之上&#xff0c;来看看C11新增了哪些实用的特性吧~ &#xff08;加把劲~~(๑╹◡╹)&#xff89;"""&#xff09; 目录 一、列表初始化 1.原始的列…

Mysql8.x版本主从加读写分离(二) mysql8.x读写分离

Mysql8.x版本主从加读写分离&#xff08;一&#xff09; mysql8.x主从_争取不加班&#xff01;的博客-CSDN博客 Mycata需要使用jdk 单独一台服务器部署的mycat 192.168.11.143 手动上传jdk的包 tar zxvf jdk-8u121-linux-x64.tar.gz -C /usr/local/ 解压 cd /usr/local…

c++ - 第14节 - c++中的多态

1. 多态的概念 多态的概念&#xff1a;通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同的状态。举个栗子&#xff1a;比如买票这个行为&#xff0c;当普通人买票时&#xff0c;是全价买票&#xff1b;学生…