数字IC笔面基础,边沿检测器(延迟加逻辑判断,附Verilog示例)

本文介绍数字电路中的边沿检测原理及其重要性,并给出使用Verilog语言实现单bit边沿检测的具体示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

边沿检测器,一看就会

写在前面的话

边沿检测,就是检查某个信号的跳变沿,分为上升沿检测和下降沿检测。
思路很简单,就是先对信号延迟一拍,再用组合逻辑对原信号和延迟信号判断。

那为什么要做边沿检测呢?
在数字电路中,不同模块之间常常需要通信和数据传输,这里会有标志信号,而标志信号的开始、长度和结束时间点是一个比较关键的问题,这里就要做边沿检测,通过边沿检测获取标志信号。

先看图:
有图可以得到:

(1)上升沿检测,pos = Din && (~Din_d) ;
(2)下降沿检测,neg = (~Din) && Din_d ;

直接记图就行,手撕代码的时候对照图写就行。

在这里插入图片描述

注意:
(1)最近的笔试题变得鸡贼了,不是让你直接写边沿检测或者画示意图。
(2)有的笔试题会先给你一堆波形图,让你在里面写出某几个信号的关系。
(3)这里是单bit边沿检测,涉及到多bit边沿检测时,有的鸡贼题目直接给的是二进制总线信号。
(4)一定要保持敏感,只要涉及两个信号是延迟一拍,优先考虑是不是边沿检测。

Verilog示例

// -----------------------------------------------------------------------------
// Copyright (c) 2014-2022 All rights reserved
// -----------------------------------------------------------------------------
// Author : HFUT904  1320343336@qq.com
// File   : edge_detect.v
// Create : 2022-11-04 16:36:13
// Revise : 2022-11-04 16:36:13
// Editor : HFUT Integrated Circuit Design & Research Center
// Verdion: v1.0
// Description: 单bit 边沿检测
// -----------------------------------------------------------------------------
	module edge_detect (			//单bit边缘检测
		input			clk 		,
	   	input			rst_n		,
	   	input			key_in		,
	   	output			pos_edge	,
		output			neg_edge	,
		output			data_edge	
		);

		
	   reg [1:0]  data_r;

	
	
	 always@(posedge clk or  negedge rst_n)	begin
	  
	  		if (!rst_n) begin
	     		data_r[0] <= 0;
	     		data_r[1]  <= 0;
	   		end
	   		else begin
	    		data_r[0] <= key_in;
	    		data_r[1] <= data_r[0];
	   		end
	end
		
		assign pos_edge = data_r[0] & ~data_r[1];	//检测上升沿
		assign neg_edge = ~data_r[0] & data_r[1];	//检测下降沿
		assign data_edge = pos_edge | neg_edge;		//双边缘检测
	
	
	 endmodule

总结

没啥重要的,记好图就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值