加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

數(shù)字IC設(shè)計(jì)中異步FIFO的時(shí)序約束

03/27 08:57
8089
閱讀需 5 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

使用異步FIFO同步源自不同時(shí)鐘域的數(shù)據(jù)是在數(shù)字IC設(shè)計(jì)中經(jīng)常使用的方法。在異步FIFO中,讀指針在讀時(shí)鐘域,寫指針在寫時(shí)鐘域,所以不能單獨(dú)運(yùn)用一個(gè)計(jì)數(shù)器去產(chǎn)生空滿信號了。因此,須要將寫指針同步到讀時(shí)鐘域去產(chǎn)生空信號,將讀指針同步到寫時(shí)鐘域去產(chǎn)生滿信號。

對異步FIFO的讀、寫指針進(jìn)行判斷,我們首先需要將其同步到統(tǒng)一的時(shí)鐘域下,而這就引發(fā)出了新的問題—-讀、寫指針在大多數(shù)情況下都不是個(gè)單bit信號,而是個(gè)多bit信號。如果讀、寫指針直接使用二進(jìn)制的形式進(jìn)行同步,則難以避免同步過程中會出現(xiàn)的多個(gè)bit信號同時(shí)變化的問題。如7(0111)跳轉(zhuǎn)到8(1000),此時(shí)有4個(gè)bit信號都發(fā)生了變化,如果直接同步,則由于不同信號之間的延遲(skew)差別,可能導(dǎo)致亞穩(wěn)態(tài)、錯(cuò)采、漏采等等問題。為解決因可能的skew問題造成的亞穩(wěn)態(tài)所以采用格雷碼異步FIFO,格雷碼每相鄰位之間只有一個(gè)比特的變化。FIFO的指針是遞增的,這使得在傳輸遞增的多bit信號時(shí),格雷碼具有天然的優(yōu)勢。

下圖為常見格雷碼異步FIFO組成框圖,包含四個(gè)主要部分。FIFO寫控制端用于判斷是否可以寫入數(shù)據(jù),讀控制端用于判斷是否可以讀取數(shù)據(jù),F(xiàn)IFO Memory用于存儲數(shù)據(jù),兩個(gè)時(shí)鐘同步模塊用于將讀寫時(shí)鐘進(jìn)行同步處理。

下圖為時(shí)鐘同步模塊的組成示意圖。寫操作時(shí),時(shí)鐘同步模塊先將寫地址指針轉(zhuǎn)換成格雷碼,然后通過兩級同步器(兩級同步在讀時(shí)鐘下進(jìn)行),將寫地址指針同步到讀時(shí)鐘域下;讀操作時(shí),時(shí)鐘同步模塊先將讀地址指針轉(zhuǎn)換成格雷碼,然后通過兩級同步器(兩級同步在寫時(shí)鐘下進(jìn)行),將讀地址指針同步到寫時(shí)鐘域下。

格雷碼異步FIFO解決了跨時(shí)鐘的數(shù)據(jù)同步化問題,但如果不額外約束還可能存在其他兩個(gè)問題;一是格雷碼各比特位延時(shí)不一致,導(dǎo)致同步器采樣的地址不符合gray規(guī)律,導(dǎo)致FIFO功能異常;二是格雷碼到兩級同步器的延時(shí)太大,導(dǎo)致異步FIFO性能下降。

為了解決上述兩個(gè)問題,一般采用set_max_delay來對寫操作時(shí)from point(寫地址格雷碼轉(zhuǎn)換模塊中的最后一個(gè)寄存器的時(shí)鐘端口)到to point(兩級同步器的第一級寄存器的數(shù)據(jù)端口)的max delay進(jìn)行約束;對讀操作時(shí)from point(讀地址格雷碼轉(zhuǎn)換模塊中的最后一個(gè)寄存器的時(shí)鐘端口)到to point(兩級同步器的第一級寄存器的數(shù)據(jù)端口)的max delay進(jìn)行約束;延時(shí)可設(shè)置為讀寫時(shí)鐘中最快時(shí)鐘周期的一半,也可以設(shè)置成源端時(shí)鐘的一半。例如:

set_max_delay [expr 0.5*$period_fast_clk] -from [get_pins “XX/waddr_gray_reg/CP”] -to [get_pins “XX/synchronizer_2x_r1/D”]

為了解決上述兩個(gè)問題,還會使用set_clock_groups -asynchronous將所涉及的讀寫時(shí)鐘設(shè)置為異步時(shí)鐘群組。這種約束和false path的區(qū)別很大;false path會認(rèn)為該path上的timing arc不用去分析時(shí)序、DRV(max trans、max cap 和max fanout 等)以及串?dāng)_噪聲情況,也就是說工具會認(rèn)為false path上的時(shí)序和信號質(zhì)量對設(shè)計(jì)功能沒影響;set_clock_groups -asynchronous也不分析兩個(gè)時(shí)鐘域之間的交互的path上時(shí)序情況,但是會分析該path上的timing arc的DRV和串?dāng)_噪聲情況,保證信號質(zhì)量。例如:

set_clock_groups -asynchronous -group clock1 -group clock2

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險(xiǎn)等級 參考價(jià)格 更多信息
S2B-PH-SM4-TB(LF)(SN) 1 JST Manufacturing Board Connector, 2 Contact(s), 1 Row(s), Male, Right Angle, Surface Mount Terminal, ROHS COMPLIANT

ECAD模型

下載ECAD模型
$0.43 查看
5016454020 1 Molex DIP CONNECTOR
$2.78 查看
DT06-3S-EP10 1 TE Connectivity DT PLUG ASM

ECAD模型

下載ECAD模型
$8.96 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

前華為海思工程師;與非網(wǎng)2022年度影響力創(chuàng)作者;IC技術(shù)圈成員。

微信公眾號