多片FPGA之間的互連,經(jīng)常提到多路復(fù)用的概念,也經(jīng)常提到TDM的概念,正確理解多路復(fù)用在多片F(xiàn)PGA原型驗(yàn)證系統(tǒng)中的機(jī)理,尤其是時(shí)序機(jī)制,對(duì)于我們正確看待和理解多片F(xiàn)PGA原型系統(tǒng)的性能有很好的促進(jìn)作用。下圖是一個(gè)使用多路復(fù)用器后接采樣FF的多路復(fù)用解決方案的示例。
(資料圖片僅供參考)
在FPGA-A中,我們有一些觸發(fā)器的設(shè)計(jì),我們稱為FF(Flip_Flop),然后是一些組合邏輯設(shè)計(jì),在FPGA中的Design這個(gè)模塊,可以認(rèn)為是移植成功的SoC的RTL設(shè)計(jì),在這里抽象為一部分組合邏輯和時(shí)序邏輯FF的簡單連接,實(shí)際上,我們的設(shè)計(jì)中也是組合邏輯和時(shí)序邏輯的結(jié)合,只是要比圖示要復(fù)雜的多。FPGA_A中要輸出的IO的值被饋送到發(fā)送級(jí)所謂的發(fā)送級(jí)并不是SoC所擁有的RTL代碼,而是為了正確傳輸這些IO所額外設(shè)計(jì)的文件,該級(jí)包含一個(gè)復(fù)用器,該復(fù)用器依次選擇每個(gè)設(shè)計(jì)信號(hào)和一個(gè)輸出FF,我們將其稱為FFMO。FFMO可以被放置在FPGA A的IO FF中,以改善輸出時(shí)序。
在兩個(gè)FPGA之間,我們?yōu)槎嗦窂?fù)用信號(hào)使用單端連接(在圖中顯示為多路復(fù)用器)。為了保證信號(hào)完整性,我們必須確保在發(fā)送FFMO和接收FF(我們稱之為FFMI)之間的一個(gè)傳輸時(shí)鐘周期內(nèi)接收多路復(fù)用樣本并將其鎖存到目的FF。
當(dāng)多路復(fù)用的信號(hào)被逐個(gè)采樣到FPGA-B中的FFMI時(shí),而后它們被存儲(chǔ)在一組捕獲FF中,我們稱之為FFMC。這些FF確保樣本在設(shè)計(jì)時(shí)鐘的下一個(gè)時(shí)鐘邊緣之前都是穩(wěn)定的。我們的示例還顯示了FPGA_B接收端的一些組合設(shè)計(jì)邏輯(被分割在FPGA-B中的SoC的邏輯)。
那么,如何計(jì)算最大傳輸頻率以及傳輸時(shí)鐘與設(shè)計(jì)時(shí)鐘之間的比率呢?我們的約束是在FFMO和FFMI之間的傳輸時(shí)鐘周期內(nèi)傳輸數(shù)據(jù)值。路徑上的延遲如下:
這是信號(hào)可以在FPGA之間傳遞的理論速率,但我們使用的是單端信令,并且FPGA之間可能存在一些時(shí)鐘不確定性或抖動(dòng),我們也應(yīng)該給容差留出一些空間。因此,根據(jù)我們的經(jīng)驗(yàn),我們應(yīng)該添加Ttolerances = 1到2ns的安全裕度,這取決于我們對(duì)電路板上時(shí)鐘分布質(zhì)量的信心。對(duì)于此示例,讓我們假設(shè)
最大時(shí)鐘頻率100MHz(或10ns的周期)必須作為FPGA合成和放置和路由期間傳輸時(shí)鐘的約束條件。
現(xiàn)在讓我們更仔細(xì)地考慮多路復(fù)用器和dmux組件是如何工作的,以便計(jì)算傳輸時(shí)鐘和設(shè)計(jì)時(shí)鐘之間的比率。我們必須考慮兩種可能的用例。第一種情況是傳輸時(shí)鐘和設(shè)計(jì)時(shí)鐘是相互同步的,即,它們來自一個(gè)時(shí)鐘源,并且它們是相位對(duì)準(zhǔn)的。第二種情況是,傳輸時(shí)鐘和設(shè)計(jì)時(shí)鐘是異步的,在這種情況下,我們不知道數(shù)據(jù)值的傳輸是從哪個(gè)傳輸時(shí)鐘周期開始的,我們必須設(shè)置正確的約束以確保其正常工作。
從同步情況開始,我們從框圖中看到,需要一些傳輸時(shí)鐘周期,才能將數(shù)據(jù)從發(fā)送設(shè)計(jì)FFS通過復(fù)用寄存器FFMO、FFMI、FFMC傳送到接收設(shè)計(jì)寄存器FFR。
此外,即使這兩個(gè)時(shí)鐘是同步的,我們也必須重視發(fā)送和接收端的設(shè)計(jì)時(shí)鐘和傳輸時(shí)鐘之間的延遲。這些延遲在方框圖中標(biāo)記為發(fā)送側(cè)的Tdesign?to?mux和接收側(cè)的Tdmux?to?design。對(duì)于以下時(shí)鐘比率的計(jì)算,我們假設(shè)這些延遲具有恒定值,并且我們必須將這些假設(shè)作為綜合布局布線的約束條件。對(duì)于我們這里的示例,我們將假設(shè)這些延遲最大為一個(gè)傳輸時(shí)鐘周期,這是極端的,最大為10ns。下表顯示了基于以上假設(shè)的設(shè)計(jì)信號(hào)如何通過復(fù)用傳輸。
考慮在設(shè)計(jì)寄存器FFS中有效的新數(shù)據(jù)DA。一個(gè)傳輸時(shí)鐘周期后,第一位DA1被捕獲到FFMO中。這是使用我們的假設(shè),即設(shè)計(jì)時(shí)鐘和傳輸時(shí)鐘之間的延遲是最大一個(gè)傳輸時(shí)鐘周期,并且時(shí)鐘是相位同步的。表中帶陰影的條目顯示了捕獲的數(shù)據(jù)位如何通過多路復(fù)用器和dmux傳輸,并被計(jì)時(shí)到接收FFR中。我們在首都強(qiáng)調(diào)了鏈中每個(gè)FF都有新數(shù)據(jù)的地方。正如我們從選項(xiàng)卡的第一列中看到的,設(shè)計(jì)時(shí)鐘和傳輸時(shí)鐘之間的比率是7,這意味著設(shè)計(jì)時(shí)鐘必須比傳輸時(shí)鐘慢7倍才能保證正確的操作。
現(xiàn)在,計(jì)算我們的同步復(fù)用示例的最大設(shè)計(jì)時(shí)鐘頻率很簡單:
因此,對(duì)于這一設(shè)計(jì),即在100MHz下使用4:1復(fù)用器比率復(fù)用信號(hào),我們可以在14.28MHz以上的最壞情況下運(yùn)行我們的設(shè)計(jì),而不是我們可能從4:1比率中猜測的25MHz。
我們現(xiàn)在已經(jīng)看到了傳輸時(shí)鐘和設(shè)計(jì)時(shí)鐘是同步的情況,但讓我們考慮異步復(fù)用方案中的差異。最大傳輸時(shí)鐘頻率相同,但我們不知道設(shè)計(jì)和傳輸時(shí)鐘的有效邊緣之間的偏差。因此,我們必須在發(fā)送和接收端增加額外的同步時(shí)間,以確保滿足設(shè)計(jì)和傳輸時(shí)鐘之間的設(shè)置和保持時(shí)間。這在發(fā)送端和接收端都增加了額外的傳輸時(shí)鐘周期。異步復(fù)用的最大設(shè)計(jì)頻率計(jì)算如下:
我們可以看到,異步情況以較低的設(shè)計(jì)頻率運(yùn)行,但異步多路復(fù)用的優(yōu)點(diǎn)是,我們不需要同步設(shè)計(jì)和傳輸時(shí)鐘,而且我們可以更自由地從何處獲取傳輸時(shí)鐘。
為了總結(jié)這個(gè)例子,我們應(yīng)該記住用復(fù)用來約束設(shè)計(jì)的重要事項(xiàng)是:
基于FPGAIO技術(shù)、板上延遲和容差計(jì)算傳輸時(shí)鐘的正確最大頻率。
考慮同步或異步復(fù)用之間的差異,計(jì)算設(shè)計(jì)和傳輸時(shí)鐘之間的正確比率。
為傳輸時(shí)鐘和設(shè)計(jì)時(shí)鐘提供正確的合成和FPGA位置和路線限制。
為傳輸時(shí)鐘和設(shè)計(jì)時(shí)鐘之間的延遲提供正確的合成時(shí)鐘和FPGA位置和路徑限制。
考慮了FPGA之間使用正常單端信令的不同類型的復(fù)用,我們可以做什么來獲得更高的復(fù)用率,但仍然保持高系統(tǒng)速度?答案在于提高最大轉(zhuǎn)移使用FPGA的內(nèi)置串行IP和更強(qiáng)大的信令技術(shù)。
審核編輯:湯梓紅標(biāo)簽: