日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

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

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

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

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

  • 處理器

  • 存儲(chǔ)器

  • 浮點(diǎn)引擎

  • 存儲(chǔ)控制器

  • 總線接口

  • 高速接口


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

01

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

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


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

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

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

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


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


02

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

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


現(xiàn)在考慮圖中所示的需要多個(gè)時(shí)鐘的設(shè)計(jì),讓我們?cè)囍斫庠O(shè)計(jì)中的問(wèn)題。


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

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

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


讓我們用具有多個(gè)時(shí)鐘域的時(shí)序電路來(lái)理解上面的內(nèi)容。由于到達(dá)clk1和clk2之間的相差,第二個(gè)時(shí)鐘域的觸發(fā)器將有建立和保持違例,即觸發(fā)器輸出data_out將是亞穩(wěn)態(tài)的。原因是時(shí)鐘域1的q輸出在clk2活動(dòng)邊的建立和保持窗口期間可能會(huì)改變,因此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中有三個(gè)時(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)師,我們需要考慮多個(gè)時(shí)鐘域設(shè)計(jì)的整體數(shù)據(jù)完整性檢查,并需要為數(shù)據(jù)路徑和控制路徑提供干凈的時(shí)序。


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


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


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


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


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


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

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

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

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


MCP策略如圖5所示。


圖5 MCP策略


采用FIFO:異步FIFO是傳遞多位控制信號(hào)或數(shù)據(jù)信息的有效技術(shù)。在這種技術(shù)中,發(fā)送時(shí)鐘域在FIFO未滿時(shí)將數(shù)據(jù)寫(xiě)入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ù),那么由于一個(gè)或多個(gè)比特的轉(zhuǎn)換,數(shù)據(jù)轉(zhuǎn)換很容易出錯(cuò)。在這種情況下,建議使用格雷碼計(jì)數(shù)器在跨時(shí)鐘邊界傳遞數(shù)據(jù)。在接收端時(shí)鐘域,采用格雷碼到二進(jìn)制碼的轉(zhuǎn)換,將原始數(shù)據(jù)恢復(fù)。


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


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


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


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


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

(a)總線上的多個(gè)比特

(b)多個(gè)握手信號(hào)

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


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


04

控制路徑與同步

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


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

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


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

圖6 控制路徑中有二級(jí)電平同步器


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


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

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


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

set_false_path –from FF0/q –to FF1/q


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


圖8 電平同步器


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

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

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


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

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


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


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

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


脈沖同步器

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


圖11 脈沖同步器


Mux同步器

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

圖12 Mux同步器


05

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

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

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


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

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


06

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

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

  • 握手機(jī)制

  • 異步FIFO緩存

  • 格雷編碼


握手機(jī)制

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


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


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


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


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


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

圖16 FSM握手機(jī)制


異步FIFO同步器

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


FIFO由以下幾個(gè)塊組成:

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

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

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

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


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

圖17 FIFO框圖


如何得到FIFO的深度?


考慮寫(xiě)時(shí)鐘域的工作頻率為250 MHz,讀時(shí)鐘域的工作頻率為100 MHz,沒(méi)有延遲,然后傳輸50字節(jié)的突發(fā)長(zhǎng)度,可以使用以下計(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.

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


格雷編碼

在傳遞多個(gè)位的數(shù)據(jù)或控制信號(hào)時(shí),必須使用格雷編碼技術(shù),因?yàn)檫@種技術(shù)保證了兩個(gè)連續(xù)的數(shù)字只有一bit的變化。例如,如果4bit二進(jìn)制數(shù)據(jù)需要在多個(gè)時(shí)鐘域之間傳遞,那么一個(gè)或多個(gè)bit轉(zhuǎn)換,因此需要更多的功率和出錯(cuò)的機(jī)會(huì)。因此,為了避免這種情況,提高性能,在發(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é)幾個(gè)要點(diǎn):

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

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

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

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

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

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