多時域設計中如何處理信號跨時域。

     多時鐘域的設計中,對於信號跨時域的處理這裏可以採用乒乓操作的方法來進行。乒乓操作的處理流程爲:輸入數據流通過‘輸入數據選擇單元”將數據流等時分配到兩個數據緩衝區,數據緩衝模塊可以爲任何存儲模塊,比較常用的存儲單元爲雙口RAM(DPRAM)、單口RAM(SPRAM)、FIFO等。

  在第1個緩衝週期,將輸入的數據流緩存到“數據緩衝模塊1”;

  在第2個緩衝週期,通過“輸入數據選擇單元”的切換,將輸入的數據流緩存到“數據緩衝模塊2”,同時將“數據緩衝模塊1”緩存的第1個週期數據通過“輸入數據選擇單元”的選擇,送到“數據流運算處理模塊”進行運算處理;

  在第3個緩衝週期通過“輸入數據選擇單元”的再次切換,將輸入的數據流緩存到“數據緩衝模塊1”,同時將“數據緩衝模塊2”緩存的第2個週期的數據通過“輸入數據選擇單元”切換,送到“數據流運算處理模塊”進行運算處理。如此循環。

     乒乓操作的最大特點是通過“輸入數據選擇單元”和“輸出數據選擇單元”按節拍、相互配合的切換,將經過緩衝的數據流沒有停頓地送到“數據流運算處理模塊” 進行運算與處理。把乒乓操作模塊當做一個整體,站在這個模塊的兩端看數據,輸入數據流和輸出數據流都是連續不斷的,沒有任何停頓,因此非常適合對數據流進行流水線式處理。所以乒乓操作常常應用於流水線式算法,完成數據的無縫緩衝與處理。還可以節約緩衝區空間。

  還有一種方法,FIFO一般用於不同時鐘域之間的數據傳輸,比如FIFO的一端時AD數據採集,另一端時計算機的PCI總線,假設其AD採集的速率爲16 位 100K SPS,那麼每秒的數據量爲100K×16bit=1.6Mbps,而PCI總線的速度爲率33MHz,總線寬度32bit,其最大傳輸速爲 1056Mbps可以採,在兩個不同的時鐘域間就用FIFO來作爲數據緩衝。另外對於不同寬度的數據接口也可以用FIFO,例如單片機位8位數據輸出,而 DSP可能是16位數據輸入,在單片機與DSP連接時就可以使用FIFO來達到數據匹配的目的。

 

  不同的時鐘域之間信號通信時需要進行同步處理,這樣可以防止新時鐘域中第一級觸發器的亞穩態信號對下級邏輯造成影響,其中對於單個控制信號可以用兩級同步器,如電平、邊沿檢測和脈衝,對多位信號可以用FIFO,雙口RAM,握手信號等。

 

  情況比較多,如果簡單回答的話就是:跨時域的信號要經過同步器同步,防止亞穩態傳播。例如:時鐘域1中的一個信號,要送到時鐘域2,那麼在這個信號送到時鐘域2之前,要先經過時鐘域2的同步器同步後,才能進入時鐘域2。這個同步器就是兩級d觸發器,其時鐘爲時鐘域2的時鐘。這樣做是怕時鐘域1中的這個信號,可能不滿足時鐘域2中觸發器的建立保持時間,而產生亞穩態,因爲它們之間沒有必然關係,是異步的。這樣做只能防止亞穩態傳播,但不能保證採進來的數據的正確性。所以通常只同步很少位數的信號。比如控制信號,或地址。當同步的是地址時,一般該地址應採用格雷碼,因爲格雷碼每次只變一位,相當於每次只有一個同步器在起作用,這樣可以降低出錯概率,象異步FIFO的設計中,比較讀寫地址的大小時,就是用這種方法。
  如果兩個時鐘域之間傳送大量的數據,可以用異步FIFO來解決問題 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章