溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行CDC跨時鐘域處理及相應的時序約束

發布時間:2021-12-27 15:38:01 來源:億速云 閱讀:698 作者:柒染 欄目:互聯網科技

這篇文章將為大家詳細講解有關如何進行CDC跨時鐘域處理及相應的時序約束,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

多bit跨時鐘域

(大疆2020數字芯片)下列關于多bit數據跨時鐘域的處理思路,錯誤的有()

A. 發送方給出數據,接收方用本地時鐘同步兩拍再使用;

B. 發送方把數據寫到異步fifo,接收方從異步fifo里讀出;

C. 對于連續變化的信號,發送方轉為格雷碼發送,接收方收到后再轉為二進制;

D. 發送方給出數據,發送方給出握手請求,接收方收到后回復,發送方撤銷數據。

答案:A

解析:多bit跨時鐘域不能簡單使用打兩拍,打拍后可能數據錯亂;

CDC(Clock Domain Conversion)跨時鐘域分單bit和多bit傳輸,其中:

1. 單bit(慢時鐘域到快時鐘域):用快時鐘打兩拍,直接采一拍大概率也是沒問題的,兩拍的主要目的是消除亞穩態;

其中:

(1)為了更長的平均無故障時間 MTBF( Mean Time Between Failures),需要配合一個 ASYNC_REG 的約束,把用作簡單同步器的多個寄存器放入同一個 SLICE,以降低走線延時的不一致和不確定性。

(* ASYNC_REG = "TRUE" *) reg rst_reg_0;(* ASYNC_REG = "TRUE" *) reg rst_reg_1;

(2)或者:直接在約束文件里進行約束

set_property ASYNC_REG TRUE [get_cells [list rst_reg_0 rst_reg_1]]

2. 單bit(快時鐘域到慢時鐘域):握手(脈沖展寬)、異步FIFO、異步雙口RAM;快時鐘域的信號脈寬較窄,慢時鐘域不一定能采到,可以通過握手機制讓窄脈沖展寬,慢時鐘域采集到信號后再“告訴”快時鐘域已經采集到信號,確保能采集到;

3. 多bit跨時鐘域異步FIFO、異步雙口RAM、握手、格雷碼;

(1)使用異步FIFO的IP

    實際上是用 FPGA 內部的 BRAM 來搭建,所有的控制邏輯都在 BRAM 內部,是推薦的 FIFO 實現方式。

    時序約束簡單,進行時序例外約束,只需要 set_clock_groups 將讀寫時鐘約束為異步時鐘組即可,簡單高效。

set_property -asynchronous  -group [get_clocks write_clock] \                            -group [get_clocks read_clock]

(2)自己寫外部控制邏輯的FIFO

    格雷碼做異步 FIFO 的跨時鐘域處理,計數器和讀寫控制邏輯在 BRAM 或者 RAM 的外部,除了代碼的合理設計以外,還需要進行額外的時序例外約束,不能簡單使用 set_clock_groups 約束異步時鐘組,還需要考慮外部的讀寫邏輯的約束。

    Xilinx建議這里設置set_max_delay來約束跨時鐘域路徑,約束的原則是:最大路徑延時等于或者略小于目的時鐘的一個周期。

    寫邏輯從cell1到cell2的約束中,cell2的驅動時鐘周期為5,如下所示,讀邏輯約束進行相應約束。

set_max_delay 5 –from [get_cells cell1] –to [get_cells cell2] –datapath_only

多bit中,強烈推薦使用異步FIFO的IP來實現,我在實際工程中使用多次,簡單方便。

關于如何進行CDC跨時鐘域處理及相應的時序約束就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

cdc
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女