「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
相关推荐
潜心一志20 分钟前
HALCON软件——基础语法
学习·计算机视觉
babe小鑫1 小时前
信息与计算科学专业应届生面试 怎么证明自己能解决业务问题
学习·r语言·excel
91刘仁德1 小时前
C++ 继承和多态 设计模式
c语言·c++·笔记
天国梦1 小时前
实测天学网AI作文批改:三篇作文,语法纠错与语篇逻辑的真实表现
人工智能·学习
m4Rk_1 小时前
【论文阅读】Agent 记忆机制(75):TiMem——用时间记忆树实现长期记忆的层级巩固
论文阅读·人工智能·学习·开源·github
库玛西2 小时前
哈夫曼树与前缀编码:数据压缩的贪心核心
c语言·c++·笔记·考研
外收内放2 小时前
Python与AI应用(项目开发实战:AI智能伴侣第三版)
python·学习·ai编程
pddqjd2 小时前
顺德区中考美术集训画室概念释义与核心服务要点梳理
学习
传奇开心果编程3 小时前
【Jetpack Compose基础语法学与练】第7课 if条件渲染 + 列表基础(LazyColumn)
学习·ui·kotlin·android jetpack
Rabitebla3 小时前
【Linux系统编程】 指令(二):一条路径是怎么定位到文件的
linux·c++·笔记·学习·算法