1.引言
傳統(tǒng)上 FPGA只能實現(xiàn)相對較小的邏輯電路,隨著工藝技術(shù)的提高,F(xiàn)PGA的容量和性能也不斷提高,F(xiàn)PGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。目前以硬件描述語言(Verilog 或 VHDL)所完成的電路設(shè)計,可以經(jīng)過簡單的綜合與布局,快速的燒錄至 FPGA 上進行測試,是現(xiàn)代 IC 設(shè)計驗證的技術(shù)主流。這些可編輯元件可以被用來實現(xiàn)一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學方程式。在大多數(shù)的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(Flip-flop)或者其他更加完整的記憶塊。
然而,多數(shù)學術(shù)性的 FPGA CAD工具只針對于同質(zhì)的 FPGA,即只包含邏輯模塊和布線資源的 FPGA。本文中我們提出了一種靈活的包含嵌入式存儲器的 FPGA的結(jié)構(gòu)以及一種建立RRG(布線資源圖)的方法。FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,內(nèi)部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個部分。 現(xiàn)場可編程門陣列(FPGA)是可編程器件。與傳統(tǒng)邏輯電路和門陣列(如PAL,GAL及CPLD器件)相比,F(xiàn)PGA具有不同的結(jié)構(gòu),F(xiàn)PGA利用小型查找表(16×1RAM)來實現(xiàn)組合邏輯,每個查找表連接到一個D觸發(fā)器的輸入端,觸發(fā)器再來驅(qū)動其他邏輯電路或驅(qū)動I/O,由此構(gòu)成了即可實現(xiàn)組合邏輯功能又可實現(xiàn)時序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。FPGA的邏輯是通過向內(nèi)部靜態(tài)存儲單元加載編程數(shù)據(jù)來實現(xiàn)的,存儲在存儲器單元中的值決定了邏輯單元的邏輯功能以及個模塊之間或模塊與I/O間的連接方式,并最終決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的聯(lián)接方式,并最終決定了FPGA所能實現(xiàn)的功能, FPGA允許無限次的編程。
2.結(jié)構(gòu)
包含嵌入式存儲器的FPGA結(jié)構(gòu)如圖1所示。整個 FPGA由四種基本資源構(gòu)成,邏輯模塊,I/O模塊,布局布線模塊和存儲器模塊。每個存儲器模塊的存儲容量是固定的,但是用戶可以對存儲器模塊進行配置,以實現(xiàn)不同長寬比的存儲器。我們假設(shè)存儲器模塊在整個 FPGA芯片中按列排放。存儲器模塊的列數(shù),每列存儲器所處的位置、每列存儲器模塊包含的存儲器模塊數(shù)目以及每列存儲器模塊中第一個存儲器模塊的起始物理位置都會在結(jié)構(gòu)描述文件中定義。
圖 2所示為我們的 FPGA布線結(jié)構(gòu),這是一種島式結(jié)構(gòu)。邏輯模塊周圍圍繞了布線通道。每個邏輯模塊的輸入或輸出引腳可以通過一個由可配置開關(guān)組成的連接模塊與靠近它的通道中的 8條連線相連。在每一個垂直通道和水平通道交叉處有一個開關(guān)模塊。開關(guān)模塊給每條輸入信號線提供了三個可能的連接選擇。同邏輯模塊相同,存儲器模塊也通過連接模塊與邏輯布線相連。在圖 2中的結(jié)構(gòu)中, Fm=3。Fm的最小值是 1,最大值為 V,這里的 V值即每個布線通道中的連線數(shù)目。
3.具體實現(xiàn)方式
存儲器模塊相對于邏輯模塊,有一些不同之處,例如模塊引腳的分布方式、模塊高度等,這使得 RRG的設(shè)計非常復(fù)雜。在這一部分中,我們將討論一種簡單而且靈活的 RRG設(shè)計方法。
3.1結(jié)構(gòu)描述
VPR用布線結(jié)構(gòu)描述語言定義 FPGA的布線結(jié)構(gòu)【 5】。VPR通過一個內(nèi)部的“結(jié)構(gòu)產(chǎn)生器”來產(chǎn)生 RRG。我們擴展了布線結(jié)構(gòu)描述語言來定義包含嵌入式存儲器的FPGA的布線結(jié)構(gòu),然后我們改進了 VPR的結(jié)構(gòu)產(chǎn)生器以適應(yīng)這些擴展。
由于嵌入式存儲器模塊的存在,我們對布線結(jié)構(gòu)描述語言的擴展主要包括:(1)存儲器模塊的列數(shù),(2)每列存儲器模塊的相對位置,(3)存儲器模塊輸入和輸出引腳的 Fm值,(4)每列存儲器模塊中的存儲器模塊數(shù)目,(5)每列存儲器模塊中第一個存儲器模塊的起始位置,(6)存儲器模塊的高度,(7)存儲器模塊輸入輸出引腳的數(shù)目,(8)存儲器模塊每個輸入或輸出引腳對應(yīng)的邊( side)和群( cluster),例如如圖 2所示的 FPGA結(jié)構(gòu)中,存儲器模塊的左邊和右邊共有 3個群,因為存儲器模塊的高度是 3個邏輯模塊的高度,而上下兩邊只有一個群。(9)每個存儲器模塊中的組合邏輯電路延遲和時序電路延時。
圖 3所示為一個描述包含嵌入式存儲器的 FPGA布線結(jié)構(gòu)的文件的一部分,其中邏輯模塊由一個 4輸入的查找表和一個寄存器構(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示出了整個 FPGA的結(jié)構(gòu),這種情況下,整個 FPGA包含 9x9個邏輯模塊,周圍圍繞 I/O模塊。黃色所示的為兩列存儲器模塊,每個存儲器模塊跨越 3個邏輯模塊的高度。圖 2所示僅為FPGA近距離結(jié)構(gòu)的一部分。
3.2布線資源圖
雖然上述所列的結(jié)構(gòu)參數(shù)使得 FPGA的結(jié)構(gòu)很容易就可以定義,但是對于布線器來說它并不是一個合適的表達方法。在 RRG中,連線、邏輯模塊的引腳以及存儲器模塊的引腳都被表示為節(jié)點,開關(guān)被表示為連接兩個節(jié)點的邊。
如前所述,我們對 VPR的結(jié)構(gòu)產(chǎn)生器作了改進以建立包含嵌入式存儲器的 FPGA的 RRG。由于存儲器模塊在 Y方向跨越多個邏輯模塊,這就使得在 RRG中插入存儲器模塊的引腳變得復(fù)雜,同時連接從存儲器模塊輸出引腳到連線以及從連線到存儲器輸入引腳的邊也更加復(fù)雜。但幸運的是如圖 2所示,存儲器模塊的存在并不破壞布線通道的分布。為了方便建立 RRG,我們增加了虛構(gòu)存儲器模塊的定義,在建立 RRG的過程中,存儲器模塊的位置由它的起始位置來表示。當在建立 RRG對所有模塊進行掃描的時候,我們對存儲器模塊以及虛構(gòu)存儲器模塊的處理方法和對邏輯塊的處理方法是一樣的。通過這樣的方法,我們簡化了創(chuàng)建異質(zhì) FPGA布線資源圖的過程。
4.結(jié)論
本文中,我們提出了一種包含嵌入式存儲器的 FPGA的靈活結(jié)構(gòu)以及一種建立 RRG的簡化方法。我們對 VPR進行了改進,擴展了其功能,使得它可以處理包含嵌入式存儲器的 FPGA結(jié)構(gòu),同時保持了原有的靈活性。
縱觀整個工作,我們著重處理包含嵌入式存儲器模塊的 FPGA結(jié)構(gòu),我們假設(shè)存儲器模塊按列排放。我們的這種結(jié)構(gòu)不僅適用于存儲器模塊,同時也適用于其他的按列排放的功能模塊,例如 Spartan-3系列 FPGA中的乘法器模塊以及 Stratix系列 FPGA中的 DSP模塊。
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618450 -
嵌入式
+關(guān)注
關(guān)注
5152文章
19675瀏覽量
317550 -
存儲器
+關(guān)注
關(guān)注
38文章
7652瀏覽量
167396
發(fā)布評論請先 登錄
嵌入式存儲器的設(shè)計方法和策略

Cyclone IV 器件中的存儲器模塊
嵌入式多媒體應(yīng)用的存儲器分配方法
如何實現(xiàn)嵌入式ASIC和SoC的存儲器設(shè)計?
嵌入式存儲器的設(shè)計方法是什么?
如何實現(xiàn)FPGA芯片存儲器模塊的設(shè)計?
使用新SRAM工藝實現(xiàn)嵌入式ASIC和SoC的存儲器設(shè)計
FPGA中嵌入式存儲器模塊的設(shè)計
嵌入式存儲器發(fā)展現(xiàn)狀
使用新SRAM工藝實現(xiàn)嵌入式ASIC和SoC的存儲器設(shè)計

嵌入式存儲器內(nèi)建自修復(fù)技術(shù)

評論