「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

相关推荐

  1. Verilog】期末复习——设计11011序列检测器

    2023-12-12 10:28:05       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-12 10:28:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-12 10:28:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-12 10:28:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-12 10:28:05       20 阅读

热门阅读

  1. CentOS修改SSH端口号和禁止root用户直接登录

    2023-12-12 10:28:05       44 阅读
  2. 构建自定义领域知识图谱的简易方法(Python)

    2023-12-12 10:28:05       40 阅读
  3. vue3+TypeScript自定义指令:长按触发绑定的函数

    2023-12-12 10:28:05       40 阅读
  4. C语言中常用的库函数和头文件

    2023-12-12 10:28:05       38 阅读
  5. 微信小程序九宫格布局,轮播图

    2023-12-12 10:28:05       47 阅读
  6. eventBus父组件$emit一次子组件多次收到¥

    2023-12-12 10:28:05       44 阅读
  7. 1、springboot项目运行

    2023-12-12 10:28:05       43 阅读
  8. 1274:【例9.18】合并石子

    2023-12-12 10:28:05       31 阅读