這篇文章將為大家詳細(xì)講解有關(guān)如何進(jìn)行CDC跨時(shí)鐘域處理及相應(yīng)的時(shí)序約束,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
術(shù)業(yè)有專攻,您咨詢的再多,也不如我了解的一半多;有責(zé)任心的專業(yè)網(wǎng)站設(shè)計(jì)公司會(huì)做到“客戶想到的我們要做到,客戶沒有想到的我們也要幫客戶做到“。我們的設(shè)計(jì)師是5年以上的設(shè)計(jì)師,我們不僅僅會(huì)設(shè)計(jì)網(wǎng)站,更會(huì)策劃網(wǎng)站。
(大疆2020數(shù)字芯片)下列關(guān)于多bit數(shù)據(jù)跨時(shí)鐘域的處理思路,錯(cuò)誤的有()
A. 發(fā)送方給出數(shù)據(jù),接收方用本地時(shí)鐘同步兩拍再使用;
B. 發(fā)送方把數(shù)據(jù)寫到異步fifo,接收方從異步fifo里讀出;
C. 對(duì)于連續(xù)變化的信號(hào),發(fā)送方轉(zhuǎn)為格雷碼發(fā)送,接收方收到后再轉(zhuǎn)為二進(jìn)制;
D. 發(fā)送方給出數(shù)據(jù),發(fā)送方給出握手請(qǐng)求,接收方收到后回復(fù),發(fā)送方撤銷數(shù)據(jù)。
答案:A
解析:多bit跨時(shí)鐘域不能簡(jiǎn)單使用打兩拍,打拍后可能數(shù)據(jù)錯(cuò)亂;
CDC(Clock Domain Conversion)跨時(shí)鐘域分單bit和多bit傳輸,其中:
1. 單bit(慢時(shí)鐘域到快時(shí)鐘域):用快時(shí)鐘打兩拍,直接采一拍大概率也是沒問題的,兩拍的主要目的是消除亞穩(wěn)態(tài);
其中:
(1)為了更長(zhǎng)的平均無故障時(shí)間 MTBF( Mean Time Between Failures),需要配合一個(gè) ASYNC_REG 的約束,把用作簡(jiǎn)單同步器的多個(gè)寄存器放入同一個(gè) SLICE,以降低走線延時(shí)的不一致和不確定性。
(* ASYNC_REG = "TRUE" *) reg rst_reg_0;(* ASYNC_REG = "TRUE" *) reg rst_reg_1;
(2)或者:直接在約束文件里進(jìn)行約束
set_property ASYNC_REG TRUE [get_cells [list rst_reg_0 rst_reg_1]]
2. 單bit(快時(shí)鐘域到慢時(shí)鐘域):握手(脈沖展寬)、異步FIFO、異步雙口RAM;快時(shí)鐘域的信號(hào)脈寬較窄,慢時(shí)鐘域不一定能采到,可以通過握手機(jī)制讓窄脈沖展寬,慢時(shí)鐘域采集到信號(hào)后再“告訴”快時(shí)鐘域已經(jīng)采集到信號(hào),確保能采集到;
3. 多bit跨時(shí)鐘域:異步FIFO、異步雙口RAM、握手、格雷碼;
(1)使用異步FIFO的IP
實(shí)際上是用 FPGA 內(nèi)部的 BRAM 來搭建,所有的控制邏輯都在 BRAM 內(nèi)部,是推薦的 FIFO 實(shí)現(xiàn)方式。
時(shí)序約束簡(jiǎn)單,進(jìn)行時(shí)序例外約束,只需要 set_clock_groups 將讀寫時(shí)鐘約束為異步時(shí)鐘組即可,簡(jiǎn)單高效。
set_property -asynchronous -group [get_clocks write_clock] \ -group [get_clocks read_clock]
(2)自己寫外部控制邏輯的FIFO
格雷碼做異步 FIFO 的跨時(shí)鐘域處理,計(jì)數(shù)器和讀寫控制邏輯在 BRAM 或者 RAM 的外部,除了代碼的合理設(shè)計(jì)以外,還需要進(jìn)行額外的時(shí)序例外約束,不能簡(jiǎn)單使用 set_clock_groups 約束異步時(shí)鐘組,還需要考慮外部的讀寫邏輯的約束。
Xilinx建議這里設(shè)置set_max_delay來約束跨時(shí)鐘域路徑,約束的原則是:最大路徑延時(shí)等于或者略小于目的時(shí)鐘的一個(gè)周期。
寫邏輯從cell1到cell2的約束中,cell2的驅(qū)動(dòng)時(shí)鐘周期為5,如下所示,讀邏輯約束進(jìn)行相應(yīng)約束。
set_max_delay 5 –from [get_cells cell1] –to [get_cells cell2] –datapath_only
多bit中,強(qiáng)烈推薦使用異步FIFO的IP來實(shí)現(xiàn),我在實(shí)際工程中使用多次,簡(jiǎn)單方便。
關(guān)于如何進(jìn)行CDC跨時(shí)鐘域處理及相應(yīng)的時(shí)序約束就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。