想快速入門FPGA最好的辦法是
FPGA編程語言
學(xué)習(xí)FPGA,首先要學(xué)習(xí)其編程語言——硬件描述語言,目前比較流行的編程語言有Verilog和VHDL,VHDL是80年代美國國防部開發(fā)的語言,語法運(yùn)用比較嚴(yán)謹(jǐn),而Verilog是民間的一位工程師1983年開發(fā)出來的,1992年才開始納入電氣電子工程學(xué)會標(biāo)準(zhǔn),Verilog語法相對自由一些。可根據(jù)個人喜愛選擇,本人更喜歡使用Verilog編程,Verilog跟C語言相近,比較通俗易懂。
學(xué)習(xí)編程語言時,一定要注意特別容易出錯的地方,下面以Verilog為例:
(1)比如“<=”符號,在C語言當(dāng)中屬于“小于等于”比較符號,但是在Verilog語言中,“<=”可以是小于等于判斷符號,也可以是賦值符號。比如if(i<=10)這屬于判斷語句,跟C語言一樣,q<=8'b10100101;//這屬于賦值語句,將8位二進(jìn)制的數(shù)賦值給q。
(2)賦值語句“=”和“<=”的區(qū)別,“=”是阻塞賦值,也就是按順序往下執(zhí)行,而<=”是非阻塞賦值,所有語句并行執(zhí)行。比如初始值a=1;b=2;執(zhí)行b=a;c=b;之后c=1;執(zhí)行b<=a;c<=b;之后c=2。兩者的結(jié)果完全不同。
(3)注意wire和reg類型的區(qū)別,wire型表示硬線的連接,reg屬于寄存器類型,在alway模塊中定義變量要使用reg型;同一個變量不要在多個alway模塊中賦值;begin和end相當(dāng)于c語言的{},一定要成對出現(xiàn)。
項(xiàng)目實(shí)踐
選擇開發(fā)板時,最好找比較正規(guī)的,外圍電路模塊功能比較全,編程例子齊全,附帶詳細(xì)的教程說明,最好有相應(yīng)的視頻教程,這些資料對新手會有很大的幫助。
項(xiàng)目編程練習(xí)時,由易到難,循序漸進(jìn),先從最簡單的點(diǎn)亮LED指示燈開始學(xué)習(xí),掌握整個FPGA的編程流程,學(xué)會自己編程創(chuàng)建模塊、引腳配置、時序仿真等。可練習(xí)的項(xiàng)目很多,比如流水燈、按鍵/鍵盤、蜂鳴器、數(shù)碼管、攝像頭、USB通訊、VGA接口等。掌握FPGA的編程流程后,后續(xù)需要靠更多的實(shí)踐項(xiàng)目積累經(jīng)驗(yàn)。學(xué)習(xí)FPGA要有良好的數(shù)電基礎(chǔ),因?yàn)镕PGA也屬于數(shù)電的一部分,涉及到很多時序邏輯,對一些基本的邏輯門電路要了如指掌,掌握一些常用的觸發(fā)器,比如RS觸發(fā)器、D觸發(fā)器、T觸發(fā)器,以及一些分頻器等,F(xiàn)PGA編程設(shè)計時,經(jīng)常會用到這些基本的數(shù)字電路。