FPGA基礎(chǔ)知識(shí)極簡(jiǎn)教程(7)詳解亞穩(wěn)態(tài)與跨時(shí)鐘域傳輸


寫在前面

這篇文章主要是對(duì)過去對(duì)于亞穩(wěn)態(tài)以及跨時(shí)鐘域傳輸問題的一次總結(jié)民晒,作為這個(gè)系列博文的一次梳理吧。
注:微信公眾號(hào)也會(huì)更新锄禽,歡迎大家關(guān)注潜必,我有了新文章會(huì)通過微信公眾號(hào)推送通知大家,讓你有選擇的看到我的最新動(dòng)態(tài)沃但。

  • 個(gè)人微信公眾號(hào): FPGA LAB

正文


FPGA或ASIC中的傳播延遲

在以前秋招的時(shí)候磁滚,我常常遇到時(shí)序分析的題目,其中全英文的題目中出現(xiàn)過傳播延遲這個(gè)單詞宵晚,即:Propagation Delay恨旱!
當(dāng)然 ,如果你讀慣了中文的表達(dá)坝疼,例如我們常常遇到這樣的說法搜贤,門延遲,布線延遲等等钝凶,這時(shí)當(dāng)你遇到了Propagation Delay的時(shí)候也許會(huì)不確定是什么東西仪芒,是Tco?還是Tlogic耕陷?還是什么掂名?等等,F(xiàn)orget it 哟沫!這就會(huì)影響你分析問題的狀態(tài)饺蔑!

今天這里給出明確的定義:

Propagation Delay is the amount of time it takes for a signal to travel from a source to a destination.

意思是傳播延遲是信號(hào)從源觸發(fā)器到目的觸發(fā)器所需要的時(shí)間!這一看不就是邏輯延遲加上布線延遲嗎嗜诀?

確實(shí)如此猾警!

在FPGA或ASIC內(nèi)部孔祸,到處都有成千上萬的細(xì)線。 當(dāng)您實(shí)際將電線的物理長(zhǎng)度加在一起時(shí)发皿,它們很容易超過一英尺長(zhǎng)( 經(jīng)驗(yàn)法則是崔慧,信號(hào)可以在一納秒內(nèi)傳輸一英尺的導(dǎo)線。)穴墅,考慮到芯片有多小惶室,這非常驚人。 此外玄货,您的代碼執(zhí)行的每個(gè)邏輯都需要一定的延遲時(shí)間皇钞。 由于確實(shí)存在這些延遲,因此數(shù)字設(shè)計(jì)人員需要了解它們?nèi)绾斡绊慒PGA或ASIC松捉。

如下圖為傳播延遲示意圖:

傳播延遲示意圖

傳播延遲對(duì)時(shí)序邏輯至關(guān)重要鹅士。 我們知道,時(shí)序邏輯是由時(shí)鐘驅(qū)動(dòng)的邏輯惩坑。 在上圖中掉盅,有兩個(gè)觸發(fā)器,它們之間通過一些邏輯和布線(電線)連接在一起以舒。第一個(gè)觸發(fā)器的輸出傳播到第二個(gè)觸發(fā)器的輸入所花費(fèi)的時(shí)間為傳播延遲趾痘。 這兩個(gè)觸發(fā)器相距越遠(yuǎn),或者中間的組合邏輯越多蔓钟,則它們之間的傳播延遲就越長(zhǎng)永票。 傳播延遲時(shí)間越長(zhǎng),時(shí)鐘的運(yùn)行速度就越慢滥沫。

這樣做的原因是兩個(gè)觸發(fā)器使用相同的時(shí)鐘侣集。 第一個(gè)觸發(fā)器在時(shí)鐘沿1處驅(qū)動(dòng)其輸出。第二個(gè)觸發(fā)器直到時(shí)鐘沿2才看到第一個(gè)觸發(fā)器的輸出變化兰绣,此時(shí)它驅(qū)動(dòng)其輸出世分。 如果信號(hào)可以在一個(gè)時(shí)鐘周期內(nèi)安全地從觸發(fā)器1傳輸?shù)接|發(fā)器2,則您的設(shè)計(jì)很好缀辩! 如果沒有臭埋,您將遇到問題。

例如臀玄,考慮兩個(gè)觸發(fā)器相距10納秒(ns)的情況瓢阴。 如果您使用的時(shí)鐘頻率為50 MHz(周期為20 ns),則將是安全的健无。 您還有10 ns的空閑時(shí)間荣恐。 但是,如果使用200 MHz時(shí)鐘(周期為5 ns),則設(shè)計(jì)將無法進(jìn)行時(shí)序分析叠穆,并且無法按預(yù)期方式工作少漆。

FPGA或ASIC工具中任何時(shí)序分析器的目的都是告訴您在時(shí)序方面是否存在問題。 如果您的設(shè)計(jì)太慢而無法以所需的時(shí)鐘頻率運(yùn)行痹束,則會(huì)出現(xiàn)時(shí)序錯(cuò)誤,并且您的設(shè)計(jì)可能無法正常工作讶请。

這是解決高傳播延遲的方法:

  1. 降低時(shí)鐘頻率
  2. 將您的邏輯分解為多個(gè)階段(流水線)

降低時(shí)鐘頻率是最明顯的事情祷嘶。 如果您能夠較慢地運(yùn)行FPGA,那么您的時(shí)序?qū)?huì)改善夺溢。 將您的邏輯分解成多個(gè)階段是更可靠的解決方案论巍。 如果在兩個(gè)觸發(fā)器之間邏輯較少,則傳播延遲將減小风响,并且您的設(shè)計(jì)將滿足時(shí)序要求嘉汰。(回顧下retiming是不是也需要這么做呢?)

示意圖如下:

邏輯拆分

在上圖中状勤,兩個(gè)觸發(fā)器之間存在大量邏輯鞋怀。 如此之多,以至于設(shè)計(jì)的傳播延遲太大持搜,并且導(dǎo)致時(shí)序不滿足密似。 如果設(shè)計(jì)人員在三個(gè)觸發(fā)器之間分解邏輯,則邏輯的一半可以在前兩個(gè)觸發(fā)器之間完成葫盼,邏輯的另一半可以在后兩個(gè)觸發(fā)器之間完成残腌。 現(xiàn)在,這些工具將在一個(gè)時(shí)鐘周期內(nèi)完成所需工作的時(shí)間幾乎增加了一倍贫导。 這就是所謂的流水線抛猫,對(duì)于成為一名優(yōu)秀的數(shù)字設(shè)計(jì)師來說非常重要。 當(dāng)你使用流水線的方式設(shè)計(jì)電路時(shí)孩灯,在高時(shí)鐘頻率下滿足時(shí)序的機(jī)會(huì)會(huì)更大闺金。

建立和保持時(shí)間是什么?

建立時(shí)間和保持時(shí)間峰档,是數(shù)字設(shè)計(jì)師最基礎(chǔ)的問題掖看,他是時(shí)序分析的核心,或者說時(shí)序分析其實(shí)就是圍繞著建立時(shí)間以及保持時(shí)間來分析的面哥,你的設(shè)計(jì)滿足建立時(shí)間要求以及保持時(shí)間要求哎壳,就能通過時(shí)序檢測(cè),否則就會(huì)違例尚卫!

下面就詳細(xì)講解他們归榕!

我們都知道,傳播延遲是信號(hào)在兩個(gè)觸發(fā)器之間通過所花費(fèi)的時(shí)間吱涉。 當(dāng)信號(hào)沿導(dǎo)線傳輸時(shí)刹泄,它可以從0-> 1或1-> 0改變外里。 觸發(fā)器的輸入必須穩(wěn)定(不變),以使FPGA設(shè)計(jì)正常工作特石。 在時(shí)鐘采樣之前盅蝗,輸入必須穩(wěn)定一小段時(shí)間。 該時(shí)間量稱為建立時(shí)間姆蘸。 建立時(shí)間是指在時(shí)鐘沿之前墩莫,輸入到觸發(fā)器穩(wěn)定所需的時(shí)間。 保持時(shí)間類似于建立時(shí)間逞敷,但是它在時(shí)鐘沿發(fā)生后處理事件狂秦。 保持時(shí)間是在時(shí)鐘沿之后輸入到觸發(fā)器穩(wěn)定所需的最短時(shí)間。

如下示意圖:


建立時(shí)間與保持時(shí)間

在圖中推捐,綠色區(qū)域代表tsu或Setup Time裂问。 藍(lán)色區(qū)域代表時(shí)間或保持時(shí)間。 在這些區(qū)域中牛柒,觸發(fā)器中的數(shù)據(jù)必須為穩(wěn)定的0或1堪簿,否則會(huì)發(fā)生不良情況。

建立和保持時(shí)間與傳播延遲和時(shí)鐘頻率有何關(guān)系皮壁?

建立時(shí)間戴甩,保持時(shí)間和傳播延遲都會(huì)影響您的FPGA設(shè)計(jì)時(shí)序。FPGA工具將檢查以確保您的設(shè)計(jì)滿足時(shí)序要求闪彼,這意味著時(shí)鐘的運(yùn)行速度不超過邏輯允許的速度甜孤。可以計(jì)算出FPGA時(shí)鐘所允許的最短時(shí)間(其周期畏腕,由T表示)缴川。從中可以找到時(shí)鐘的頻率,因?yàn)轭l率是周期的倒數(shù)(F = 1 / T)描馅。

就以下圖為例吧:

最小時(shí)鐘周期分析

假設(shè)Tco表示觸發(fā)器時(shí)鐘有效到數(shù)據(jù)輸出的時(shí)間把夸;Tpd表示傳播延遲,Tsu表示建立時(shí)間铭污,不考慮時(shí)鐘偏斜恋日,那么最小時(shí)鐘周期為:

Tmin = Tco + Tpd + Tsu;

通常嘹狞,在您的FPGA設(shè)計(jì)中岂膳,t su和t h對(duì)于觸發(fā)器是固定的,因此磅网,您可以控制的唯一變量是t p或傳播延遲谈截。這種延遲代表了多少東西,你想在一個(gè)時(shí)鐘周期內(nèi)完成。您嘗試做的事情越多簸喂,t p越長(zhǎng)毙死,t clk(min)越高,這意味著您將無法盡快對(duì)FPGA設(shè)計(jì)進(jìn)行計(jì)時(shí)喻鳄。這是FPGA設(shè)計(jì)的基本權(quán)衡扼倘。您需要權(quán)衡一個(gè)時(shí)鐘周期內(nèi)可以為時(shí)鐘頻率執(zhí)行多少操作。這兩個(gè)是相反的關(guān)系……沒有免費(fèi)的午餐除呵!

思考:參考資料中把最小時(shí)鐘周期Tmin寫成如下的形式:
t _{clk(min)} = t_{su} + t_h + t_p

這是為什么呢再菊?

如果違反建立和保持時(shí)間會(huì)發(fā)生什么?

如果您的設(shè)計(jì)違反設(shè)置或保持時(shí)間竿奏,則不能保證觸發(fā)器輸出穩(wěn)定袄简⌒确牛可能為零泛啸,可能為一,可能在中間的某個(gè)地方秃症,未知候址。這稱為亞穩(wěn)態(tài)。FPGA內(nèi)部的亞穩(wěn)定性不是所希望的种柑,它可能導(dǎo)致您的FPGA表現(xiàn)異常岗仑。

FPGA設(shè)計(jì)人員發(fā)現(xiàn)他們是否違反設(shè)置或保持時(shí)間的主要方法是通過布局布線(Place and Route)運(yùn)行FPGA時(shí)。布局布線(Place and Route)是將VHDL或Verilog代碼放入FPGA時(shí)發(fā)生的情況聚请。作為此過程的一部分荠雕,F(xiàn)PGA工具將帶您進(jìn)行設(shè)計(jì)并進(jìn)行時(shí)序分析。在此時(shí)序分析中,您將看到任何時(shí)序錯(cuò)誤,這些錯(cuò)誤實(shí)際上只是違反設(shè)置時(shí)間或保持時(shí)間涡扼。如何解決這些錯(cuò)誤將在后面給出皮璧!

總之,建立時(shí)間和保持時(shí)間是FPGA設(shè)計(jì)人員要理解的重要概念拧粪。如果違反這些時(shí)間,F(xiàn)PGA將無法達(dá)到預(yù)期的效果!

FPGA中的亞穩(wěn)定是什么五续?

上面也說了,如果設(shè)計(jì)放到FPGA中(ASIC一致)龄恋,違反了建立時(shí)間或保持時(shí)間疙驾,則輸出會(huì)處于亞穩(wěn)態(tài)!
那亞穩(wěn)態(tài)是什么呢郭毕?
如下圖:

亞穩(wěn)態(tài)示意圖

如上圖所示荆萤, 紅色區(qū)域代表tsu或Setup Time。 如您所見,在觸發(fā)器建立期間链韭,輸入到觸發(fā)器的數(shù)據(jù)從低到高偏竟。如果數(shù)據(jù)在時(shí)鐘上升沿的建立時(shí)間內(nèi)發(fā)生跳變,則會(huì)產(chǎn)生亞穩(wěn)態(tài)輸出敞峭,即輸出值在短時(shí)間內(nèi)處于不確定態(tài)踊谋,有可能是1,有可能是0旋讹,也可能什么都不是殖蚕,處于中間態(tài)!之后穩(wěn)定為0或1沉迹。但是我們?nèi)匀徊恢垒敵鲆阅姆N狀態(tài)結(jié)束睦疫。有時(shí)可能是0,有時(shí)其他情況會(huì)發(fā)生 再次為1.鞭呕。這不是理想的行為蛤育。 您必須始終知道您的FPGA在做什么葫松。

為了更清晰說明瓦糕,我們參考資料提出一個(gè)類似的例子 :

下圖說明了亞穩(wěn)信號(hào)咕娄。當(dāng)時(shí)鐘信號(hào)變化時(shí)旁趟,輸入信號(hào)從低電平轉(zhuǎn)換為高電平,這違反了寄存器的tsu(建立時(shí)間)要求夏跷。數(shù)據(jù)輸出信號(hào)示例從低電平開始亲雪,然后變?yōu)閬喎€(wěn)態(tài)贞让,在高電平和低電平之間徘徊制跟。信號(hào)輸出A解析為輸入數(shù)據(jù)的新邏輯1狀態(tài)排监,而輸出B返回?cái)?shù)據(jù)輸入的原始邏輯0狀態(tài)谷暮。在這兩種情況下蒿往,輸出到定義的1或0狀態(tài)的轉(zhuǎn)換的延遲都超過寄存器的指定tco(寄存器時(shí)鐘到輸出時(shí)間)。


亞穩(wěn)態(tài)發(fā)生

上面所說的是建立時(shí)間不足導(dǎo)致的亞穩(wěn)態(tài)湿弦,其實(shí)導(dǎo)致亞穩(wěn)態(tài)還有可能是保持時(shí)間不足熄浓!

亞穩(wěn)態(tài)何時(shí)會(huì)導(dǎo)致設(shè)計(jì)失敗省撑?

如果在下一個(gè)寄存器捕獲數(shù)據(jù)之前數(shù)據(jù)輸出信號(hào)穩(wěn)定為有效狀態(tài)赌蔑,則亞穩(wěn)信號(hào)不會(huì)對(duì)系統(tǒng)操作產(chǎn)生負(fù)面影響。但是竟秫,如果亞穩(wěn)態(tài)信號(hào)在到達(dá)下一個(gè)設(shè)計(jì)寄存器之前未穩(wěn)定為低電平或高電平狀態(tài)娃惯,則可能導(dǎo)致系統(tǒng)故障。

同步寄存器

大多數(shù)亞穩(wěn)態(tài)條件以下列兩種方式之一發(fā)生:

  1. 您正在采樣FPGA外部的信號(hào)
  2. 您正在跨時(shí)鐘域傳輸數(shù)據(jù)

這兩種情況都可以用相同的方式解決肥败。 每當(dāng)遇到可能引入亞穩(wěn)定性的情況時(shí)趾浅,您都可以簡(jiǎn)單地“double-flop”您的數(shù)據(jù)(兩級(jí)觸發(fā)器采樣)。

在左圖中馒稍,第一個(gè)觸發(fā)器正在采樣與時(shí)鐘異步的信號(hào)皿哨。 這將在輸出處創(chuàng)建一個(gè)亞穩(wěn)態(tài)條件。 如果再次采樣此輸出纽谒,則現(xiàn)在可以修復(fù)亞穩(wěn)態(tài)事件证膨。 第二個(gè)觸發(fā)器的輸出將保持穩(wěn)定。

兩級(jí)觸發(fā)器同步

當(dāng)然這只是最簡(jiǎn)單的處理方式鼓黔,當(dāng)考慮到跨時(shí)鐘域信號(hào)處理時(shí)央勒,還需具體情況具體分析。

跨時(shí)鐘域傳輸

在FPGA內(nèi)部跨越時(shí)鐘域是一項(xiàng)常見的任務(wù)澳化,但這是許多數(shù)字設(shè)計(jì)人員遇到的麻煩崔步。如果數(shù)字設(shè)計(jì)人員不了解從一個(gè)時(shí)鐘域轉(zhuǎn)換到另一個(gè)時(shí)鐘域所涉及的所有細(xì)節(jié),則可能會(huì)出現(xiàn)問題缎谷。

下面對(duì)跨時(shí)鐘域處理可能出現(xiàn)的問題進(jìn)行總結(jié)井濒!

從較慢的時(shí)鐘域過渡到較快的時(shí)鐘域

最簡(jiǎn)單的跨時(shí)鐘域傳輸類型是從一個(gè)時(shí)鐘域到一個(gè)更快的時(shí)鐘域。在這種類型的傳輸中列林,您仍然會(huì)受到Metastability的影響瑞你,但是該文章中描述的解決方案在這種情況下非常有效。您需要做的就是將數(shù)據(jù)“兩級(jí)同步”席纽,如下圖所示捏悬。

從慢時(shí)鐘域過渡到快時(shí)鐘域

較慢的時(shí)鐘是您的源時(shí)鐘域,更快的時(shí)鐘是您的目標(biāo)時(shí)鐘域润梯。在較快的時(shí)鐘域中过牙,第一個(gè)觸發(fā)器具有亞穩(wěn)態(tài)輸出甥厦。發(fā)生這種情況的原因是,在執(zhí)行此跨時(shí)鐘域傳輸操作時(shí)寇钉,會(huì)違反設(shè)置和保持時(shí)間刀疙,這是造成亞穩(wěn)性的原因。我們可以通過在較快的時(shí)鐘域中簡(jiǎn)單地重新采樣數(shù)據(jù)或?qū)?shù)據(jù)進(jìn)行兩次寄存來解決此問題扫倡,如上圖所示谦秧。第二個(gè)觸發(fā)器的輸出將保持穩(wěn)定,現(xiàn)在可以在更快的時(shí)鐘域中使用數(shù)據(jù)撵溃。

下面的Verilog設(shè)計(jì)顯示了當(dāng)從慢速時(shí)鐘域過渡到快速時(shí)鐘域時(shí)疚鲤,如何尋找信號(hào)的上升沿。請(qǐng)注意缘挑,用于邊緣檢測(cè)的邏輯必須在快速時(shí)鐘域中完成集歇。

// Verilog Example:
reg r1_Data, r2_Data, r3_Data, trig_pos=0;
always @(posedge i_Fast_Clock)
  begin
    // r1_Data is METASTABLE, r2_Data and r3_Data are STABLE
    r1_Data <= i_Slow_Data;
    r2_Data <= r1_Data;
    r3_Data <= r2_Data;
    if (r3_Data == 1'b0 && r2_Data == 1'b1)
      begin
        // Positive Edge Condition
        trig_pos <= 1;
      end
  end

注 :這里說明的是提取采樣信號(hào)的上升沿,如果你不需要這樣语淘,就直接兩級(jí)同步即可得到非亞穩(wěn)態(tài)的采樣信號(hào)诲宇。

從較快的時(shí)鐘域過渡到較慢的時(shí)鐘域

這種情況比前一種情況稍微復(fù)雜一些。在這里惶翻,我們正在從快速時(shí)鐘域轉(zhuǎn)向較慢的時(shí)鐘域姑蓝。在這種情況下,很容易想到一個(gè)示例吕粗,其中快速時(shí)鐘域中的數(shù)據(jù)可能在慢速時(shí)鐘域甚至沒有看到之前就發(fā)生了變化纺荧。例如,考慮一個(gè)在100 MHz時(shí)鐘域中發(fā)生1個(gè)時(shí)鐘周期的脈沖溯泣,您正在嘗試在25 MHz時(shí)鐘域中進(jìn)行采樣虐秋。如果僅使用25 MHz時(shí)鐘對(duì)數(shù)據(jù)進(jìn)行采樣榕茧,則很有可能永遠(yuǎn)不會(huì)看到此脈沖垃沦! 為了將信號(hào)從快速時(shí)鐘域傳輸?shù)铰贂r(shí)鐘域,您必須擴(kuò)展信號(hào)用押。請(qǐng)參見下圖肢簿,以直觀的方式查看。

快時(shí)鐘域信號(hào)過渡到慢時(shí)鐘域
對(duì)快時(shí)鐘域信擴(kuò)展

當(dāng)您將脈沖或數(shù)據(jù)延長(zhǎng)足夠長(zhǎng)的時(shí)間以確保慢時(shí)鐘域有機(jī)會(huì)對(duì)其進(jìn)行采樣時(shí)蜻拨,就會(huì)發(fā)生數(shù)據(jù)拉伸池充。在上面的示例中,您需要擴(kuò)展數(shù)據(jù)以確保無論何時(shí)采樣數(shù)據(jù)都滿足建立和保持時(shí)間缎讼。為了正確保證滿足建立時(shí)間和保持時(shí)間收夸,我建議延長(zhǎng)脈沖,使它們?cè)诼贂r(shí)鐘域中至少占用2個(gè)時(shí)鐘周期血崭。因此卧惜,在上面的示例中厘灼,您應(yīng)該將100 MHz脈沖擴(kuò)展到至少8個(gè)時(shí)鐘周期(您可以隨時(shí)增加)。

這種從快時(shí)鐘域到慢時(shí)鐘域的信號(hào)傳輸咽瓷,其設(shè)計(jì)可以參考我之前的博文:談?wù)効鐣r(shí)鐘域傳輸問題(CDC)
博文里給出了設(shè)計(jì):

module Sync_Pulse(
    input           clka,
    input           clkb,
    input           rst_n,
    input           pulse_ina,
    output          pulse_outb,
    output          signal_outb
);
//-------------------------------------------------------
reg             signal_a;
reg             signal_b;
reg             signal_b_r;
reg             signal_b_rr;
reg             signal_a_r;
reg             signal_a_rr;
//-------------------------------------------------------
//在clka下设凹,生成展寬信號(hào)signal_a
always @(posedge clka or negedge rst_n)begin
    if(rst_n == 1'b0)begin
        signal_a <= 1'b0;
    end
    else if(pulse_ina == 1'b1)begin
        signal_a <= 1'b1;
    end
    else if(signal_a_rr == 1'b1)
        signal_a <= 1'b0;
    else 
        signal_a <= signal_a;
end
//-------------------------------------------------------
//在clkb下同步signal_a
always @(posedge clkb or negedge rst_n)begin
    if(rst_n == 1'b0)begin
        signal_b <= 1'b0;
    end
    else begin
        signal_b <= signal_a;
    end
end
//-------------------------------------------------------
//在clkb下生成脈沖信號(hào)和輸出信號(hào)
always @(posedge clkb or negedge rst_n)begin
    if(rst_n == 1'b0)begin
        signal_b_r <= 'b0;
        signal_b_rr <= 'b0;
    end
    else begin
        signal_b_rr <= signal_b_r;
        signal_b_r <= signal_b;
    end
end
assign    pulse_outb = ~signal_b_rr & signal_b_r;
assign    signal_outb = signal_b_rr;
//-------------------------------------------------------
//在clka下采集signal_b_rr,生成signal_a_rr用于反饋拉低signal_a
always @(posedge clka or negedge rst_n)begin
    if(rst_n == 1'b0)begin
        signal_a_r <= 'b0;
        signal_a_rr <= 'b0;
    end
    else begin
        signal_a_rr <= signal_a_r;
        signal_a_r <= signal_b_rr;
    end
end
endmodule

如何理解茅姜,可以參照仿真圖或者波形圖:


波形圖

異步FIFO

上面所說的還都是單比特信號(hào)闪朱,對(duì)于多比特信號(hào),我們可以使用異步FIFO來處理跨時(shí)鐘域傳輸問題钻洒,至于異步FIFO的設(shè)計(jì)奋姿,我是真的沒必要在贅余了,見博客:FPGA基礎(chǔ)知識(shí)極簡(jiǎn)教程(4)從FIFO設(shè)計(jì)講起之異步FIFO篇

這是我最新寫的比較好理解的一種設(shè)計(jì)版本素标。

時(shí)序錯(cuò)誤和跨時(shí)鐘域

通常胀蛮,當(dāng)您跨時(shí)鐘域時(shí),會(huì)遇到計(jì)時(shí)錯(cuò)誤糯钙。這個(gè)是正常的粪狼!這是告訴您的情況,您的設(shè)置和保持時(shí)間將無法保持任岸,并且您將處于亞穩(wěn)狀態(tài)再榄。如前所述,亞穩(wěn)定是這項(xiàng)工作的常識(shí)享潜,因此困鸥,只要您了解并可以圍繞它進(jìn)行設(shè)計(jì),就可以了剑按。

總之疾就,作為FPGA設(shè)計(jì)人員,您將遇到跨時(shí)鐘域的情況艺蝴。您需要清楚地了解在這些情況下發(fā)生的常見陷阱猬腰。如果跨時(shí)鐘域的情況足夠簡(jiǎn)單,則可以將數(shù)據(jù)兩級(jí)寄存器采樣或執(zhí)行脈沖展寬猜敢。在大多數(shù)情況下姑荷,您可能需要使用支持兩個(gè)時(shí)鐘的FIFO(異步FIFO),一個(gè)用于讀取缩擂,一個(gè)用于寫入鼠冕。


參考資料


交個(gè)朋友

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市胯盯,隨后出現(xiàn)的幾起案子懈费,更是在濱河造成了極大的恐慌,老刑警劉巖博脑,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件憎乙,死亡現(xiàn)場(chǎng)離奇詭異薄坏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)寨闹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門胶坠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人繁堡,你說我怎么就攤上這事沈善。” “怎么了椭蹄?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵闻牡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我绳矩,道長(zhǎng)罩润,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任翼馆,我火速辦了婚禮割以,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘应媚。我一直安慰自己严沥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布中姜。 她就那樣靜靜地躺著消玄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丢胚。 梳的紋絲不亂的頭發(fā)上翩瓜,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音携龟,去河邊找鬼兔跌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛骨宠,可吹牛的內(nèi)容都是我干的浮定。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼层亿,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了立美?” 一聲冷哼從身側(cè)響起匿又,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎建蹄,沒想到半個(gè)月后碌更,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體裕偿,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年痛单,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘿棘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡旭绒,死狀恐怖鸟妙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挥吵,我是刑警寧澤重父,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站忽匈,受9級(jí)特大地震影響房午,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜丹允,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一郭厌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧雕蔽,春花似錦沪曙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至贾陷,卻和暖如春缘眶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背髓废。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工巷懈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人慌洪。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓顶燕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親冈爹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涌攻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354