日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从多级延迟触发器到边沿检测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  本文記錄一下關于延遲觸發器鏈與它的常用用法(即邊沿檢測。多級延遲的觸發器應該是比較常用的,當我們需要對信號信號進行延時,這個時候我們就用到了延遲觸發器鏈。下面就來記錄一下吧。

  

一、多級延遲觸發器(或延遲觸發器鏈)

  (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

總結

以上是生活随笔為你收集整理的从多级延迟触发器到边沿检测的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。