FPGA各個部分

原文地址:     http://bbs.elecfans.com/infocenter.php?mod=space&uid=940085&do=blog&id=258224

    目前主流FPGA都採用了基於SRAM工藝的查找表結構,也有一些軍品和宇航級FPGA採用Flash或者熔絲與反熔絲工藝的查找表結構。通過燒寫文件改變查找表內容的方法來實現對FPGA的重複配置。

根據數字電路的基本知識可以知道,對於一個n輸入的邏輯運算,不管是與或非運算還是異或運算等等,最多隻可能存在2n種結果。所以如果事先將相應的結果存放於一個存貯單元,就相當於實現了與非門電路的功能。FPGA的原理也是如此,它通過燒寫文件去配置查找表的內容,從而在相同的電路情況下實現了不同的邏輯功能。

         查找表(Look-Up-Table)簡稱爲LUTLUT本質上就是一個RAM。目前FPGA中多使用4輸入的LUT,所以每一個LUT可以看成一個有4位地址線的的RAM。當用戶通過原理圖或HDL語言描述了一個邏輯電路以後,PLD/FPGA開發軟件會自動計算邏輯電路的所有可能結果,並把真值表(即結果)事先寫入RAM,這樣,每輸入一個信號進行邏輯運算就等於輸入一個地址進行查表,找出地址對應的內容,然後輸出即可。
         由於基於LUTFPGA具有很高的集成度,其器件密度從數萬門到數千萬門不等,可以完成極其複雜的時序與邏輯組合邏輯電路功能,所以適用於高速、高密度的高端數字邏輯電路設計領域。其組成部分主要有可編程輸入/輸出單元、基本可編程邏輯單元、內嵌SRAM、豐富的佈線資源、底層嵌入功能單元、內嵌專用單元等,主要設計和生產廠家有XilinxAlteraLatticeActelAtmelQuickLogic等公司,其中最大的是XilinxAlteraLattice三家。

        如前所述,FPGA是由存放在片內的RAM來設置其工作狀態的,因此工作時需要對片內RAM進行編程。用戶可根據不同的配置模式,採用不同的編程方式。FPGA有如下幾種配置模式:並行模式:並行PROMFlash配置FPGA; 主從模式:一片PROM配置多片FPGA; 串行模式:串行PROM配置FPGA;外設模式:將FPGA作爲微處理器的外設,由微處理器對其編程。目前,FPGA市場佔有率最高的兩大公司XilinxAltera生產的FPGA都是基於SRAM工藝的,需要在使用時外接一個片外存儲器以保存程序。上電時,FPGA將外部存儲器中的數據讀入片內RAM,完成配置後,進入工作狀態;掉電後FPGA恢復爲白片,內部邏輯消失。這樣FPGA不僅能反覆使用,還無需專門的FPGA編程器,只需通用的EPROMPROM編程器即可。ActelQuickLogic等公司還提供反熔絲技術的FPGA,只能下載一次,具有抗輻射、耐高低溫、低功耗和速度快等優點,在軍品和航空航天領域中應用較多,但這種FPGA不能重複擦寫,開發初期比較麻煩,費用也比較昂貴。LatticeISP技術的發明者,在小規模PLD應用上有一定的特色。早期的Xilinx產品一般不涉及軍品和宇航級市場,但目前已經有Q Pro-R等多款產品進入該類領域。

        目前主流的FPGA仍是基於查找表技術的,已經遠遠超出了先前版本的基本性能,並且整合了常用功能(如RAM、時鐘管理和DSP)的硬核(ASIC型)模塊。FPGA芯片主要由6部分完成,分別爲:可編程輸入輸出單元、基本可編程邏輯單元、嵌入塊式RAM、豐富的佈線資源、內嵌的底層功能單元和內嵌專用硬件模塊。
      
1. 可編程輸入輸出單元(IOB

        可編程輸入/輸出單元簡稱I/O單元,是芯片與外界電路的接口部分,完成不同電氣特性下對輸入/輸出信號的驅動與匹配要求。FPGA內的I/O按組分類,每組都能夠獨立地支持不同的I/O標準。通過軟件的靈活配置,可適配不同的電氣標準與I/O物理特性,可以調整驅動電流的大小,可以改變上、下拉電阻。目前,I/O口的頻率也越來越高,一些高端的FPGA通過DDR寄存器技術可以支持高達2Gbps的數據速率。 

        外部輸入信號可以通過IOB模塊的存儲單元輸入到FPGA的內部,也可以直接輸入FPGA 內部。當外部輸入信號經過IOB模塊的存儲單元輸入到FPGA內部時,其保持時間(Hold Time)的要求可以降低,通常默認爲0

        爲了便於管理和適應多種電器標準,FPGAIOB被劃分爲若干個組(bank),每個bank的接口標準由其接口電壓VCCO決定,一個bank只能有一種VCCO,但不同bankVCCO可以不同。只有相同電氣標準的端口才能連接在一起,VCCO電壓相同是接口標準的基本條件。


2.基本可編程邏輯單元
        基本可編輯邏輯單元是可編程邏輯的主題,可以根據設計靈活地改變其內部連接與配置,完成不同的邏輯功能。fpga一般基於SRAM工藝的,其基本可編輯邏輯單元幾乎都是由查找表(LUT,Look Up Table)和寄存器(Reigister)組成的。FPGA內部查找表一般爲4輸入(注:Altera Stratix II的自適應邏輯模塊ALM結構比較特殊),查找表一般完成純組合邏輯功能。FPGA內部寄存器結構相當靈活,可以配置爲帶同步/異步復位或置位、時鐘使能的觸發器(FF,Flip Flop),也可以配置成爲鎖存器(Latch)。FPGA一般依賴寄存器完成同步時序邏輯設計,一般來說,比較經典的基本可編輯單元的配置是一個寄存器加一個查找表,但是不同廠商的寄存器和查找表的內部結構有一定的差異,而且寄存器和查找表的組合模式也不同。例如:Altera 可編程邏輯單元通常被稱爲LE(Logic Element,邏輯單元),有一個Register加一個LUT構成。Altera大多數FPGA10LE有機地組合起來,構成更大功能單元--邏輯陣列模塊(LAB,Logic Array Block),LAB中出了LE還包含LE間的進位鏈、LAB控制信號、局部互聯線資源、LUT級聯鏈、寄存器級聯鏈等連線與控制資源。Xilinx可編程邏輯單元叫Slice,它是由上下兩個部分構成,每個部分都由一個Register加一個LUT組成,被稱爲LCLogic Cell,邏輯單元),兩個LC之間有一些公用邏輯,可以完成LC之間的配合與級聯,Lattice的底層邏輯單元叫PFUProgrammalbe Function Unit可編程功能單元),它由8LUT8~9Register構成。當然這些可編程單元的配置結構隨着器件的發展也在不斷更新,最新的一些可編程邏輯器件常常根據設計需求推出一些新的LUTRegister的配置比率,並優化其內部的連接構造。

          學習底層配置單元的 LUTRtgister比率的一個重要意義在於器件選型和規模估算,很多器件手冊上用期間的 ASIC門級或等效的系統門級表示器件的規模。但是由於目前FPGA內部出了基本可編程邏輯單元外,還包含有豐富的嵌入式RAM,PLLDLL,專用Hard IP Core(硬知識產權功能核)等。這些功能模塊也會等效出一定規模的系統門,所以用系統門權衡基本可編程邏輯單元的數量是不準確的,常常混淆設計者。比較簡單科學的方法是用器件的RegisterLUT的數量衡量(一般來說兩者比率爲1:1)例如:XilinxApartan-III系列的XC3S100015360LUT,而LatticeEC系列LEFC15E也有15360LUT,所以這兩款FPGA的可編程邏輯單元數量基本相當,屬於同一規模的產品。同樣道理,AlteraCyclone器件族的EP1C12LUT數量是12060個,就比前面提到的兩款FPGA規模略小。需要說明的是,器件選型是一個綜合性問題,需要將設計的需求、成本壓力、規模、速度等級、時鐘資源、I/O特性、封裝、專用功能模塊等諸多因素綜合考慮。

3. 嵌入式塊RAMBRAM

        目前大多數FPGA都有內嵌的塊RAMBlock RAM.FPGA內部嵌入可編程RAM模塊。大大地擴展了FPGA的應用範圍和使用靈活性。FPGA內嵌的塊RAM一般可以靈活配置爲單端口RAM(SPRAM.Single Pseudo RAM)、雙端口RAM(DPRAM,Double Ports RAM)、僞雙端口RAMPseudo DPRAM)、CAM(Content Addressable Memory).FIFO(First In First Out)等常用存儲結構。FPGA中其實沒有專用的ROM硬件資源,實現ROM的思路是對RAM賦予初值,並保持該初值。所謂CAM,即內容地址儲存器。CAM這種存儲器在其每個存儲單元都包含了一個內嵌的比較邏輯,寫入CAM的數據會和其內部存儲的每一個數據進行比較,並返回與端口數據相同的所有內部數據的地址。概括地講,RAM是一種根據地址讀、寫數據的存儲單元;而CAMRAM恰恰相反,它返回的是與端口數據相匹配的內部地址。CAM的應用也非常廣泛。比如在路由器中的地址交換表等。FIFO先進先出隊列式存儲結構。FPGA內部實現RAM.ROM.CAM.FIFO等存儲結構都可以基於嵌入式塊RAM單元,並根據需求自動生成相應的粘合邏輯(Glue Logic)以完成地址和片選等控制邏輯。

不同器件商或不同器件族的內嵌塊RAM的結構不同,Xilinx常見的塊RAM大小是4kbit18kbit兩種結構。Lattice常用的塊RAM大小是9kbitAltera的塊RAM最爲靈活,一些高端器件內部同時含有3種塊RAM結構,分別是M512RAM(512bit),M4KRAM(4kbit),M-RAM(512kbit)。

         需要補充的是,出了塊RAM,XilinxLatticeFPGA還可以靈活地將LUT配置成RAM.ROM.FIFO等存儲結構,這種技術被稱爲分佈式RAM(Distributed RAM)。根據設計需求,塊RAM的數量和配置方式也是器件選型的一個重要標準
4. 豐富的佈線資源

       佈線資源連通FPGA內部的所有單元,而連線的長度和工藝決定着信號在連線上的驅動能力和傳輸速度。FPGA芯片內部有着豐富的佈線資源,根據工藝、長度、寬度和分佈位置的不同而劃分爲4類不同的類別。第一類是全局佈線資源,用於芯片內部全局時鐘和全局復位/置位的佈線;第二類是長線資源,用以完成芯片Bank間的高速信號和第二全局時鐘信號的佈線;第三類是短線資源,用於完成基本邏輯單元之間的邏輯互連和佈線;第四類是分佈式的佈線資源,用於專有時鐘、復位等控制信號線。

       在實際中設計者不需要直接選擇佈線資源,佈局佈線器可自動地根據輸入邏輯網表的拓撲結構和約束條件選擇佈線資源來連通各個模塊單元。從本質上講,佈線資源的使用方法和設計的結果有密切、直接的關係。
5. 底層內嵌功能單元

      內嵌功能模塊主要指DLLDelay Locked Loop)、PLLPhase Locked Loop)、DSPCPU等軟處理核(Soft Core)。現在越來越豐富的內嵌功能單元,使得單片FPGA成爲了系統級的設計工具,使其具備了軟硬件聯合設計的能力,逐步向SOC平臺過渡。
        DLLPLL具有類似的功能,可以完成時鐘高精度、低抖動的倍頻和分頻,以及佔空比調整和移相等功能。Xilinx公司生產的芯片上集成了DLLAltera公司的芯片集成了PLLLattice公司的新型芯片上同時集成了PLLDLLPLL DLL可以通過IP核生成的工具方便地進行管理和配置。

6. 內嵌專用硬核
        內嵌專用硬核是相對底層嵌入的軟核而言的,指FPGA處理能力強大的硬核(Hard Core),等效於ASIC電路。爲了提高FPGA性能,芯片生產商在芯片內部集成了一些專用的硬核。例如:爲了提高FPGA的乘法速度,主流的FPGA中都集成了專用乘法器;爲了適用通信總線與接口標準,很多高端的FPGA內部都集成了串並收發器(SERDES),可以達到數十Gbps的收發速度。
         Xilinx公司的高端產品不僅集成了Power PC系列CPU,還內嵌了DSP Core模塊,其相應的系統級設計工具是EDKPlatform Studio,並依此提出了片上系統(System on Chip)的概念。通過PowerPCMiroblazePicoblaze等平臺,能夠開發標準的DSP處理器及其相關應用,達到SOC的開發目的。 1.2.3 軟核、硬核以及固核的概念 IPIntelligent Property)核是具有知識產權核的集成電路芯核總稱,是經過反覆驗證過的、具有特定功能的宏模塊,與芯片製造工藝無關,可以移植到不同的半導體工藝中。到了SOC階段,IP核設計已成爲ASIC電路設計公司和FPGA提供商的重要任務,也是其實力體現。對於FPGA開發軟件,其提供的IP核越豐富,用戶的設計就越方便,其市場佔用率就越高。目前,IP核已經變成系統設計的基本單元,並作爲獨立設計成果被交換、轉讓和銷售。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章