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

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

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

【學(xué)習(xí)FPGA必看】一個(gè)FPGA小白的自述

潘文明 ? 來源:明德?lián)P吳老師 ? 作者:明德?lián)P吳老師 ? 2022-12-15 11:06 ? 次閱讀

知道明德?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)該也多少具備一些這類知識吧。如果沒有的話不妨簡單看看吧。

75eb627b3b7a4405bcd4b3475fe29d50~noop.image?_iz=58558&from=article.pc_detail&x-expires=1671677963&x-signature=Y1LZ56gmnUXxUmgbMi3TZax5sNU%3D

視頻的六個(gè)部分

知識大串講系列視頻一共由六個(gè)部分組成,分別是:學(xué)習(xí)誤區(qū)、FPGA知識大串講、組合邏輯、D觸發(fā)器、時(shí)序邏輯和FPGA時(shí)序。每個(gè)視頻針對性地講一個(gè)小點(diǎn),條理清楚,邏輯清晰,由淺入深,循序漸進(jìn),非常適合新手入門。這套視頻不像其他有些視頻一樣很冗長,讓人一看到視頻的時(shí)長就望而卻步,這套視頻最長的不過半個(gè)小時(shí),最短的也就五分半,讓人看著不會覺得很枯燥。日常刷一個(gè)小視頻的時(shí)間而已,而且還能學(xué)會很多東西,何樂而不為呢?

4dedaf2d316c4ef18c3fca42ddd9af81~noop.image?_iz=58558&from=article.pc_detail&x-expires=1671677963&x-signature=ngMg1ZeQOvMQPfQf15JziMbiiPI%3D

明德?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è)思維模式是完全不一樣的。

2c377c37cbb14c61917cffeac75d8568~noop.image?_iz=58558&from=article.pc_detail&x-expires=1671677963&x-signature=bru3ajUGbvVQB1cdJx%2BGa1n%2B0iY%3D

FPGA中是電路的反應(yīng)

軟件思維編寫的代碼可讀性較差,而且和硬件思維編寫的代碼比起來運(yùn)行的時(shí)候更耗時(shí)。

以下是兩者實(shí)現(xiàn)一個(gè)攝像頭輸入模塊采集功能的代碼對比:

c3e828c80a2f42b3adae0cbc4f36084a~noop.image?_iz=58558&from=article.pc_detail&x-expires=1671677963&x-signature=%2BkrhAcO18FVUgLLDWVqtzU5RMRE%3D

軟件思維編寫的代碼

31cbf6b5b0154cf8bffcb956093544f1~noop.image?_iz=58558&from=article.pc_detail&x-expires=1671677963&x-signature=uZGxXzM%2FdnbbLLq4TeCvIIm9OmA%3D

明德?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ū)別:

2e05b61b58ba425090c92fee03e074bd~noop.image?_iz=58558&from=article.pc_detail&x-expires=1671677963&x-signature=tPd%2Bnp2XTvrGEij5U5FGLsZhNAs%3D

軟件思維寫出的代碼

b2037715a0e541219e953c5ccf621f4e~noop.image?_iz=58558&from=article.pc_detail&x-expires=1671677963&x-signature=MeQPfyBFAWHzpKb5byyc4QJbS3w%3D

明德?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í)間。

b0b04bd1c123485c87b4cdefdd8912ca~noop.image?_iz=58558&from=article.pc_detail&x-expires=1671677963&x-signature=D%2Bn6FgM%2FZK7WJBV9Blx0pJ9Hols%3D

明德?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)鍵路徑。

0a10c77efe3b4d11bc5ac25bcdc3b364~noop.image?_iz=58558&from=article.pc_detail&x-expires=1671677963&x-signature=gKZJLFR8OlAC1BVCCw7iGItU9rQ%3D

關(guān)鍵路徑

老師在一開始就講過在FPGA里面的電路是一通電就可以工作,指的是對于最基本的門電路而言的。于是老師就舉了他在海思里面做項(xiàng)目的一個(gè)例子:要把一個(gè)集成電路跑到2G的頻率!可想而知這需要多么小的時(shí)鐘周期,他們的方法就是把所有能拆的組合邏輯都拆成了基本的門電路,甚至連選擇器他們也不放過,只為了一步步提高頻率。就這樣一直不停地拆,直至把任何兩個(gè)寄存器之間的延時(shí)縮小到最小最小,從而達(dá)到就可以達(dá)到提高時(shí)鐘頻率的目標(biāo),這個(gè)方法也叫流水線設(shè)計(jì)。

f712445c22c44dfba4e2c5a200016481~noop.image?_iz=58558&from=article.pc_detail&x-expires=1671677963&x-signature=vT6EzIXrcYiurv6CzKN8N8VAMLg%3D

減小時(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ì)。

e78aee5629d746ae8125a699e0b8d332~noop.image?_iz=58558&from=article.pc_detail&x-expires=1671677963&x-signature=TTs635q03zi7JUHp%2BTpQ%2Bn43kc4%3D

自動售貨機(jī)的設(shè)計(jì)

并且還就這個(gè)例子講到了代碼設(shè)計(jì)的三段論格式,讓設(shè)計(jì)代碼顯得非常實(shí)用高效,便于分析。

d940cab35f1c47f3b74a53ea7d31f03c~noop.image?_iz=58558&from=article.pc_detail&x-expires=1671677963&x-signature=qNHdsb2uQoT5ibjR3FYu0ucZc7c%3D

自動售貨機(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)步吧!

審核編輯:湯梓紅

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

    關(guān)注

    1625

    文章

    21627

    瀏覽量

    601249
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6030

    文章

    44491

    瀏覽量

    632008
  • 時(shí)序邏輯
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    9134
收藏 人收藏

    評論

    相關(guān)推薦

    FPGA加速深度學(xué)習(xí)模型的案例

    FPGA(現(xiàn)場可編程門陣列)加速深度學(xué)習(xí)模型是當(dāng)前硬件加速領(lǐng)域的個(gè)熱門研究方向。以下是FPGA
    的頭像 發(fā)表于 10-25 09:22 ?111次閱讀

    FPGA做深度學(xué)習(xí)能走多遠(yuǎn)?

    ,共同進(jìn)步。 歡迎加入FPGA技術(shù)微信交流群14群! 交流問題() Q:FPGA做深度學(xué)習(xí)能走多遠(yuǎn)?現(xiàn)在用FPGA做深度
    發(fā)表于 09-27 20:53

    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)不是門電路那么簡單。FPGA中有各種需要的資源,比如門電路、存儲單元、片內(nèi)RAM、嵌入式乘法器、
    發(fā)表于 05-22 18:27

    FPGA基礎(chǔ)知識學(xué)習(xí)

    RAM中。這些數(shù)據(jù)定義了FPGA中的各個(gè)邏輯門的功能以及它們之間的連接方式。這個(gè)過程被稱為FPGA的配置或編程。 旦配置完成,FPGA就可以開始執(zhí)行邏輯運(yùn)算了。每個(gè)邏輯門都有
    發(fā)表于 04-29 23:26

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

    大概10年前,大學(xué)同學(xué)建議我學(xué)習(xí)DSP。當(dāng)因?yàn)楣ぷ髅?,也只是簡?b class='flag-5'>學(xué)習(xí)了DSP的些基礎(chǔ)知識,沒有進(jìn)步深入學(xué)習(xí)和時(shí)間。結(jié)果現(xiàn)在,好像DSP已
    發(fā)表于 04-09 10:55

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

    在大學(xué)學(xué)習(xí)數(shù)字電路時(shí),還記得有時(shí)候會用TTL或者CMOS器件,搭建些功能復(fù)雜的電路。后來隨著單片機(jī)的發(fā)展,TTL或者CMOS的器件和應(yīng)用似乎已經(jīng)沒落了。手里還有的些器件基本上吃灰,沒什么大用
    發(fā)表于 04-09 09:46

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

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

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

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

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

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

    從入門到放棄……為什么你會覺得FPGA難學(xué)?如何學(xué)習(xí)FPGA

    是面對應(yīng)用的,個(gè)小時(shí)內(nèi)讓你的板子運(yùn)行起來。早期起來的快,活學(xué)活用,就是后期沒有系統(tǒng)理論支持,會有些吃力,特別是大項(xiàng)目,那完全是個(gè)悲劇。 FPGA學(xué)
    的頭像 發(fā)表于 02-02 17:04 ?733次閱讀
    從入門到放棄……為什么你會覺得<b class='flag-5'>FPGA</b>難學(xué)?如何<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>FPGA</b>?

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

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

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

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

    值得多看的FPGA 學(xué)習(xí)路線

    你手頭有誰家的license之類的。在入門階段,我建議專注于個(gè)平臺,沒必要兩個(gè)都學(xué)。個(gè)搞通了另外
    發(fā)表于 01-02 23:03

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

    首先,FPGA開發(fā)工程師是個(gè)相對高薪的工作,但是,很多同學(xué)在剛?cè)腴T時(shí)都會有種無從下手的感覺,尤其是將FPGA作為第
    的頭像 發(fā)表于 12-28 09:50 ?472次閱讀