如何知道一個(gè)信號(hào)上升沿或下降沿是否到來(lái)?下面是一個(gè)簡(jiǎn)單的邊沿檢測(cè)電路。
這個(gè)電路的原理很簡(jiǎn)單。當(dāng)din上升沿或下降沿到來(lái)時(shí),din_re_fe_p產(chǎn)生一個(gè)脈沖。后續(xù)電路看到這個(gè)脈沖,就知道din上升沿或下降沿發(fā)生了。
如果din是異步輸入,前面要加一個(gè)兩級(jí)同步器(其實(shí)就是兩級(jí)DFF)。
邊沿檢測(cè)可以演化出只檢測(cè)上升沿,只檢測(cè)下降沿。
邊沿檢測(cè)電路非常有用。
例1:作為跨時(shí)鐘域同步握手信號(hào)
有一組信號(hào)data_bus,需要從clk_a同步到clk_b。如果每一個(gè)信號(hào)都經(jīng)過(guò)兩級(jí)同步器,那就太浪費(fèi)資源了。而且有時(shí)一組信號(hào)要保證所有位傳到clk_b時(shí)同時(shí)更新,就更不能用兩級(jí)同步器了。兩級(jí)同步器的latency在1到3個(gè)周期之間,有隨機(jī)性,無(wú)法保證兩個(gè)信號(hào)各自通過(guò)同步器后同時(shí)更新。
這個(gè)場(chǎng)景可以加一個(gè)簡(jiǎn)單的握手信號(hào)data_toggle。當(dāng)clk_a這邊信號(hào)變化時(shí),data_toggle也改變狀態(tài)(0->1或1->0)。data_toggle送到clk_b,經(jīng)過(guò)兩級(jí)同步+邊沿檢測(cè)產(chǎn)生data_toggle_re_fe_p,clk_b這邊的邏輯看到data_toggle_re_fe_p脈沖后,就可以放心大膽地鎖存data_bus。
喜歡low power的朋友可以把data_toggle_re_fe_p作為ICG的EN信號(hào)。RTL寫(xiě)得干凈,工具也能自動(dòng)infer ICG。
邊沿檢測(cè)輸出作為ICG EN其實(shí)是非常有用的low power技巧之一。
當(dāng)然,這個(gè)例子是很簡(jiǎn)單地握手方式。復(fù)雜一些的可以用request,acknowledge之類(lèi)的雙向握手。
clk_a送一個(gè)req=1到clk_b,告訴clk_b數(shù)據(jù)ready。
clk_b同步req并做上升沿檢測(cè)。檢測(cè)到req上升沿后鎖存數(shù)據(jù)。
clk_b發(fā)一個(gè)ack=1給clk_a,告訴clk_a數(shù)據(jù)已經(jīng)鎖存。
clk_a同步ack并做上升沿檢測(cè)。檢測(cè)到ack上升沿后清除req=0,準(zhǔn)備下一次傳數(shù)據(jù)。
clk_b這邊檢測(cè)到req下降沿,清除ack=0,準(zhǔn)備接受下一次數(shù)據(jù)。
審核編輯:黃飛
-
電路圖
+關(guān)注
關(guān)注
10316文章
10717瀏覽量
527228 -
檢測(cè)電路
+關(guān)注
關(guān)注
13文章
305瀏覽量
58091 -
同步器
+關(guān)注
關(guān)注
1文章
92瀏覽量
14597
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論