知道(dào)明(míng)德揚科教是(shì)一(yī)个(gè)偶然,但後(hòu)来(lái)耐心(xīn)看(kàn)完明(míng)德揚知識大串講系(xì)列視頻卻是(shì)一(yī)个(gè)必然。因(yīn)为(wèi)做得用(yòng)心(xīn),所(suǒ)以(yǐ)看(kàn)得放(fàng)心(xīn)。
本(běn)人(rén)是(shì)一(yī)个(gè)純FPGA小白,就(jiù)連(lián)FPGA这(zhè)个(gè)名词我(wǒ)都是(shì)最(zuì)近(jìn)才知道(dào),所(suǒ)以(yǐ)如(rú)果(guǒ)你也(yě)正(zhèng)想(xiǎng)入(rù)門(mén)学習FPGA的(de)話(huà),請耐心(xīn)看(kàn)下(xià)去(qù)吧,相信(xìn)你看(kàn)完絕对(duì)不(bù)会(huì)後(hòu)悔。
因(yīn)为(wèi)最(zuì)近(jìn)參加了(le)一(yī)个(gè)集成(chéng)電(diàn)路(lù)類(lèi)的(de)比赛,需要(yào)用(yòng)FPGA進(jìn)行功能(néng)的(de)实現(xiàn),无奈我(wǒ)们(men)專業目前(qián)還(huán)沒(méi)有(yǒu)開(kāi)設这(zhè)門(mén)課,于(yú)是(shì)就(jiù)只(zhī)能(néng)自(zì)己開(kāi)始着手(shǒu)自(zì)学了(le)。經(jīng)过(guò)我(wǒ)们(men)老(lǎo)师(shī)的(de)推薦,我(wǒ)第(dì)一(yī)次(cì)了(le)解(jiě)到(dào)了(le)明(míng)德揚科教,了(le)解(jiě)到(dào)这(zhè)樣(yàng)一(yī)个(gè)这(zhè)麼(me)純粹做技術(shù)和(hé)教育的(de)機(jī)構,免費看(kàn)完潘老(lǎo)师(shī)知識大串講系(xì)列視頻後(hòu)頗有(yǒu)感(gǎn)觸,下(xià)面(miàn)我(wǒ)来(lái)向(xiàng)大家(jiā)分(fēn)享一(yī)下(xià)作为(wèi)一(yī)个(gè)FPGA小白的(de)学習經(jīng)曆吧!
首先(xiān)大家(jiā)可(kě)能(néng)会(huì)疑問(wèn)学習FPGA需要(yào)什麼(me)基礎知識,实話(huà)告訴你,基本(běn)不(bù)需要(yào)。我(wǒ)在(zài)学習FPGA之前(qián)除我(wǒ)们(men)專業開(kāi)設的(de)模拟電(diàn)子技術(shù)課外(wài),自(zì)己只(zhī)是(shì)自(zì)学了(le)一(yī)下(xià)51單片(piàn)機(jī)開(kāi)發(fà)和(hé)數字(zì)電(diàn)子技術(shù)的(de)一(yī)些最(zuì)簡單基礎的(de)東(dōng)西(xī),最(zuì)後(hòu)發(fà)現(xiàn)用(yòng)到(dào)的(de)就(jiù)是(shì)一(yī)个(gè)二(èr)進(jìn)制和(hé)一(yī)些基本(běn)的(de)門(mén)級電(diàn)路(lù)知識,其次(cì)就(jiù)是(shì)一(yī)種(zhǒng)編程思(sī)維的(de)培養,但我(wǒ)相信(xìn)作为(wèi)想(xiǎng)学FPGA的(de)你應(yìng)該也(yě)多(duō)少(shǎo)具備一(yī)些这(zhè)類(lèi)知識吧。如(rú)果(guǒ)沒(méi)有(yǒu)的(de)話(huà)不(bù)妨簡單看(kàn)看(kàn)吧。
視頻的(de)六(liù)个(gè)部(bù)分(fēn)
知識大串講系(xì)列視頻一(yī)共(gòng)由(yóu)六(liù)个(gè)部(bù)分(fēn)組成(chéng),分(fēn)别是(shì):学習誤區(qū)、FPGA知識大串講、組合邏輯、D觸發(fà)器、时(shí)序邏輯和(hé)FPGA时(shí)序。每个(gè)視頻針(zhēn)对(duì)性(xìng)地(dì)講一(yī)个(gè)小點(diǎn),条(tiáo)理清(qīng)楚,邏輯清(qīng)晰,由(yóu)淺入(rù)深,循序漸進(jìn),非(fēi)常适合新手(shǒu)入(rù)門(mén)。这(zhè)套(tào)視頻不(bù)像其他(tā)有(yǒu)些視頻一(yī)樣(yàng)很冗长,讓人(rén)一(yī)看(kàn)到(dào)視頻的(de)时(shí)长就(jiù)望而(ér)卻步,这(zhè)套(tào)視頻最(zuì)长的(de)不(bù)过(guò)半个(gè)小时(shí),最(zuì)短(duǎn)的(de)也(yě)就(jiù)五(wǔ)分(fēn)半,讓人(rén)看(kàn)着不(bù)会(huì)覺得很枯燥。日(rì)常刷一(yī)个(gè)小視頻的(de)时(shí)間(jiān)而(ér)已,而(ér)且還(huán)能(néng)学会(huì)很多(duō)東(dōng)西(xī),何乐(lè)而(ér)不(bù)为(wèi)呢?
明(míng)德揚知識大串講系(xì)列視頻的(de)知識體(tǐ)系(xì)
大家(jiā)可(kě)能(néng)還(huán)会(huì)疑惑一(yī)个(gè)問(wèn)題(tí):在(zài)这(zhè)麼(me)短(duǎn)的(de)时(shí)間(jiān)內(nèi)真(zhēn)的(de)能(néng)学到(dào)知識吗?誠然,在(zài)如(rú)此(cǐ)短(duǎn)的(de)时(shí)間(jiān)內(nèi)想(xiǎng)要(yào)掌握一(yī)門(mén)技術(shù)有(yǒu)些不(bù)太实際,但我(wǒ)看(kàn)完視頻的(de)經(jīng)曆告訴我(wǒ),这(zhè)套(tào)視頻只(zhī)要(yào)你認真(zhēn)看(kàn),理解(jiě)潘老(lǎo)师(shī)講的(de)每一(yī)个(gè)细(xì)节(jié),看(kàn)不(bù)明(míng)白的(de)地(dì)方(fāng)就(jiù)反(fǎn)複看(kàn)看(kàn),再結合自(zì)己的(de)理解(jiě)思(sī)考一(yī)下(xià),有(yǒu)些問(wèn)題(tí)你就(jiù)会(huì)恍然大悟。而(ér)且視頻中(zhōng)有(yǒu)些言語(yǔ)非(fēi)常地(dì)道(dào)幽默,所(suǒ)以(yǐ)也(yě)很讓人(rén)容易理解(jiě)接受。另(lìng)外(wài)潘老(lǎo)师(shī)每个(gè)視頻只(zhī)針(zhēn)对(duì)一(yī)个(gè)小點(diǎn)進(jìn)行講解(jiě)和(hé)分(fēn)析,所(suǒ)以(yǐ)也(yě)很容易听(tīng)懂,當然大家(jiā)也(yě)不(bù)要(yào)有(yǒu)会(huì)听(tīng)不(bù)懂的(de)顧慮了(le)。當然,对(duì)于(yú)能(néng)力比較強(qiáng)的(de)初学者(zhě)来(lái)说(shuō)1.5倍速播放(fàng)可(kě)能(néng)更(gèng)适合你!
大家(jiā)都知道(dào),一(yī)个(gè)工程的(de)好(hǎo)壞不(bù)在(zài)于(yú)代(dài)碼量(liàng)的(de)多(duō)少(shǎo),不(bù)是(shì)说(shuō)实現(xiàn)一(yī)个(gè)功能(néng)用(yòng)的(de)代(dài)碼越少(shǎo)越好(hǎo)。評價一(yī)个(gè)工程的(de)好(hǎo)壞要(yào)看(kàn)綜合出(chū)来(lái)的(de)電(diàn)路(lù),如(rú)果(guǒ)一(yī)个(gè)工程所(suǒ)在(zài)效率滿足的(de)前(qián)提(tí)下(xià),所(suǒ)調用(yòng)的(de)資源最(zuì)少(shǎo)、可(kě)維護性(xìng)高(gāo)、拓展(zhǎn)性(xìng)強(qiáng)、代(dài)碼精簡便于(yú)閱读(dú),那(nà)麼(me)这(zhè)就(jiù)是(shì)一(yī)个(gè)好(hǎo)的(de)工程。關(guān)于(yú)代(dài)碼,潘老(lǎo)师(shī)在(zài)視頻中(zhōng)也(yě)詳细(xì)教了(le)一(yī)些方(fāng)法和(hé)思(sī)維,以(yǐ)下(xià)是(shì)我(wǒ)学習後(hòu)的(de)一(yī)些思(sī)考和(hé)總(zǒng)結。
不(bù)要(yào)試图(tú)用(yòng)软(ruǎn)件(jiàn)思(sī)維去(qù)編写代(dài)碼。因(yīn)为(wèi)软(ruǎn)件(jiàn)思(sī)維是(shì)在(zài)單片(piàn)機(jī)編写程序时(shí)運用(yòng)廣泛的(de)一(yī)種(zhǒng)思(sī)維,主(zhǔ)要(yào)通(tòng)过(guò)一(yī)些串行或(huò)并行輸出(chū)的(de)代(dài)碼去(qù)控制單片(piàn)機(jī)处理一(yī)些問(wèn)題(tí),这(zhè)樣(yàng)就(jiù)会(huì)涉及(jí)到(dào)一(yī)些诸如(rú)延时(shí)和(hé)初始化(huà)这(zhè)樣(yàng)的(de)代(dài)碼,但在(zài)FPGA中(zhōng)則不(bù)一(yī)樣(yàng),在(zài)FPGA中(zhōng)是(shì)電(diàn)路(lù)的(de)反(fǎn)應(yìng),只(zhī)要(yào)一(yī)通(tòng)電(diàn)就(jiù)開(kāi)始執行。在(zài)FPGA中(zhōng)也(yě)沒(méi)有(yǒu)for循环(huán)和(hé)while循环(huán)、高(gāo)阻态和(hé)不(bù)定(dìng)态的(de)说(shuō)法。關(guān)于(yú)时(shí)序的(de)功能(néng)都是(shì)通(tòng)过(guò)时(shí)鐘(zhōng)来(lái)实現(xiàn)的(de)。FPGA是(shì)使用(yòng)Verilog語(yǔ)言進(jìn)行編写的(de),Verilog中(zhōng)文(wén)翻譯又叫硬(yìng)件(jiàn)描述語(yǔ)言,不(bù)是(shì)一(yī)種(zhǒng)設計(jì)語(yǔ)言。所(suǒ)以(yǐ)我(wǒ)们(men)在(zài)做一(yī)个(gè)FPGA設計(jì)之前(qián),其实已經(jīng)有(yǒu)硬(yìng)件(jiàn)的(de)電(diàn)路(lù)結構在(zài)头(tóu)腦里(lǐ)面(miàn)了(le),我(wǒ)们(men)只(zhī)是(shì)用(yòng)Verilog語(yǔ)言把它(tā)描述出(chū)来(lái)而(ér)已,絕不(bù)是(shì)用(yòng)Verilog設計(jì)一(yī)門(mén)電(diàn)路(lù)出(chū)来(lái),这(zhè)个(gè)思(sī)維模式是(shì)完全(quán)不(bù)一(yī)樣(yàng)的(de)。
FPGA中(zhōng)是(shì)電(diàn)路(lù)的(de)反(fǎn)應(yìng)
软(ruǎn)件(jiàn)思(sī)維編写的(de)代(dài)碼可(kě)读(dú)性(xìng)較差,而(ér)且和(hé)硬(yìng)件(jiàn)思(sī)維編写的(de)代(dài)碼比起来(lái)運行的(de)时(shí)候更(gèng)耗时(shí)。以(yǐ)下(xià)是(shì)两(liǎng)者(zhě)实現(xiàn)一(yī)个(gè)攝像头(tóu)輸入(rù)模块(kuài)采集功能(néng)的(de)代(dài)碼对(duì)比:
软(ruǎn)件(jiàn)思(sī)維編写的(de)代(dài)碼
明(míng)德揚規範的(de)代(dài)碼
可(kě)以(yǐ)看(kàn)出(chū),两(liǎng)種(zhǒng)思(sī)維的(de)代(dài)碼相形見(jiàn)绌。用(yòng)软(ruǎn)件(jiàn)思(sī)維写出(chū)的(de)代(dài)碼不(bù)僅結構冗长、可(kě)读(dú)性(xìng)差,而(ér)且理解(jiě)起来(lái)也(yě)比較麻(má)煩。同(tóng)樣(yàng)是(shì)实現(xiàn)一(yī)个(gè)攝像头(tóu)輸入(rù)模块(kuài)采集功能(néng),攝像头(tóu)輸入(rù)过(guò)来(lái)有(yǒu)三(sān)个(gè)信(xìn)号(hào):时(shí)鐘(zhōng)、使能(néng)和(hé)數據(jù)。數據(jù)分(fēn)别用(yòng)两(liǎng)个(gè)字(zì)节(jié)的(de)二(èr)進(jìn)制數的(de)值来(lái)表(biǎo)示一(yī)个(gè)像素點(diǎn)中(zhōng)RGB的(de)值,我(wǒ)们(men)主(zhǔ)要(yào)做的(de)就(jiù)是(shì)把这(zhè)两(liǎng)个(gè)值通(tòng)过(guò)一(yī)个(gè)16bit的(de)總(zǒng)線(xiàn)輸入(rù)到(dào)下(xià)一(yī)个(gè)模块(kuài)。软(ruǎn)件(jiàn)思(sī)維就(jiù)是(shì)定(dìng)義一(yī)个(gè)變(biàn)量(liàng)進(jìn)行加一(yī)運算,而(ér)明(míng)德揚規範中(zhōng)就(jiù)用(yòng)一(yī)个(gè)取(qǔ)反(fǎn)就(jiù)解(jiě)決了(le)。这(zhè)只(zhī)是(shì)一(yī)个(gè)簡單的(de)例子,如(rú)果(guǒ)不(bù)够明(míng)顯的(de)話(huà),接下(xià)来(lái)我(wǒ)们(men)来(lái)看(kàn)一(yī)个(gè)稍微複雜一(yī)點(diǎn)的(de)例子。
現(xiàn)在(zài)我(wǒ)们(men)需要(yào)实現(xiàn)一(yī)个(gè)幀頻率的(de)計(jì)算,統計(jì)两(liǎng)秒(miǎo)鐘(zhōng)內(nèi)輸入(rù)幀的(de)个(gè)數,然後(hòu)把得到(dào)的(de)數除以(yǐ)2就(jiù)得到(dào)一(yī)秒(miǎo)鐘(zhōng)的(de)幀頻率。下(xià)面(miàn)我(wǒ)们(men)来(lái)一(yī)起看(kàn)看(kàn)这(zhè)个(gè)功能(néng)用(yòng)两(liǎng)種(zhǒng)不(bù)同(tóng)代(dài)碼实現(xiàn)的(de)區(qū)别:
软(ruǎn)件(jiàn)思(sī)維写出(chū)的(de)代(dài)碼
明(míng)德揚規範的(de)代(dài)碼
大家(jiā)不(bù)難看(kàn)出(chū),用(yòng)软(ruǎn)件(jiàn)思(sī)維写出(chū)的(de)代(dài)碼不(bù)僅繁雜,理解(jiě)起来(lái)也(yě)比較困難,而(ér)明(míng)德揚規範的(de)代(dài)碼則顯得更(gèng)簡潔、高(gāo)效,效率也(yě)是(shì)不(bù)可(kě)同(tóng)日(rì)而(ér)語(yǔ)的(de)。
另(lìng)外(wài)我(wǒ)们(men)還(huán)不(bù)難發(fà)現(xiàn)一(yī)點(diǎn),潘老(lǎo)师(shī)和(hé)明(míng)德揚規範的(de)代(dài)碼結構和(hé)語(yǔ)法非(fēi)常簡單,很多(duō)語(yǔ)法幾(jǐ)乎都只(zhī)是(shì)用(yòng)得到(dào)了(le)if和(hé)else这(zhè)些最(zuì)簡單的(de)語(yǔ)句(jù),所(suǒ)以(yǐ)我(wǒ)们(men)在(zài)学習語(yǔ)法上(shàng)其实不(bù)用(yòng)花費太多(duō)的(de)时(shí)間(jiān),这(zhè)也(yě)为(wèi)我(wǒ)们(men)新手(shǒu)入(rù)門(mén)降低了(le)很多(duō)難度(dù),节(jié)省(shěng)了(le)很多(duō)寶(bǎo)貴的(de)时(shí)間(jiān)。
明(míng)德揚規範的(de)代(dài)碼結構和(hé)語(yǔ)法
另(lìng)外(wài)潘老(lǎo)师(shī)个(gè)人(rén)講課也(yě)比較有(yǒu)特(tè)點(diǎn),虽然潘老(lǎo)师(shī)普通(tòng)話(huà)不(bù)是(shì)特(tè)别标(biāo)準,但这(zhè)并不(bù)影響我(wǒ)们(men)对(duì)于(yú)知識和(hé)思(sī)維的(de)学習。
潘老(lǎo)师(shī)研發(fà)經(jīng)验(yàn)非(fēi)常豐富,曾在(zài)華为(wèi)这(zhè)種(zhǒng)世界500強(qiáng)的(de)公司工作过(guò),做过(guò)很多(duō)項目的(de)開(kāi)發(fà),所(suǒ)以(yǐ)实戰經(jīng)验(yàn)豐富,講的(de)很多(duō)東(dōng)西(xī)实用(yòng)性(xìng)比較強(qiáng)。特(tè)别是(shì)对(duì)于(yú)我(wǒ)这(zhè)種(zhǒng)是(shì)抱着參加競赛的(de)小白来(lái)说(shuō)幫助很大。
我(wǒ)们(men)都知道(dào),想(xiǎng)要(yào)提(tí)要(yào)时(shí)鐘(zhōng)頻率就(jiù)要(yào)減小时(shí)鐘(zhōng)周期(qī),但因(yīn)为(wèi)D觸發(fà)器和(hé)線(xiàn)路(lù)之間(jiān)傳遞的(de)那(nà)部(bù)分(fēn)延时(shí)是(shì)由(yóu)物(wù)理器件(jiàn)決定(dìng)的(de)跟器件(jiàn)的(de)工藝和(hé)材料等因(yīn)素有(yǒu)關(guān),我(wǒ)们(men)沒(méi)辦(bàn)法進(jìn)行修改,我(wǒ)们(men)能(néng)做的(de)就(jiù)是(shì)对(duì)組合邏輯那(nà)部(bù)分(fēn)電(diàn)路(lù)的(de)延时(shí)減到(dào)最(zuì)小。这(zhè)条(tiáo)把延时(shí)減到(dào)最(zuì)小的(de)路(lù)徑也(yě)叫關(guān)鍵路(lù)徑。
關(guān)鍵路(lù)徑
老(lǎo)师(shī)在(zài)一(yī)開(kāi)始就(jiù)講过(guò)在(zài)FPGA里(lǐ)面(miàn)的(de)電(diàn)路(lù)是(shì)一(yī)通(tòng)電(diàn)就(jiù)可(kě)以(yǐ)工作,指的(de)是(shì)对(duì)于(yú)最(zuì)基本(běn)的(de)門(mén)電(diàn)路(lù)而(ér)言的(de)。于(yú)是(shì)老(lǎo)师(shī)就(jiù)舉了(le)他(tā)在(zài)海思(sī)里(lǐ)面(miàn)做項目的(de)一(yī)个(gè)例子:要(yào)把一(yī)个(gè)集成(chéng)電(diàn)路(lù)跑到(dào)2G的(de)頻率!可(kě)想(xiǎng)而(ér)知这(zhè)需要(yào)多(duō)麼(me)小的(de)时(shí)鐘(zhōng)周期(qī),他(tā)们(men)的(de)方(fāng)法就(jiù)是(shì)把所(suǒ)有(yǒu)能(néng)拆的(de)組合邏輯都拆成(chéng)了(le)基本(běn)的(de)門(mén)電(diàn)路(lù),甚至(zhì)連(lián)選擇器他(tā)们(men)也(yě)不(bù)放(fàng)过(guò),只(zhī)为(wèi)了(le)一(yī)步步提(tí)高(gāo)頻率。就(jiù)这(zhè)樣(yàng)一(yī)直(zhí)不(bù)停地(dì)拆,直(zhí)至(zhì)把任何两(liǎng)个(gè)寄存器之間(jiān)的(de)延时(shí)縮小到(dào)最(zuì)小最(zuì)小,從而(ér)达(dá)到(dào)就(jiù)可(kě)以(yǐ)达(dá)到(dào)提(tí)高(gāo)时(shí)鐘(zhōng)頻率的(de)目标(biāo),这(zhè)个(gè)方(fāng)法也(yě)叫流水(shuǐ)線(xiàn)設計(jì)。
減小时(shí)鐘(zhōng)周期(qī)
潘老(lǎo)师(shī)講課還(huán)善于(yú)聯系(xì)現(xiàn)实生(shēng)活進(jìn)行分(fēn)析。在(zài)講到(dào)關(guān)于(yú)狀态機(jī)的(de)設計(jì)时(shí),为(wèi)了(le)将狀态機(jī)設計(jì)的(de)目和(hé)过(guò)程一(yī)目了(le)然,于(yú)是(shì)便聯系(xì)生(shēng)活講到(dào)了(le)我(wǒ)们(men)日(rì)常生(shēng)活中(zhōng)常見(jiàn)的(de)自(zì)動(dòng)售貨機(jī)的(de)設計(jì)。
自(zì)動(dòng)售貨機(jī)的(de)設計(jì)
并且還(huán)就(jiù)这(zhè)个(gè)例子講到(dào)了(le)代(dài)碼設計(jì)的(de)三(sān)段(duàn)論格式,讓設計(jì)代(dài)碼顯得非(fēi)常实用(yòng)高(gāo)效,便于(yú)分(fēn)析。
自(zì)動(dòng)售貨機(jī)代(dài)碼的(de)設計(jì)
總(zǒng)而(ér)言之,看(kàn)完整套(tào)視頻後(hòu),作为(wèi)一(yī)个(gè)小白的(de)我(wǒ)感(gǎn)覺对(duì)于(yú)FPGA有(yǒu)了(le)一(yī)个(gè)大概的(de)了(le)解(jiě)了(le),讓原本(běn)在(zài)門(mén)外(wài)徘徊的(de)我(wǒ)慢(màn)慢(màn)地(dì)就(jiù)走(zǒu)進(jìn)了(le)門(mén)里(lǐ)。在(zài)这(zhè)里(lǐ)常感(gǎn)謝明(míng)德揚科教提(tí)供的(de)这(zhè)个(gè)讓我(wǒ)免費学習的(de)機(jī)会(huì)。
以(yǐ)上(shàng)就(jiù)是(shì)我(wǒ)看(kàn)完明(míng)德揚知識大串講系(xì)列視頻後(hòu)的(de)一(yī)些收(shōu)獲和(hé)總(zǒng)結,希望能(néng)給(gěi)同(tóng)樣(yàng)热(rè)爱(ài)学習的(de)你带(dài)来(lái)一(yī)些啟發(fà)!也(yě)讓我(wǒ)们(men)在(zài)学習FPGA的(de)道(dào)路(lù)上(shàng)共(gòng)同(tóng)進(jìn)步吧!
文(wén)末(mò)給(gěi)大家(jiā)送福利啦!免費贈送《FPGA知識大串講》課程供大家(jiā)学習。
課程鍊(liàn)接:
https://pan.baidu.com/s/1OhNfA6MQYiYpzq1TOUJKlQ
提(tí)取(qǔ)碼:qwl9















