「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
相关推荐
FPGAI11 小时前
Java学习之计算机存储规则、数据类型、标识符、键盘录入、IDEA
java·学习
Yiii_x12 小时前
Object类与包装类
java·经验分享·笔记·课程设计·ai编程
四谎真好看12 小时前
MySQL 学习笔记(运维篇1)
运维·数据库·笔记·学习·mysql·学习笔记
hssfscv12 小时前
Javaweb学习笔记——Web
笔记·学习·web
随意起个昵称12 小时前
【题解学习】序列题
学习·算法
摇滚侠12 小时前
RocketMQ 教程丨深度掌握 MQ 消息中间件,rocketmq 安装,控制台,笔记 21-27
笔记·rocketmq·java-rocketmq
李派森13 小时前
软考高项(信息系统项目管理师)—第22章 组织通用治理全解析
网络·笔记·计算机网络
AI视觉网奇13 小时前
ue重定向学习笔记
笔记·ue5
正月十六工作室13 小时前
关键能力 | SMART 原则
学习·关键能力·smart原则
崇山峻岭之间13 小时前
Matlab学习记录16
开发语言·学习·matlab