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

FPGA設(shè)計(jì)經(jīng)驗(yàn):邊沿檢測(cè)

關(guān)于邊沿檢測(cè)的問(wèn)題
fpga應(yīng)用篇(二):邊沿檢測(cè)
基于FPGA邊沿檢測(cè)的理解問(wèn)題?
用移位寄存器實(shí)現(xiàn)邊沿檢測(cè)的技巧
邊沿檢測(cè)的目的及電路原理分析
Verilog系統(tǒng)函數(shù)和邊沿檢測(cè)
FPGA學(xué)習(xí)-邊沿檢測(cè)技術(shù)
Verilog實(shí)現(xiàn)邊沿檢測(cè)的原理

評(píng)論