1、什么是邊沿檢測
邊沿檢測用于檢測信號的上升沿或下降沿,通常用于使能信號的捕捉等場景。
2、采用1級觸發(fā)器的邊沿檢測電路設(shè)計(以下降沿為例)
2.1、設(shè)計方法
設(shè)計波形圖如下所示:
各信號說明如下:
sys_clk:基準時鐘信號(這里設(shè)定為50MHz,周期20ns)
sys_rst_n:低電平有效的復位信號
in:輸入信號,需要對其進行下降沿檢測
~in:輸入信號的反相信號
in_d1:對輸入信號寄存一拍
in_neg:得到的下降沿指示信號,該信號為 ind1 && ~in
對上圖進行分析:
信號in是我們需要對其進行下降沿檢測的信號
信號~in是將信號in反向
信號in_d1是使用寄存器寄存in信號,即對其進行打拍,或者說是同步到系統(tǒng)時鐘域下
輸入信號開始為高電平,在L2處變?yōu)榈碗娖?,產(chǎn)生第1個下降沿,在L5出產(chǎn)生第2個下降沿
A處為產(chǎn)生的第1個下降沿指示信號,B處為產(chǎn)生的第2個下降沿指示信號
由此我們可以推導出邊沿檢測信號產(chǎn)生的一般方法:
將需要檢測的信號寄存一拍,同步到系統(tǒng)時鐘域下,得到信號 in_d1
將需要檢測的信號反向,得到信號 ~in
將信號 in_d1 反向,得到信號 ~in_d1
通過組合邏輯電路可以得到下降沿信號 in_neg:assign in_neg = ~in && in_d1
同樣通過組合邏輯電路可以得到上升沿信號 in_pos:assign in_pos = in && ~in_d1
雙邊沿檢測就是將上兩條加(或運算)起來就可以了,化簡后有:雙邊沿信號 in_both = in ^ ind1
2.2、Verilog實現(xiàn)
根據(jù)上文分析不難編寫Verilog代碼如下:
2.3、RTL電路
上圖為生成的RTL電路:該電路由一級D觸發(fā)器+與邏輯門構(gòu)成。
2.4、Testbench
Testbench文件需要例化剛剛設(shè)計好的模塊,并設(shè)置好激勵。
2.5、仿真結(jié)果
使用ModelSim執(zhí)行仿真,仿真出來的波形如所示:
從波形圖可以看到:
10ns后停止復位
在第1條參考線處輸入信號 in 產(chǎn)生了第1個下降沿信號
在第3條參考線處輸入信號 in 產(chǎn)生了第2個下降沿信號
在第1條參考線和第2條參考線之間的產(chǎn)生了一個周期的下降沿指示信號 in_neg
在第3條參考線和第4條參考線之間的產(chǎn)生了一個周期的下降沿指示信號 in_neg
3、采用2級觸發(fā)器的邊沿檢測電路(以下降沿為例)
3.1、設(shè)計方法
設(shè)計波形圖如下所示:
各信號說明如下:
sys_clk:基準時鐘信號(這里設(shè)定為50MHz,周期20ns)
sys_rst_n:低電平有效的復位信號
in:輸入信號,需要對其進行下降沿檢測
in_d1:對輸入信號寄存1拍
in_d2:對輸入信號寄存2拍
~in_d1:in_d1信號的反相信號
in_neg:得到的下降沿指示信號,該信號為 ~ind1 && ind2
對上圖進行分析:
信號in是我們需要對其進行下降沿檢測的信號
信號in_d1是使用寄存器寄存in信號,即對其打1拍
信號in_d2是使用寄存器寄存in_d1信號,即對其打1拍
信號~in_d1是將信號in_d1反向
輸入信號開始為高電平,在L2處變?yōu)榈碗娖?,產(chǎn)生第1個下降沿,在L5出產(chǎn)生第2個下降沿
A處為產(chǎn)生的第1個下降沿指示信號,B處為產(chǎn)生的第2個下降沿指示信號
輸出的下降沿指示信號落后下降沿一個時鐘周期,這是因為對輸入信號進行了寄存以消除亞穩(wěn)態(tài)
由此我們可以推導出邊沿檢測信號產(chǎn)生的一般方法:
將需要檢測的信號分別寄存1拍、2拍,同步到系統(tǒng)時鐘域下,得到信號 in_d1、in_d2
將in_d1信號反向,得到信號 ~in_d1
將in_d2信號反向,得到信號 ~in_d2
通過組合邏輯電路可以得到下降沿信號 in_neg:assign in_neg = ~in_d1 && in_d2
同樣通過組合邏輯電路可以得到上升沿信號 in_pos:assign in_pos = in_d1 && ~in_d2
雙邊沿檢測就是將上兩條加(或運算)起來就可以了,化簡后有:雙邊沿信號 in_both = in_d1 ^ in_d2
3.2、Verilog實現(xiàn)
根據(jù)上文分析不難編寫Verilog代碼如下:
3.3、RTL電路
上圖為生成的RTL電路:該電路由2級D觸發(fā)器+與邏輯門構(gòu)成。
3.4、Testbench
Testbench文件同2.4章。
3.5、仿真結(jié)果
使用ModelSim執(zhí)行仿真,仿真出來的波形如所示:
從波形圖可以看到:
10ns后停止復位
在第1條參考線處輸入信號 in 產(chǎn)生了第1個下降沿信號
在第4條參考線處輸入信號 in 產(chǎn)生了第2個下降沿信號
在第2條參考線和第3條參考線之間的產(chǎn)生了一個周期的下降沿指示信號 in_neg
在第5條參考線和第6條參考線之間的產(chǎn)生了一個周期的下降沿指示信號 in_neg
兩級寄存器構(gòu)成的邊沿檢測電路可以有效的防止亞穩(wěn)態(tài)的產(chǎn)生,產(chǎn)生的使能信號會落后一個時鐘周期。
責任編輯:彭菁
-
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2003瀏覽量
61352 -
檢測信號
+關(guān)注
關(guān)注
0文章
6瀏覽量
6326 -
時鐘信號
+關(guān)注
關(guān)注
4文章
453瀏覽量
28666
原文標題:4、參考
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論