知道明德?lián)P科教是一個(gè)偶然,但后來耐心看完明德?lián)P知識大串講系列視頻卻是一個(gè)必然。因?yàn)樽龅糜眯?,所以看得放心?/p>
本人是一個(gè)純FPGA小白,就連FPGA這個(gè)名詞我都是最近才知道,所以如果你也正想入門學(xué)習(xí)FPGA的話,請耐心看下去吧,相信你看完絕對不會后悔。
因?yàn)樽罱鼌⒓恿艘粋€(gè)集成電路類的比賽,需要用FPGA進(jìn)行功能的實(shí)現(xiàn),無奈我們專業(yè)目前還沒有開設(shè)這門課,于是就只能自己開始著手自學(xué)了。經(jīng)過我們老師的推薦,我第一次了解到了明德?lián)P科教,了解到這樣一個(gè)這么純粹做技術(shù)和教育的機(jī)構(gòu),免費(fèi)看完潘老師知識大串講系列視頻后頗有感觸,下面我來向大家分享一下作為一個(gè)FPGA小白的學(xué)習(xí)經(jīng)歷吧!
首先大家可能會疑問學(xué)習(xí)FPGA需要什么基礎(chǔ)知識,實(shí)話告訴你,基本不需要。我在學(xué)習(xí)FPGA之前除我們專業(yè)開設(shè)的模擬電子技術(shù)課外,自己只是自學(xué)了一下51單片機(jī)開發(fā)和數(shù)字電子技術(shù)的一些最簡單基礎(chǔ)的東西,最后發(fā)現(xiàn)用到的就是一個(gè)二進(jìn)制和一些基本的門級電路知識,其次就是一種編程思維的培養(yǎng),但我相信作為想學(xué)FPGA的你應(yīng)該也多少具備一些這類知識吧。如果沒有的話不妨簡單看看吧。
視頻的六個(gè)部分
知識大串講系列視頻一共由六個(gè)部分組成,分別是:學(xué)習(xí)誤區(qū)、FPGA知識大串講、組合邏輯、D觸發(fā)器、時(shí)序邏輯和FPGA時(shí)序。每個(gè)視頻針對性地講一個(gè)小點(diǎn),條理清楚,邏輯清晰,由淺入深,循序漸進(jìn),非常適合新手入門。這套視頻不像其他有些視頻一樣很冗長,讓人一看到視頻的時(shí)長就望而卻步,這套視頻最長的不過半個(gè)小時(shí),最短的也就五分半,讓人看著不會覺得很枯燥。日常刷一個(gè)小視頻的時(shí)間而已,而且還能學(xué)會很多東西,何樂而不為呢?
明德?lián)P知識大串講系列視頻的知識體系
大家可能還會疑惑一個(gè)問題:在這么短的時(shí)間內(nèi)真的能學(xué)到知識嗎?
誠然,在如此短的時(shí)間內(nèi)想要掌握一門技術(shù)有些不太實(shí)際,但我看完視頻的經(jīng)歷告訴我,這套視頻只要你認(rèn)真看,理解潘老師講的每一個(gè)細(xì)節(jié),看不明白的地方就反復(fù)看看,再結(jié)合自己的理解思考一下,有些問題你就會恍然大悟。而且視頻中有些言語非常地道幽默,所以也很讓人容易理解接受。另外潘老師每個(gè)視頻只針對一個(gè)小點(diǎn)進(jìn)行講解和分析,所以也很容易聽懂,當(dāng)然大家也不要有會聽不懂的顧慮了。當(dāng)然,對于能力比較強(qiáng)的初學(xué)者來說1.5倍速播放可能更適合你!
大家都知道,一個(gè)工程的好壞不在于代碼量的多少,不是說實(shí)現(xiàn)一個(gè)功能用的代碼越少越好。評價(jià)一個(gè)工程的好壞要看綜合出來的電路,如果一個(gè)工程所在效率滿足的前提下,所調(diào)用的資源最少、可維護(hù)性高、拓展性強(qiáng)、代碼精簡便于閱讀,那么這就是一個(gè)好的工程。關(guān)于代碼,潘老師在視頻中也詳細(xì)教了一些方法和思維,以下是我學(xué)習(xí)后的一些思考和總結(jié)。
不要試圖用軟件思維去編寫代碼。因?yàn)檐浖季S是在單片機(jī)編寫程序時(shí)運(yùn)用廣泛的一種思維,主要通過一些串行或并行輸出的代碼去控制單片機(jī)處理一些問題,這樣就會涉及到一些諸如延時(shí)和初始化這樣的代碼,但在FPGA中則不一樣,在FPGA中是電路的反應(yīng),只要一通電就開始執(zhí)行。在FPGA中也沒有for循環(huán)和while循環(huán)、高阻態(tài)和不定態(tài)的說法。關(guān)于時(shí)序的功能都是通過時(shí)鐘來實(shí)現(xiàn)的。FPGA是使用Verilog語言進(jìn)行編寫的,Verilog中文翻譯又叫硬件描述語言,不是一種設(shè)計(jì)語言。所以我們在做一個(gè)FPGA設(shè)計(jì)之前,其實(shí)已經(jīng)有硬件的電路結(jié)構(gòu)在頭腦里面了,我們只是用Verilog語言把它描述出來而已,絕不是用Verilog設(shè)計(jì)一門電路出來,這個(gè)思維模式是完全不一樣的。
FPGA中是電路的反應(yīng)
軟件思維編寫的代碼可讀性較差,而且和硬件思維編寫的代碼比起來運(yùn)行的時(shí)候更耗時(shí)。
以下是兩者實(shí)現(xiàn)一個(gè)攝像頭輸入模塊采集功能的代碼對比:
軟件思維編寫的代碼
明德?lián)P規(guī)范的代碼
可以看出,兩種思維的代碼相形見絀。用軟件思維寫出的代碼不僅結(jié)構(gòu)冗長、可讀性差,而且理解起來也比較麻煩。同樣是實(shí)現(xiàn)一個(gè)攝像頭輸入模塊采集功能,攝像頭輸入過來有三個(gè)信號:時(shí)鐘、使能和數(shù)據(jù)。數(shù)據(jù)分別用兩個(gè)字節(jié)的二進(jìn)制數(shù)的值來表示一個(gè)像素點(diǎn)中RGB的值,我們主要做的就是把這兩個(gè)值通過一個(gè)16bit的總線輸入到下一個(gè)模塊。軟件思維就是定義一個(gè)變量進(jìn)行加一運(yùn)算,而明德?lián)P規(guī)范中就用一個(gè)取反就解決了。這只是一個(gè)簡單的例子,如果不夠明顯的話,接下來我們來看一個(gè)稍微復(fù)雜一點(diǎn)的例子。
現(xiàn)在我們需要實(shí)現(xiàn)一個(gè)幀頻率的計(jì)算,統(tǒng)計(jì)兩秒鐘內(nèi)輸入幀的個(gè)數(shù),然后把得到的數(shù)除以2就得到一秒鐘的幀頻率。下面我們來一起看看這個(gè)功能用兩種不同代碼實(shí)現(xiàn)的區(qū)別:
軟件思維寫出的代碼
明德?lián)P規(guī)范的代碼
大家不難看出,用軟件思維寫出的代碼不僅繁雜,理解起來也比較困難,而明德?lián)P規(guī)范的代碼則顯得更簡潔、高效,效率也是不可同日而語的。
另外我們還不難發(fā)現(xiàn)一點(diǎn),潘老師和明德?lián)P規(guī)范的代碼結(jié)構(gòu)和語法非常簡單,很多語法幾乎都只是用得到了if和else這些最簡單的語句,所以我們在學(xué)習(xí)語法上其實(shí)不用花費(fèi)太多的時(shí)間,這也為我們新手入門降低了很多難度,節(jié)省了很多寶貴的時(shí)間。
明德?lián)P規(guī)范的代碼結(jié)構(gòu)和語法
另外潘老師個(gè)人講課也比較有特點(diǎn),雖然潘老師普通話不是特別標(biāo)準(zhǔn),但這并不影響我們對于知識和思維的學(xué)習(xí)。
潘老師研發(fā)經(jīng)驗(yàn)非常豐富,曾在華為這種世界500強(qiáng)的公司工作過,做過很多項(xiàng)目的開發(fā),所以實(shí)戰(zhàn)經(jīng)驗(yàn)豐富,講的很多東西實(shí)用性比較強(qiáng)。特別是對于我這種是抱著參加競賽的小白來說幫助很大。
我們都知道,想要提要時(shí)鐘頻率就要減小時(shí)鐘周期,但因?yàn)镈觸發(fā)器和線路之間傳遞的那部分延時(shí)是由物理器件決定的跟器件的工藝和材料等因素有關(guān),我們沒辦法進(jìn)行修改,我們能做的就是對組合邏輯那部分電路的延時(shí)減到最小。這條把延時(shí)減到最小的路徑也叫關(guān)鍵路徑。
關(guān)鍵路徑
老師在一開始就講過在FPGA里面的電路是一通電就可以工作,指的是對于最基本的門電路而言的。于是老師就舉了他在海思里面做項(xiàng)目的一個(gè)例子:要把一個(gè)集成電路跑到2G的頻率!可想而知這需要多么小的時(shí)鐘周期,他們的方法就是把所有能拆的組合邏輯都拆成了基本的門電路,甚至連選擇器他們也不放過,只為了一步步提高頻率。就這樣一直不停地拆,直至把任何兩個(gè)寄存器之間的延時(shí)縮小到最小最小,從而達(dá)到就可以達(dá)到提高時(shí)鐘頻率的目標(biāo),這個(gè)方法也叫流水線設(shè)計(jì)。
減小時(shí)鐘周期
潘老師講課還善于聯(lián)系現(xiàn)實(shí)生活進(jìn)行分析。在講到關(guān)于狀態(tài)機(jī)的設(shè)計(jì)時(shí),為了將狀態(tài)機(jī)設(shè)計(jì)的目和過程一目了然,于是便聯(lián)系生活講到了我們?nèi)粘I钪谐R姷淖詣邮圬洐C(jī)的設(shè)計(jì)。
自動售貨機(jī)的設(shè)計(jì)
并且還就這個(gè)例子講到了代碼設(shè)計(jì)的三段論格式,讓設(shè)計(jì)代碼顯得非常實(shí)用高效,便于分析。
自動售貨機(jī)代碼的設(shè)計(jì)
總而言之,看完整套視頻后,作為一個(gè)小白的我感覺對于FPGA有了一個(gè)大概的了解了,讓原本在門外徘徊的我慢慢地就走進(jìn)了門里。在這里常感謝明德?lián)P科教提供的這個(gè)讓我免費(fèi)學(xué)習(xí)的機(jī)會。
以上就是我看完明德?lián)P知識大串講系列視頻后的一些收獲和總結(jié),希望能給同樣熱愛學(xué)習(xí)的你帶來一些啟發(fā)!也讓我們在學(xué)習(xí)FPGA的道路上共同進(jìn)步吧!
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1625文章
21627瀏覽量
601249 -
單片機(jī)
+關(guān)注
關(guān)注
6030文章
44491瀏覽量
632008 -
時(shí)序邏輯
+關(guān)注
關(guān)注
0文章
39瀏覽量
9134
發(fā)布評論請先 登錄
相關(guān)推薦
評論