什麼是FPGA
Filed programmable gate array 現場可程式設計門朕列
可程式設計邏輯整列 * PLD *(Programmable Logic Device)
- PLD在上世紀70年代由專用積體電路(ASIC)發展而來,可由軟體程式設計的方式進行反覆的擦寫
PLD發展歷程簡史
- 上世紀70年代初期出現了PROM EPROM 和EEPROM
- 在70年代中期又出現了GAL 和PAL
- 在80年代後期就產生了CPLD
- 90年代的末期又產生了SoPC和SoC(system on chip)技術
CPLD( complex PLD)和FPGA的區別:
- CPLD 採用連續式的佈線結構,較適合用來實現各種運算和組合邏輯
- FPGA 採用分段式佈線結構,適用於實現循序邏輯,暫存器資源豐富
FPGA和ASIC的區別:
- ASIC是積體電路定製晶片,邏輯功能不可更改,一次流片成本很高。
- FPGA是半定製晶片 可以作為ASIC的試樣片 FPGA內部有大量的RAM程式來設定工作狀態,可以反覆使用。
FPGA的內部結構:
- 可配置邏輯塊 CLB configurable logic block 邏輯功能單元 每一個CLB包含4個Slice 採用開關矩陣方式 每個Slice內(2個暫存器輸出和2個非暫存器輸出-LUT查詢表 獨立的進位單元)
- 內部連線 interconnect 內部資源的可重配置、連結
- 輸入輸出模組 IOB input output Block 管理輸入輸出 包含輸入通路(2個DDR暫存器)和輸出通路(2個DDR暫存器和2個三態使能DDR暫存器)時鐘和置位復位
- 邏輯單元陣列
- 數字時鐘管理單元 DCM:每個期間最多12個DCM 位於晶片頂部或者底部。由時鐘輸入引腳驅動 可以分頻倍頻等等
- 塊狀RAM :每塊大小位18kb 雙埠RAM 支援同步讀寫、非同步讀寫、初始化、對輸出鎖存器同步復位、支援奇偶校驗位
- 嵌入式的IP核: 軟核、固核、硬核
FPGA和微控制器的區別
+結構上的區別
微控制器是一種微處理器,類似於電腦CPU的,它一般採用的是哈佛匯流排結構,或者馮諾依曼結構,對微控制器的程式設計很大程度上要考慮到它的結構和各個暫存器的作用,微控制器用途比較廣,一般用在控制流水線上。
FPGA 它的結構是查詢表結構,其程式不用去太考慮晶片的結構,要注意的是時序上問題,它的結構比較複雜,功能也很強大,一般應用在通訊領域等比較高階的場合。
微控制器是一個微控制器,透過載入模組軟體來實現某種功能,微控制器是成型的晶片;
FPGA是用來設計晶片的晶片。
- 速度上的區別
FPGA由於是硬體電路,執行速度直接取決於晶振速度,系統穩定,特別適合高速介面電路。微控制器由於是單執行緒,哪怕是常用的M3系列流水線也是單執行緒執行,程式語句需要等待微控制器週期才能執行。
- 本質上的區別
FPGA和微控制器的區別,本質上是軟體和硬體的區別,FPGA更偏向於硬體電路,而微控制器更偏於軟體。
微控制器設計屬軟體範疇;它的硬體(微控制器晶片)是固定的,透過軟體程式語言描述軟體指令在硬體晶片上的執行;
FPGA設計屬硬體範疇,它的硬體(FPGA)是可程式設計的,是一個透過硬體描述語言在FPGA晶片上自定義積體電路的過程;
- 應用上的區別
應用上,差別更大。MCU(Microcontroller Unit,微控制單元)最終所有的指令在一個MCU中都是順序執行的,而FPGA由於是邏輯單元,很容易做到並行執行。
MCU:微控制單元(Microcontroller Unit;MCU) ,又稱單片微型計算機(Single Chip Microcomputer )或者微控制器,是把中央處理器(Central Process Unit;CPU)的頻率與規格做適當縮減,並將記憶體(memory)、計數器(Timer)、USB、A/D轉換、> UART、PLC、DMA等周邊介面,甚至LCD驅動電路都整合在單一晶片上,形成晶片級的計算機,為不同的應用場合做不同組合控制。
- 入門的難易程度
微控制器比FPGA簡單些,價格也低一些。要做PID演算法控制的用微控制器可以,STM32F4系列已經到300M+跑PID完全足夠,如果是跑嵌入式的話可以上ARM晶片。涉及通訊、影像等高速部分可以採用單FPGA模組。