 大神又(you)在談論fpga 給初學者建(jian)議(yi)
							時間(jian):2018-07-19      來源:未知
							大神又(you)在談論fpga 給初學者建(jian)議(yi)
							時間(jian):2018-07-19      來源:未知 
							一(yi)、初學者常見問(wen)題
很多初學者說FPGA入門好麻(ma)煩,尤(you)其是原來(lai)一(yi)些寫過C代碼的(de)同學,覺得(de)FPGA的(de)代碼邏輯性太強,寫起來(lai)完(wan)全不像C那樣靈活。
我的觀點:
1、FPGA其實(shi)入門是(shi)非常簡單的,你覺得復雜,估計是(shi)你被(bei)帶到糞坑里面去了(le),自己沒跳出(chu)來。
2、C語言有編譯器(qi),會幫(bang)你(ni)把代碼邏輯給處理(li)好。FPGA寫出來(lai)的是(shi)電路,是(shi)很底層的。如果你(ni)像寫C那(nei)樣寫FPGA,出發(fa)點就錯了(le),也(ye)不可能(neng)會寫好FPGA。
3、FPGA常用的語(yu)言有VHDL和verilog,目前外邊百(bai)分(fen)之九十的公司(si)都是在(zai)用verilog,建(jian)議你還是用verilog吧。
4、有同學(xue)(xue)問,老師(shi),我(wo)需要有什么基礎才能(neng)學(xue)(xue)FPGA嗎?比(bi)如模擬(ni)(ni)電路和(he)數字(zi)電路。 我(wo)認(ren)為:模擬(ni)(ni)電路講的(de)東西(xi)其實挺復雜的(de),我(wo)們只(zhi)需要一些電路的(de)基礎就(jiu)可以了,和(he)模擬(ni)(ni)電路沒直接的(de)關系,比(bi)如:一個芯片的(de)供電電壓(ya),芯片操作的(de)電平(ping)。二極管的(de)導通和(he)關斷。 數字(zi)電路,需要知道與 或 非 是什么意思、D觸發器(qi)的(de)概念就(jiu)行(xing)了,其他的(de),我(wo)認(ren)為沒必要去深究(jiu),和(he)FPGA學(xue)(xue)習沒直接的(de)關系。
5、FPGA最重要的概念是什(shen)么?我認為是時(shi)鐘,FPGA所有的信號都是跟著時(shi)鐘走的。
6、有沒(mei)(mei)有推(tui)薦的(de)(de)書。目前我(wo)沒(mei)(mei)有什(shen)么書可(ke)以推(tui)薦的(de)(de),很多(duo)(duo)學生研究verilog的(de)(de)語法(fa),買本FPGA的(de)(de)書在那里(li)(li)看,我(wo)認(ren)為這種學習方(fang)法(fa)非常(chang)愚蠢(chun)。高校的(de)(de)書多(duo)(duo)半是(shi)沒(mei)(mei)有使用(yong)(yong)(yong)過(guo)FPGA的(de)(de)叫獸在那里(li)(li)瞎寫的(de)(de), 很多(duo)(duo)連(lian)可(ke)綜(zong)合(he)不可(ke)綜(zong)合(he)都(dou)跟(gen)你說(shuo)不清楚(chu),把(ba)你帶到坑(keng)里(li)(li)面,直接淹死(si)你。還有一(yi)(yi)些為了(le)利益騙人的(de)(de)教授(shou),哎,太(tai)復(fu)雜(za)了(le)。 其實FPGA的(de)(de)語法(fa)非常(chang)簡單(dan),可(ke)綜(zong)合(he)的(de)(de)非常(chang)少(shao),也就(jiu)是(shi)實際你使用(yong)(yong)(yong)的(de)(de)非常(chang)少(shao),少(shao)的(de)(de)可(ke)憐(lian),多(duo)(duo)半都(dou)是(shi)不可(ke)綜(zong)合(he)的(de)(de)。有同學會問,不可(ke)綜(zong)合(he)的(de)(de)語法(fa)有毛用(yong)(yong)(yong),好問題,不可(ke)綜(zong)合(he)的(de)(de)語法(fa)是(shi)仿真用(yong)(yong)(yong)的(de)(de)。modelsim是(shi)最常(chang)用(yong)(yong)(yong)的(de)(de)一(yi)(yi)個(ge)仿真工具了(le)。還有vcs等。
7、入門需(xu)要學(xue)哪些軟件,其實先(xian)學(xue)3種吧(ba)。1、ALTERA的(de)(de)(de)Quartus II,2、XILINX的(de)(de)(de)ISE,3、modelsim。(xilinx的(de)(de)(de)vivado也(ye)很重(zhong)要,先(xian)別接觸了,不適合(he)初(chu)學(xue)者(zhe),尤其是(shi)ZYNQ系列,是(shi)ARM和(he)FPGA的(de)(de)(de)結合(he),很多實驗需(xu)要ARM的(de)(de)(de)配合(he)) verilog的(de)(de)(de)代碼編輯器(qi)常用(yong)的(de)(de)(de)是(shi)notepad++和(he)UE,也(ye)有(you)用(yong)vim的(de)(de)(de)。我建議你用(yong)Notepad++吧(ba),免(mian)費的(de)(de)(de),百度搜索下,直接就安裝(zhuang)好了。和(he)quartus II、ISE、vivado關聯起來非常簡單(dan)。后續(xu)會介紹。
再次強(qiang)調:modelsim是非常重要的,必須(xu)熟練應用,熟練寫(xie)tb文件。
8、FPGA 內最重要(yao)(yao)的(de)(de)IP有哪(na)些? 這個問題(ti)比(bi)較(jiao)朦朧,分應用(yong)(yong)吧! FPGA用(yong)(yong)的(de)(de)最多的(de)(de)是PLL、FIFO,基本(ben)我寫的(de)(de)每(mei)個項目都(dou)在使用(yong)(yong)。做算法經常用(yong)(yong)到加減(jian)乘除的(de)(de)IPCORE,當然還有用(yong)(yong)FFT的(de)(de),不過(guo)FFT比(bi)較(jiao)復(fu)雜,做出來的(de)(de)消(xiao)耗(hao)資(zi)源(yuan)都(dou)比(bi)較(jiao)多。外部的(de)(de)比(bi)較(jiao)重要(yao)(yao)的(de)(de)是DDR2,進行大(da)數據(ju)存儲(chu)的(de)(de)時候使用(yong)(yong)。
9、給(gei)初學者(zhe)30個(ge)例子
本(ben)博客會(hui)連載(zai)30個入(ru)門(men)的例子(zi)。我(wo)(wo)盡量堅持到最后一刻,希望(wang)大家(jia)為我(wo)(wo)加油!
二(er)、聊(liao)(liao)聊(liao)(liao)之前的經歷吧(ba)
FPGA程序寫(xie)的(de)太久了(le)(le)(le),08年畢業就開始寫(xie),身(shen)邊(bian)的(de)同事(shi)換了(le)(le)(le)一波一波又(you)一波,徒弟收(shou)了(le)(le)(le)一個一個又(you)一個,軟件更新了(le)(le)(le)一代一代又(you)一代。手上經歷過的(de)項(xiang)目(mu)也數不清了(le)(le)(le)。什么E1、T1、百兆千兆以太網(wang)、USB2.0、USB3.0、DDR2、DDR3、CAN、CCD、CMOS、PCIE、ZYNQ。還(huan)有(you)簡單(dan)的(de)i2c、spi、串口(kou)、ADC、DAC音頻等(deng)等(deng), 之(zhi)前做圖像(xiang)處理的(de)時候,一般FPGA的(de)容量(liang)都比較大(da),有(you)一些算(suan)法會集成在里(li)面,尤其(qi)是CCD的(de)圖像(xiang).采集時序非常復雜(呵呵,CCD的(de)時序可好玩了(le)(le)(le))。常用(yong)的(de)就是緩存(cun)行(xing)。CMOS的(de)圖像(xiang)采集時序就比較簡單(dan)了(le)(le)(le)。 后來做其(qi)他行(xing)業了(le)(le)(le),控制類的(de)比較多,ADC采集經常用(yong)到,一般都是純代碼寫(xie)出來的(de)。
三、想要提高需要做(zuo)的
個人認為:
1、知道(dao)自己寫出(chu)來的程(cheng)序,占用(yong)資源的評估(gu),是(shi)否能綜合出(chu)來。
2、如(ru)何知道自己(ji)的程序(xu)能跑(pao)多高的頻(pin)率。
3、DDR2緩存,一定要(yao)會額(e),這個是(shi)加分項(xiang),很多項(xiang)目都是(shi)需要(yao)的(de)。至少是(shi)經常碰到的(de)。
4、會(hui)對算(suan)法進行分解,評估是否能(neng)在FPGA里面進行處(chu)理(li),PFGA能(neng)否寫出來高效的算(suan)法。
5、能跳(tiao)過(guo)去(qu)一(yi)些(xie)坑,比如,復雜的(de)(de)(de)SPI,一(yi)般是(shi)用C寫更好一(yi)些(xie),FPGA做復雜的(de)(de)(de)圖像顯示(shi)是(shi)不擅長的(de)(de)(de),但是(shi)顯示(shi)個簡單(dan)的(de)(de)(de)圖標(biao)還是(shi)可以的(de)(de)(de),呵(he)呵(he)。
6、NIOS II和MICROBLAZE 其實用的不太多,什么情況下(xia)必(bi)須用呢? 呵(he)呵(he),肯定是邏輯不好寫的時(shi)候呀,比如(ru),復雜的軟(ruan)件(jian)協(xie)議,網絡協(xie)議,你(ni)用verilog寫一個(ge)試(shi)試(shi),累死你(ni)。但是用C是分(fen)分(fen)鐘的事情,畢竟(jing)C是上(shang)層的語言(yan)嘛!!