FPGA 技術(shù):芯片和工具
本章的重點是基于FPGA的原型驗證的現(xiàn)有技術(shù),包括硬件和軟件。它介紹了作為核心技術(shù)的 FPGA 的主要特點,以及與基于 FPGA 的原型開發(fā)相關(guān)的合成軟件技術(shù)。以下各章將詳細介紹如何使用這些技術(shù)。
-
首先,總體介紹當前的 FPGA 技術(shù),但重點介紹 Xilinx? Virtex? -6 系列。
-
我們將重點介紹基于FPGA 的原型開發(fā)中每種功能的實用性,這不僅取決于其功能,還取決于相關(guān)EDA 工具對其的支持。
請先閱讀:【【FPGA原型驗證】附錄基礎(chǔ)知識:FPGA/CPLD基本結(jié)構(gòu)與實現(xiàn)原理】
3.1.當今的 FPGA 器件技術(shù)
FPGA 器件是基于 FPGA 的原型驗證物理實現(xiàn)的核心。它是映射和實現(xiàn) SoC 設(shè)計的地方,因此我們確實應該仔細研究它們以及我們用來與它們配合使用的工具。
多年來,F(xiàn)PGA 已經(jīng)從普通的(按照今天的標準)可編程邏輯器件發(fā)展成為具有多功能架構(gòu)特性的超大型邏輯陣列,并以驚人的時鐘速率運行。
圖 20 特別顯示了隨著架構(gòu)的改進和硅技術(shù)按照摩爾定律的發(fā)展,FPGA 的容量也在不斷提高。
事實上,那些為主要 FPGA 供應商生產(chǎn) FPGA 器件的制造生產(chǎn)線(所有這些供應商都沒有晶圓廠)都從生產(chǎn)超大型 FPGA 芯片的經(jīng)驗中獲益匪淺,并能夠相應地調(diào)整其工藝。因此,FPGA 的進步與整個硅技術(shù)的進步同步,
這一點不足為奇,而且我們應該期待它至少繼續(xù)如此。事實上,在撰寫本報告時,一些令人興奮的新進展正在發(fā)生,三維集成電路技術(shù)的使用使一些FPGA 超越了摩爾定律。
投資基于 FPGA 的原型開發(fā)方法不應被視為因 FPGA 技術(shù)本身的稀缺而存在任何風險。
今天,讓我們來仔細研究一下 Xilinx 的領(lǐng)先技術(shù):Virtex? -6 系列。
3.1.1.Virtex? -6 系列:最新 FPGA 的范例
本章將以賽靈思? FPGA 為例,因為截至本章撰寫之時,賽靈思 FPGA 已成為業(yè)界廣泛應用的基于 FPGA 的原型驗證的首選。
Xilinx? Virtex-6 系列是 Xilinx 目前最新的 FPGA 系列,由 Xilinx? Virtex? -5 架構(gòu)發(fā)展而來,但功能更強、容量更大、性能更佳、功耗更低。
從表 2 中可以看出,采用更小的 CMOS 工藝幾何形狀制造,使最大的 Virtex- 5 和 Virtex-6 器件之間的邏輯容量增加了一倍多,此外,FF(觸發(fā)器)與邏輯資源的比例也增加了一倍多,從而能夠更好地支持流水線設(shè)計。
有關(guān)器件和體系結(jié)構(gòu)的完整詳細信息,可通過本書參考書目和附錄中的一些資源獲取,但現(xiàn)在讓我們花一些時間來了解 FPGA 技術(shù)的各個部分,從基本邏輯塊開始,了解每個邏輯塊對我們基于 FPGA 的原型開發(fā)任務有多大幫助。
3.1.2.FPGA 邏輯塊
順序邏輯和組合邏輯在稱為片的邏輯塊中實現(xiàn)。片包含查找表(LUT)、存儲元件和附加級聯(lián)邏輯。
- 查找表(LUT):查找表(LUT)是一個用于實現(xiàn)多路選擇器或多路復用器邏輯的硬件組件。在硬件描述語言(HDL)如Verilog或VHDL中,LUT通常用于實現(xiàn)組合邏輯電路。LUT通過將多個輸入映射到一個特定的輸出,實現(xiàn)了基于輸入的多路選擇。這種設(shè)計可以提高硬件效率,因為它可以減少所需的邏輯門數(shù)量。
查找表(Look-Up-Table)簡稱為LUT,LUT本質(zhì)上就是一個RAM。目前FPGA中多使用4輸入的LUT,所以每一個LUT可以看成一個有 4位地址線的 的RAM。 當用戶通過原理圖或HDL語言描述了一個邏輯電路以后,PLD/FPGA開發(fā)軟件會自動計算邏輯電路的所有可能結(jié)果,并把真值表(即結(jié)果)事先寫入 RAM,這樣,每輸入一個信號進行邏輯運算就等于輸入一個地址進行查表,找出地址對應的內(nèi)容,然后輸出即可。
- 存儲元件:存儲元件,如觸發(fā)器(Flip-Flops)和寄存器(Registers),是數(shù)字電路中用于存儲數(shù)據(jù)的基本元件。這些元件通常用于同步時序邏輯設(shè)計和存儲數(shù)據(jù),以便在后續(xù)的邏輯操作中使用。
關(guān)于硬件中常見的基本存儲元件的定義、中英文對應的名字會模糊,今天特地查明具體定義。
flip-flop:觸發(fā)器,是時鐘邊沿觸發(fā),可存儲1 bit data,是register的基本組成單位,結(jié)構(gòu)圖如下:
register:寄存器,a hardware register stores bits of information in such a way that systems can write to or read out all the bits simultaneously.
就是時鐘邊沿觸發(fā)的存儲結(jié)構(gòu),是由多個flip-flop組成,可以構(gòu)成register file, SRAM等,結(jié)構(gòu)如下:
- 附加級聯(lián)邏輯:級聯(lián)邏輯是指將多個邏輯門連接在一起以實現(xiàn)更復雜的邏輯功能。附加級聯(lián)邏輯通常用于增加電路的復雜性,實現(xiàn)更高級別的邏輯功能。
通過將多個簡單的邏輯門組合在一起,可以構(gòu)建更復雜的數(shù)字電路和系統(tǒng)。
典型的 4 輸入 LUT 核心是一個 16x1 RAM。RAM 的任何特定位都將根據(jù) 4 位地址路由到 LUT 的輸出。現(xiàn)在考慮在 16 位 RAM 中填入各種 1 和 0,這樣當?shù)刂钒l(fā)生變化時,LUT 的輸出也會發(fā)生變化。
我們已經(jīng)創(chuàng)建了一個包含四個輸入和一個輸出的邏輯函數(shù)。剩下的工作就是對 16 位 RAM 進行排序,以模擬有用的邏輯功能。事實上,我們可以將 16 位 RAM 視為 Karnaugh 映射,在早期,這實際上是對它們進行編程的一種選擇。
因此,邏輯功能(如奇偶校驗、XOR、AND、OR 等)可以有效地封裝到最小數(shù)量的 LUT 中,以執(zhí)行所需的功能。算術(shù)功能也可以放在 LUT 中,設(shè)備中還有硬連接的攜帶前瞻邏輯,這樣就可以比單獨使用 LUT 提高性能。
如今,我們擁有多達 6 個輸入 LUT(因此需要 64 位 RAM),所有這些都是通過合成來 "編程 "的,合成會根據(jù)所需的高級描述為我們創(chuàng)建 LUT 內(nèi)容。然后在設(shè)備配置時加載 LUT RAM,利用 64 位 RAM 創(chuàng)建復雜的 6 輸入函數(shù)。
LUT被嵌入到其他結(jié)構(gòu)中,包括 FF、進位鏈、算術(shù)、存儲器和其他復雜結(jié)構(gòu)。
在 Xilinx? Virtex-6 器件中,LUT 用于實現(xiàn)六個獨立輸入的函數(shù)發(fā)生器。每個六輸入 LUT 有兩個輸出。
這些函數(shù)發(fā)生器可以實現(xiàn)任意定義的布爾函數(shù),同一 LUT 的第一個輸出最多有六個輸入,第二個輸出最多有五個輸入。
兩個片段組合成一個可配置邏輯塊(CLB)。CLB 以陣列形式排列在 FPGA中,通過互連資源相互連接并與其他類型的塊連接。
在 Virtex-6 設(shè)備中,有兩種類型的切片:
-
?SLICEM - 一個片斷, 其中的 LUT 可用來實現(xiàn)組合函數(shù)、小型 RAM塊或移位寄存器。
-
?SLICEL - 僅可使用 LUT 實現(xiàn)組合邏輯的片斷。
圖 21 顯示的是 SLICEM 框圖,從圖中我們可以看到,每個片包含四個 6 輸入LUT(位于左側(cè))、八個存儲元件(四個 FF 和四個 FF/鎖存器)以及級聯(lián)邏輯。
可以對 CLB 中的各種路徑進行編程,以連接或繞過 LUT 和 FF 的各種組合。
仔細觀察還可以看到用于特定攜帶和級聯(lián)功能的附加邏輯門,這些功能將 CLB 內(nèi)外的資源連接起來。
SLICEL 與 SLICEL 類似,不同之處在于 LUT 只有六個輸入信號和兩個輸出信號。這些資源可配置為內(nèi)存使用,最常見的是 RAM,下文第 3.1.3 節(jié)將對此進行簡要介紹。
如果工具能夠最佳利用 CLB 來實現(xiàn)設(shè)計,那么原型可能會使用更少的 FPGA 資源,運行速度也會更快。
這意味著工具必須了解片的所有配置方式,以及使用片時可能存在的限制。
例如,如果將四個 FF/LAT 存儲元件配置為鎖存器,那么就不能使用其他四個 FF,因此最好不要使用鎖存器。
此外,寄存器的控制信號是共享的,因此如果設(shè)計中存在許多不同的不相關(guān)控制信號,那么將設(shè)計寄存器打包到片中就會成為布局布線工具的一項復雜任務。
作為原型設(shè)計者,我們通常不會關(guān)心片的各種功能的最終用途,因為實現(xiàn)工具應自動使用適當?shù)呐渲靡詽M足時序約束。
不過,有時可能有必要掌握如此詳細的專業(yè)知識,因此我們建議您參考本書末尾的參考文獻,以獲取更多信息。
原型實用性:非常高,是必不可少的構(gòu)件。合成將自動或在 RTL 和/或約束文件中的可選屬性和指令的指導下充分利用上述所有功能。
3.1.3.FPGA 存儲器:LUT 存儲器和塊存儲器
SoC 設(shè)計包括各種類型的多個存儲器,如 RAM、ROM、內(nèi)容可尋址存儲器。在絕大多數(shù)情況下,這些存儲器將從單元庫或存儲器生成器實用程序中實例化。
重要的是,F(xiàn)PGA 能夠盡可能高效地表示這些存儲器。
大多數(shù)高端 FPGA 都有多種存儲器類型可供選擇,小到寄存器文件和移位寄存器,大到大規(guī)模RAM。
如 3.1.2 節(jié)所述,Xilinx? Virtex-6 SLICEM 邏輯塊中的 LUT 可用作小型本地存儲器,例如 32 位寬 RAM。
這為實現(xiàn) SoC 設(shè)計中許多地方的小型存儲器功能提供了極大的自由度。
對于最大的 SoC 存儲器,需要外部存儲器資源。FPGA 自身的塊存儲器資源對于較小的存儲器非常有用,從原型開發(fā)的角度來看,它們是 FPGA 中第二重要的資源。
在 Virtex-6 系列中,這種存儲器資源被稱為 BlockRAM,整個Virtex-6 FPGA 器件中分布有 156 到 1064 個 BlockRAM。
Xilinx? Virtex-6 BlockRAM 的示意圖如圖 22 所示,BlockRAM具有以下主要功能:
RAM分為BRAM(Block RAMs)和DRAM(Distributed RAM),即塊RAM與分布式RAM,這兩個差別在于BRAM是FPGA上固有的一些存儲資源(針對不同型號的FPGA,其存儲資源大小會有差別),而DRAM則是由LUT組合而成的。所以在數(shù)據(jù)量較大的情況下,一般使用BRAM,盡量避免使用DRAM,導致LUT資源的浪費。
-
?可配置性:每個塊都是專用的雙端口同步 36 Kb RAM 塊,可配置為32K × 1、16K × 2、8K × 4、4K × 9(或 8)、2K × 18(或 16)、1K×端3口6(可或以獨32立)配或置51。2 x 72(或 64)。每個
-
?同步操作:BlockRAM 可以實現(xiàn)任何單端口或雙端口同步存儲器。當配置為雙端口 RAM 時,每個端口可以以不同的時鐘速率運行。
-
?先進先出邏輯:專用但可配置的先進先出邏輯可與 BlockRAM 結(jié)合使用,以實現(xiàn)地址點和握手標志。FIFO 邏輯的深度和寬度可以配置, 但寫入和讀取兩側(cè)的寬度必須相同。
-
?ECC:當配置為 64 位寬時,每個 BlockRAM 可以存儲和使用八個額外的漢明碼位,并在讀取過程中執(zhí)行單位糾錯和雙位錯誤檢測(ECC)。在向外部 64/72 位寬存儲器寫入或讀取數(shù)據(jù)時,也可使用 ECC 邏輯。
FPGA 中的 BlockRAM 可以組合起來,以模擬更深或更寬的 SoC 存儲器。這通常由綜合工具完成, 這些工具會自動將較大的存儲器劃分到多個BlockRAM 中。
需要對從 SoC 實例化到最終 FPGA BlockRAM 的設(shè)計進行一些操作,這將在第 7 章中詳細介紹。
原型開發(fā)工具:BlockRAM 是主要的構(gòu)建模塊,由綜合工具自動推斷。不過,在撰寫本文時,綜合工具并不自動支持 FIFO 邏輯,但可以通過內(nèi)核實例化。將其包含在內(nèi)。有關(guān)存儲器實現(xiàn)的更多詳情,請參閱第 7 章。
slice指FPGA的組成單元,如xilinx的fpga的結(jié)構(gòu)中,基本單元是LUT,由LUT組成SLICE,由SLICE組成CLB,具體多少個LUT組成SLICE,多少個SLICE組成CLB由不同的器件類型決定.
3.1.4.FPGA DSP 資源
SoC 設(shè)計通常包含算術(shù)功能, 如乘法器、累加器和其他 DSP 邏輯。
高端FPGA(如 Xilinx? Virtex-6 器件)通過提供有限數(shù)量的專用 DSP 塊來滿足這些需求;在 Virtex-6 器件中,DSP 塊的數(shù)量是有限的。
DSP48E1 系列產(chǎn)品被稱為 DSP48E1 塊。它們是專用的、可配置的低功耗 DSP 片,兼具高速和小巧的特點,同時保持了系統(tǒng)設(shè)計的靈活性。圖 23 顯示了DSP48E1 的詳細框圖。
如方框圖所示,每個 DSP48E1 片都由一個專用的 25 × 18 位二進制乘法器和一個 48 位累加器組成,兩者都能以 600 MHz 的吞吐量運行。
乘法器可以動態(tài)旁路,兩個 48 位輸入可以饋入一個單指令多數(shù)據(jù)(SIMD)算術(shù)單元(雙 24位加法/減法/累加或四 12 位加法/減法/累加)或一個邏輯單元,后者可以生成兩個操作數(shù)的 10 種不同邏輯功能中的任意一種。
DSP48E1 包括一個額外的前級,通常用于對稱濾波器。這一功能提高了密集設(shè)計的性能,并有助于減少完成特定拓撲結(jié)構(gòu)在 DSP 塊之前或之后所需的邏輯片數(shù)量。
DSP48E1 芯片具有廣泛的流水線和擴展功能,例如寬動態(tài)總線移位器、內(nèi)存地址發(fā)生器、寬總線多路復用器和內(nèi)存映射 IO 寄存器文件。累加器還可用作同步上/下計數(shù)器。乘法器可執(zhí)行邏輯功能(AND、OR)和桶形移位。
原型設(shè)計實用性:非常高,是主要的構(gòu)建模塊。除模式檢測可通過內(nèi)核實例化納入外,大多數(shù)功能都是由綜合工具自動推斷的。
3.1.5.FPGA 時鐘資源
時鐘資源和時鐘網(wǎng)絡是 FPGA 與 SoC 技術(shù)之間的主要區(qū)別。SoC 設(shè)計人員幾乎可以完全自由地指定他們所能想象的各種時鐘網(wǎng)絡,而 FPGA 中能夠?qū)崿F(xiàn)的時鐘網(wǎng)絡數(shù)量卻有實際的有限限制。
SoC 時鐘與 FPGA 時鐘資源的映射, 如果 SoC 團隊不能妥善解決,例如提供簡化版的 SoC 時鐘,就會導致項目嚴重延誤。
原型驗證最好在設(shè)計的 RTL 上進行,然后再進行時鐘樹綜合、樹分割測試和時鐘處理以降低功耗。不過,即使是 SoC 設(shè)計的原始 RTL 也可能包括一些非常復雜的時鐘網(wǎng)絡,F(xiàn)PGA 器件需要處理這些網(wǎng)絡。
事實上,在某些設(shè)計中, 限制因素是 FPGA 中有限的時鐘資源,而不是器件容量或性能。因此,有必要找到一種方法,使 FPGA 的時鐘資源與 SoC 的時鐘資源相匹配。
這可以通過簡化原始時鐘網(wǎng)絡(參見第 9 章中的原型設(shè)計建議)或最大限度地利用可用 FPGA 時鐘(參見第 7 章)來實現(xiàn)。時鐘資源可分為時鐘產(chǎn)生和時鐘分配。
3.1.5.1.FPGA 時鐘生成
時鐘在稱為 CMT(時鐘管理芯片)的可配置單元中產(chǎn)生,在 Xilinx? Virtex-6 系列中,CMT 包括兩個混合模式時鐘管理器(MMCM)。
MMCM 是基于鎖相環(huán) (PLL) 架構(gòu)的多輸出頻率合成器,具有增強的功能和性能。CMT 中的每個 MMCM 都可以單獨處理;
但是,MMCM 之間存在專用路由,可以進行更復雜的頻率合成。圖 24 顯示了 CMT 的示意圖,從高層次展示了各種時鐘輸入源之間的連接以及 MMCM 與 MMCM 之間的連接。
PLL 中的壓控振蕩器 (VCO) 能夠在 400MHz 至 1600MHz 范圍內(nèi)運行,最低輸入頻率可低至 10MHz,并具有可編程分頻器和相位選擇寄存器,以 45° 的間隔提供輸出抽頭。
其他可編程功能包括 PLL 帶寬選擇、反饋路徑(使 PLL 成為時鐘乘法器)或一個輸出路徑中的分數(shù)計數(shù)器,以及小增量固定或動態(tài)相移。
所有這些加起來就是一個非常強大的時鐘發(fā)生塊,每個 FPGA 中最多有九個這樣的塊。因此,在將 SoC 時鐘網(wǎng)絡映射到原型中時,我們應該不會缺少選擇。
原型開發(fā)實用性:非常高,主要構(gòu)件。許多時鐘特性不能自動推斷,必須實例化到 RTL 的 FPGA 版本中。
3.1.5.2.FPGA 時鐘分配
幾十年來,F(xiàn)PGA 廠商一直致力于生產(chǎn)具有盡可能多時鐘的器件,同時又不浪費面積資源。因此,F(xiàn)PGA 非常適合實現(xiàn)具有有限數(shù)量時鐘網(wǎng)絡的常規(guī)同步電路。
為了提高效率,在大多數(shù)器件上,從全局低偏斜時鐘到本地低扇出時鐘,存在著不同時鐘資源的層次結(jié)構(gòu)。同樣,合成和布線的任務是確保這些資源的良好使用,但有時也需要人工干預來簡化任務,這將在第 7 章中討論。
就 Xilinx? Virtex-6 系列而言,每個 FPGA 都提供五種不同類型的時鐘線,以滿足高扇出、短傳播延遲和實現(xiàn)整個器件低偏移的不同時鐘要求。
Xilinx? Virtex -6 時鐘分配資源包括
-
?全局時鐘線:每個 Virtex-6 FPGA 都有 32 條全局、高扇出時鐘線,可連接到每個 FF 時鐘、時鐘使能、設(shè)置/復位以及許多邏輯輸入。任何區(qū)域內(nèi)都有 12 條全局時鐘線。全局時鐘線可由全局時鐘緩沖器驅(qū)動,緩沖器還可以執(zhí)行無間隙時鐘多路復用和時鐘使能功能。全局時鐘通常由 CMT 驅(qū)動,可以完全消除基本時鐘分配延遲。
-
?區(qū)域時鐘:可驅(qū)動其區(qū)域內(nèi)的所有時鐘目的地以及上下區(qū)域。一個區(qū)域的定義是 40 個 IO 和 40 個 CLB 高、半個芯片寬的任何區(qū)域。Virtex-6 FPGA 有 6 到 18 個區(qū)域。每個區(qū)域有六個區(qū)域時鐘軌道。每個區(qū)域時鐘緩沖器可由四個時鐘輸入引腳中的任意一個驅(qū)動,其頻率可選擇除以 1 到 8 之間的任意整數(shù)。
-
?IO 時鐘:僅服務于 IO 邏輯和串行器/解串器 (SERDES) 電路的特別快的時鐘。Virtex-6 器件具有從 MMCM 直接連接到 IO 的高性能直接連接,可實現(xiàn)低抖動、高性能接口。
原型設(shè)計實用性:非常高,主要構(gòu)件,由綜合工具自動推斷。如果需要區(qū)域時鐘,則通常需要位置約束,以便將時鐘負載與特定區(qū)域聯(lián)系起來。
3.1.6.FPGA 輸入和輸出
正如我們在后面討論基于多 FPGA 的原型驗證硬件時將看到的那樣,在 FPGA器件之間傳遞同步信號的能力,甚至將不同信號復用到同一條線路上的能力,取決于 FPGA 邊界是否存在快速靈活的 IO 引腳和時鐘資源。
與時鐘一樣,IO 引腳的有限數(shù)量往往比器件容量或內(nèi)部性能更能限制信號的傳遞。
在 Xilinx? Virtex-6 器件中,根據(jù)器件和封裝尺寸的不同,有 240 至 1200 個IO 引腳。每個 IO 引腳都可配置,符合多種 IO 標準,電壓最高可達 2.5V。除電源引腳和少數(shù)專用配置引腳外,所有其他封裝引腳都具有相同的 IO 功能,只是受到某些組/分組規(guī)則的限制。
所有 IO 引腳按組排列,每組 40 個引腳。每個組都有一個公共 VCCO 輸出電源電壓引腳,它也為某些輸入緩沖器供電。某些單端輸入緩沖器需要一個外部施加的基準電壓(VREF )。
每個組有兩個 VREF 引腳(配置組 0 除外)。一個組只能有一個 VREF電壓值。
特點:單端輸出采用傳統(tǒng)的 CMOS 推/拉輸出結(jié)構(gòu),向 VCCO 輸出高電平或向地輸出低電平,并可進入高 Z 狀態(tài)。此外,壓擺率和輸出強度也是可編程的。輸入始終處于激活狀態(tài),但在輸出激活時通常會被忽略。每個引腳都可以選擇弱上拉或弱下拉電阻。有關(guān) IO 引腳單端操作的更多詳情,請參閱下文:
- ?IO 邏輯:每個 IO 引腳都有一個相關(guān)的邏輯塊,可在其中選擇多個選項:
- ?配置:所有輸入和輸出均可配置為組合式或注冊式。所有輸入和輸出均支持雙倍數(shù)據(jù)速率(DDR)。
- ?延時:任何輸入或輸出都可以單獨延時,最多 32 個增量,每個增量~78ps。這是通過 IODELAY 實現(xiàn)的。延遲步數(shù)可通過配置設(shè)置,也可在使用時動態(tài)遞增或遞減。IODELAY 的工作頻率接近 200MHz。每個總 IODELAY 的 32 個抽頭由該頻率控制,因此不受溫度、電源電壓和處理變化的影響。
- ?驅(qū)動電流:FPGA 可能需要連接各種外設(shè),有些外設(shè)安裝在尚未創(chuàng)建的子卡上。Virtex-6 FPGA IO 引腳可配置為支持從 2mA 到 24mA 的不同驅(qū)動強度。
任何一對 IO 引腳都可配置為差分輸入對或輸出對。差分輸入引腳對可選擇使用 100Ω 內(nèi)部電阻器端接。所有 Xilinx? Virtex-6 器件都支持 LVDS 以外的差分標準:HT、RSDS、LVDS、差分 SSTL 和差分 HSTL。
- ?ISERDES 和 OSERDES:SERDES 塊位于 IO 結(jié)構(gòu)內(nèi)部。每個輸入端都可以訪問自己的解串器(串行到并行轉(zhuǎn)換器),并行寬度可編程為2、3、4、5、6、7、8 或 10 位;每個輸出端都可以訪問自己的串行器(并行到串行轉(zhuǎn)換器),并行寬度可編程為:單數(shù)據(jù)速率 (SDR) 時最寬 8 位,雙數(shù)據(jù)速率 (DDR) 時最寬 10 位。我們將在第 8 章中看到SERDES 模塊如何在 FPGA 之間實現(xiàn)高速時分復用信號的巨大作用。
還有其他更復雜的 IO 塊,如千兆位收發(fā)器和 PCIe 塊,讀者可以參考書目中的參考資料,了解在基于 FPGA 的原型中為特定目的使用這些塊的更多信息。
第 10 章還討論了如何使用 FPGA 中的內(nèi)置 IP 來模擬被測 SoC 中的 IP。
3.1.7.千兆位收發(fā)器
快速串行通信通道在 ASIC 和 SoC 設(shè)計中越來越常見,用于通過背板或更遠的距離連接集成電路。在 RTL 設(shè)計中,這些通道總是被實例化為黑盒子,并在最終硅布局中引用物理 IO 元素。
我們將在后面的章節(jié)中了解如何在基于FPGA 的原型中處理這些問題。要在 FPGA 中模擬這些超高速串行收發(fā)器, 需要專門和專用的片上電路,包括能夠處理這些高數(shù)據(jù)速率下的信號完整性問題的差分 IO。
在 Xilinx? Virtex-6 系列中, 千兆位收發(fā)器塊(簡稱 GTX 塊)的存在使這種高速串行 IO 成為可能。
GTX 塊的詳細原理圖如圖 25 所示,從圖中可以看出,除了物理發(fā)送和接收緩沖區(qū)外,GTX 塊還能實現(xiàn)物理介質(zhì)附件 (PMA) 和物理編碼子層 (PCS)。每個 GTX 收發(fā)器還具有大量可由用戶配置的功能和參數(shù)。
每個收發(fā)器都是發(fā)射器和接收器的組合, 數(shù)據(jù)傳輸速率介于 155Mb/s 和6.5Gb/s 之間。發(fā)射器和接收器都是獨立的電路,使用獨立的 PLL 將輸入的參考頻率乘以 2 到 25 之間的特定可編程數(shù)字,成為比特串行數(shù)據(jù)時鐘。
首先來看發(fā)送器,它基本上是一個并行串行轉(zhuǎn)換器,轉(zhuǎn)換率為 8、10、16、20、32 或 40。
發(fā)射器輸出通過單通道差分電流模式邏輯(CML)輸出信號驅(qū)動PC 板。
而接收器從根本上說是一個串行到并行轉(zhuǎn)換器,將輸入的位串行差分信號轉(zhuǎn)
換成并行字流,每個字流的寬度為 8、10、16、20、32 或 40 位。接收器接收輸入的差分數(shù)據(jù)流,將其送入可編程均衡器,以補償 PC 板和其他互連特性, 并使用 FREF 輸入啟動時鐘識別。
Xilinx? Virtex-6 系列的不同成員各有 8 到 36 個 (GTX) 電路,最大的器件LX760 除外,不具備 GTX 功能。
因此,如果我們需要在設(shè)計中對高速串行 IP 進行原型開發(fā),可能需要對 FPGA 進行一些組合,我們將在第 5 章中對此進行探討。
原型設(shè)計工具:雖然 GTX 具有非常強大的功能,但由于其復雜性和可配置選項,綜合工具無法自動推斷出 GTX 及其相關(guān)邏輯。不過,可以通過內(nèi)核實例化將這些模塊包含在內(nèi)。
3.1.8.內(nèi)置 IP(以太網(wǎng)、PCI Express? 、CPU 等)
通常,許多網(wǎng)絡和通信 SoC 設(shè)計都包含以太網(wǎng)或 PCI Express 通道,那么如何在基于 FPGA 的原型中對這些通道進行建模呢?FPGA 實現(xiàn) MAC(媒體訪問控制器)和 PHY(物理接口收發(fā)器)標準接口的能力越來越強。
如果所選的FPGA 內(nèi)置了這些功能,那么就可以用它們來替代那些最終將嵌入到 SoC 中、但在 RTL 中可能以黑盒形式出現(xiàn)的物理 IP 塊。有關(guān)這種替代的更多信息, 請參見第 10 章。
在 Virtex-6 FPGA 中,PCIe 和以太網(wǎng) MAC 和 PHY 都集成到了 FPGA 結(jié)構(gòu)中。
在以太網(wǎng)方面,根據(jù) IEEE 802.3-2005 標準設(shè)計的三模(10/100/1000 Mb/s) 以太網(wǎng) MAC (TEMAC) 塊最多可達四個。這些模塊可連接到 FPGA 邏輯、GTX 收發(fā)器和 IO 資源,支持高達 2.5Gbit/sec 的速度。
對于 PCIe , 所有 Xilinx? Virtex-6 LXT 和 SXT 器件都包含一個用于 PCI Express 技術(shù)的集成接口塊,可配置為端點或根端口,設(shè)計符合 PCIe 基本規(guī)范 2.0 版。該接口塊可根據(jù)系統(tǒng)設(shè)計要求進行高度配置,并可在 1、2、4 或 8 個通道上運行。
2.5Gbit/s 數(shù)據(jù)傳輸速率和 5.0Gbit/s 數(shù)據(jù)傳輸速率。
有些 FPGA 包含 CPU 硬核,通常是某種 ARM IP 核。這些內(nèi)核針對 FPGA 進行了優(yōu)化,在合成到 FPGA 時,其運行速度遠遠高于 SoC 的 RTL,通常是10:1。它們對原型開發(fā)的作用非常大,但前提是 FPGA 的內(nèi)核與 SoC 內(nèi)置的實際內(nèi)核相匹配。
此外,當今大多數(shù) SoC 設(shè)計都運行多個 CPU 內(nèi)核,通常具有不同的功能或配置。如果每個 FPGA 都有一個硬 CPU 內(nèi)核,那么分區(qū)標準就會受每個 FPGA 都有一個 CPU 的設(shè)計分割需求所驅(qū)動。這對于運行總線和其他通用設(shè)計元素來說可能并不理想,因此在 CPU 速度方面獲得的優(yōu)勢可能無法轉(zhuǎn)化為整體原型速度的顯著提高。
如果用 FPGA 中的有限子集取代 SoC 內(nèi)核會帶來很大的折衷,那么我們最好使用外部測試芯片,或者在 CPU 速度而不是功能上做出讓步。第 10 章對原型開發(fā)中的 IP 有更多討論。
無論如何,如果 CPU 內(nèi)核可以在系列中最大的FPGA 中使用,這樣我們就不會影響總資源,那么 CPU 的存在對我們并沒有壞處,我們也許可以在未來的設(shè)計中使用它。
在某些情況下,如果團隊采用了原型驗證設(shè)計程序,甚至可能會選擇 SoC CPU,因為它在 FPGA 中具有非常接近的等效功能。我們對原型驗證設(shè)計程序的宣言載于第 9 章,誠然,這只是一個極端的例子。
原型設(shè)計工具:雖然硬 IP 模塊具有非常強大的功能,但合成工具不會自動推斷出這些模塊。不過,這些模塊可以通過內(nèi)核實例化來替代 SoC 模塊。
3.1.9.系統(tǒng)監(jiān)控
原型設(shè)計可以高速運行 FPGA 的很大一部分,因此功耗、發(fā)熱、電壓軌等可能會受到壓力,特別是當設(shè)計的性能未達到預期或受到錯誤的影響時。我們將在有關(guān)選擇或構(gòu)建 FPGA 平臺的章節(jié)中,對工作原型中的 FPGA 進行內(nèi)置監(jiān)控,對于避免錯誤操作造成損壞至關(guān)重要。
每個 Xilinx? Virtex-6 FPGA 都包含一個系統(tǒng)監(jiān)控電路,提供熱和電源狀態(tài)信息。傳感器輸出由 10 位 200k 采樣/秒模數(shù)轉(zhuǎn)換器 (ADC) 進行數(shù)字化處理。
該模數(shù)轉(zhuǎn)換器還可用于對多達 17 個外部模擬輸入通道進行數(shù)字化。系統(tǒng)監(jiān)控ADC 采用片內(nèi)基準電路。此外,片上溫度和電源監(jiān)控器的測量精度分別為±4°C 和 ±1%。
默認情況下,系統(tǒng)監(jiān)測器會持續(xù)對所有片上傳感器的輸出進行數(shù)字化處理。最新的測量結(jié)果以及最大和最小讀數(shù)存儲在專用寄存器中,可隨時通過 DRP 或 JTAG 接口進行訪問。報警限值可自動指示超溫事件和不可接受的電源變化。指定限值(例如:125°C)可用于啟動自動斷電。
系統(tǒng)監(jiān)視器無需在設(shè)計中明確實例化。一旦建立了適當?shù)碾娫催B接,就可以通過 JTAG 測試訪問端口 (TAP) 隨時訪問測量數(shù)據(jù),甚至在配置前或斷電期間也可以訪問。
我們將在第 5 章中了解如何在原型板上使用系統(tǒng)監(jiān)視器。
原型開發(fā)實用程序:該模塊主要是一個 "內(nèi)部管理 "監(jiān)控器,通常在實際設(shè)計之外,通常通過 JTAG 鏈讀取器件和系統(tǒng)的健康狀況。不過,它為在設(shè)計中加入 ADC 提供了一個獨特的機會,如果需要,可以通過內(nèi)核實例化加入。有關(guān)內(nèi)核實例化的更多詳情,請參閱第 10 章。
3.1.10.所有 FPGA 資源類型匯總
在繼續(xù)討論基于 FPGA 的原型開發(fā)工具和流程之前,讓我們先總結(jié)一下迄今為止我們強調(diào)過的不同 FPGA 資源及其對原型開發(fā)的作用。
表 3 總結(jié)了當今大多數(shù)大規(guī)模 FPGA 中的不同模塊。所有 FPGA 資源都是有用的,否則就不會出現(xiàn)這些資源,但它們面向的是在實際生產(chǎn)應用中使用FPGA 的廣泛用戶。
它們在 SoC 原型開發(fā)中的用處取決于 SoC 元素能否輕松映射到這些資源中,以及為此可能需要做出的妥協(xié)?,F(xiàn)在,讓我們仔細研究一下,在基于FPGA的原型驗證項目中,有哪些工具可以讓我們最大限度地利用這些FPGA資源。文章來源:http://www.zghlxwxcb.cn/news/detail-827607.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-827607.html
到了這里,關(guān)于【FPGA原型驗證】FPGA 技術(shù):芯片和工具-當今的 FPGA 器件技術(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!