从多级延迟触发器到边沿检测

  本文记录一下关于延迟触发器链与它的常用用法(即边沿检测。多级延迟的触发器应该是比较常用的,当我们需要对信号信号进行延时,这个时候我们就用到了延迟触发器链。下面就来记录一下吧。

  

一、多级延迟触发器(或延迟触发器链)

  (1)多级延迟触发器电路

  多级延迟触发器,顾明思议就是多个触发器串在一起,对信号进行打拍,一个触发器就延时了一拍,也就是延迟了一个时钟周期。

多级触发器的代码如下所示:

 1 module DFF_N #(parameter N=3)(2   input clk,3   input reset,4   input [N-1:0] D,5   output reg [N-1:0] Q6 );7 reg [N-1:0]d0;8 reg [N-1:0]d1;9 always@(posedge clk or negedge reset)
10   if(!reset)begin
11     d0 <= 0; //异步清 0,低电平有效
12     d1 <= 0; //异步清 0,低电平有效
13     Q  <= 0; //异步清 0,低电平有效
14   end
15   else begin
16     d0 <= D;
17     d1 <= d0;
18     Q  <= d1;
19   end
20 
21 endmodule

 d0 是 D 的延迟一级采样或者称为 D 的延迟一拍信号,同样 d1 是 D 的延迟两拍信号,而 Q 则是 延迟三拍信号。一方面可以通过修改N来改变对多少位的信号的进行延时;另一方面,可以用通过修改部分代码,添加或者减少延迟计数。

 

代码综合得到的电路(综合之后)如下所示:

 

电路中显示出三级延时,可以延时三个时钟节拍(也就是三个时钟周期),需要说明的是,上述每一级触发器都包含了3个触发器(对三位数据总线进行延时)。

  (2)多级延迟触发器的主要用法

①简单的延时

   多级延迟触发器最原始的作用单纯的对 D 信号做延迟操作,这里就不进行详述。

②降低亚稳态往后级传输的概率

   如果 D 信号相对 clk 属于不稳定信号,则 Q 和 d1 输出相对 clk 属 于稳定信号,这样就有效地降低了亚稳态往后级传输的概率,多级延时触发器链有时也称为同步器。有关多级触发器在降级亚稳态传输概率的内容,请查看我的另一篇博文:http://www.cnblogs.com/IClearner/p/6485389.html 。

③用来边沿检测

   可以通过 d1 和 Q 信号获取 D 信号的上升沿或者下降沿,具体介绍如下第二大点所示。

 

 

二、边沿检测电路

  边沿检测,顾名思义,就是检查信号的边沿,当信号的上升沿或者下降沿到来时,获取一个脉冲信号,时序图如下所示:

上图的检测信号同时输出上升沿检测和下降沿检测。那么这个波形怎么来的呢,我们来看看下面几组波形:

 

可以发现:

  始信号与延迟一拍的信号 d0 的反向信,就是上升沿脉冲

  而始信号取反,然后与延迟一拍信号d0就是下降沿脉冲

如果担心采样不稳定,可以利用延迟两拍的 d1 信号进行相 与。如果担心不定态,还可以将脉冲信号进行锁存。

代码如下所示:

 1 module  DFF_N #(parameter  N=1)(2     input clk,3     input reset,4     input  [N-1:0]  D,5     output [N-1:0] D_rising_edge, //上升沿检测6     output [N-1:0] D_falling_edge //下降沿检测7 );8 reg [N-1:0]d0;9 reg [N-1:0]d1;
10 reg [N-1:0]Q;
11 always@(posedge clk or negedge reset)
12 if(!reset)begin
13     d0 <= 0;
14     d1 <= 0;
15     Q  <= 0;
16 end    else begin 
17     d0 <= D;
18     d1 <= d0;
19     Q  <= d1;
20 end
21 
22 assign D_rising_edge = ~d0 & D; //关键
23 assign D_falling_edge= d0 & ~D; //关键
24 endmodule

 (反入与延上升沿:取反输入信号之后,再与延迟一拍的输出相与就得到了上升沿)

综合得到的电路如下所示:

 

这个电路把代码中的Q触发器优化掉了。两个输出信号D_rising_edge 、D_falling_edge分别输出上升沿检测信号脉冲和下降沿检测信号脉冲。

转载于:https://www.cnblogs.com/IClearner/p/7197993.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java amr 转mp3 报错_amr 转 MP3 报错it.sauronsoftware.jave.InputFormatException问

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼import it.sauronsoftware.jave.AudioAttributes;import it.sauronsoftware.jave.Encoder;import it.sauronsoftware.jave.EncoderException;import it.sauronsoftware.jave.EncodingAttributes;import it.sauronsoftware.jave.Inp…

正则表达式验证各种类型的数字

验证数字的正则表达式集 验证数字&#xff1a;^[0-9]*$ 验证n位的数字&#xff1a;^\d{n}$ 验证至少n位数字&#xff1a;^\d{n,}$ 验证m-n位的数字&#xff1a;^\d{m,n}$ 验证零和非零开头的数字&#xff1a;^(0|[1-9][0-9]*)$ 验证有两位小数的正实数&#xff1a;^[0-9](.[0-9…

mysql 触发器 for each row 理解_“for each row”如何在mysql中的触发器中工作?

FOR EACH ROW表示每个匹配行的更新或删除.除非查询中有where条件,否则触发器主体不会遍历整个表数据.下面演示了一个工作示例&#xff1a;创建样本表&#xff1a;drop table if exists tbl_so_q23374151;create table tbl_so_q23374151 ( i int, v varchar(10) );-- set test d…

iOS 11: CORE ML—浅析

本文来自于腾讯Bugly公众号&#xff08;weixinBugly&#xff09;&#xff0c;未经作者同意&#xff0c;请勿转载&#xff0c;原文地址&#xff1a;https://mp.weixin.qq.com/s/OWD5UEiVu5JpYArcd2H9ig 作者&#xff1a;liujizhou 导语&#xff1a;在刚刚过去的WWDC上&#xff0…

mysql定义shell变量_shell 变量的定义,赋值,运算

一、变量类型1.1、自定义变量1.定义变量不能使用纯数字命名&#xff0c;不能使用横杠命名变量名变量值[rootlocalhost ~]# nameerha2.引用变量$变量名 或者 ${变量量名}3.查看变量值echo$变量量名[rootlocalhost ~]# echo $nameerha4.取消变量[rootlocalhost ~]# unset name[ro…

angular的uiRouter服务学习(5) --- $state.includes()方法

$state.includes 方法用于判断当前激活状态是否是指定的状态或者是指定状态的子状态. $state.includes(stateOrName,params,options) $state.includes方法接受三个参数,其中第二和第三个都不知道是干啥的...估计也不太用得到,就暂时不管了... stateOrName:字符串(必填). 是一个…

前端学习(2487):在VUE中使用element-ui的el-select组件时出现该报错

一. 报错场景 在VUE中使用element-ui的el-select组件时出现该报错 [Vue warn]: Missing required prop: "value" 1 二. 报错原因 2.1.el-select中没有进行双向数据绑定&#xff08;v-model&#xff09; 2.2 el-option没有进行value赋值 三. 具体示例 3.1 报错…

php 正则mysql语句_MySQL正则表达式搜索 - mysql数据库栏目 - 自学php

products表如下&#xff1a;1. 基本字符匹配vcrH1NrV7j2wdDL0cv3o6zWu9KqcHJvZF9uYW1l1tCw/LqswcvLcvRy/e1xNfWt/uzb/J0tTBy6OstvhMSUtFyOe57K708PNqMXkt/ujrMTHw7TSqsfzcHJvZF9uYW1l0vL0cv3tcTX1rf70qrN6sirxqXF5KO60rKzcrHy7XPwsPmtcTA/dfTo6zQ6NKqyrnTwyBMSUtFIA"JetPa…

皇室战争

题目大意: 初始有E点体力值,每天可以开宝箱消耗k体力值,体力值要保证>0 每次开宝箱可获得k*a[i]的愉悦度 求最大愉悦度 样例输入115 2 22 1样例输出112样例1解释第一天用5体力, 接下来回复2点体力, 用光。限制与约定数据编号 cas N E 时间限制(S)0 10 10 10 11 100 100 100 …

python 类和对象 有必要学吗_类与对象-python学习19

类与对象类&#xff1a;我们常用类来划分一个个特定的群体&#xff1b;我们所说的类&#xff0c;是物以类聚的类&#xff0c;是分门别类的类&#xff0c;是多个类似事物组成的群体的统称。类的概念能帮助我们快速理解和判断事物的性质。类(class)&#xff0c;比如整数、字符串、…

codevs 2822 爱在心中

时间限制: 1 s空间限制: 128000 KB题目等级 : 钻石 Diamond题目描述 Description“每个人都拥有一个梦&#xff0c;即使彼此不相同&#xff0c;能够与你分享&#xff0c;无论失败成功都会感动。爱因为在心中&#xff0c;平凡而不平庸&#xff0c;世界就像迷宫&#xff0c;却又让…

python 遍历对象_python js对象的遍历

下面是两组数据格式&#xff1b;都是以对象的形势&#xff1b;现在我要将属性值提取出来&#xff1b;做成一个二级部门导航栏&#xff1b;abc里面的做一级&#xff0c;asd做二级点击厂一宣示对应的部门&#xff1b;点击厂二时候宣示对应的部门&#xff1b;把原有的隐藏var abc{…

最简单的基于FFmpeg的移动端样例:IOS 视频转码器

最简单的基于FFmpeg的移动端样例系列文章列表&#xff1a;最简单的基于FFmpeg的移动端样例&#xff1a;Android HelloWorld最简单的基于FFmpeg的移动端样例&#xff1a;Android 视频解码器最简单的基于FFmpeg的移动端样例&#xff1a;Android 视频解码器-单个库版最简单的基于F…

php去除英文和标点,php 过滤英文标点符号及过滤中文标点符号代码_php技巧

php 过滤英文标点符号 过滤中文标点符号 代码function filter_mark($text){if(trim($text))return ;$textpreg_replace("/[[:punct:]\s]/", ,$text);$texturlencode($text);$textpreg_replace("/(%7E|%60|%21|%40|%23|%24|%25|%5E|%26|%27|%2A|%28|%29|%2B|%7C|…