「Verilog学习笔记」脉冲同步电路

专栏前言

本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网

复制代码
`timescale 1ns/1ns

module pulse_detect(
	input 				clk_fast	, 
	input 				clk_slow	,   
	input 				rst_n		,
	input				data_in		,

	output  		 	dataout
);
	reg data_level, data_level1, data_level2, data_level3 ; 

	// 脉冲信号转电平信号
	always @ (posedge clk_fast or negedge rst_n) begin 
		if (~rst_n) data_level <= 0 ; 
		else data_level <= data_in ? ~data_level : data_level ; // datain是一个单周期的脉冲信号,这样可以转换成高电平或者低电平信号。电平信号更容易做跨时钟域处理
	end

	// 电平信号打两拍再转为脉冲信号,跨时钟域传输,打拍减小亚稳态概率
	always @ (posedge clk_slow or negedge rst_n) begin 
		if (~rst_n) begin 
			data_level1 <= 0 ; 
			data_level2 <= 0 ; 
			data_level3 <= 0 ; 
		end
		else begin 
			data_level1 <= data_level ; 
			data_level2 <= data_level1 ;
			data_level3 <= data_level2 ; 
		end
	end

	// 前后两个时钟周期的值不一致时,异或会把输出拉高,也就等同于把跳变转变成了电平
	assign dataout = data_level3 ^ data_level2 ;

endmodule
相关推荐
yanxy5124 分钟前
【TS学习】(18)分发逆变推断
前端·学习·typescript
Hellyc18 分钟前
SpringMVC响应数据:页面跳转与回写数据
java·前端·学习
对方正在长头发丿37 分钟前
LETTERS(DFS)
c++·笔记·算法·深度优先·图论
Qian_ShouYi38 分钟前
MATLAB 代码学习
学习·算法·matlab
进取星辰1 小时前
PyTorch 深度学习实战(32):多模态学习与CLIP模型
pytorch·深度学习·学习
云上艺旅1 小时前
K8S学习之基础七十二:Ingress基于Https代理pod
学习·云原生·容器·https·kubernetes
能来帮帮蒟蒻吗1 小时前
GO语言学习(16)Gin后端框架
开发语言·笔记·学习·golang·gin
计算机毕设定制辅导-无忧学长2 小时前
HTML 性能优化之路:学习进度与优化策略(二)
学习·性能优化·html
chushiyunen2 小时前
dom操作笔记、xml和document等
xml·java·笔记
chushiyunen2 小时前
tomcat使用笔记、启动失败但是未打印日志
java·笔记·tomcat