数字IC秋招手撕代码(五)脉冲检测

数字IC秋招手撕代码(五)脉冲检测

🔈声明:
🔑未经作者允许,禁止转载
🚩推荐一个IC、FPGA新手入门的好网站:👉快 点 击 进 入 学 习 吧👈



题目

用verilog实现快时钟域到慢时钟域的脉冲检测电路

分析

如果是慢时钟到快时钟,或者是同时钟域的情况下,检测脉冲用两级同步器加一个组合逻辑即可实现。
但是快时钟到慢时钟,可能会出现慢时钟检测不到脉冲,从而丢失数据。所以要在两级同步器加一级以脉冲信号作为clk的触发器,并在脉冲检测完后复位第一级。

但是,如果两次脉冲出现的太近该怎么办呢? 暂时没有方案

代码

module Sync_pluse(
	input		pulse_in,
	input		clk,
	input		rstn,
	output		pulse_out
)

reg		pulse_tmp;							//展宽信号
reg		over;								//展宽撤销信号
reg		pulse_dly0,pulse_dly1;

assign pulse_out = pulse_dly0 & !pulse_dly1;
assign over = !pulse_out;

always @(posedge clk)begin
	if(!rstn)
		pulse_tmp <= 1'b0;
	else if(pulse_in)
		pulse_tmp <= 1'b1;
	else if(over)
		pulse_tmp <= 1'b0;
end

always @(posedge clk)begin
	if(!rstn)begin
		pulse_dly0 <= 1'b0;
		pulse_dly1 <= 1'b0;
	end
	else begin
		pulse_dly0 <= pulse_in;
		pulse_dly1 <= pulse_dly0;
	end
end


  • 之前一直没思考到,如果脉冲来的很近用什么办法解决,今天突然看到,可以用异步复位,同步释放的思想来解决。
  • 异步输入作为第一个DFF的clk端,在用两级同步器缓冲,如果同步后的clk2 domain能检测到这个脉冲说明可以对DFF1复位。
  • 但是这么做会引入不可预知的毛刺错误,且消耗了更多的时钟资源。

在这里插入图片描述



最后给大家安利一个好网站:
  Verilog的学习还是要多以练习为主,想要练习Verilog的同学,推荐可以去nowcoder看看,他们现在的题库内容很丰富,属于国内做的很好的了,而且是课程+刷题+面经+求职+讨论区分享一站式求职学习网站,最最最重要的里面的资源全部免费




  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值