【原創】閆若川FPGA輕鬆入門教程:初學者的迷惑,入門須要知道的

1、初學者常見問題

不少初學者說FPGA入門好麻煩,尤爲是原來一些寫過C代碼的同窗,以爲FPGA的代碼邏輯性太強,寫起來徹底不像C那樣靈活。算法

個人觀點:vim

一、FPGA其實入門是很是簡單的,你以爲複雜,估計是你被帶到糞坑裏面去了,本身沒跳出來。緩存

二、C語言有編譯器,會幫你把代碼邏輯給處理好。FPGA寫出來的是電路,是很底層的。若是你像寫C那樣寫FPGA,出發點就錯了,也不可能會寫好FPGA。網絡

三、FPGA經常使用的語言有VHDL和verilog,目前外邊百分之九十的公司都是在用verilog,建議你仍是用verilog吧。編輯器

四、有同窗問,老師,我須要有什麼基礎才能學FPGA嗎?好比模擬電路和數字電路。 我認爲:模擬電路講的東西其實挺複雜的,咱們只須要一些電路的基礎就能夠了,和模擬電路沒直接的關係,好比:一個芯片的供電電壓,芯片操做的電平。二極管的導通和關斷。 數字電路,須要知道與 或 非 是什麼意思、D觸發器的概念就好了,其餘的,我認爲不必去深究,和FPGA學習沒直接的關係。工具

五、FPGA最重要的概念是什麼?我認爲是時鐘,FPGA內幾乎全部的信號都是跟着時鐘走的。約束文件定義的,也主要是時鐘。學習

六、有沒有推薦的書。目前我沒有什麼書能夠推薦的,不少學生研究verilog的語法,買本FPGA的書在那裏看,我認爲這種學習方法很是愚蠢。高校的書多半是沒有使用過FPGA的叫獸在那裏瞎寫的, 不少連可綜合不可綜合都跟你說不清楚,把你帶到坑裏面,直接淹死你。還有一些爲了利益騙人的教授,哎,太複雜了。 其實FPGA的語法很是簡單,可綜合的很是少,也就是實際你使用的很是少,少的可憐,多半都是不可綜合的。有同窗會問,不可綜合的語法有毛用,好問題,不可綜合的語法是仿真用的。modelsim是最經常使用的一個仿真工具了。還有vcs等。 大數據

七、入門須要學哪些軟件,其實先學3種吧。一、ALTERA的Quartus II,二、XILINX的ISE,三、modelsim。(xilinx的vivado也很重要,先別接觸了,不適合初學者,尤爲是ZYNQ系列,是ARM和FPGA的結合,不少實驗須要ARM的配合) verilog的代碼編輯器經常使用的是notepad++和UE,也有用vim的。我建議你用Notepad++吧,免費的,百度搜索下,直接就安裝好了。和quartus II、ISE、vivado關聯起來很是簡單。後續會介紹。spa

再次強調:modelsim是很是重要的,必須熟練應用,熟練寫tb文件。接口

八、FPGA 內最重要的IP有哪些? 這個問題比較朦朧,分應用吧! FPGA用的最多的是PLL、FIFO,基本我寫的每一個項目都在使用。作算法常常用到加減乘除的IPCORE,固然還有用FFT的複雜的邏輯,不過FFT比較麻煩,作出來的消耗資源都比較多。外部接口比較重要的是DDR2,進行大數據存儲的時候是必須使用的。

九、給初學者30個例子

本博客會連載30個入門的例子。我儘可能堅持到最後一刻,但願你們爲我加油!

 

2、聊聊以前的經歷吧

 

FPGA程序寫的過久了,08年畢業就開始寫,身邊的同事換了一波一波又一波,徒弟收了一個一個又一個,軟件更新了一代一代又一代。手上經歷過的項目也數不清了。什麼E一、T一、百兆千兆以太網、USB2.0、USB3.0、DDR二、DDR三、CAN、CCD、CMOS、PCIE、ZYNQ。還有簡單的i2c、spi、串口、ADC、DAC音頻等等, 以前作圖像處理的時候,通常FPGA的容量都比較大,有一些算法會集成在裏面,尤爲是CCD的圖像.採集時序很是複雜(呵呵,CCD的時序可好玩了)。經常使用的就是緩存行。CMOS的圖像採集時序就比較簡單了。 後來作其餘行業了,控制類的比較多,ADC採集常常用到,通常都是純代碼寫出來的。

  

3、想要提升須要作的

我的認爲:

一、知道本身寫出來的程序,佔用資源的評估,是否能綜合出來。

二、如何知道本身的程序能跑多高的頻率。

三、DDR2緩存,必定要會額,這個是加分項,不少項目都是須要的。至少是常常碰到的。

四、會對算法進行分解,評估是否能在FPGA裏面進行處理,PFGA可否寫出來高效的算法。

五、能跳過去一些坑,好比,複雜的SPI,通常是用C寫更好一些,FPGA作複雜的圖像顯示是不擅長的,可是顯示個簡單的圖標仍是能夠的,呵呵。

六、NIOS II和MICROBLAZE 其實用的不太多,什麼狀況下必須用呢? 呵呵,確定是邏輯很差寫的時候呀,好比,複雜的軟件協議,網絡協議,你用verilog寫一個試試,累死你。可是用C是分分鐘的事情,畢竟C是上層的語言嘛!!

相關文章
相關標籤/搜索