理解FPGA中的壓穩(wěn)態(tài)及計(jì)算壓穩(wěn)態(tài)的方法
壓穩(wěn)態(tài)什么時(shí)候會導(dǎo)致設(shè)計(jì)失敗?
如果數(shù)據(jù)輸出信號在寄存器下次采集數(shù)據(jù)之前,轉(zhuǎn)換到有效狀態(tài),那么,壓穩(wěn)態(tài)信號不會對系統(tǒng)工作有不利影響。但是,如果壓穩(wěn)態(tài)信號不能在它到達(dá)下一設(shè)計(jì)寄存器之前轉(zhuǎn)換到低電平或者高電平狀態(tài),那就會導(dǎo)致系統(tǒng)失敗。繼續(xù)山和球的形象解釋,當(dāng)球到達(dá)山腳( 穩(wěn)定邏輯狀態(tài)0 或者1) 的時(shí)間超出分配的時(shí)間后,即,寄存器tCO 加上寄存器通路所有時(shí)序余量的時(shí)間,就會出現(xiàn)失敗。當(dāng)壓穩(wěn)態(tài)信號沒有在分配的時(shí)間內(nèi)穩(wěn)定下來時(shí),如果目的邏輯觀察到不一致的邏輯狀態(tài),即,不同的目的寄存器采集到不同的壓穩(wěn)態(tài)信號值,出現(xiàn)邏輯失敗。
同步寄存器
當(dāng)信號在不相關(guān)或者異步時(shí)鐘域電路之間傳送時(shí),在使用該信號之前,需要將信號同步到新的時(shí)鐘域。新鐘域中第一個寄存器起到了同步寄存器的作用。
為消除異步信號傳送時(shí)壓穩(wěn)態(tài)導(dǎo)致的失敗,電路設(shè)計(jì)人員通常在目的時(shí)鐘域中使用多個串聯(lián)寄存器( 同步寄存器鏈或者同步器),將信號重新同步到新時(shí)鐘域上。采用這些寄存器,在設(shè)計(jì)中的其他部分使用壓穩(wěn)態(tài)信號之前,該信號能夠有更多的時(shí)間轉(zhuǎn)換到確定狀態(tài)。同步寄存器至寄存器通路上的時(shí)序余量是壓穩(wěn)態(tài)信號穩(wěn)定所需要的時(shí)間,被稱為壓穩(wěn)態(tài)穩(wěn)定時(shí)間。
同步寄存器鏈或者同步器是滿足以下要求的寄存器序列:
■ 鏈上的寄存器都由相同的或者相位相關(guān)的時(shí)鐘進(jìn)行同步
■ 鏈上的第一個寄存器由不相關(guān)的時(shí)鐘域進(jìn)行驅(qū)動,即異步驅(qū)動。
■ 每個寄存器只扇出連接一個寄存器,鏈上的最后一個寄存器除外。
同步寄存器鏈的長度是滿足以上要求的同步時(shí)鐘域中的寄存器數(shù)量。圖3 是長度為2 的同步鏈的例子,假設(shè)輸出信號被送入多個目的寄存器。
圖 3. 同步寄存器鏈實(shí)例
注意,異步輸入信號,或者在不相關(guān)時(shí)鐘域之間傳輸?shù)男盘?,會在相對于采集寄存器時(shí)鐘沿的任意點(diǎn)進(jìn)行轉(zhuǎn)換。因此,設(shè)計(jì)人員無法預(yù)測數(shù)據(jù)轉(zhuǎn)換前的信號轉(zhuǎn)換順序或者目的時(shí)鐘邊沿?cái)?shù)量。例如,如果在時(shí)鐘域之間傳送異步總線信號,并進(jìn)行同步,數(shù)據(jù)信號會在不同的時(shí)鐘沿進(jìn)行轉(zhuǎn)換。結(jié)果,會接收到不正確的總線數(shù)據(jù)。
設(shè)計(jì)人員必須適應(yīng)這種電路工作方式,例如,雙時(shí)鐘 FIFO (DCFIFO) 邏輯存儲信號或者握手邏輯等。FIFO邏輯使用同步器在兩個時(shí)鐘域之間傳送控制信號,然后,數(shù)據(jù)被寫入雙端口存儲器,或者讀出。Altera 為這一操作提供DCFIFO 宏功能,它包括各種級別的延時(shí),為控制信號提供亞穩(wěn)態(tài)保護(hù)。如果異步信號被用作兩個時(shí)鐘域之間的部分握手邏輯,控制信號會指出數(shù)據(jù)什么時(shí)候才能在時(shí)鐘域之間進(jìn)行傳輸。在這種情況下,采用同步寄存器以確保亞穩(wěn)態(tài)不會影響控制信號的接收,在任何亞穩(wěn)態(tài)條件下,數(shù)據(jù)都有足夠的建立時(shí)間,在使用數(shù)據(jù)之前達(dá)到穩(wěn)定。在設(shè)計(jì)比較好的系統(tǒng)中,每一信號在被使用之前都能達(dá)到穩(wěn)定狀態(tài),設(shè)計(jì)可以正常工作。
計(jì)算亞穩(wěn)態(tài)MTBF
亞穩(wěn)態(tài)平均故障間隔時(shí)間MTBF 大致估算了亞穩(wěn)態(tài)導(dǎo)致出現(xiàn)兩次設(shè)計(jì)失敗之間的平均時(shí)間。較大的MTBF( 例如亞穩(wěn)態(tài)失敗間隔數(shù)百甚至數(shù)千年) 表明非常可靠的設(shè)計(jì)。所需要的MTBF 取決于系統(tǒng)應(yīng)用。例如,急救醫(yī)療設(shè)備需要的MTBF 要比消費(fèi)類視頻顯示設(shè)備長得多。增大亞穩(wěn)態(tài)MTBF 能夠減小信號傳輸導(dǎo)致設(shè)備出現(xiàn)亞穩(wěn)態(tài)問題的概率。
可以使用設(shè)計(jì)信息以及器件特征參數(shù)來計(jì)算設(shè)計(jì)中某些信號傳輸或者所有信息傳輸?shù)膩喎€(wěn)態(tài)MTBF。采用下面的公式和參數(shù)來計(jì)算同步器鏈的MTBF:
C1 和C2 常數(shù)取決于器件工藝和工作條件。
在fCLK 和fDATA 參數(shù)取決于設(shè)計(jì)規(guī)范: fCLK 是接收異步信號時(shí)鐘域的時(shí)鐘頻率, fDATA 是異步輸入數(shù)據(jù)信號的觸發(fā)頻率。較快的時(shí)鐘頻率以及觸發(fā)數(shù)據(jù)能夠降低( 或者劣化) MTBF。
tMET 參數(shù)是亞穩(wěn)態(tài)信號達(dá)到確切狀態(tài)的亞穩(wěn)態(tài)建立時(shí)間,即,超出寄存器tCO 的時(shí)序余量。同步鏈的 tMET 是鏈上每一寄存器輸出時(shí)序余量之和。
設(shè)計(jì)中每一同步器鏈的MTBF 確定了總的設(shè)計(jì)MTBF。同步器的失效率是1/MTBF,將每一同步器鏈的失敗概率相加得到整個設(shè)計(jì)的失敗概率,如下所示:
設(shè)計(jì)亞穩(wěn)態(tài)MTBF 為1/failure_ratedesign。
設(shè)計(jì)人員使用Altera? FPGA 時(shí),不需要手動完成這些計(jì)算,這是因?yàn)锳ltera Quartus? II 軟件將亞穩(wěn)態(tài)參數(shù)集成到了工具中。
評論