0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何去學(xué)習(xí)FPGA?菜鳥必看

FPGA之家 ? 來(lái)源:FPGA之家 ? 作者:FPGA之家 ? 2021-05-08 09:12 ? 次閱讀

FPGA學(xué)習(xí)重點(diǎn)

1. 看代碼,建模型

只有在腦海中建立了一個(gè)個(gè)邏輯模型,理解FPGA內(nèi)部邏輯結(jié)構(gòu)實(shí)現(xiàn)的基礎(chǔ),才能明白為什么寫Verilog和寫C整體思路是不一樣的,才能理解順序執(zhí)行語(yǔ)言和并行執(zhí)行語(yǔ)言的設(shè)計(jì)方法上的差異。在看到一段簡(jiǎn)單程序的時(shí)候應(yīng)該想到是什么樣的功能電路。

2. 用數(shù)學(xué)思維來(lái)簡(jiǎn)化設(shè)計(jì)邏輯

學(xué)習(xí)FPGA不僅邏輯思維很重要,好的數(shù)學(xué)思維也能讓你的設(shè)計(jì)化繁為簡(jiǎn),所以啊,那些看見高數(shù)就頭疼的童鞋需要重視一下這門課哦。舉個(gè)簡(jiǎn)單的例子,比如有兩個(gè)32bit的數(shù)據(jù)X[31:0]與Y[31:0]相乘。當(dāng)然,無(wú)論Altera還是Xilinx都有現(xiàn)成的乘法器IP核可以調(diào)用,這也是最簡(jiǎn)單的方法,但是兩個(gè)32bit的乘法器將耗費(fèi)大量的資源。那么有沒有節(jié)省資源,又不太復(fù)雜的方式來(lái)實(shí)現(xiàn)呢?我們可以稍做修改:

將X[31:0]拆成兩部分X1[15:0]和X2[15:0],令X1[15:0]=X[31:16],X2[15:0]=X[15:0],則X1左移16位后與X2相加可以得到X;同樣將Y[31:0]拆成兩部分Y1[15:0]和Y2[15:0],令 Y1[15:0]=Y[31:16],Y2[15:0]=Y[15:0],則Y1左移16位后與Y2相加可以得到Y(jié),則X與Y的相乘可以轉(zhuǎn)化為X1和X2 分別與Y1和Y2相乘,這樣一個(gè)32bit*32bit的乘法運(yùn)算轉(zhuǎn)換成了四個(gè)16bit*16bit的乘法運(yùn)算和三個(gè)32bit的加法運(yùn)算。轉(zhuǎn)換后的占用資源將會(huì)減少很多,有興趣的童鞋,不妨綜合一下看看,看看兩者差多少。

3. 時(shí)鐘與觸發(fā)器的關(guān)系

“時(shí)鐘是時(shí)序電路的控制者”這句話太經(jīng)典了,可以說(shuō)是FPGA設(shè)計(jì)的圣言。FPGA的設(shè)計(jì)主要是以時(shí)序電路為主,因?yàn)榻M合邏輯電路再怎么復(fù)雜也變不出太多花樣,理解起來(lái)也不沒太多困難。但是時(shí)序電路就不同了,它的所有動(dòng)作都是在時(shí)鐘一拍一拍的節(jié)奏下轉(zhuǎn)變觸發(fā),可以說(shuō)時(shí)鐘就是整個(gè)電路的控制者,控制不好,電路功能就會(huì)混亂。

打個(gè)比方,時(shí)鐘就相當(dāng)于人體的心臟,它每一次的跳動(dòng)就是觸發(fā)一個(gè) CLK,向身體的各個(gè)器官供血,維持著機(jī)體的正常運(yùn)作,每一個(gè)器官體統(tǒng)正常工作少不了組織細(xì)胞的構(gòu)成,那么觸發(fā)器就可以比作基本單元組織細(xì)胞。

時(shí)序邏輯電路的時(shí)鐘是控制時(shí)序邏輯電路狀態(tài)轉(zhuǎn)換的“發(fā)動(dòng)機(jī)”,沒有它時(shí)序邏輯電路就不能正常工作。因?yàn)闀r(shí)序邏輯電路主要是利用觸發(fā)器存儲(chǔ)電路的狀態(tài),而觸發(fā)器狀態(tài)變換需要時(shí)鐘的上升或下降沿,由此可見時(shí)鐘在時(shí)序電路中的核心作用。

最后簡(jiǎn)單說(shuō)一下體會(huì)吧,歸結(jié)起來(lái)就是多實(shí)踐、多思考、多問(wèn)。實(shí)踐出真知,看100遍別人的方案不如自己去實(shí)踐一下。實(shí)踐的動(dòng)力一方面來(lái)自興趣,一方面來(lái)自壓力。有需求會(huì)容易形成壓力,也就是說(shuō)最好能在實(shí)際的項(xiàng)目開發(fā)中鍛煉,而不是為了學(xué)習(xí)而學(xué)習(xí)。

為什么你會(huì)覺得FPGA難學(xué)?

1. 不熟悉FPGA的內(nèi)部結(jié)構(gòu)

FPGA為什么是可以編程的?恐怕很多初學(xué)者不知道,他們也不想知道。因?yàn)樗麄冇X得這是無(wú)關(guān)緊要的。他們潛意識(shí)的認(rèn)為可編程嘛,肯定就是像寫軟件一樣啦。軟件編程的思想根深蒂固,看到Verilog或者VHDL就像看到C語(yǔ)言或者其它軟件編程語(yǔ)言一樣。一條條的讀,一條條的分析。

拒絕去了解為什么FPGA是可以編程的,不去了解FPGA的內(nèi)部結(jié)構(gòu),要想學(xué)會(huì)FPGA 恐怕是天方夜譚。那么FPGA為什么是可以“編程”的呢?首先來(lái)了解一下什么叫“程”。其實(shí) “程”只不過(guò)是一堆具有一定含義的01編碼而已。

編程,其實(shí)就是編寫這些01編碼。只不過(guò)我們現(xiàn)在有了很多開發(fā)工具運(yùn)算或者是其它操作。所以軟件是一條一條的,通常都不是直接編寫這些01編碼,而是以高級(jí)語(yǔ)言的形式來(lái)編寫,最后由開發(fā)工具轉(zhuǎn)換為這種01編碼而已。對(duì)于軟件編程而言,處理器會(huì)有一個(gè)專門的譯碼電路逐條把這些01編碼翻譯為各種控制信號(hào),然后控制其內(nèi)部的電路完成一個(gè)個(gè)的讀,因?yàn)檐浖牟僮魇且徊揭徊酵瓿傻摹?/p>

而FPGA的可編程,本質(zhì)也是依靠這些01編碼實(shí)現(xiàn)其功能的改變,但不同的是FPGA之所以可以完成不同的功能,不是依靠像軟件那樣將01編碼翻譯出來(lái)再去控制一個(gè)運(yùn)算電路,F(xiàn)PGA里面沒有這些東西。

FPGA內(nèi)部主要三塊:可編程的邏輯單元、可編程的連線和可編程的IO模塊。

可編程的邏輯單元

其基本結(jié)構(gòu)某種存儲(chǔ)器(SRAM、 FLASH等)制成的4輸入或6輸入1輸出的“真值表”加上一個(gè)D觸發(fā)器構(gòu)成。任何一個(gè)4輸入1輸出組合邏輯電路,都有一張對(duì)應(yīng)的“真值表”,同樣的如果用這么一個(gè)存儲(chǔ)器制成的4輸入1輸出的“真值表”,只需要修改其“真值表”內(nèi)部值就可以等效出任意4輸入1輸出的組合邏輯,這些“真值表”內(nèi)部值就是那些01編碼。

如果要實(shí)現(xiàn)時(shí)序邏輯電路怎么辦?任何的時(shí)序邏輯都可以轉(zhuǎn)換為組合邏輯+D觸發(fā)器來(lái)完成。但這畢竟只實(shí)現(xiàn)了4輸入1輸出的邏輯電路而已,通常邏輯電路的規(guī)模那是相當(dāng)?shù)拇蟆?/p>

可編程連線

那怎么辦呢?這個(gè)時(shí)候就需要用到可編程連線了。在這些連線上有很多用存儲(chǔ)器控制的鏈接點(diǎn),通過(guò)改寫對(duì)應(yīng)存儲(chǔ)器的值就可以確定哪些線是連上的而哪些線是斷開的。這就可以把很多可編程邏輯單元組合起來(lái)形成大型的邏輯電路。

可編程的IO

任何芯片都必然有輸入引腳和輸出引腳。有可編程的IO可以任意的定義某個(gè)非專用引腳(FPGA中有專門的非用戶可使用的測(cè)試、下載用引腳)為輸入還是輸出,還可以對(duì)IO的電平標(biāo)準(zhǔn)進(jìn)行設(shè)置。

總歸一句話,F(xiàn)PGA之所以可編程是因?yàn)榭梢酝ㄟ^(guò)特殊的01代碼制作成一張張 “真值表”,并將這些“真值表”組合起來(lái)以實(shí)現(xiàn)大規(guī)模的邏輯功能。

不了解FPGA內(nèi)部結(jié)構(gòu),就不能明白最終代碼如何變到FPGA里面去的,也就無(wú)法深入的了解如何能夠充分運(yùn)用FPGA?,F(xiàn)在的FPGA,不單單是有前面講的那三塊,還有很多專用的硬件功能單元,如何利用好這些單元實(shí)現(xiàn)復(fù)雜的邏輯電路設(shè)計(jì),是從菜鳥邁向高手的路上必須要克服的障礙。而這一切,還是必須先從了解FPGA內(nèi)部邏輯及其工作原理做起。

2. 錯(cuò)誤理解HDL語(yǔ)言,怎么看都看不出硬件結(jié)構(gòu)

HDL語(yǔ)言的英語(yǔ)全稱是:Hardware Deion Language,注意這個(gè)單詞Deion,而不是Design。老外為什么要用Deion這個(gè)詞而不是Design呢?因?yàn)镠DL確實(shí)不是用用來(lái)設(shè)計(jì)硬件的,而僅僅是用來(lái)描述硬件的。

描述這個(gè)詞精確地反映了HDL語(yǔ)言的本質(zhì),HDL語(yǔ)言不過(guò)是已知硬件電路的文本表現(xiàn)形式而已,只是將以后的電路用文本的形式描述出來(lái)而已。而在編寫語(yǔ)言之前,硬件電路應(yīng)該已經(jīng)被設(shè)計(jì)出來(lái)了。語(yǔ)言只不過(guò)是將這種設(shè)計(jì)轉(zhuǎn)化為文字表達(dá)形式而已。

硬件設(shè)計(jì)也是有不同的抽象層次,每一個(gè)層次都需要設(shè)計(jì)。最高的抽象層次為算法級(jí)、然后依次是體系結(jié)構(gòu)級(jí)、寄存器傳輸級(jí)、門級(jí)、物理版圖級(jí)。

使用HDL的好處在于我們已經(jīng)設(shè)計(jì)好了一個(gè)寄存器傳輸級(jí)的電路,那么用HDL描述以后轉(zhuǎn)化為文本的形式,剩下的向更低層次的轉(zhuǎn)換就可以讓EDA工具去做了,這就大大的降低了工作量。這就是可綜合的概念,也就是說(shuō)在對(duì)這一抽象層次上硬件單元進(jìn)行描述可以被EDA工具理解并轉(zhuǎn)化為底層的門級(jí)電路或其他結(jié)構(gòu)的電路。

在FPGA設(shè)計(jì)中,就是在將這以抽象層級(jí)的意見描述成HDL語(yǔ)言,就可以通過(guò)FPGA開發(fā)軟件轉(zhuǎn)化為上一點(diǎn)中所述的FPGA內(nèi)部邏輯功能實(shí)現(xiàn)形式。HDL也可以描述更高的抽象層級(jí)如算法級(jí)或者是體系結(jié)構(gòu)級(jí),但目前受限于EDA軟件的發(fā)展,EDA軟件還無(wú)法理解這么高的抽象層次,所以HDL描述這樣抽象層級(jí)是無(wú)法被轉(zhuǎn)化為較低的抽象層級(jí)的,這也就是所謂的不可綜合。

所以在閱讀或編寫HDL語(yǔ)言,尤其是可綜合的HDL,不應(yīng)該看到的是語(yǔ)言本身,而是要看到語(yǔ)言背后所對(duì)應(yīng)的硬件電路結(jié)構(gòu)。

3. FPGA本身不算什么,一切皆在FPGA之外

FPGA是給誰(shuí)用的?很多學(xué)校是為給學(xué)微電子專業(yè)或者集成電路設(shè)計(jì)專業(yè)的學(xué)生用的,其實(shí)這不過(guò)是很多學(xué)校受資金限制,買不起專業(yè)的集成電路設(shè)計(jì)工具而用FPGA工具替代而已。其實(shí)FPGA是給設(shè)計(jì)電子系統(tǒng)的工程師使用的。這些工程師通常是使用已有的芯片搭配在一起完成一個(gè)電子設(shè)備,如基站、機(jī)頂盒、視頻監(jiān)控設(shè)備等。當(dāng)現(xiàn)有芯片無(wú)法滿足系統(tǒng)的需求時(shí),就需要用FPGA來(lái)快速的定義一個(gè)能用的芯片。

前面說(shuō)了,F(xiàn)PGA里面無(wú)法就是一些“真值表”、觸發(fā)器、各種連線以及一些硬件資源,電子系統(tǒng)工程師使用FPGA進(jìn)行設(shè)計(jì)時(shí)無(wú)非就是考慮如何將這些以后資源組合起來(lái)實(shí)現(xiàn)一定的邏輯功能而已,而不必像IC設(shè)計(jì)工程師那樣一直要關(guān)注到最后芯片是不是能夠被制造出來(lái)。

本質(zhì)上和利用現(xiàn)有芯片組合成不同的電子系統(tǒng)沒有區(qū)別,只是需要關(guān)注更底層的資源而已。要想把FPGA用起來(lái)還是簡(jiǎn)單的,因?yàn)闊o(wú)非就是那些資源,在理解了前面兩點(diǎn)再搞個(gè)實(shí)驗(yàn)板,跑跑實(shí)驗(yàn),做點(diǎn)簡(jiǎn)單的東西是可以的。而真正要把FPGA用好,那光懂點(diǎn)FPGA知識(shí)就遠(yuǎn)遠(yuǎn)不夠了。因?yàn)樽罱K要讓FPGA里面的資源如何組合,實(shí)現(xiàn)何種功能才能滿足系統(tǒng)的需要,那就需要懂得更多更廣泛的知識(shí)。

4. 數(shù)字邏輯知識(shí)是根本

無(wú)論是FPGA的哪個(gè)方向,都離不開數(shù)字邏輯知識(shí)的支撐。FPGA說(shuō)白了是一種實(shí)現(xiàn)數(shù)字邏輯的方式而已。如果連最基本的數(shù)字邏輯的知識(shí)都有問(wèn)題,學(xué)習(xí)FPGA的愿望只是空中樓閣而已。數(shù)字邏輯是任何電子電氣類專業(yè)的專業(yè)基礎(chǔ)知識(shí),也是必須要學(xué)好的一門課。

如果不能將數(shù)字邏輯知識(shí)爛熟于心,養(yǎng)成良好的設(shè)計(jì)習(xí)慣,學(xué)FPGA到最后仍然是霧里看花水中望月,始終是一場(chǎng)空的。以上四條只是我目前總結(jié)菜鳥們?cè)趯W(xué)習(xí)FPGA時(shí)所最容易跑偏的地方,F(xiàn)PGA的學(xué)習(xí)其實(shí)就像學(xué)習(xí)圍棋一樣,學(xué)會(huì)如何在棋盤上落子很容易,成為一位高手卻是難上加難。要真成為李昌鎬那樣的神一般的選手,除了靠刻苦專研,恐怕還確實(shí)得要一點(diǎn)天賦。

薦讀

1. 入門首先要掌握HDL(HDL=verilog+VHDL)

第一句話是:還沒學(xué)數(shù)電的先學(xué)數(shù)電。然后你可以選擇verilog或者VHDL,有C語(yǔ)言基礎(chǔ)的,建議選擇VHDL。因?yàn)関erilog太像C了,很容易混淆,最后你會(huì)發(fā)現(xiàn),你花了大量時(shí)間去區(qū)分這兩種語(yǔ)言,而不是在學(xué)習(xí)如何使用它。當(dāng)然,你思維能轉(zhuǎn)得過(guò)來(lái),也可以選verilog,畢竟在國(guó)內(nèi)verilog用得比較多。

接下來(lái),首先找本實(shí)例抄代碼。抄代碼的意義在于熟悉語(yǔ)法規(guī)則和編譯器(這里的編譯器是硅編譯器又叫綜合器,常用的編譯器有:Quartus、ISE、Vivado、Design Compiler 、Synopsys的VCS、iverilog、Lattice的Diamond、Microsemi/Actel的Libero、Synplify pro),然后再模仿著寫,最后不看書也能寫出來(lái)。編譯完代碼,就打開RTL圖,看一下綜合出來(lái)是什么樣的電路。

HDL是硬件描述語(yǔ)言,突出硬件這一特點(diǎn),所以要用數(shù)電的思維去思考HDL,而不是用C語(yǔ)言或者其它高級(jí)語(yǔ)言,如果不能理解這句話的,可以看《什么是硬件以及什么是軟件》。在這一階段,推薦的教材是《Verilog傳奇》、《Verilog HDL高級(jí)數(shù)字設(shè)計(jì)》或者是《用于邏輯綜合的VHDL》。不看書也能寫出個(gè)三段式狀態(tài)機(jī)就可以進(jìn)入下一階段了。

此外,你手上必須準(zhǔn)備Verilog或者VHDL的官方文檔,《verilog_IEEE官方標(biāo)準(zhǔn)手冊(cè)-2005_IEEE_P1364》、《IEEE Standard VHDL Language_2008》,以便遇到一些語(yǔ)法問(wèn)題的時(shí)候能查一下。

2. 獨(dú)立完成中小規(guī)模的數(shù)字電路設(shè)計(jì)

現(xiàn)在,你可以設(shè)計(jì)一些數(shù)字電路了,像交通燈、電子琴、DDS等等,推薦的教材是夏老《Verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程》(第三版)。在這一階段,你要做到的是:給你一個(gè)指標(biāo)要求或者時(shí)序圖,你能用HDL設(shè)計(jì)電路去實(shí)現(xiàn)它。這里你需要一塊開發(fā)板,可以選Altera的cyclone IV系列,或者Xilinx的Spantan 6。

還沒掌握HDL之前千萬(wàn)不要買開發(fā)板,因?yàn)槟阗I回來(lái)也沒用。這里你沒必要每次編譯通過(guò)就下載代碼,咱們用modelsim仿真(此外還有QuestaSim、NC verilog、Diamond的Active-HDL、VCS、Debussy/Verdi等仿真工具),如果仿真都不能通過(guò)那就不用下載了,肯定不行的。在這里先掌握簡(jiǎn)單的testbench就可以了。推薦的教材是《WRITING TESTBENCHES Functional Verification of HDL Models》。

3. 掌握設(shè)計(jì)方法和設(shè)計(jì)原則

你可能發(fā)現(xiàn)你綜合出來(lái)的電路盡管沒錯(cuò),但有很多警告。這個(gè)時(shí)候,你得學(xué)會(huì)同步設(shè)計(jì)原則、優(yōu)化電路,是速度優(yōu)先還是面積優(yōu)先,時(shí)鐘樹應(yīng)該怎樣設(shè)計(jì),怎樣同步兩個(gè)異頻時(shí)鐘等等。

推薦的教材是《FPGA權(quán)威指南》、《IP核芯志-數(shù)字邏輯設(shè)計(jì)思想》、《Altera FPGA/CPLD設(shè)計(jì)》第二版的基礎(chǔ)篇和高級(jí)篇兩本。學(xué)會(huì)加快編譯速度(增量式編譯、LogicLock),靜態(tài)時(shí)序分析(timequest),嵌入式邏輯分析儀(signaltap)就算是通關(guān)了。如果有不懂的地方可以暫時(shí)跳過(guò),因?yàn)檫@部分還需要足量的實(shí)踐,才能有較深刻的理解。

4. 學(xué)會(huì)提高開發(fā)效率

因?yàn)镼uartus和ISE的編輯器功能太弱,影響了開發(fā)效率。所以建議使用Sublime text編輯器中代碼片段的功能,以減少重復(fù)性勞動(dòng)。Modelsim也是常用的仿真工具,學(xué)會(huì)TCL/TK以編寫適合自己的DO文件,使得仿真變得自動(dòng)化,推薦的教材是《TCL/TK入門經(jīng)典》。

你可能會(huì)手動(dòng)備份代碼,但是專業(yè)人士都是用版本控制器的,所以,為了提高工作效率,必須掌握GIT。文件比較器Beyond Compare也是個(gè)比較常用的工具。此外,你也可以使用System Verilog來(lái)替代testbench,這樣效率會(huì)更高一些。如果你是做IC驗(yàn)證的,就必須掌握System Verilog和驗(yàn)證方法學(xué)(UVM)。推薦的教材是《Writing Testbenches using SystemVerilog》、《The UVM Primer》、《System Verilog1800-2012語(yǔ)法手冊(cè)》。

掌握了TCL/TK之后,可以學(xué)習(xí)虛擬Jtag(ISE也有類似的工具)制作屬于自己的調(diào)試工具,此外,有時(shí)間的話,最好再學(xué)個(gè)python。腳本,意味著一勞永逸。

5. 增強(qiáng)理論基礎(chǔ)

這個(gè)時(shí)候,你已經(jīng)會(huì)使用FPGA了,但是還有很多事情做不了(比如,F(xiàn)IR濾波器、PID算法、OFDM等),因?yàn)槔碚摏]學(xué)好。我大概地分幾個(gè)方向供大家參考,后面跟的是要掌握的理論課。

信號(hào)處理 —— 信號(hào)與系統(tǒng)、數(shù)字信號(hào)處理、數(shù)字圖像處理、現(xiàn)代數(shù)字信號(hào)處理、盲信號(hào)處理、自適應(yīng)濾波器原理、雷達(dá)信號(hào)處理

接口應(yīng)用 —— 如:UART、SPI、IIC、USB、CAN、PCIE、Rapid IO、DDR、TCP/IP、SPI4.2(10G以太網(wǎng)接口)、SATA、光纖、DisplayPort

無(wú)線通信 —— 信號(hào)與系統(tǒng)、數(shù)字信號(hào)處理、通信原理、移動(dòng)通信基礎(chǔ)、隨機(jī)過(guò)程、信息論與編碼

CPU設(shè)計(jì) —— 計(jì)算機(jī)組成原理、單片機(jī)、計(jì)算機(jī)體系結(jié)構(gòu)、編譯原理

儀器儀表 —— 模擬電子技術(shù)、高頻電子線路、電子測(cè)量技術(shù)、智能儀器原理及應(yīng)用

控制系統(tǒng) —— 自動(dòng)控制原理、現(xiàn)代控制理論、過(guò)程控制工程、模糊控制器理論與應(yīng)用

壓縮、編碼、加密 —— 數(shù)論、抽象代數(shù)、現(xiàn)代編碼技術(shù)、信息論與編碼、數(shù)據(jù)壓縮導(dǎo)論、應(yīng)用密碼學(xué)、音頻信息處理技術(shù)、數(shù)字視頻編碼技術(shù)原理

現(xiàn)在你發(fā)現(xiàn),原來(lái)FPGA會(huì)涉及到那么多知識(shí),你可以選一個(gè)感興趣的方向,但是工作中很有可能用到其中幾個(gè)方向的知識(shí),所以理論還是學(xué)得越多越好。如果你要更上一層,數(shù)學(xué)和英語(yǔ)是不可避免的。

6. 學(xué)會(huì)使用MATLAB仿真

設(shè)計(jì)FPGA算法的時(shí)候,多多少少都會(huì)用到MATLAB,比如CRC的系數(shù)矩陣、數(shù)字濾波器系數(shù)、各種表格和文本處理等。此外,MATLAB還能用于調(diào)試HDL(用MATLAB的計(jì)算結(jié)果跟用HDL算出來(lái)的一步步對(duì)照,可以知道哪里出問(wèn)題)。推薦的教材是《MATLAB寶典》和杜勇的《數(shù)字濾波器的MATLAB與FPGA實(shí)現(xiàn)》。

7. 圖像處理

Photoshop

花一、兩周的時(shí)間學(xué)習(xí)PS,對(duì)圖像處理有個(gè)大概的了解,知道各種圖片格式、直方圖、色相、通道、濾鏡、拼接等基本概念,并能使用它。這部分是0基礎(chǔ),目的讓大家對(duì)圖像處理有個(gè)感性的認(rèn)識(shí),而不是一上來(lái)就各種各樣的公式推導(dǎo)。推薦《Photoshop CS6完全自學(xué)教程》。

基于MATLAB或OpenCV的圖像處理

有C/C++基礎(chǔ)的可以學(xué)習(xí)OpenCV,否則的話,建議學(xué)MATLAB。這個(gè)階段下,只要學(xué)會(huì)簡(jiǎn)單的調(diào)用函數(shù)即可,暫時(shí)不用深究實(shí)現(xiàn)的細(xì)節(jié)。推薦《數(shù)字圖像處理matlab版》、《學(xué)習(xí)OpenCV》。

圖像處理的基礎(chǔ)理論

這部分的理論是需要高數(shù)、復(fù)變、線性代數(shù)、信號(hào)與系統(tǒng)、數(shù)字信號(hào)處理等基礎(chǔ),基礎(chǔ)不好的話,建議先補(bǔ)補(bǔ)基礎(chǔ)再來(lái)??床欢睦碚撘部梢詴簳r(shí)先放下,或許學(xué)到后面就自然而然地開竅了。推薦《數(shù)字圖像處理》。

基于FPGA的圖像處理

把前面學(xué)到的理論運(yùn)用到FPGA上面,如果這時(shí)你有前面第七個(gè)階段的水平,你將輕松地獨(dú)立完成圖像算法設(shè)計(jì)(圖像處理是離不開接口的,上面第五個(gè)階段有講)。推薦《基于FPGA的嵌入式圖像處理系統(tǒng)設(shè)計(jì)》、《基于FPGA的數(shù)字圖像處理原理及應(yīng)用》。

進(jìn)一步鉆研數(shù)學(xué)。要在算法上更上一層,必然需要更多的數(shù)學(xué),所以這里建議學(xué)習(xí)實(shí)分析、泛涵分析、小波分析等。

其它問(wèn)題

1. 為什么不推薦學(xué)習(xí)MicroBlaze等軟核?

性價(jià)比不高,一般的軟核性能大概跟Cortex M3或M4差不多,用FPGA那么貴的東西去做一個(gè)性能一般的CPU,在工程上是非常不劃算的。不如另外加一塊M3。

加上軟核,可能會(huì)影響到其它的邏輯的功能。這是在資源并不十分充足的情況下,再加上軟核,導(dǎo)致布局布線變得相當(dāng)困難。軟核不開源,出現(xiàn)Bug的時(shí)候,不容易調(diào)試。工程上很少使用,極有可能派不上用場(chǎng)。

2. 為什么不推薦0基礎(chǔ)學(xué)習(xí)ZYNQ或SOC?

入門應(yīng)該學(xué)習(xí)盡量簡(jiǎn)單的東西,要么專心學(xué)習(xí)ARM,要么專心學(xué)習(xí)FPGA。這樣更容易有成就感,增強(qiáng)信心。

ZYNQ和SOC的應(yīng)用領(lǐng)域并不廣,還有很多人沒聽過(guò)這種東西,導(dǎo)致求職的不利。開發(fā)工具編譯時(shí)間長(zhǎng),浪費(fèi)較多時(shí)間。絕大多數(shù)工作,都只是負(fù)責(zé)一方面,也就是說(shuō)另一方面,很有可能派不上用場(chǎng)。

3. 為什么已經(jīng)存在那么多IP核,仍需寫HDL?

問(wèn)這種問(wèn)題的,一般是學(xué)生,他們沒有做過(guò)產(chǎn)品,沒有遇到過(guò)工程上的問(wèn)題。IP核并非萬(wàn)能,不能滿足所有需求。盡量少用閉源IP核,一旦出問(wèn)題,這種黑匣子很可能讓產(chǎn)品難產(chǎn)。

深入理解低一層次,可以更好地使用高一層次。該法則可以適用于所有編程語(yǔ)言。

責(zé)任編輯:lq6

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598919
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119204
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7366

    瀏覽量

    163092
  • 數(shù)字電路
    +關(guān)注

    關(guān)注

    193

    文章

    1579

    瀏覽量

    80180

原文標(biāo)題:零基礎(chǔ)入門FPGA,如何學(xué)習(xí)?

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA學(xué)習(xí)重點(diǎn)是什么?

    FPGA學(xué)習(xí)重點(diǎn)是什么?
    發(fā)表于 05-24 07:38

    FPGA學(xué)習(xí)筆記-關(guān)于FPGA資源

    FPGA學(xué)習(xí)。 在學(xué)習(xí)中才發(fā)現(xiàn),FPGA遠(yuǎn)不是門電路那么簡(jiǎn)單。FPGA中有各種需要的資源,比如門電路、存儲(chǔ)單元、片內(nèi)RAM、嵌入式乘法器、
    發(fā)表于 05-22 18:27

    FPGA學(xué)習(xí)筆記-入門

    大概10年前,大學(xué)同學(xué)建議我學(xué)習(xí)DSP。當(dāng)因?yàn)楣ぷ髅?,也只是?jiǎn)單學(xué)習(xí)了DSP的一些基礎(chǔ)知識(shí),沒有進(jìn)一步深入學(xué)習(xí)和時(shí)間。結(jié)果現(xiàn)在,好像DSP已經(jīng)不再是主流了,現(xiàn)在有了FPGA。 現(xiàn)在想想
    發(fā)表于 04-09 10:55

    FPGA初步學(xué)習(xí)印象

    了。FPGA出現(xiàn)后,也想學(xué)習(xí)學(xué)習(xí)這方面的知識(shí)。抱著先簡(jiǎn)單學(xué)習(xí)下的態(tài)度,在網(wǎng)上找資料看看。感覺FPGA,就像是利用芯片內(nèi)部資源,自由組合門電路
    發(fā)表于 04-09 09:46

    FPGA學(xué)習(xí)資料分享

    本帖最后由 1653149838.791300 于 2024-3-31 13:24 編輯 FPGA學(xué)習(xí)首先是要熟悉掌握使用硬件描述語(yǔ)言,這方面可以通過(guò)書籍或者這方面論壇,這里個(gè)人分享一個(gè)比較好
    發(fā)表于 03-31 13:23

    FPGA與MCU的區(qū)別入門難度如何

    如題,目前我的MCU入門了,請(qǐng)問(wèn)FPGA的入門如何,需要怎么樣去學(xué)習(xí)?
    發(fā)表于 03-16 07:16

    fpga學(xué)習(xí)需要具備哪些課程

    FPGA(Field Programmable Gate Array)學(xué)習(xí)需要具備一系列的課程知識(shí)和實(shí)踐技能
    的頭像 發(fā)表于 03-14 15:51 ?898次閱讀

    小白學(xué)習(xí)FPGA的四大誤區(qū)

    菜鳥最不愿意去面對(duì)的問(wèn)題。數(shù)字邏輯是任何電子電氣類專業(yè)的專業(yè)基礎(chǔ)知識(shí),也是必須要學(xué)好的一門課。很多人無(wú)非是學(xué)習(xí)了,考個(gè)試,完了。如果不能將數(shù)字邏輯知識(shí)爛熟于心,養(yǎng)成良好的設(shè)計(jì)習(xí)慣,學(xué)FPGA到最后仍然是霧里看花水中望月,始終是一
    發(fā)表于 02-22 11:00

    FPGA好的學(xué)習(xí)資源有哪些

    對(duì)FPGA學(xué)習(xí)好的資源有哪些?從入門到精通,大家可以分享一起學(xué)習(xí)
    發(fā)表于 01-28 17:00

    學(xué)習(xí)FPGA必須知道的社區(qū)

    學(xué)習(xí)FPGA必須知道的社區(qū)
    的頭像 發(fā)表于 01-03 17:51 ?281次閱讀
    <b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>FPGA</b>必須知道的社區(qū)

    FPGA學(xué)習(xí)入門從點(diǎn)燈開始

    首先,FPGA開發(fā)工程師是一個(gè)相對(duì)高薪的工作,但是,很多同學(xué)在剛?cè)腴T時(shí)都會(huì)有一種無(wú)從下手的感覺,尤其是將FPGA作為第一個(gè)要掌握的開發(fā)板時(shí),更是感覺苦惱;本人也是如此,以下就本人學(xué)習(xí)FPGA
    的頭像 發(fā)表于 12-28 09:50 ?405次閱讀

    工程師必看!MOSFET器件選型的3大法則

    工程師必看!MOSFET器件選型的3大法則
    的頭像 發(fā)表于 12-06 15:58 ?400次閱讀

    工程師必看!電路基本概念有哪些?

    工程師必看!電路基本概念有哪些?
    的頭像 發(fā)表于 11-30 09:31 ?528次閱讀
    工程師<b class='flag-5'>必看</b>!電路基本概念有哪些?

    如何學(xué)習(xí)FPGA?FPGA學(xué)習(xí)必備的基礎(chǔ)知識(shí)

    FPGA已成為現(xiàn)今的技術(shù)熱點(diǎn)之一,無(wú)論學(xué)生還是工程師都希望跨進(jìn)FPGA的大門。網(wǎng)絡(luò)上各種開發(fā)板、培訓(xùn)班更是多如牛毛,仿佛在告訴你不懂FPGA你就OUT啦。那么我們要玩轉(zhuǎn)FPGA必須具備
    的頭像 發(fā)表于 10-27 17:43 ?684次閱讀

    學(xué)習(xí)PLC的菜鳥,都應(yīng)該養(yǎng)成哪些良好的習(xí)慣?

    對(duì)于學(xué)習(xí)PLC的菜鳥,養(yǎng)成以下良好的習(xí)慣將有助于提高學(xué)習(xí)效果和工作效率: (1)學(xué)習(xí)基礎(chǔ)知識(shí):首先,建立扎實(shí)的基礎(chǔ)知識(shí)是學(xué)習(xí)PLC的關(guān)鍵。了
    的頭像 發(fā)表于 10-12 08:20 ?418次閱讀