驚人的差異:FPGA設計的是電路,單片機設計的是程序
///插播一條:我自己在今年年初錄製了一套還比較系統的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以哦~點我頭像黑色字體加我地球呺也能領取哦。最近比較閒,帶做畢設,帶學生參加省級或以上比賽///
FPGA(Field-Programmable Gate Array,現場可編程門陣列),正如其名,FPGA內部有大量的可編程邏輯功能塊,使用verilog HDL(硬體描述語言)實現設計。
玩過單片機的小夥伴剛接觸FPGA可能會有點困惑,其實FPGA與單片機最大的區別就在於:FPGA設計的是電路,單片機設計的是程序。單片機只有一個CPU在工作時鐘的驅動下順序的執行程序(取指、解碼、執行),所以工作速度較慢,而FPGA設計出來的是整個電路邏輯系統,根本不需要單片機這麼複雜,所以FPGA的工作速度自然很快,在兩者各有各的優勢下,單片機主要用於進行相關控制,FPGA多用於信號處理相關。
典型的FPGA原理和結構如下圖(註:以Cyclone IV E FPGA晶片為例),主要包括三類基本資源:
·可編程邏輯功能塊(Altera-LE(Logic Element) / Xlinx-Slice)
是實現用戶功能的基本單元,多個邏輯功能塊通常規則地排成一個陣列結構,分布於整個晶片;
·可編程內部互連資源
包括各種長度的連線線段和一些可編程連接開關,它們將各個可編程邏輯塊或輸入/輸出塊連接起來,構成特定功能的電路。用戶可以通過編程決定每個單元的功能以及它們的互連關係,從而實現所需的邏輯功能。
·可編程輸入/輸出(I/O)塊
完成晶片內部邏輯與外部管腳之間的接口,圍繞在邏輯單元陣列四周;
FPGA從簡單的邏輯粘合,發展到現在的可編程片上系統,FPGA廠家也在基本的FPGA架構上加入了一些擴展資源,比如時鐘管理單元(PLL、DLL)、嵌入式存儲器單元和硬體乘法器單元,DSP單元一些高端器件還加入了高速收發器、甚至嵌入式硬核處理器,讓FPGA的應用領域更廣闊,Cyclone IV E器件加入的擴展資源有:
·PLL鎖相環
模擬電路,將輸入的周期信號進行分頻和倍頻,或改變相位,輸出一個或多個穩定的時鐘信號;
·M9K存儲器
嵌入式塊RAM,容量大小9Kbit,這些存儲器可以被配置成單埠、簡單雙埠、真雙端口RAM、FIFO緩衝器、ROM
·18*18硬體乘法器
快速進行運算
FPGA中除了三類基本資源和一些擴展資源外,由圖中可以看到,FPGA中資源分布也是很精緻的:
1、邏輯陣列和M9K存儲器交替分布,這樣做的優點是縮短數據的傳輸路徑,以獲得更優的時序性能;
2、IOEs和PLL單元分布在器件的四周,數據流一般從左側IO流入,經過處理、運算、存儲,通過右側IO流出,控制信號通過上下IO輸入輸出;有時候系統需要高質量時鐘(比如軟核所需工作時鐘)通常由PLL單元產生,而這些分布在四周的PLL可以最短時鐘源產生工作時鐘,另外,PLL屬於模擬電路,放在周圍更利於和生產;
下面具體了解下兩種主流FPGA的資源情況:
Altera Cyclone IV E系列FPGA常見硬體資源詳情列表:
Xilinx 7系列FPGA 硬體資源詳情: