verilog glitch_free两个时钟切换电路

本文介绍了如何设计一个无毛刺的时钟切换电路,避免在时钟切换过程中产生glitch。通过4个步骤确保在时钟低电平时切换,从而消除可能的错误影响。文中给出了RTL级代码并展示了仿真结果,后续将探讨3个时钟的切换问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.glitch free的两个时钟切换电路

参考openMSP430 ipcore中的时钟切换电路

  • 切换电路首先想到就是多路选择器,切换时钟在不考虑glitch的通常写法会是:
    assign clk_o = sel ? clk1:clk2;
    但是由于sel,clk1,clk2 都是不同步的。在实现任意时刻切换时钟时候,就有一定的一定的概率产生glitch,一旦glitch被采用会对结果照成影响。
    时钟切换逻辑避免产生glitch的原理
    不管关闭还是使能,都必须保证当前时钟或目标时钟的使能信号的跳变都分别在时钟为低电平期间进行的,防止产生时钟glitch。
    因此通常需要进行4个步骤:
    1.打开选择信号。2.在clk1为低电平时关掉clk1的选择端。3.在clk2为低电平时打开clk2的选择端。4.完成切换。
    因此在进行时钟切换通常需要考虑两个问题。
  • 跨时钟域的同步问题。
  • 同步好的切换信号如何处理与时钟信号,才能消除glitch
    在这里插入图片描述
    代码
`timescale 1ns/1ps
module glitch_free(
						input clk0,
						input clk1,
						input reset,
						input sel,
						output clko
					);
	reg dff01,dff02;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值