|
時(shí)鐘域信號(hào)同步的IP解決方案 作者:Rick Kelly,Synopsys研發(fā)經(jīng)理 為了確保擁有多個(gè)異步時(shí)鐘域的系統(tǒng)級(jí)芯片(Soc)能夠可靠運(yùn)行,設(shè)計(jì)人員必須使這些跨越了多個(gè)域的時(shí)鐘和數(shù)據(jù)信號(hào)保持同步。盡管這并不屬于新提出的要求,但隨著多時(shí)鐘域的越來越常見和復(fù)雜化,使得這一要求具備了新的重要意義。大規(guī)模集成加上對(duì)性能的嚴(yán)格要求以及頻率調(diào)節(jié)都導(dǎo)致在許多不同頻率下發(fā)生了很多時(shí)鐘域跨越現(xiàn)象-就像一場(chǎng)數(shù)字化的“完美風(fēng)暴”。 跨時(shí)鐘域(CDC)問題會(huì)以許多種形式出現(xiàn),其評(píng)估難度相當(dāng)高。幸好,Synopsys DesignWare庫(kù)產(chǎn)品提供了許多卓越的CDC解決方案,這些方案應(yīng)用簡(jiǎn)便,設(shè)計(jì)人員只需掌握在何時(shí)以及何處應(yīng)用它們即可。 本文解釋了在時(shí)鐘和數(shù)據(jù)信號(hào)從一個(gè)時(shí)鐘域跨越到另一個(gè)時(shí)鐘域時(shí)所發(fā)生的許多類型的同步問題。在任何情況下,本文所包含的問題都涉及到相互異步的時(shí)鐘域。隨著每一個(gè)問題的提出,本文將概述一個(gè)或多個(gè)DesignWare解決方案。這些主題和解決方案包括: 基本同步問題 當(dāng)來自一個(gè)時(shí)鐘系統(tǒng)的信號(hào)將用作另一個(gè)與其不同步的時(shí)鐘系統(tǒng)的輸入時(shí),就需要對(duì)信號(hào)進(jìn)行同步以達(dá)成。而不進(jìn)行同步就無法達(dá)成時(shí)序收斂。圖1所示為采用一個(gè)單寄存器來同步至目的時(shí)鐘域的異步輸入。
伴隨這種方法會(huì)出現(xiàn)的一個(gè)問題是,當(dāng)一個(gè)觸發(fā)器的數(shù)據(jù)輸入處于邏輯0至邏輯1之間的過渡過程當(dāng)中時(shí),發(fā)給這個(gè)觸發(fā)器時(shí)鐘信號(hào)時(shí)有可能產(chǎn)生亞穩(wěn)態(tài)現(xiàn)象。亞穩(wěn)態(tài)現(xiàn)象也有可能發(fā)生在觸發(fā)器的建立時(shí)間或保持時(shí)間出現(xiàn)違反現(xiàn)象時(shí)。解決亞穩(wěn)態(tài)事件使其達(dá)至邏輯1或邏輯0所要求的時(shí)間量取決于建立時(shí)間或保持時(shí)間被違反的嚴(yán)重程度(圖2)。
Clock to Q delay 時(shí)鐘至Q延遲 FF Minimum specs 觸發(fā)器最小規(guī)格 圖2 解決亞穩(wěn)態(tài)事件所用時(shí)間 當(dāng)亞穩(wěn)態(tài)事件持續(xù)時(shí)間長(zhǎng)至足以影響到下一個(gè)邏輯階段時(shí),同步器就發(fā)生了故障。故障間平均時(shí)間(MTBF)通常計(jì)算如下:
其中:
對(duì)于有著相對(duì)較高數(shù)據(jù)傳輸速率的高速應(yīng)用來說,即使兩級(jí)同步器也有可能無法獲得足夠的MTBF,特別是在FPGA實(shí)現(xiàn)方案中。如果加入第3級(jí),則只有在第1級(jí)在亞穩(wěn)態(tài)保持了足夠長(zhǎng)的時(shí)間,導(dǎo)致侵占了FF2的建立時(shí)間的情況下,第2級(jí)才有可能發(fā)生亞穩(wěn)態(tài)事件(圖3)。
圖3 3級(jí)同步器 Sampe MTBF test … MTBF測(cè)試電路示例 采用這一方法,MTBF可計(jì)算為:
T0和T1常數(shù)與所選用的具體觸發(fā)器相關(guān),并有可能從庫(kù)供應(yīng)商處獲得。庫(kù)供應(yīng)商會(huì)采用如圖4所示的電路來測(cè)定這些常數(shù)。錯(cuò)誤計(jì)數(shù)器用于測(cè)量在輸入時(shí)鐘處于某一特定組合的輸入頻率下的MTBF。通過在不同頻率比率下讓此電路運(yùn)行,就可以測(cè)定T0和T1的數(shù)值。
圖4 用于測(cè)定觸發(fā)器常數(shù)的電路 參見以下資料,可以了解更多有關(guān)亞穩(wěn)態(tài)和MTBF計(jì)算的信息:
圖5a – 掃描測(cè)試中不受控制的偏移有可能導(dǎo)致跨域捕獲發(fā)生違反
圖 5b – 在域之間復(fù)用一個(gè)鎖存器可以確保1/2時(shí)鐘周期的保持
圖5c – 一個(gè)負(fù)邊沿D觸發(fā)器也可保持1/2時(shí)鐘周期的保持圖5 跨時(shí)鐘域掃描測(cè)試問題 對(duì)于基本同步來說,設(shè)計(jì)人員可以使用DesignWare的DW_sync組件,此組件有以下參數(shù): 寬度
圖6 采用DW_sync組件時(shí)可能的級(jí)數(shù)同步臨時(shí)事件 有些時(shí)間,您需要在一個(gè)時(shí)鐘域內(nèi)設(shè)置邏輯電路以告知另一個(gè)異步時(shí)鐘域內(nèi)的邏輯電路,有某一特定事件已經(jīng)發(fā)生。一種方法是采用如圖7所示的方案,其中通過門選復(fù)位來清空源域內(nèi)的脈沖。 圖7a – 較差的設(shè)計(jì)方案
圖7b – 較好但仍存在門選復(fù)位
圖7c – 更好的設(shè)計(jì)方案,但仍不是最佳方案 圖7 另一個(gè)時(shí)鐘域內(nèi)事件的通知邏輯 在使用一個(gè)高電平有效的脈沖作為跨時(shí)鐘域事件的信號(hào)時(shí),這個(gè)脈沖的寬度必須足以確保采樣操作的完成,而且必須在脈沖之間存在明顯的無信號(hào)時(shí)間。為了避免采用脈沖拉伸機(jī)制,您可以使用不歸零(NRZ)信號(hào)發(fā)生方式,而不要使用歸零(RZ)信號(hào)發(fā)生方式。圖8所示為clk_d域是如何在后一種類型的信號(hào)下捕獲變化的,這是一種在許多狀況下難于采用的方法。
Event in clk_s:clk_s內(nèi)的事件 圖8 NRZ信號(hào)發(fā)生方式的優(yōu)點(diǎn) 為了簡(jiǎn)化時(shí)鐘域之間的脈沖傳遞,可采用DW_pulse_sync雙時(shí)鐘脈沖同步器(圖9)。標(biāo)為“clk_s”的虛線框內(nèi)的邏輯電路運(yùn)行在clk_s(源)時(shí)鐘域下,而標(biāo)為“clk_d”的虛線框內(nèi)的邏輯電路運(yùn)行在clk_d(目的)時(shí)鐘域內(nèi)。在域之間采用NRZ信號(hào)可以實(shí)現(xiàn)更高的事件處理流量,而且由于無需反饋,所要求的邏輯電路也較少。
Register…:可以通過parameter, reg_event在器件外配置寄存器 圖9 DW_pulse_sync雙時(shí)鐘脈沖同步器 Multiple …:多寄存器同步器
Multiple …:多寄存器同步器 圖10 加了確認(rèn)的DW_pulseack_sync脈沖同步器 如果需要反饋,則可以采用DW_pulseack_sync,這是一種帶有確認(rèn)的脈沖同步器。如圖10所示,這個(gè)IP產(chǎn)品提供了一個(gè)NRZ反饋信號(hào),能夠比無確認(rèn)版本提供更高的事件處理流量。DW_pulseack_sync還提供了可配置的標(biāo)志寄存器和反饋延時(shí)。 同步數(shù)據(jù)總線 在從一個(gè)時(shí)鐘域跨越至另一個(gè)時(shí)鐘域時(shí),在目的時(shí)鐘對(duì)接近過渡狀態(tài)的總線進(jìn)行采樣時(shí),數(shù)據(jù)總線上有可能出現(xiàn)瞬時(shí)虛假數(shù)值(圖11)。例如,一條從11011001變?yōu)?1011010的8位總線上有3個(gè)位發(fā)生了改變。在所涉及的偏移存在時(shí)序上不確定性的情況下,就有會(huì)看到8個(gè)可能出現(xiàn)的數(shù)值: the initial value (11011001), the final value (01011010) and six possible intermediate values ( 11011000, 11011011, 11011010, 01011001, 01011000 and 01011011).
Source…:源總線 圖11 瞬時(shí)總線數(shù)值 一種在同步數(shù)據(jù)總線時(shí)避免不想要的過渡數(shù)值的方法是,采用一個(gè)帶有確認(rèn)的臨時(shí)事件同步器。這種邏輯可以采用以下次序?qū)缭綍r(shí)鐘邊界的數(shù)據(jù)進(jìn)行同步交換:保持?jǐn)?shù)據(jù),發(fā)送“請(qǐng)接受”,發(fā)回“已接受”,釋放數(shù)據(jù)寄存器。DW_pulseack_sync組件能夠發(fā)送必要的“請(qǐng)接受”和“已接受”事件。
Optional …:可選用的臨時(shí)數(shù)據(jù)寄存器 圖12 帶確認(rèn)的DW_data_sync總線同步器確認(rèn)延遲問題 在源時(shí)鐘比目的時(shí)鐘快得并不多(或根本相同)時(shí),提供一個(gè)確認(rèn)信號(hào)的同步器可能會(huì)引發(fā)時(shí)延問題。如果在應(yīng)用當(dāng)中時(shí)延具有關(guān)鍵性的意義,則應(yīng)考慮采用一種“提前”確認(rèn)方式,即通過設(shè)置參數(shù)ack_delay = 0來進(jìn)行配置。 — Max Fclk_s = Fclk_d * (2 – 0.25) 如果確保目的時(shí)鐘速率超過了(Fclk_s * (f_sync_type + 1.25))[2],則可以使用更簡(jiǎn)單的信號(hào)同步體系。在目的時(shí)鐘較快的情況下,可以對(duì)“請(qǐng)接受”事件進(jìn)行同步,并在不到源域1個(gè)時(shí)鐘周期的時(shí)間內(nèi)捕獲數(shù)據(jù)。因此,也就不需要發(fā)回“已接受”事件了。在需要最大程度地減少時(shí)延和/或不必要的邏輯電路時(shí),例如,在對(duì)一個(gè)實(shí)時(shí)時(shí)鐘寄存器進(jìn)行更新并將其內(nèi)容發(fā)送到一個(gè)高速邏輯區(qū)塊時(shí),這種方法就較為實(shí)用。
Event …:事件同步邏輯電路 圖13 不帶ac確認(rèn)信號(hào)的DW_data_sync_na總線同步器總線同步的特殊情況 如果在任一時(shí)刻,一條總線上只會(huì)有一個(gè)位發(fā)生改變(也就是格雷碼格雷碼過渡),則簡(jiǎn)單的多寄存器同步絕對(duì)不會(huì)引發(fā)過渡虛假數(shù)據(jù)。而在接近采樣時(shí)鐘時(shí)有一個(gè)位發(fā)生改變時(shí),第一個(gè)捕獲此位的寄存器有可能進(jìn)入亞穩(wěn)態(tài),但這個(gè)位將會(huì)轉(zhuǎn)向新數(shù)值或舊有數(shù)值。
Last value:上一次的數(shù)值 圖14 DW_data_sync_1c單時(shí)鐘過濾數(shù)據(jù)總線同步器 針對(duì)這些情況,DesignWare提供了單時(shí)鐘過濾數(shù)據(jù)總線同步器DW_data_sync_1c(圖14)。此同步器可以消除存在高位間時(shí)序偏移特性的數(shù)據(jù)過渡中的過渡數(shù)值。 數(shù)據(jù)傳輸與數(shù)據(jù)流 在跨時(shí)鐘域傳輸數(shù)據(jù)時(shí),請(qǐng)牢記數(shù)據(jù)傳輸與數(shù)據(jù)流之間的差別。在數(shù)據(jù)傳輸當(dāng)中,在典型情況下不會(huì)長(zhǎng)時(shí)間維持背靠背(back-to-back)式的數(shù)據(jù)發(fā)送。數(shù)據(jù)同步設(shè)計(jì)可作為一個(gè)示例,例如采用DW_data_sync的設(shè)計(jì)方案。
Push logic:推送邏輯電路 圖15 配合雙端口RAM的雙時(shí)鐘FIFO 此設(shè)計(jì)采用了DesignWare組件DW_ffoctl_s2_sf和DW_ffo_s2_sf來實(shí)現(xiàn)一個(gè)帶有狀態(tài)標(biāo)志位的同步(雙時(shí)鐘)FIFO(圖16)。自從1999年建立其體系架構(gòu)以來,這些組件一直在DesignWare Library IP內(nèi)廣受歡迎。
Push logic:推送邏輯電路 圖16 配有狀態(tài)標(biāo)志的DesignWare雙時(shí)鐘FIFO控制器 實(shí)現(xiàn)狀態(tài)標(biāo)志位的另一種方案是采用動(dòng)態(tài)標(biāo)志位的雙時(shí)鐘FIFO,它采用DW_ ffo_2c_df和DW_ffoctl_2c_df組件(圖127)。除了動(dòng)態(tài)標(biāo)志位支持以外,DW_ffoctl_2c_df提供了一些新特色(在DW_ffoctl_s2_sf提供的以外):
Pre-fetch cache:預(yù)取高速緩存 圖17 配有動(dòng)態(tài)標(biāo)志位的DesignWare雙時(shí)鐘FIFO任意相位相干數(shù)據(jù)流 一些芯片向外部邏輯電路提供了一個(gè)將與數(shù)據(jù)共同返回至芯片的時(shí)鐘(圖18)。在這些應(yīng)用當(dāng)中,如何在最小時(shí)延的情況下讓數(shù)據(jù)流返回至芯片內(nèi)的時(shí)鐘域呢?
Return clock:返回時(shí)鐘 圖18 與外部邏輯電路來回傳輸?shù)臅r(shí)鐘和數(shù)據(jù)
Event ….:事件同步邏輯電路 圖19 不帶確認(rèn)的DW_data_sync_na數(shù)據(jù)總線同步器 如果數(shù)據(jù)傳輸率足夠低,而且芯片擁有一個(gè)足夠快的內(nèi)部時(shí)鐘(典型情況約為數(shù)據(jù)傳輸率的4倍左右),則可以采用DW_data_sync_na(圖19),并依靠過采樣來可靠地捕獲數(shù)據(jù)。 如果數(shù)據(jù)傳輸率過高,導(dǎo)致不能采用過采樣技巧來可靠處理數(shù)據(jù),則需要采用一種具備某種數(shù)據(jù)存儲(chǔ)能力的方法,例如雙時(shí)鐘FIFO。您可能想要采用DW_ffo_2c_df和AW_ ffo_s2_sf組件,但是,這兩種組件存在著額外邏輯電路的費(fèi)用,還有比采用簡(jiǎn)單數(shù)據(jù)傳輸技巧更高的時(shí)延。
Receive control:接收控制 圖20 DW流同步數(shù)據(jù)數(shù)據(jù)同步器 對(duì)于DW_stream_sync,深度(depth)參數(shù)控制著解復(fù)用的通道數(shù)量。對(duì)于相干數(shù)據(jù)流來說,可將深度的數(shù)值設(shè)置為(f_sync_type + 2)。
Bubble …:輸出數(shù)據(jù)內(nèi)的泡沫代表著源時(shí)鐘速率與目的時(shí)鐘速率之間的差別 圖21 無數(shù)據(jù)的數(shù)據(jù)流 在數(shù)據(jù)流傳輸率低于目的時(shí)鐘率時(shí),DW_stream_sync會(huì)偶然生成一個(gè)輸出端沒有數(shù)據(jù)的周期(圖21)。但是,如果正確地設(shè)置了預(yù)填充數(shù)值(通過prefll_lvl參數(shù))以及深度(depth)參數(shù),則DW_stream_sync可以同時(shí)稍微加快和稍微放慢地處理輸入的數(shù)據(jù)流。此項(xiàng)能力對(duì)于提高數(shù)據(jù)源會(huì)在一些較小誤差范圍內(nèi)變動(dòng)時(shí)的互操作性是實(shí)用的。 特殊情況-復(fù)位/清零
Source …:源側(cè)控制 圖22 DW_reset_sync復(fù)位序列同步器 DW_reset_sync能夠采用源側(cè)或目的側(cè)啟動(dòng)的清零操作來控制源域和目的域的邏輯清零的正確序列。圖23所示是源側(cè)啟動(dòng)方法的時(shí)序,側(cè)圖24所示為目的側(cè)方法。
圖23 DW_reset_sync源側(cè)啟動(dòng)的時(shí)序
圖24 DW_reset_sync目的側(cè)啟動(dòng)的時(shí)序特殊情況-相關(guān)時(shí)鐘系統(tǒng) 一些設(shè)計(jì)采用了源自于同一個(gè)主時(shí)鐘的多個(gè)時(shí)鐘域。如果您通過時(shí)鐘樹限制了時(shí)鐘偏移現(xiàn)象,則可以采用一種高效的方法來跨越這種時(shí)鐘邊界來獲取數(shù)據(jù)。 (high …):高速域
圖25a – 大于2的時(shí)鐘比率
圖25b-等于2的時(shí)鐘比率 Source …:源側(cè)捕獲寄存器 圖25 用于低頻至高頻時(shí)鐘的準(zhǔn)同步數(shù)據(jù)接口DW_data_qsync_lh 具體來說,DW_data_qsync_lh提供了一種可用于低頻至高頻時(shí)鐘的準(zhǔn)同步數(shù)據(jù)接口(圖25)。換句話說,數(shù)據(jù)從較慢的源域發(fā)送至較快的目的域。如果時(shí)鐘比率為2,則目的域的第一個(gè)觸發(fā)器將是一個(gè)負(fù)邊沿觸發(fā)器。否則,所有觸發(fā)器(兩個(gè)域內(nèi))均為正邊沿型。 圖26所示為采用DW_data_qsync_lh進(jìn)行數(shù)據(jù)傳輸時(shí)的時(shí)序。正如此時(shí)序圖所示,IP確保了在時(shí)鐘相關(guān)以及目的時(shí)鐘快于源時(shí)鐘時(shí)的同步數(shù)據(jù)傳輸。
Internal …:內(nèi)部輸入捕獲寄存器 圖26. DW_data_qsync_lh時(shí)序
圖27a – 時(shí)鐘比率大于2 (low-speed domain):低速域
圖27b-等于2的時(shí)鐘比率 圖27 用于低頻至高頻時(shí)鐘的準(zhǔn)同步數(shù)據(jù)接口DW_data_qsync_hl
Previous data:以前的數(shù)據(jù) 圖28. DW_data_qsync_hl時(shí)序CDC收斂問題 在兩個(gè)或多個(gè)信號(hào)只采用多個(gè)寄存器(例如DW_sync)進(jìn)行同步,并且隨后這些信號(hào)在目的時(shí)鐘域內(nèi)組合成單一邏輯表達(dá)時(shí)(圖29),才存在跨時(shí)鐘域收斂的問題。
Signal A …:信號(hào)A邏輯電路 圖29 跨時(shí)鐘域收斂 即使諸如Synopsys的Leda這樣的代碼檢查工具能夠識(shí)別出CDC收斂的實(shí)例,但這些工具卻不能決定這種收斂是否代表著一種功能上的錯(cuò)誤。其潛在問題是,依靠多寄存器同步器的統(tǒng)一均勻時(shí)延的狀態(tài)機(jī)的設(shè)計(jì)有可能在芯片上不能正確運(yùn)行。
Clock …:時(shí)鐘至Q延遲 圖30 用于檢測(cè)誤采樣的觸發(fā)器模型 一種更好的方法是采用一個(gè)包含了一個(gè)復(fù)用器的誤采樣模型。這種方法是基于認(rèn)識(shí)到,在目的邏輯電路對(duì)一個(gè)正在變化的位進(jìn)行采樣時(shí),所捕獲的最終數(shù)值只有可能是兩種可能數(shù)值之一,即:最新輸入數(shù)值或來自以前周期的輸入數(shù)值。而在同步器的第一個(gè)觸發(fā)器前設(shè)置一個(gè)復(fù)用器時(shí),就可以通過控制這個(gè)復(fù)用器來建立誤采樣行為的模型(圖31)。
Missample …:誤采樣控制 圖31 基于復(fù)用器的誤采樣檢測(cè) 這個(gè)誤采樣方法已經(jīng)內(nèi)嵌于DW_sync組件之內(nèi)以及所有其它采用了DW_sync的DesignWare CDC IP。 verif_en數(shù)值 0 1 2 表1 verif_en參數(shù)的數(shù)值請(qǐng)注意,“?_sync_type”指參數(shù)f_sync_type (適用于源域至目的域的時(shí)延)或r_sync_type(適用于從目的域至源域的時(shí)延)之中任一個(gè)的數(shù)值。
Width:寬度 圖32 在verif_en = 1時(shí)的DW_sync誤采樣檢測(cè) 請(qǐng)牢記,在輸入時(shí)序偏移很大時(shí),誤采樣有可能在多個(gè)時(shí)鐘周期內(nèi)持續(xù)存在-只能在使用DW_data_sync_1c的芯片外數(shù)據(jù)同步情況下才可經(jīng)常見到。在設(shè)置verif_en = 2時(shí),DesignWare Library CDC組件可以通過多達(dá)3個(gè)時(shí)鐘周期來“模糊”數(shù)據(jù)過渡現(xiàn)象。圖33所示為這種情況下的誤采樣原理框圖。從4個(gè)可能選項(xiàng)之中選擇2位隨機(jī)數(shù)值,其中包括了串聯(lián)的3個(gè)歷史寄存器。
Width:寬度 圖33 在verif_en = 2時(shí)的DW_sync誤采樣檢測(cè) DW_sync內(nèi)所采用的誤采樣模型也可以用于建立在對(duì)同一時(shí)刻有一個(gè)以上位發(fā)生變化的總線進(jìn)行采樣時(shí)有可能出現(xiàn)的瞬態(tài)虛假數(shù)據(jù)的模型。如果認(rèn)為自己的設(shè)計(jì)不會(huì)受這些虛假數(shù)值的影響,則可以通過采用這種誤采樣建模方法來加強(qiáng)自己的信心。DW_ sync可以隨機(jī)為每一個(gè)總線位選擇舊數(shù)值或新數(shù)值來生成過渡數(shù)值(圖34)。
Source …:源總線 圖34 能夠捕獲虛假數(shù)值的誤采樣模型 由于誤采樣在實(shí)際運(yùn)行中發(fā)生頻度極低(除非在MTBF非常低的情況下),通常您必須等上很長(zhǎng)時(shí)間才能見到與CDC機(jī)制相關(guān)的問題。此模型采用了DW_sync,通過造成誤采樣行為的頻繁發(fā)生來惡化這種問題。具體來說,在一次誤采樣延時(shí)當(dāng)中,DW_sync的每一位均通過了50%的數(shù)據(jù)過渡現(xiàn)象。這樣,如果在一個(gè)合理數(shù)量的CDC事務(wù)處理內(nèi)對(duì)DW_sync誤采樣建模的系統(tǒng)仿真成功的話,則您可非常確保實(shí)際芯片內(nèi)不會(huì)發(fā)生CDC問題。 工藝映射問題 與CDC同步相關(guān)的另一個(gè)特殊問題是多寄存器同步器向技術(shù)單元的映射。在Design Compiler將兩個(gè)觸發(fā)器映射到一個(gè)目標(biāo)庫(kù)的同一行上時(shí),此工具會(huì)不可避免地選擇能夠滿足時(shí)序限制條件的最小面積的單元,而不是對(duì)同步最好的觸發(fā)器。因此,您通常想要通過手動(dòng)方式或通過腳本方式用已知的“亞穩(wěn)態(tài)強(qiáng)化”觸發(fā)器來替代這些觸發(fā)器。 附錄A-采用提前確認(rèn)(ack_delay=0)時(shí)的頻率限制 在采用具備提前確認(rèn)功能的DW_data_sync組件時(shí),設(shè)計(jì)人員需要意識(shí)到,在源時(shí)鐘快至足以對(duì)提前確認(rèn)進(jìn)行同步并且在目的域能夠捕獲到給出確認(rèn)的數(shù)據(jù)之前就更新了數(shù)據(jù)寄存器時(shí),就會(huì)存在運(yùn)行風(fēng)險(xiǎn)。
Synchronization ….:在ack_delay=0, r_sync_type=2以及clk_s過快時(shí)的同步危險(xiǎn)情況 Ack …:clk_s確認(rèn)同步器的第一級(jí)剛剛檢測(cè)到時(shí),確認(rèn)信號(hào)就發(fā)出了(在clk_d內(nèi)) 因此,以下公式必須保持為真: 更方便的形式是: 如果時(shí)鐘抖動(dòng)和保持時(shí)間均考慮在內(nèi),則最差情況下的時(shí)序調(diào)校情況會(huì)是,在一個(gè)正在內(nèi)部發(fā)出的確認(rèn)信號(hào)存在clk_d內(nèi)最早的峰值間抖動(dòng)時(shí),與此同時(shí),存在抖動(dòng)的clk_s在最遲可能的峰值間時(shí)刻發(fā)出一個(gè)上升沿。這樣,最遲可能的峰值間抖動(dòng)clk_d就需要發(fā)生在比最早的峰值間抖動(dòng)clk_s更早的位置,且領(lǐng)先幅度至少為寄存器捕獲data_d所要求的保持時(shí)間。
Add …:增加時(shí)鐘抖動(dòng)(不確定性)以及必要的數(shù)據(jù)捕獲保持時(shí)間 Internal …:內(nèi)部確認(rèn)信號(hào) 因此,以下公式必須保持為真:
更方便的形式時(shí):
Internal …:要捕獲的內(nèi)部數(shù)據(jù) 因此,以下公式必須保持為真:
采用更方便的形式時(shí):
Pclk_d:clk_d的周期 這些計(jì)算以下列假設(shè)為基礎(chǔ):
附錄B-使用DW_data_sync_na時(shí)的頻率限制在使用DW_data_sync_na時(shí),目的時(shí)鐘的頻率必須快至足以在源時(shí)鐘域可能再次改變其內(nèi)部捕獲數(shù)據(jù)的最早時(shí)刻之前,以“充分的時(shí)間”捕獲來自源時(shí)鐘域的數(shù)據(jù)。 最差情景是,在目的時(shí)鐘校準(zhǔn)至其上升沿緊隨在用于產(chǎn)生內(nèi)部數(shù)據(jù)改變標(biāo)志位的源時(shí)鐘上升沿之后的情況下。在這種情況下,第一個(gè)數(shù)據(jù)標(biāo)志位同步寄存器幾乎失去了對(duì)數(shù)據(jù)標(biāo)志位的捕獲,而且隨后(在目的時(shí)針的3個(gè)周期之后),源域主就再次改變了數(shù)據(jù)。這種危險(xiǎn)狀況在下面的時(shí)序圖內(nèi)用DW_data_sync_na設(shè)計(jì)內(nèi)的兩級(jí)同步(也就是,f_sync_type參數(shù)設(shè)置為2)時(shí)進(jìn)行了說明。
Synchronization ….:在clk_s不夠快時(shí),DW_data_sync_na所發(fā)生的同步危險(xiǎn)
Adding …:添加時(shí)鐘抖動(dòng)(不確定性)以及必要的數(shù)據(jù)捕獲保持時(shí)間 因此,如下公式必須保持為真:
更為方便的形式是:
Pclk_d:clk_d的周期 這些計(jì)算以下列假設(shè)為基礎(chǔ): 1) 在其抖動(dòng)窗口內(nèi)最早可能位置處發(fā)生的clk_d的上升沿位于處于其最遲可能位置的clk_s上升沿之后一個(gè)周期的可能性不為零。
[1] 此項(xiàng)通用規(guī)劃假設(shè)觸發(fā)器延時(shí)和時(shí)鐘抖動(dòng)在任何時(shí)候都不會(huì)超過clk_d時(shí)鐘周期的1/4以上。有關(guān)此種情形下的更詳細(xì)計(jì)算方式請(qǐng)參見附錄A。[2] 此項(xiàng)通用規(guī)劃假設(shè)觸發(fā)器延時(shí)和時(shí)鐘抖動(dòng)在任何時(shí)候都不會(huì)超過clk_d時(shí)鐘周期的1/4以上。有關(guān)此種情形下的更詳細(xì)計(jì)算方式請(qǐng)參見附錄B。 |
|
|