上篇文中最後提到的為甚麼async不用Dmux傳ptr就好,
究竟有甚麼缺點又或是不可行,
這邊來探討一下.
首先我們先來看一下Dmux解CDC issue的原理

dmux架構可以分為兩個部分,
Data path和CTRL path,
我們會在CTRL的path的部分在clkA的trigger下製造一個pulse的enable (en_clkA)訊號,
在enable打出的同時fix Data path上的data (Data_clkA)內容,
接著等clkB trigger下的2DFF解完metastable後輸出的en_clkB傳給mux來切換Data_clkB的input,
此時就會去latch下Data_clkA的data,
當然這個架構要work會有一些假設的條件,必須要滿足才能確保能順利的傳輸,