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

Cyclone IV 器件中的存儲器模塊
嵌入式多媒體應用的存儲器分配方法
如何實現嵌入式ASIC和SoC的存儲器設計?
嵌入式存儲器的設計方法是什么?
使用新SRAM工藝實現嵌入式ASIC和SoC的存儲器設計
FPGA中嵌入式存儲器模塊的設計
嵌入式存儲器發展現狀
使用新SRAM工藝實現嵌入式ASIC和SoC的存儲器設計

嵌入式存儲器內建自修復技術

評論