一種靈活的包含嵌入式存儲器的FPGA結(jié)構(gòu)
1.引言
傳統(tǒng)上 FPGA只能實(shí)現(xiàn)相對較小的邏輯電路,隨著工藝技術(shù)的提高, FPGA的容量和性能也不斷提高,如今 FPGA已經(jīng)被用于實(shí)現(xiàn)大的邏輯電路甚至整個(gè)系統(tǒng)。這些大的系統(tǒng)相對于傳統(tǒng)上一直作為 FPGA市場目標(biāo)的小邏輯分支電路有著很大的不同。其中一個(gè)最重要的不同就是這些大的系統(tǒng)中包含存儲器。所以,要有效的在 FPGA中實(shí)現(xiàn)存儲器,結(jié)構(gòu)的支持至關(guān)重要。包含大的存儲器陣列的 FPGA芯片已經(jīng)有生產(chǎn)商推出,例如 Xilinx和 Altera。
然而,多數(shù)學(xué)術(shù)性的 FPGA CAD工具只針對于同質(zhì)的 FPGA,即只包含邏輯模塊和布線資源的 FPGA。本文中我們提出了一種靈活的包含嵌入式存儲器的 FPGA的結(jié)構(gòu)以及一種建立RRG(布線資源圖)的方法。在 FPGA的研究中,我們通常用實(shí)驗(yàn)的方法來評估新結(jié)構(gòu)特性的實(shí)用性。因此,我們需要靈活的 CAD工具來對多種結(jié)構(gòu)進(jìn)行比較。 VPR即是這種類型的 FPGA CAD工具,它適用于多種 FPGA結(jié)構(gòu)。我們開發(fā)了一種新的布局布線工具, VA。它增強(qiáng)了 VPR的功能,使得 VPR可以有效地處理包含嵌入式存儲器的 FPGA結(jié)構(gòu),而且保證了其靈活性。
2.結(jié)構(gòu)
包含嵌入式存儲器的 FPGA結(jié)構(gòu)如圖 1所示。整個(gè) FPGA由四種基本資源構(gòu)成,邏輯模塊,I/O模塊,布局布線模塊和存儲器模塊。每個(gè)存儲器模塊的存儲容量是固定的,但是用戶可以對存儲器模塊進(jìn)行配置,以實(shí)現(xiàn)不同長寬比的存儲器。我們假設(shè)存儲器模塊在整個(gè) FPGA芯片中按列排放,如同 Xilinx公司的 Spartan-3系列 FPGA。存儲器模塊的列數(shù),每列存儲器所處的位置、每列存儲器模塊包含的存儲器模塊數(shù)目以及每列存儲器模塊中第一個(gè)存儲器模塊的起始物理位置都會在結(jié)構(gòu)描述文件中定義,我們將在 3.1中詳細(xì)討論。
圖 2所示為我們的 FPGA布線結(jié)構(gòu),這是一種島式結(jié)構(gòu)。邏輯模塊周圍圍繞了布線通道。每個(gè)邏輯模塊的輸入或輸出引腳可以通過一個(gè)由可配置開關(guān)組成的連接模塊與靠近它的通道中的 8條連線相連。在每一個(gè)垂直通道和水平通道交叉處有一個(gè)開關(guān)模塊。開關(guān)模塊給每條輸入信號線提供了三個(gè)可能的連接選擇。同邏輯模塊相同,存儲器模塊也通過連接模塊與邏輯布線相連。在文獻(xiàn) [4]中, S. J. E Wilton等人把模塊的靈活性定義為 Fm,即每個(gè)存儲器引腳可以連接的連線的數(shù)目。在圖 2中的結(jié)構(gòu)中, Fm=3。Fm的最小值是 1,最大值為 V,這里的 V值即每個(gè)布線通道中的連線數(shù)目。從存儲器模塊和邏輯模塊之間的連接結(jié)構(gòu)可以清楚的看到,每個(gè)存儲器模塊的引腳可以安排在模塊四周,同鄰近的布線通道連接。
500)this.style.width=500;" border="0" />
3.具體實(shí)現(xiàn)方式
存儲器模塊相對于邏輯模塊,有一些不同之處,例如模塊引腳的分布方式、模塊高度等,這使得 RRG的設(shè)計(jì)非常復(fù)雜。在這一部分中,我們將討論一種簡單而且靈活的 RRG設(shè)計(jì)方法。我們的 RRG設(shè)計(jì)方法基于 VPR,但是我們作了一些改進(jìn)使其能夠處理包含嵌入式存儲器的 FPGA的布線問題。 [!--empirenews.page--]
3.1結(jié)構(gòu)描述
VPR用布線結(jié)構(gòu)描述語言定義 FPGA的布線結(jié)構(gòu)【 5】。VPR通過一個(gè)內(nèi)部的“結(jié)構(gòu)產(chǎn)生器”來產(chǎn)生 RRG。我們擴(kuò)展了布線結(jié)構(gòu)描述語言來定義包含嵌入式存儲器的 FPGA的布線結(jié)構(gòu),然后我們改進(jìn)了 VPR的結(jié)構(gòu)產(chǎn)生器以適應(yīng)這些擴(kuò)展。
由于嵌入式存儲器模塊的存在,我們對布線結(jié)構(gòu)描述語言的擴(kuò)展主要包括:(1)存儲器模塊的列數(shù),(2)每列存儲器模塊的相對位置,(3)存儲器模塊輸入和輸出引腳的 Fm值,(4)每列存儲器模塊中的存儲器模塊數(shù)目,(5)每列存儲器模塊中第一個(gè)存儲器模塊的起始位置,
(6)存儲器模塊的高度,(7)存儲器模塊輸入輸出引腳的數(shù)目,(8)存儲器模塊每個(gè)輸入或輸出引腳對應(yīng)的邊( side)和群( cluster),例如如圖 2所示的 FPGA結(jié)構(gòu)中,存儲器模塊的左邊和右邊共有 3個(gè)群,因?yàn)榇鎯ζ髂K的高度是 3個(gè)邏輯模塊的高度,而上下兩邊只有一個(gè)群。(9)每個(gè)存儲器模塊中的組合邏輯電路延遲和時(shí)序電路延時(shí)。
500)this.style.width=500;" border="0" />
圖 3所示為一個(gè)描述包含嵌入式存儲器的 FPGA布線結(jié)構(gòu)的文件的一部分,其中邏輯模塊由一個(gè) 4輸入的查找表和一個(gè)寄存器構(gòu)成。圖 1和圖 2示出了這種 FPGA的結(jié)構(gòu)。VA產(chǎn)生的文件要滿足圖 3定義的結(jié)構(gòu),其中需要的布線通道寬度為 5,即 5條連線。這些描述 FPGA結(jié)構(gòu)的圖形都是由我們的 VA產(chǎn)生。圖 1示出了整個(gè) FPGA的結(jié)構(gòu),這種情況下,整個(gè) FPGA包含 9x9個(gè)邏輯模塊,周圍圍繞 I/O模塊。黃色所示的為兩列存儲器模塊,每個(gè)存儲器模塊跨越 3個(gè)邏輯模塊的高度。圖 2所示僅為 FPGA近距離結(jié)構(gòu)的一部分,這樣我們能清楚的看到布線結(jié)構(gòu)。黑色線表示布線資源,小的藍(lán)紅色矩形分別表示模塊的輸入和輸出引腳,綠色的連線代表連接開關(guān)。
3.2布線資源圖
雖然上述所列的結(jié)構(gòu)參數(shù)使得 FPGA的結(jié)構(gòu)很容易就可以定義,但是對于布線器來說它并不是一個(gè)合適的表達(dá)方法。在 RRG中,連線、邏輯模塊的引腳以及存儲器模塊的引腳都被表示為節(jié)點(diǎn),開關(guān)被表示為連接兩個(gè)節(jié)點(diǎn)的邊。
如前所述,我們對 VPR的結(jié)構(gòu)產(chǎn)生器作了改進(jìn)以建立包含嵌入式存儲器的 FPGA的 RRG。由于存儲器模塊在 Y方向跨越多個(gè)邏輯模塊,這就使得在 RRG中插入存儲器模塊的引腳變得復(fù)雜,同時(shí)連接從存儲器模塊輸出引腳到連線以及從連線到存儲器輸入引腳的邊也更加復(fù)雜。但幸運(yùn)的是如圖 2所示,存儲器模塊的存在并不破壞布線通道的分布。為了方便建立 RRG,我們增加了虛構(gòu)存儲器模塊的定義,在建立 RRG的過程中,存儲器模塊的位置由它的起始位置來表示。剩余的其它被占領(lǐng)的邏輯塊位置被分配給虛構(gòu)存儲器模塊。當(dāng)在建立 RRG對所有模塊進(jìn)行掃描的時(shí)候,我們對存儲器模塊以及虛構(gòu)存儲器模塊的處理方法和對邏輯塊的處理方法是一樣的。通過這樣的方法,我們簡化了創(chuàng)建異質(zhì) FPGA布線資源圖的過程。
4.結(jié)論
本文中,我們提出了一種包含嵌入式存儲器的 FPGA的靈活結(jié)構(gòu)以及一種建立 RRG的簡化方法。我們對 VPR進(jìn)行了改進(jìn),擴(kuò)展了其功能,使得它可以處理包含嵌入式存儲器的 FPGA結(jié)構(gòu),同時(shí)保持了原有的靈活性。而 VPR原有的布局布線算法完全適用于我們的 FPGA結(jié)構(gòu)。我們繼承 VPR的方法來描述包含嵌入式存儲器的 FPGA結(jié)構(gòu),并且擴(kuò)充了 VPR的自動結(jié)構(gòu)描述器功能。
縱觀整個(gè)工作,我們著重處理包含嵌入式存儲器模塊的 FPGA結(jié)構(gòu),我們假設(shè)存儲器模塊按列排放。我們的這種結(jié)構(gòu)不僅適用于存儲器模塊,同時(shí)也適用于其他的按列排放的功能模塊,例如 Spartan-3系列 FPGA中的乘法器模塊以及 Stratix系列 FPGA中的 DSP模塊。
本文作者創(chuàng)新觀點(diǎn):本文中,我們提出了一種靈活的包含嵌入式存儲器的 FPGA結(jié)構(gòu)以及一種建立 RRG的簡化方法。我們對 VPR進(jìn)行了改進(jìn),擴(kuò)展了其功能,使得它可以處理包含嵌入式存儲器的 FPGA結(jié)構(gòu),同時(shí)保持了原有的靈活性。