www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > > FPGA算法工程師

我們在ASIC或FPGA系統(tǒng)設(shè)計(jì)中,常常會遇到需要在多個時(shí)鐘域下交互傳輸?shù)膯栴},時(shí)序問題也隨著系統(tǒng)越復(fù)雜而變得更為嚴(yán)重。

跨時(shí)鐘域處理技術(shù)是IC設(shè)計(jì)中非常重要的一個部分,我們需要學(xué)習(xí)并應(yīng)用一些常用的處理方法,從而提高電路運(yùn)行的穩(wěn)定性,使得整個系統(tǒng)更魯棒。

下面考慮ASIC設(shè)計(jì)場景,為了滿足系統(tǒng)功能需求,整個系統(tǒng)由不同的功能塊構(gòu)成,例如:

  • 處理器

  • 存儲器

  • 浮點(diǎn)引擎

  • 存儲控制器

  • 總線接口

  • 高速接口


假如考慮處理器和存儲器的工作頻率為500MHz,帶有存儲器控制器的浮點(diǎn)引擎的工作頻率為666.66MHz,總線接口和高速接口工作頻率為250MHz,則該設(shè)計(jì)具有多個時(shí)鐘,被視為多個時(shí)鐘域的設(shè)計(jì)。

01

多時(shí)鐘域設(shè)計(jì)常用方法

如前所述,多個時(shí)鐘域的處理問題是在傳輸數(shù)據(jù)和控制信號時(shí),它對數(shù)據(jù)完整性有影響。下面的策略在ASIC設(shè)計(jì)階段是有用的。


  1. 嘗試為數(shù)據(jù)和控制路徑優(yōu)化制定策略。

  2. 嘗試創(chuàng)建多個時(shí)鐘域組來定義策略。

  3. 在多個時(shí)鐘域之間傳遞控制信號時(shí),嘗試使用同步器的策略。

  4. 嘗試使用FIFO和緩存的數(shù)據(jù)路徑同步器來提高數(shù)據(jù)完整性。


現(xiàn)在討論重要的跨時(shí)鐘處理問題與策略及其在多時(shí)鐘域設(shè)計(jì)中的使用。


02

多時(shí)鐘域設(shè)計(jì)有哪些問題

如果我們考慮適度的門數(shù)設(shè)計(jì)或使用單時(shí)鐘工作的處理器核心和設(shè)計(jì),它可能在布局階段由于額外的互連延遲而產(chǎn)生時(shí)序違例。但是這種設(shè)計(jì)可能會通過架構(gòu)、RTL、綜合和基于工具的優(yōu)化調(diào)整來滿足時(shí)序和性能。


現(xiàn)在考慮圖中所示的需要多個時(shí)鐘的設(shè)計(jì),讓我們試著理解設(shè)計(jì)中的問題。


1.由于多個時(shí)鐘域,數(shù)據(jù)完整性是主要問題,設(shè)計(jì)需要通過數(shù)據(jù)完整性檢查。

2.沒有使用同步器的時(shí)鐘域邊界上的觸發(fā)器將由于建立和保持違例而存在亞穩(wěn)態(tài)問題。

3.該設(shè)計(jì)將存在時(shí)序違例,并且很難強(qiáng)制時(shí)序電路輸出進(jìn)入有效的合法狀態(tài)。


讓我們用具有多個時(shí)鐘域的時(shí)序電路來理解上面的內(nèi)容。由于到達(dá)clk1和clk2之間的相差,第二個時(shí)鐘域的觸發(fā)器將有建立和保持違例,即觸發(fā)器輸出data_out將是亞穩(wěn)態(tài)的。原因是時(shí)鐘域1的q輸出在clk2活動邊的建立和保持窗口期間可能會改變,因此data_out將被迫進(jìn)入非法狀態(tài),即亞穩(wěn)態(tài)。如圖1所示。

圖1 多時(shí)鐘域概念


時(shí)序如圖2所示。

圖2 亞穩(wěn)態(tài)輸出


03

架構(gòu)設(shè)計(jì)策略

考慮圖3中有三個時(shí)鐘域的設(shè)計(jì),表1描述了不同時(shí)鐘頻率下的時(shí)鐘域信息。


圖3 多時(shí)鐘域架構(gòu)


表1 多時(shí)鐘域時(shí)鐘組

Clock domain

control

Frequency

in MHz

Description

clk1

500

The clock domain one operating at frequency of 500 MHz

Clk2

666.66

The clock domain one operating at frequency of 666.66 MHz

Clk3

250

The clock domain one operating at frequency of 250 MHz


作為一名IC設(shè)計(jì)人員或架構(gòu)師,我們需要考慮多個時(shí)鐘域設(shè)計(jì)的整體數(shù)據(jù)完整性檢查,并需要為數(shù)據(jù)路徑和控制路徑提供干凈的時(shí)序。


考慮到這一點(diǎn),我們需要設(shè)計(jì)同步器來在多個時(shí)鐘域設(shè)計(jì)之間傳輸數(shù)據(jù)。當(dāng)在多個時(shí)鐘域設(shè)計(jì)之間傳遞控制信號時(shí),電平、多路復(fù)用器和脈沖等同步器是有用的。異步FIFO可以用作同步器,在時(shí)鐘域和數(shù)據(jù)路徑之間傳輸數(shù)據(jù)。


以下是我們在進(jìn)行多時(shí)鐘域設(shè)計(jì)時(shí)應(yīng)該使用的一些準(zhǔn)則,以消除CDC錯誤。


避免亞穩(wěn)態(tài):在傳遞控制信號信息時(shí),使用寄存器輸出,因?yàn)檫@有助于避免毛刺和冒險(xiǎn)。通過在傳遞控制信號時(shí)使用寄存的輸出邏輯,可以避免單時(shí)鐘周期內(nèi)的多次轉(zhuǎn)換。亞穩(wěn)態(tài)阻塞邏輯如圖4所示。


圖4 亞穩(wěn)態(tài)阻塞邏輯


使用MCP:強(qiáng)烈推薦多周期路徑策略,以避免在多個時(shí)鐘域之間傳遞數(shù)據(jù)和控制信號信息時(shí)的亞穩(wěn)態(tài)問題。在MCP中,采用的策略是建立控制和數(shù)據(jù)對,將具有單比特控制信號的多比特?cái)?shù)據(jù)從發(fā)送時(shí)鐘域傳遞到接收時(shí)鐘域。利用脈沖同步器可以在接收時(shí)鐘域?qū)刂菩畔⑦M(jìn)行采樣,并在有或沒有同步器的情況下將數(shù)據(jù)傳遞到接收時(shí)鐘域。該技術(shù)可以在多個周期內(nèi)保持?jǐn)?shù)據(jù)的穩(wěn)定值,并且可以利用脈沖同步器產(chǎn)生的同步信號在接收時(shí)鐘域中采樣??缭綍r(shí)鐘域的邊界,以下是需要考慮的關(guān)鍵點(diǎn)。


(a)控制信號必須使用多級同步器進(jìn)行同步。

(b)控制信號應(yīng)無冒險(xiǎn)和毛刺。

(c)應(yīng)該有跨越時(shí)鐘邊界的過渡。

(d)控制信號應(yīng)至少穩(wěn)定一個時(shí)鐘周期。


MCP策略如圖5所示。


圖5 MCP策略


采用FIFO:異步FIFO是傳遞多位控制信號或數(shù)據(jù)信息的有效技術(shù)。在這種技術(shù)中,發(fā)送時(shí)鐘域在FIFO未滿時(shí)將數(shù)據(jù)寫入FIFO內(nèi)存緩沖區(qū),接收時(shí)鐘域在FIFO未空時(shí)從FIFO緩沖區(qū)讀取數(shù)據(jù)。


使用格雷碼計(jì)數(shù)器:在大多數(shù)具有跨時(shí)鐘域(CDC)ASIC設(shè)計(jì)中,跨時(shí)鐘域傳遞計(jì)數(shù)器值是至關(guān)重要的。如果二進(jìn)制計(jì)數(shù)器用于在時(shí)鐘域邊界交換數(shù)據(jù),那么由于一個或多個比特的轉(zhuǎn)換,數(shù)據(jù)轉(zhuǎn)換很容易出錯。在這種情況下,建議使用格雷碼計(jì)數(shù)器在跨時(shí)鐘邊界傳遞數(shù)據(jù)。在接收端時(shí)鐘域,采用格雷碼到二進(jìn)制碼的轉(zhuǎn)換,將原始數(shù)據(jù)恢復(fù)。


設(shè)計(jì)分區(qū):在為多個時(shí)鐘域設(shè)計(jì)邏輯時(shí),通過使用時(shí)鐘組對設(shè)計(jì)進(jìn)行分區(qū)。


時(shí)鐘命名約定:為了更好地識別時(shí)鐘源,建議使用時(shí)鐘命名約定。時(shí)鐘的命名約定應(yīng)該由有意義的前綴/后綴支持。例如,發(fā)送時(shí)鐘域使用clk_s,接收時(shí)鐘域使用clk_r。


同步復(fù)位:對于ASIC設(shè)計(jì),強(qiáng)烈建議使用同步復(fù)位器。


避免保持時(shí)間違例:為了避免保持時(shí)間違例,建議仔細(xì)查看體系結(jié)構(gòu),并制定在多個時(shí)鐘周期之間傳遞穩(wěn)定數(shù)據(jù)的策略。


避免丟失相關(guān)性:在時(shí)鐘域邊界上,有幾種可能導(dǎo)致丟失相關(guān)性的方式。比如有:

(a)總線上的多個比特

(b)多個握手信號

(c)不相關(guān)的信號


為了避免這種情況,使用時(shí)鐘意圖驗(yàn)證技術(shù),因?yàn)檫@些技術(shù)將確保在時(shí)鐘邊界上傳遞多位信號。


04

控制路徑與同步

本節(jié)討論ASIC設(shè)計(jì)中使用的各種同步器和策略。


電平或多觸發(fā)同步器

在多個時(shí)鐘域之間傳遞的控制信號主要由快時(shí)鐘域慢時(shí)鐘域傳遞,會出現(xiàn)時(shí)序錯誤,設(shè)計(jì)中會出現(xiàn)時(shí)序違例。因此,在體系結(jié)構(gòu)設(shè)計(jì)期間,更好的策略是確定多個時(shí)鐘域設(shè)計(jì)的接口邊界,然后在RTL設(shè)計(jì)中使用同步器的策略。


當(dāng)在多個時(shí)鐘域之間傳遞控制信號時(shí),可以通過設(shè)計(jì)電平同步器(可能使用兩個或三個觸發(fā)器)來解決亞穩(wěn)態(tài)問題。圖6使用了兩級電平同步器邏輯。

圖6 控制路徑中有二級電平同步器


如圖6所示,利用電平同步器將控制信號q1從時(shí)鐘域1傳遞到時(shí)鐘域2。主要的設(shè)計(jì)策略是將有效的輸出q1傳遞到第二個時(shí)鐘域。電平同步器在第二個時(shí)鐘域,對輸出q1進(jìn)行采樣。由于違反了設(shè)置或保持時(shí)間,第二個時(shí)鐘域的輸入觸發(fā)器將是亞穩(wěn)態(tài)的,這應(yīng)該通過設(shè)置EDA工具屬性來忽略。輸出的data_out是有效的數(shù)據(jù),由于使用了同步器,本設(shè)計(jì)有兩個時(shí)鐘的延遲。


圖6所示的設(shè)計(jì)時(shí)序描述如下(圖7所示)。

圖7 使用兩級同步器的時(shí)序


如圖7所示,q1由第一個時(shí)鐘域輸出。在clk2的上升沿上,觸發(fā)器FF1的輸出q2將由于建立或保持時(shí)間違例而進(jìn)入亞穩(wěn)態(tài)。但是觸發(fā)器FF2輸出在接下來的時(shí)鐘邊是data_out是有效的輸出。使用該命令設(shè)置false path:

set_false_path –from FF0/q –to FF1/q


使用這兩個觸發(fā)器的電平同步器如圖8所示,可以在設(shè)計(jì)中采用。更好的策略是在RTL設(shè)計(jì)期間將電平同步器的RTL描述作為單獨(dú)的模塊。引入的延遲取決于將輸出驅(qū)動到有效合法狀態(tài)所需的觸發(fā)器數(shù)。


圖8 電平同步器


下面將對RTL描述部分進(jìn)行描述:

always @ (posedge clk)beginq<=data_in;data_out<=qend

在ASIC設(shè)計(jì)中,當(dāng)控制信息需要從快時(shí)鐘域傳遞到慢時(shí)鐘域時(shí),就會出現(xiàn)數(shù)據(jù)完整性問題。該問題是由于在將控制信號從時(shí)鐘域1傳遞到時(shí)鐘域2時(shí)觸發(fā)器輸出的合法狀態(tài)不收斂造成的。


利用脈沖展寬器可以解決快時(shí)鐘域到慢時(shí)鐘域的采樣問題。工作在正時(shí)鐘邊緣的電平脈沖發(fā)生器如圖9所示。

圖9 電平到脈沖轉(zhuǎn)換


另一種機(jī)制是信號的握手,可以用來實(shí)現(xiàn)數(shù)據(jù)的收斂。


如圖10所示,將時(shí)鐘域2的采樣信號作為握手信號反饋到時(shí)鐘域1。這種握手機(jī)制類似于對較快時(shí)鐘域1的確認(rèn)或通知,較快時(shí)鐘域傳遞的控制信號被較慢時(shí)鐘域成功采樣。在實(shí)際的大多數(shù)場景中,都采用了這種機(jī)制,即使較快的時(shí)鐘域在收到較慢時(shí)鐘域的有效通知或確認(rèn)信號后,也可以發(fā)送另一個控制信號。

圖10 控制信號的握手機(jī)制


脈沖同步器

這種類型的同步器使用多級電平同步器,其中兩級電平同步器的輸出由輸出觸發(fā)器采樣。這種同步器也稱為切換同步器,用于將發(fā)送時(shí)鐘域產(chǎn)生的脈沖同步到目標(biāo)時(shí)鐘域。當(dāng)將數(shù)據(jù)從較快的時(shí)鐘域傳遞到較慢的時(shí)鐘域時(shí),如果使用兩級電平同步器,脈沖可能跳過。在這種情況下,脈沖同步器是有效和有用的。脈沖同步器圖如圖11所示。


圖11 脈沖同步器


Mux同步器

將時(shí)鐘域1的信息發(fā)送到時(shí)鐘域2時(shí),使用這對數(shù)據(jù)和控制信號。使用多bit數(shù)據(jù)和使用單bit控制信號。在接收端,根據(jù)發(fā)送時(shí)鐘和接收時(shí)鐘的比值,使用電平或脈沖同步器為多路復(fù)用器產(chǎn)生控制信號。這種技術(shù)類似于MCP,并且如果數(shù)據(jù)在跨越時(shí)鐘邊界的多個時(shí)鐘周期中是穩(wěn)定的,則這種技術(shù)是有效的。如圖12所示。

圖12 Mux同步器


05

bit數(shù)據(jù)傳輸?shù)奶魬?zhàn)

在多個時(shí)鐘域之間傳遞多個控制信號是一個重要的挑戰(zhàn)。問題是這些控制信號到達(dá)的時(shí)間不同。如果這些控制信號的到達(dá)沒有得到正確的管理,那么真正的問題是由于傾斜??紤]圖13所示的場景,其中“enable ” “l(fā)oad_en ”和“ready ”需要從一個時(shí)鐘域傳遞到另一個時(shí)鐘域。在這種情況下,如果使用獨(dú)立的電平同步器,則接收端可能會因?yàn)樾盘柕耐嵝?信號到達(dá)時(shí)間不同)而出現(xiàn)同步失敗。

圖13 對接收端時(shí)鐘域內(nèi)的多個信號進(jìn)行采樣


考慮其中一個控制信號,例如enable到達(dá)較晚,則控制路徑中可能存在同步失敗,為了避免這組3個控制信號,嘗試在時(shí)鐘域之間傳遞共同信號。策略如圖14所示。

圖14 固定在多時(shí)鐘域內(nèi)傳遞的控制信號


06

數(shù)據(jù)路徑同步

用于在時(shí)鐘域之間傳遞多個數(shù)據(jù)bit的技術(shù)是:

  • 握手機(jī)制

  • 異步FIFO緩存

  • 格雷編碼


握手機(jī)制

在時(shí)鐘域之間傳遞多比特信號時(shí),握手機(jī)制的使用是一種有用的技術(shù)。如圖15所示,發(fā)射機(jī)工作在clk1,接收機(jī)工作在clk2。數(shù)據(jù)可以從發(fā)射機(jī)傳送到接收機(jī)。這里要注意,該握手與AXI總線的握手略有不同。


接收端時(shí)鐘域可以產(chǎn)生數(shù)據(jù)有效(data valid)和設(shè)備就緒(ready)等握手信號。因此,目的是通知發(fā)送器總線上還存在有效數(shù)據(jù)可用,設(shè)備還沒有準(zhǔn)備好接收新數(shù)據(jù)。


圖15 握手機(jī)制框圖


握手信號datavalid它是來自時(shí)鐘域2的主動高電平握手信號,表示傳輸?shù)臄?shù)據(jù)是有效數(shù)據(jù),接收端只需要很少的時(shí)鐘就可以對該數(shù)據(jù)進(jìn)行采樣。傳輸數(shù)據(jù)時(shí)的時(shí)鐘延遲取決于同步器中使用的觸發(fā)器的數(shù)量,而延遲是握手機(jī)制的最大缺點(diǎn)之一。


握手信號deviceready它表明當(dāng)數(shù)據(jù)有效的時(shí)候,接收端已經(jīng)準(zhǔn)備好接收新數(shù)據(jù),并且設(shè)備ready好了可以拉高通知發(fā)送端將新數(shù)據(jù)放到數(shù)據(jù)總線上。


如果我們有多個時(shí)鐘域的FSM控制器,那么設(shè)計(jì)架構(gòu)來通過使用請求(request)和確認(rèn)(ack)信號建立同步。FSM控制的握手機(jī)制如圖16所示。

圖16 FSM握手機(jī)制


異步FIFO同步器

異步FIFO是有用的,因?yàn)閿?shù)據(jù)路徑同步器是用來交換多個時(shí)鐘域之間的數(shù)據(jù)。如果FIFO內(nèi)存緩沖區(qū)沒有滿,發(fā)送端時(shí)鐘域或發(fā)送端時(shí)鐘域可以使用write_clk將數(shù)據(jù)寫入FIFO內(nèi)存緩沖區(qū),如果FIFO內(nèi)存緩沖區(qū)沒有空,接收端時(shí)鐘域可以使用read_clk讀取數(shù)據(jù)(圖17)。


FIFO由以下幾個塊組成:

Memory:內(nèi)存緩沖區(qū)

Write Clock Domain:write_clk上工作的寫時(shí)鐘域邏輯。

Read clock Domain:讀時(shí)鐘域邏輯,它正在read_clk上工作。

Flag Logic:生成標(biāo)志邏輯empty和full。


FIFO和相關(guān)的邏輯塊如圖17所示。

圖17 FIFO框圖


如何得到FIFO的深度?


考慮寫時(shí)鐘域的工作頻率為250 MHz,讀時(shí)鐘域的工作頻率為100 MHz,沒有延遲,然后傳輸50字節(jié)的突發(fā)長度,可以使用以下計(jì)算:


Write clock time: T1 = 1/250 MHz = 4 ns.The Time Required to Write Burst of 50 Bytes of data = 4 ns*50 = 200 nsRead Clock Time: T2 = 1/100 MHz = 10 nsNumber of Reads with 10 ns = 200 ns/10 ns = 20Depth of FIFO = 5020 = 30 Bytes.

如果指定了讀和寫延遲,那么嘗試修改上面的步驟來獲得FIFO的深度。


格雷編碼

在傳遞多個位的數(shù)據(jù)或控制信號時(shí),必須使用格雷編碼技術(shù),因?yàn)檫@種技術(shù)保證了兩個連續(xù)的數(shù)字只有一bit的變化。例如,如果4bit二進(jìn)制數(shù)據(jù)需要在多個時(shí)鐘域之間傳遞,那么一個或多個bit轉(zhuǎn)換,因此需要更多的功率和出錯的機(jī)會。因此,為了避免這種情況,提高性能,在發(fā)送端或發(fā)送端時(shí)鐘域采用二進(jìn)制到格雷碼轉(zhuǎn)換邏輯。這保證了在時(shí)鐘邊界上只有一bit變化。為了得到接收端時(shí)鐘域的原始二進(jìn)制數(shù)據(jù),采用格雷碼到二進(jìn)制碼的轉(zhuǎn)換。該技術(shù)如圖18所示。

圖18 格雷編碼技術(shù)


07

總結(jié)

總結(jié)幾個要點(diǎn):

  • 在多個時(shí)鐘域之間傳遞數(shù)據(jù)時(shí),設(shè)計(jì)數(shù)據(jù)路徑同步器。

  • 在多個時(shí)鐘域之間傳遞控制信號時(shí),需要設(shè)計(jì)控制路徑同步器。

  • 在通過時(shí)鐘域傳遞數(shù)據(jù)和控制信號信息時(shí),強(qiáng)烈建議使用多周期路徑來避免亞穩(wěn)態(tài)問題。

  • 傳遞多bit控制或數(shù)據(jù)信息的常用而有效的技術(shù)是使用異步FIFO

  • 對于在多個時(shí)鐘域之間傳遞的多位控制信號,采用分組技術(shù)來避免由于到達(dá)時(shí)間不同而產(chǎn)生的歪斜。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
關(guān)閉