高速數(shù)字電路模塊通常以 同步 (synchronous)電路的形式實(shí)現(xiàn),它們由一個(gè)或者多個(gè)時(shí)鐘驅(qū)動(dòng)(觸發(fā))。對(duì)于 單一時(shí)鐘(域) 的同步電路而言,只要輸入和時(shí)鐘的關(guān)系滿(mǎn)足 建立(setup)時(shí)間 、保持(hold)時(shí)間的時(shí)序關(guān)系,電路的輸出(布爾值)就是可預(yù)測(cè)的,這是數(shù)字邏輯電路設(shè)計(jì)的基礎(chǔ)。如果 不能滿(mǎn)足建立保持時(shí)間 ,我們認(rèn)為輸入是 異步 (asynchronous) 信號(hào) 。一個(gè)時(shí)鐘域的同步信號(hào)輸出到另一個(gè)時(shí)鐘域通常被認(rèn)為是異步信號(hào)。
本文從同步電路的時(shí)序模型出發(fā),探討了兩種時(shí)鐘同步的總線電路方案:
- 共同時(shí)鐘 (common clock)總線
- 源同步 (source synchronous)總線
共同時(shí)鐘總線的收發(fā)端使用同一時(shí)鐘,結(jié)構(gòu)簡(jiǎn)單,由于物理限制和PVT效應(yīng),局限于時(shí)鐘速率比較低的應(yīng)用;源同步總線增加 接口時(shí)鐘 ,并以 與數(shù)據(jù)相同的方式發(fā)送 ,大大提升了接口時(shí)鐘速率,由于引入了 不同的時(shí)鐘域 ,也增加了接口設(shè)計(jì)的復(fù)雜程度。
1. 時(shí)鐘同步電路的時(shí)序模型
<圖1>
寄存器A在時(shí)鐘(launch clock)的上升沿打出數(shù)據(jù),經(jīng)過(guò)兩段飛行時(shí)間(傳輸延時(shí))和組合邏輯電路延時(shí)之后,在下一個(gè)時(shí)鐘沿(capture clock)被寄存器B抓取,這里假設(shè)A、B的時(shí)鐘完全相同 - 頻率相同相位相同。在兩個(gè)時(shí)鐘上升沿之間,按照時(shí)間順序,發(fā)生了下列事件:
寄存器A打出輸出(QA)。QA在上升沿之后一段時(shí)間才能有效(valid),這個(gè)時(shí)間是tco(clock to output);
傳輸延時(shí)tflight1,組合邏輯電路引起的延時(shí)tlogic,傳輸延時(shí)tflight2;
寄存器B抓取輸入。輸入在時(shí)鐘上升沿之前必須提前穩(wěn)定(建立時(shí)間tsetup),在時(shí)鐘上升沿之后保持一段時(shí)間(保持時(shí)間thold)。假如不滿(mǎn)足建立、保持時(shí)間的要求,那么B的輸出可能會(huì)非0非1的亞穩(wěn)態(tài)(Metastability)。
<圖2>
把這些事件銜接在一起,形成了時(shí)序預(yù)算(timing budget)分配圖。注意,‘X’表示不確定區(qū)間,通常是由PVT(制程電壓溫度)效應(yīng)引起的偏差。
tsetup_margin = Period - tco(max)- tflight1 - tlogic(max) - tflight2 - tsetup
thold_margin = tco(min) + tflight1 + tlogic(min) + tflight2 - thold
tsetup_margin和thold_margin為 時(shí)序裕量 (margin),它**>=0代表滿(mǎn)足建立保持時(shí)間**要求。
2. 共同時(shí)鐘(common clock)系統(tǒng)總線
共同時(shí)鐘系統(tǒng)其實(shí)可以借用<圖1>,只需要把寄存器換成芯片(系統(tǒng))。
共同時(shí)鐘系統(tǒng)只有一個(gè)時(shí)鐘(域),無(wú)論發(fā)送端還是接收端。
回到時(shí)序計(jì)算公式,要使tsetup_margin >=0,可以得到:
Period >= tco(max) + tflight1 + tlogic(max) + tflight2 + tsetup
右邊這些參數(shù)代表了真實(shí)的物理局限,它們決定了時(shí)鐘可以跑多快(時(shí)鐘周期最小是多少)。
tflight1、tflight2來(lái)自于PCB走線,連接器,芯片封裝等等。
tco、tsetup、tlogic代表芯片的 物理特性參數(shù) 。不同的芯片在不同的溫度/電壓下由于PVT效應(yīng)表現(xiàn)會(huì)有變化,形成了時(shí)序圖上的 不確定區(qū)間 。我們必須計(jì)算最?lèi)毫樱╳orst case)的情況,這會(huì)吃掉時(shí)序裕量。
而且,我們也做不到理想的單一同步時(shí)鐘。出于信號(hào)質(zhì)量的考量,時(shí)鐘信號(hào)通常是點(diǎn)對(duì)點(diǎn)(point to point)的連接。不同模塊的時(shí)鐘,通常是連接同一個(gè)時(shí)鐘buffer的不同扇出(fanout)。在工程實(shí)踐上,理想的同步很難做到,只能把相位偏差(skew)控制在一定范圍內(nèi)。
所有這些,都限制了時(shí)鐘速度或者數(shù)據(jù)吞吐量的提升,而優(yōu)化參數(shù)常常意味著成本的抬升。老戚看到的共同時(shí)鐘系統(tǒng)的時(shí)鐘沒(méi)有超過(guò)100MHz的。實(shí)現(xiàn)更高速總線的解決辦法是源同步時(shí)鐘方案。
3. 源同步(source synchronous)系統(tǒng)
源同步在芯片(系統(tǒng))接口上 同時(shí)輸出數(shù)據(jù)和(接口)時(shí)鐘 ,數(shù)據(jù)和時(shí)鐘采用完全相同的IO結(jié)構(gòu),從而最大程度的抵消tco,tflight等等。通常認(rèn)為,同一個(gè)芯片上的PVT效應(yīng)也是一致的。
<圖3>
<圖3>是典型的中心對(duì)齊(center aligned)的源同步DDR輸出。內(nèi)部PLL的輸出兩路相位相差90度的時(shí)鐘,經(jīng)過(guò)同等的傳輸延時(shí),到達(dá)接收端的時(shí)候,時(shí)鐘剛好處在數(shù)據(jù)的中心(假定接收端建立保持時(shí)間的要求也是對(duì)等的)。接收端使用接口時(shí)鐘clock_out抓取數(shù)據(jù)data_out,緊接著把數(shù)據(jù)同步到本地時(shí)鐘。 接口時(shí)鐘和本地時(shí)鐘并不一致 ,屬于 不同的時(shí)鐘域 。
現(xiàn)有的高速并行接口無(wú)一例外都是源同步,最典型的當(dāng)然是內(nèi)存接口。以DDR4為例,地址/命令/片選信號(hào)和主時(shí)鐘形成了一組源同步總線,內(nèi)存數(shù)據(jù)DQ每8位就會(huì)有一個(gè)DQS信號(hào)作為接口時(shí)鐘,形成源同步的數(shù)據(jù)時(shí)鐘總線。在接收端,數(shù)據(jù)會(huì)先被抓取到相應(yīng)DQS的時(shí)鐘域,然后同步到主時(shí)鐘。
源同步很好的解決了接口總線的速度問(wèn)題,卻也引入了不同的時(shí)鐘域, 增加了收發(fā)接口設(shè)計(jì)的復(fù)雜度 。
- 跨時(shí)鐘域(clock domain crossing)
實(shí)現(xiàn)跨時(shí)鐘域的信號(hào)傳遞要回到時(shí)鐘域C0的輸出到時(shí)鐘域C1的輸入的建立保持時(shí)間的基本問(wèn)題。
假如時(shí)鐘C0/C1 同源 (不同頻,例如分頻/倍頻關(guān)系)而且相位差固定的 可以直接用本地時(shí)鐘抓取 ;同頻(源)但是不知道相位關(guān)系不確定的可以以FIFO的方式解決;有頻差的也可以用 FIFO解決 ,但要防止溢出(overrun,underrun)。
還是以DDR4內(nèi)存接口為例,假設(shè)主時(shí)鐘是1600MHz,那么DQS則是倍頻 --- 3200MHz。由于時(shí)鐘(包括地址/命令/片選)信號(hào)的fly-by拓?fù)洌瑫r(shí)鐘到達(dá)不同內(nèi)存顆粒存在先后順序。對(duì)于寫(xiě)操作(write),控制器通過(guò)write leveling偵測(cè)到未經(jīng)調(diào)整的DQS和主時(shí)鐘的相位關(guān)系,相應(yīng)的調(diào)整輸出DQS的相位,保證內(nèi)存顆粒接收的DQS和主時(shí)鐘保持 特定的相位關(guān)系 ,從而在顆粒內(nèi)部能夠以最簡(jiǎn)單的方式(同時(shí)延時(shí)latency最小)完成跨時(shí)鐘域。對(duì)于讀操作,似乎有read leveling來(lái)實(shí)現(xiàn)相似的功能(這方面資料不詳)。有趣的是,在DDR4內(nèi)存接口,控制器(通常邏輯更為復(fù)雜)承擔(dān)了所有時(shí)序調(diào)整的責(zé)任,內(nèi)存(存儲(chǔ)廠商的邏輯設(shè)計(jì)能力要差一些)接口則以最簡(jiǎn)化的方式工作。
在以太網(wǎng)領(lǐng)域,處理跨時(shí)鐘域更常用的方法是FIFO(First In First Out)。FIFO不僅能夠處理同頻時(shí)鐘的跨時(shí)鐘域數(shù)據(jù)轉(zhuǎn)換,也能處理不同頻率(有限頻差)的跨時(shí)鐘域處理,從而獲得了廣泛的應(yīng)用。PCIe協(xié)議和以太網(wǎng)協(xié)議都運(yùn)用基于FIFO的 彈性緩沖 (elastic buffer)來(lái)處理系統(tǒng)時(shí)鐘的PPM偏差問(wèn)題。
-
寄存器
+關(guān)注
關(guān)注
31文章
5357瀏覽量
120685 -
連接器
+關(guān)注
關(guān)注
98文章
14585瀏覽量
136785 -
同步電路
+關(guān)注
關(guān)注
1文章
60瀏覽量
13317 -
FIFO存儲(chǔ)
+關(guān)注
關(guān)注
0文章
103瀏覽量
6018 -
PCB走線
+關(guān)注
關(guān)注
3文章
134瀏覽量
13946
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論