一(yī). 看(kàn)代(dài)碼,建模型
只(zhī)有(yǒu)在(zài)腦海中(zhōng)建立了(le)一(yī)个(gè)个(gè)邏輯模型,理解(jiě)FPGA內(nèi)部(bù)邏輯結構实現(xiàn)的(de)基礎,才能(néng)明(míng)白为(wèi)什麼(me)写Verilog和(hé)写C整體(tǐ)思(sī)路(lù)是(shì)不(bù)一(yī)樣(yàng)的(de),才能(néng)理解(jiě)順序執行語(yǔ)言和(hé)并行執行語(yǔ)言的(de)設計(jì)方(fāng)法上(shàng)的(de)差异(yì)。在(zài)看(kàn)到(dào)一(yī)段(duàn)簡單程序的(de)时(shí)候應(yìng)該想(xiǎng)到(dào)是(shì)什麼(me)樣(yàng)的(de)功能(néng)電(diàn)路(lù)。
二(èr). 用(yòng)數学思(sī)維来(lái)簡化(huà)設計(jì)邏輯
学習FPGA不(bù)僅邏輯思(sī)維很重(zhòng)要(yào),好(hǎo)的(de)數学思(sī)維也(yě)能(néng)讓你的(de)設計(jì)化(huà)繁为(wèi)簡,所(suǒ)以(yǐ)啊,那(nà)些看(kàn)見(jiàn)高(gāo)數就(jiù)头(tóu)疼的(de)童鞋(xié)需要(yào)重(zhòng)視一(yī)下(xià)这(zhè)門(mén)課哦。舉个(gè)簡單的(de)例子,比如(rú)有(yǒu)两(liǎng)个(gè)32bit的(de)數據(jù)X[31:0]與(yǔ)Y[31:0]相乘。
當然,无論Altera還(huán)是(shì)Xilinx都有(yǒu)現(xiàn)成(chéng)的(de)乘法器IP核可(kě)以(yǐ)調用(yòng),这(zhè)也(yě)是(shì)最(zuì)簡單的(de)方(fāng)法,但是(shì)两(liǎng)个(gè)32bit的(de)乘法器将耗費大量(liàng)的(de)資源。那(nà)麼(me)有(yǒu)沒(méi)有(yǒu)节(jié)省(shěng)資源,又不(bù)太複雜的(de)方(fāng)式来(lái)实現(xiàn)呢?我(wǒ)们(men)可(kě)以(yǐ)稍做修改:
将X[31:0]拆成(chéng)两(liǎng)部(bù)分(fēn)X1[15:0]和(hé)X2[15:0],令X1[15:0]=X[31:16],X2[15:0]=X[15:0],則X1左(zuǒ)移16位後(hòu)與(yǔ)X2相加可(kě)以(yǐ)得到(dào)X;同(tóng)樣(yàng)将Y[31:0]拆成(chéng)两(liǎng)部(bù)分(fēn)Y1[15:0]和(hé)Y2[15:0],令 Y1[15:0]=Y[31:16],Y2[15:0]=Y[15:0],則Y1左(zuǒ)移16位後(hòu)與(yǔ)Y2相加可(kě)以(yǐ)得到(dào)Y,則X與(yǔ)Y的(de)相乘可(kě)以(yǐ)轉(zhuǎn)化(huà)为(wèi)X1和(hé)X2 分(fēn)别與(yǔ)Y1和(hé)Y2相乘,这(zhè)樣(yàng)一(yī)个(gè)32bit*32bit的(de)乘法運算轉(zhuǎn)換成(chéng)了(le)四(sì)个(gè)16bit*16bit的(de)乘法運算和(hé)三(sān)个(gè)32bit的(de)加法運算。轉(zhuǎn)換後(hòu)的(de)占用(yòng)資源将会(huì)減少(shǎo)很多(duō),有(yǒu)興趣的(de)童鞋(xié),不(bù)妨綜合一(yī)下(xià)看(kàn)看(kàn),看(kàn)看(kàn)两(liǎng)者(zhě)差多(duō)少(shǎo)。
三(sān). 时(shí)鐘(zhōng)與(yǔ)觸發(fà)器的(de)關(guān)系(xì)
“时(shí)鐘(zhōng)是(shì)时(shí)序電(diàn)路(lù)的(de)控制者(zhě)”这(zhè)句(jù)話(huà)太經(jīng)典了(le),可(kě)以(yǐ)说(shuō)是(shì)FPGA設計(jì)的(de)聖言。FPGA的(de)設計(jì)主(zhǔ)要(yào)是(shì)以(yǐ)时(shí)序電(diàn)路(lù)为(wèi)主(zhǔ),因(yīn)为(wèi)組合邏輯電(diàn)路(lù)再怎麼(me)複雜也(yě)變(biàn)不(bù)出(chū)太多(duō)花樣(yàng),理解(jiě)起来(lái)也(yě)不(bù)沒(méi)太多(duō)困難。
但是(shì)时(shí)序電(diàn)路(lù)就(jiù)不(bù)同(tóng)了(le),它(tā)的(de)所(suǒ)有(yǒu)動(dòng)作都是(shì)在(zài)时(shí)鐘(zhōng)一(yī)拍一(yī)拍的(de)节(jié)奏下(xià)轉(zhuǎn)變(biàn)觸發(fà),可(kě)以(yǐ)说(shuō)时(shí)鐘(zhōng)就(jiù)是(shì)整个(gè)電(diàn)路(lù)的(de)控制者(zhě),控制不(bù)好(hǎo),電(diàn)路(lù)功能(néng)就(jiù)会(huì)混亂。
打(dǎ)个(gè)比方(fāng),时(shí)鐘(zhōng)就(jiù)相當于(yú)人(rén)體(tǐ)的(de)心(xīn)髒,它(tā)每一(yī)次(cì)的(de)跳動(dòng)就(jiù)是(shì)觸發(fà)一(yī)个(gè) CLK,向(xiàng)身(shēn)體(tǐ)的(de)各(gè)个(gè)器官供血(xuè),維持(chí)着機(jī)體(tǐ)的(de)正(zhèng)常運作,每一(yī)个(gè)器官體(tǐ)統正(zhèng)常工作少(shǎo)不(bù)了(le)組織细(xì)胞的(de)構成(chéng),那(nà)麼(me)觸發(fà)器就(jiù)可(kě)以(yǐ)比作基本(běn)單元(yuán)組織细(xì)胞。
时(shí)序邏輯電(diàn)路(lù)的(de)时(shí)鐘(zhōng)是(shì)控制时(shí)序邏輯電(diàn)路(lù)狀态轉(zhuǎn)換的(de)“發(fà)動(dòng)機(jī)”,沒(méi)有(yǒu)它(tā)时(shí)序邏輯電(diàn)路(lù)就(jiù)不(bù)能(néng)正(zhèng)常工作。
因(yīn)为(wèi)时(shí)序邏輯電(diàn)路(lù)主(zhǔ)要(yào)是(shì)利用(yòng)觸發(fà)器存儲電(diàn)路(lù)的(de)狀态,而(ér)觸發(fà)器狀态變(biàn)換需要(yào)时(shí)鐘(zhōng)的(de)上(shàng)升(shēng)或(huò)下(xià)降沿,由(yóu)此(cǐ)可(kě)見(jiàn)时(shí)鐘(zhōng)在(zài)时(shí)序電(diàn)路(lù)中(zhōng)的(de)核心(xīn)作用(yòng)。
最(zuì)後(hòu)簡單说(shuō)一(yī)下(xià)體(tǐ)会(huì)吧,歸結起来(lái)就(jiù)是(shì)多(duō)实踐、多(duō)思(sī)考、多(duō)問(wèn)。实踐出(chū)真(zhēn)知,看(kàn)100遍(biàn)别人(rén)的(de)方(fāng)案(àn)不(bù)如(rú)自(zì)己去(qù)实踐一(yī)下(xià)。实踐的(de)動(dòng)力一(yī)方(fāng)面(miàn)来(lái)自(zì)興趣,一(yī)方(fāng)面(miàn)来(lái)自(zì)壓力。有(yǒu)需求会(huì)容易形成(chéng)壓力,也(yě)就(jiù)是(shì)说(shuō)最(zuì)好(hǎo)能(néng)在(zài)实際的(de)項目開(kāi)發(fà)中(zhōng)鍛煉,而(ér)不(bù)是(shì)为(wèi)了(le)学習而(ér)学習。
温(wēn)馨提(tí)示:明(míng)德揚2023推出(chū)了(le)全(quán)新課程——
邏輯設計(jì)基本(běn)功修煉課,降低学習FPGA門(mén)檻的(de)同(tóng)时(shí),增加了(le)学習的(de)趣味性(xìng)
http://old.mdy-edu.com/chanpinzhongxin/peixunkecheng/2023/0215/1889.html
(點(diǎn)擊→了(le)解(jiě)課程詳情(qíng)☝)
明(míng)德揚除了(le)培訓学習還(huán)有(yǒu)項目承接業务,擅长的(de)項目主(zhǔ)要(yào)包(bāo)括的(de)方(fāng)向(xiàng)有(yǒu)以(yǐ)下(xià)幾(jǐ)个(gè)方(fāng)面(miàn):
1. MIPI視頻拼接
2. SLVS-EC轉(zhuǎn)MIPI接口(kǒu)(IMX472 IMX492)
3. PCIE采集系(xì)統
4. 图(tú)像項目
5. 高(gāo)速多(duō)通(tòng)道(dào)ADDA系(xì)統
6. 基于(yú)FPGA板卡(kǎ)研發(fà)
7. 多(duō)通(tòng)道(dào)高(gāo)靈敏電(diàn)荷放(fàng)大器
8. 射頻前(qián)端
http://old.mdy-edu.com/xmucjie/2023/0201/1865.html
(點(diǎn)擊→了(le)解(jiě)項目承接業务詳情(qíng)☝)
需要(yào)了(le)解(jiě)相關(guān)信(xìn)息可(kě)以(yǐ)聯系(xì):江老(lǎo)师(shī)18022859964(微信(xìn)同(tóng)号(hào))









