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

2021-06-25 17:05:49 字數 1477 閱讀 5350

多時鐘域的設計中,對於訊號跨時域的處理這裡可以採用桌球操作的方法來進行。桌球操作的處理流程為:輸入資料流通過『輸入資料選擇單元」將資料流等時分配到兩個資料緩衝區,資料緩衝模組可以為任何儲存模組,比較常用的儲存單元為雙口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來解決問題 

Linux如何處理訊號

其實這個操作就是向前臺程序傳送sigint訊號。以下是linux支援的訊號列表 使用kill n pid或在 中使用int kill pid t pid,int sig 可以向乙個程序傳送訊號。如果 中沒有顯式的用signal去註冊訊號對應的控制代碼,那就會採用預設的處理方式,例如接收到sigint...

開發中返回,如何處理

不小心在開發過程中,得到了 null 以及的返回值,找了好長時間只找到了乙個關於的。由於要根據返回值進行判斷,做出必要反應,因此必須知道返回值所代表的具體字元,在得到 null 後利用isequal 和 null,null nil,nil比較後均得不到正確結果,弄得不知所措了,但是還是感覺像nil,...

pandas中如何處理缺失值

大多機器學習演算法不能處理缺失的特徵,因此先建立一些函式來處理特徵缺失的問題。當在一些.csv檔案中缺少某些值的時候,一般有三種方法解決 1 去掉對應的整個屬性 2 去掉缺失值所在的資料 3 將缺失值進行賦值 在pandas中,用 dataframe 的 dropna drop 和 fillna 方...