畢業後,從一個嵌入式硬件狗轉做FPGA工程師,從中兜兜轉轉繞了不少彎路,爲了給後人避坑,所以今天開始寫有關FPGA從入門到精通的教程吧,這也算是給我國集成電路的發展做出微薄的貢獻吧。
本門課程主要是針對有一定數電基礎的人看的。所以不會不像其他教程那樣,上來就跟你講verilog,跑馬燈,按鍵,計數器等等。因爲這麼學,最後只會越來越讓自己感覺所做的事情和個程序猿無差,與我的初心不符。所以我會更加偏向於從硬件設計的角度向讀者加以講解FPGA,這樣纔會在FPGA這條道路上越走越遠,越吃越精。
本門課程主要分爲三部分:
1.從FPGA的器件內部結構出發(這裏以XILINX爲主,其實無論是XILINX ,ALTERA,LATTICE,國產 。它們內部架構以及開發軟件,其實都大同小異,一通則百通),講解硬件描述語言是如何與內部單元和連線一一對應的。一般而言,FPGA內部(圖1 XILINX A7系列的 Feature Summary)主要包含以下幾大件。從實際出發,器件有啥我講啥
(1)不講Logic Cells 因爲Logic Cells是由 Slices組成的 ,Slices 數 * 6.4 =Logic Cells。
(2)CLB(主要包括Slices ,DRAM)
(3)DSP48E1
(4)BRAM
(5)CMTs(時鐘管理單元,包括MMCM和PLL)
(6)BANK 與 用戶IO ,專用IO的關係
(7)XADC
(8)GTP(高速串行收發器)
(9)PCIE
2.講解FPGA常用的IP 以及高速接口的應用,以及介紹在官方IP無法滿足設計要求的前提下,如何根據官方IP的架構設計屬於自己的IP 。舉個栗子:官方的圖像傳感器相關的MIPI EXAMPLE的IP是最高只支持4通道的,然而實際應用中有可能用到8通道。我們不可能從零開始設計(這樣做會很耗時間,並且做很多枯燥無味的無用功),但在已有的基礎加以改進是一個很不錯的選擇。
3.講解FPGA相關的約束,這裏會涉及到你們經常遇到的時序約束,以及佈局約束等等。說到時序約束我不得不吐槽,一堆博文都是通過幾張圖在講這個建立時間,保持時間是什麼,然後告訴讀者這個兩個東東應該怎麼算。實際上,從工程上來說,這個真的沒啥屁用。因爲計算的結果EDA軟件早就幫你算好了,你需要做的是根據已有的計算結果,在時序餘量不足的情況下對路徑進行優化,在時序餘量過剩的時候考慮相應的資源、功耗優化。
這是博主第一次系統的寫博客,難免會有錯漏的地方,如果有什麼疑問或者建議,歡迎大家在下方留言。最後希望大家通過不斷的學習,努力後能有所提升。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
參考文檔:
XILINX DS180 (7 Series FPGAs Data Sheet: Overview)