FPGA(Verilog)时钟无缝切换设计与验证


时钟切换基本模型,本文围绕“ 基本组合电路切换、解决前毛刺切换、解决后毛刺切换”三方面完成时钟无缝切换。

在这里插入图片描述

一、组合逻辑 时钟切换

组合逻辑切换,本质就是二选一多路器

如下图,CLK_SEL 0与1分别控制时钟CLK_A CLK_B输出。
组合逻辑输出只跟当前输入状态有关,CLK_SEL异步不可控导致输出毛刺或不可控亚稳态。

在这里插入图片描述

二、时序逻辑 时钟切换

时序逻辑能够去除亚稳态以及毛刺,那么,我们把CLK_SEL同步到对应时钟时域,看能否解决问题。

1.代码部分

module glitch_free(
	CLK_A,
	CLK_B,
	RST_n,
	CLK_SEL,
	CLK_OUT
    );
	input CLK_A;
	input CLK_B;
	input RST_n;
	input CLK_SEL;
	
	output CLK_OUT;
	//sync clk_sel to clka and clkb
	reg sync_sel_a;
	reg sync_sel_b;
always @(posedge CLK_A or negedge RST_n)
	if(!RST_n)
		sync_sel_a<=1'b1;
	else
		sync_sel_a<=CLK_SEL;

//sync clk_sel to clka and clkb

always @(posedge CLK_B or negedge RST_n)
	if(!RST_n)
		sync_sel_b<=1'b0;
	else
		sync_sel_b<=~CLK_SEL;

assign CLK_OUT
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值