作為designer一定經常看到spec中描述當edge出現時需要trigger電路運作,
舉個實際的例子 2 phase的handshake protocal,
以下方paper中的圖例來看.
Quasi Delay-Insensitive High Speed Two-Phase Protocol Asynchronous Wrapper for Network on Chips - Scientific Figure on ResearchGate. Available from: https://www.researchgate.net/figure/Four-phase-and-two-phase-transmission-protocols-a-Four-phase-handshake-protocol-b_fig2_220586142 [accessed 23 Apr 2025]

1.當req每翻轉一次代表data準備好了
2.ack跟著每翻轉一次代表data被收走了
非常簡單的一種協議,
但是要做到這種判斷siginal level甚麼時候翻轉,
就需要靠edge detector又稱為邊緣偵測,
如何做出一個完美的edge detector才是這題的難處.
detector在spec中大致上有3種可能的需求
(1) detect posedge
(2) detect negdege
(3) detect double edge
大家可以思考一下自己會如何設計電路來抓取有效的edge
把這個edge轉成一個enable的訊號告訴reg該把data收進來了
這邊開始描述一下(1)的作法,
在rx端會去不斷的input tx端的Req訊號看有沒有動作,
記錄在reg中,此時Reg的input/output如下圖,
並且希望可以在發現req從0->1時產生一個enable的訊號餵給其他reg使用

我們仔細看一下細節發現
哎呀 豈不是把Req_o做個inverse拿去&原本的Req input
就可以做出enable的訊號形狀了嗎
這題答的perfect

然後我們再來畫個電路讓老闆滿意的點點頭

ok 做到這邊還以為答完了
回頭看一下題目,
哇負緣也要,但是負緣已經被我用and 0幹掉了
只好繼續看看波形怎麼抓出負緣來
(2) negedge detector

認真看了一下,靈感湧現
不是和前一個一樣嗎把Req做inverse拿去&Req_o就好啦

簡單簡單在補個電路圖

到這邊就只要把上述兩個組合起來就可以得到最終的答案
(3) double edge的detector

不過捏身為高手的你很快就發現了好像可以優化