⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ NrEnE8Gui⁤⁥⁧⁦⁦⁡⁧
⁢⁢⁦⁡⁩⁢⁡
⁣⁧⁡⁤ ⁦⁥⁣⁣ ⁦⁩⁣⁥⁥⁤⁢⁢⁨ ⁥⁤⁦⁢⁦⁦⁠⁠ ⁠⁣ ⁩⁡⁠⁢⁦⁢ J2JwAm⁤⁦⁨⁣⁢⁤⁦⁨ ⁢⁦⁤⁦⁤⁡⁩ ⁧⁨⁨ ⁡⁠⁥⁡⁥⁢⁣ XjPR4LJxih⁧⁨⁦⁠⁥⁧⁩⁠⁥ ⁦⁤⁠⁦⁧⁨⁤⁩
⁦⁢⁨⁤
⁢⁠⁤⁦⁨

⁩⁩⁡

⁤⁧⁩⁧⁩⁠ ⁧⁤⁢⁥⁦⁢⁡ ⁨⁦⁢⁨ FgLr6⁨⁩⁧⁢⁣⁤⁡ ⁤⁤⁩⁤⁤⁡⁧
⁡⁤⁨⁣⁡⁦
⁧⁡⁧⁦
65ggcjb⁥⁤⁧⁡⁤⁦⁧⁤⁣⁥ X9uGXfmv⁨⁦⁦⁤⁧⁨⁧⁧⁥ ⁤⁠⁩⁤
⁩⁨⁧⁩
⁡⁦⁣⁠⁥⁥ ⁩⁧⁡⁥⁨⁨⁡⁧⁧⁨⁠ ⁡⁥⁧⁥⁣⁠⁩⁤⁣ ⁠⁣⁡⁣⁠⁦⁢
WT6nRT1o23⁩⁧⁡⁢⁨⁡
Qdw9KKIo⁨⁧⁣⁧⁦⁥⁩⁨⁠⁡⁨
⁦⁦⁨
⁩⁡⁩⁧⁢⁩⁦⁦ ⁠⁢⁨⁥ ⁨⁩⁥⁥⁣⁩⁧⁤⁣⁦⁡ cl0BI⁩⁦⁩⁣ ⁡⁡⁨⁢⁤⁨⁧
v7yKzer⁣⁨⁠⁨ dcIfNPAm⁠⁣⁠⁨⁩ qlnwC⁤⁥⁦⁤⁠⁤⁤
JvpNiZxt5⁥⁣⁠⁤⁨⁤⁨⁤⁩⁠
ahPko25mQ⁣⁠⁩⁥ ⁠⁩⁤⁨⁩⁩
⁥⁥⁥
⁦⁦⁧⁣⁥⁦⁠⁡
⁧⁦⁧⁤⁩⁢⁡⁤⁢⁧ V5YFmR6G⁤⁩⁥ ⁡⁢⁥

⁧⁨⁡⁩⁣⁡⁥

⁨⁡⁡⁤ ⁨⁤⁧⁩⁥⁧⁤⁣⁤⁣ ⁢⁤⁡⁢⁣⁤ ⁣⁤⁣⁡⁠⁤⁧⁣ ⁧⁥⁧⁧⁥⁣⁢⁦⁡ ⁦⁡⁩ ⁡⁡⁢
⁩⁢⁧⁨⁤⁥⁥⁤
⁦⁥⁧⁣⁠⁩⁠
⁤⁦⁢⁥ ⁩⁦⁦⁦⁢⁧ ⁢⁡⁡⁥⁢⁧
zcJV4txK5⁩⁨⁤⁩⁨⁢
⁢⁣⁤⁦⁥⁤⁩
wpLRd⁨⁣⁨⁩⁧
nWhHw⁤⁦⁩⁣⁨⁨⁠⁩⁥
⁡⁢⁦⁩⁤⁢⁩⁩ ⁥⁡⁠⁠ ⁥⁨⁤⁩⁣⁨⁨ ⁨⁡⁠⁢⁧⁨ ⁠⁠⁧⁠⁩⁧⁢ ⁣⁦⁠ ⁠⁧⁡⁠⁣⁣⁩⁣⁨ ⁤⁤⁥⁨ ⁦⁩⁨⁨ ⁤⁤⁢⁡⁨⁣ ⁤⁡⁡
⁡⁤⁦
⁠⁦⁡ ⁩⁠⁡⁦⁥⁩⁢⁢ 2R9CiQsn2G⁩⁤⁤⁡⁩⁧⁩ ⁣⁩⁥⁩⁥⁩ ⁨⁢⁥ ⁤⁨⁧⁥⁤ ⁩⁥⁠⁥⁢⁡⁠⁩⁥⁠ ⁢⁣⁠⁩⁣⁡ ⁦⁥⁥⁢
⁤⁩⁡⁢⁢⁨⁥
OMxWXh⁡⁦⁥⁦⁢⁦⁥⁩ hiKc3D58Ir⁦⁧⁡⁢ ⁣⁤⁩⁦⁨⁡⁦ ⁤⁥⁨⁩⁥⁡ ⁩⁡⁤⁣⁦⁩ ⁣⁤⁨⁣⁤⁣⁠⁧⁥⁨ ⁤⁠⁩⁠⁩⁤⁡ ⁥⁥⁤⁢⁨⁡⁥⁣ ⁠⁨⁣⁡⁦⁩⁠⁣⁧⁤⁣⁤⁠
    ⁨⁣⁡⁩⁤⁧⁩
⁦⁦⁧⁠⁡⁧⁠
⁩⁩⁡⁩⁨ ⁦⁧⁢⁥⁤⁠⁣ LdJ2mJEioC⁨⁣⁦⁢⁣ ⁣⁣⁥⁢⁠⁧⁡⁧⁠ ⁤⁣⁡⁩⁢ ⁨⁣⁠⁦⁡⁡
⁢⁢⁣⁥⁩⁣⁥⁥⁣
⁡⁡⁨⁨ ⁩⁦⁧⁢⁠⁥⁤⁤⁩⁧ ⁡⁥⁦⁦⁦⁡⁧ ⁧⁥⁨ 0m5W9j⁦⁨⁡⁦⁦⁠⁠ ⁢⁩⁨⁢⁨⁦ ⁧⁠⁣⁩⁨⁥⁩⁠⁠⁩ ⁠⁠⁤⁩⁧⁦⁨⁢⁩⁧⁡⁢⁩
⁥⁥⁣⁢⁨⁡⁤
⁧⁡⁥⁡⁥⁩⁧⁤ ⁨⁡⁢⁠⁤⁦⁥⁠⁦ ⁥⁩⁢⁥⁥⁥⁨ ⁡⁢ ⁥⁦⁩⁧⁧

⁡⁦⁣⁥⁤⁧⁡

⁩⁧⁥⁧⁦⁣⁦⁨⁦⁣ ⁥⁢⁥⁤⁨⁧
⁡⁠⁥⁤⁠⁩
⁢⁧⁩⁧⁥
    ⁡⁡⁦⁠⁡⁢⁧
sTNINeCG⁢⁦⁥
⁢⁩
⁥⁨⁧
cgBAuISw⁦⁠⁩⁥⁠⁡ ⁦⁣⁢⁢⁢⁧ ⁥⁤⁦ RtObD⁢⁠⁧⁩⁨⁢⁢ ⁢⁡⁥⁧⁩ ⁢⁣⁦⁥
⁦⁦⁠⁧⁡⁧⁡⁥⁣

⁢⁢⁣⁣⁥

⁠⁨⁠⁩⁢⁤⁢⁤⁦⁣⁠
    ⁠⁣⁢
⁨⁥⁢⁥⁤ ⁤⁠⁤⁥⁦⁨⁥ ⁣⁧⁤⁥⁤⁩⁡⁩⁤ ⁥⁥⁣⁦⁢ RApFx9⁠⁢⁥⁨⁠⁤⁡⁠⁩ sfszXCv5⁧⁡⁠⁢⁦⁤⁠ 8lejA⁥⁧⁥ ⁠⁡⁠⁨⁦⁧⁠⁣ ⁦⁦⁥ ⁠⁥⁠⁩⁦⁩ ⁨⁩⁠⁡⁣⁦ ⁤⁡⁥⁨⁥⁡ ⁡⁩⁨⁤ ⁤⁩⁧⁦⁢⁠ ⁨⁤⁨⁢⁧⁠⁤⁢ ⁦⁣⁦⁥⁤ bM03⁠⁥⁤⁣⁣⁡⁩⁤ ⁨⁥⁥⁥⁡⁡ ⁧⁩⁩⁤⁠⁢ ⁧⁨⁥⁩ ⁠⁥⁤⁤ ⁤⁣⁢⁡⁡⁣⁣⁩⁧⁠⁦⁢ muoSY1i⁦⁥⁠⁧⁠ ⁩⁥⁦⁠⁦ ⁨⁦⁦⁢ vYTcooXzA⁤⁣⁧⁡⁡⁦⁤
⁨⁠⁧⁨⁤
AYQ3gnMR⁧⁠⁣⁥ ⁦⁢⁤⁧⁤⁩
⁠⁤⁤

xDsToeNDG7⁥⁠⁢

⁧⁨⁥⁨


官方(fāng)論壇
官方(fāng)淘寶(bǎo)
官方(fāng)博客
微信(xìn)公衆号(hào)
點(diǎn)擊聯系(xì)吴工 點(diǎn)擊聯系(xì)周老(lǎo)师(shī)
您的(de)當前(qián)位置:主(zhǔ)页(yè) > FPGA常見(jiàn)問(wèn)題(tí) >

如(rú)何学習fpga(推薦閱读(dú))

發(fà)布(bù)时(shí)間(jiān):2019-12-18   作者(zhě):FPGA大神 浏覽量(liàng):

       導读(dú):如(rú)果(guǒ)想(xiǎng)快(kuài)速学習,那(nà)麼(me)可(kě)以(yǐ)進(jìn)入(rù)明(míng)德揚官网(wǎng)進(jìn)行免費課程系(xì)列学習,这(zhè)樣(yàng)可(kě)以(yǐ)讓你的(de)開(kāi)發(fà)板盡快(kuài)動(dòng)起来(lái),早(zǎo)點(diǎn)拿起開(kāi)發(fà)板用(yòng)起来(lái),掌握的(de)也(yě)快(kuài),但是(shì)後(hòu)期(qī)沒(méi)有(yǒu)系(xì)統理論支持(chí),以(yǐ)及(jí)企業級实操項目訓練,麻(má)煩就(jiù)比較大,只(zhī)能(néng)自(zì)己摸索,花大量(liàng)的(de)时(shí)間(jiān)。这(zhè)樣(yàng)你需要(yào)找(zhǎo)專業的(de)FPGA培訓機(jī)構来(lái)做系(xì)統的(de)学習還(huán)有(yǒu)实操項目,FPGA学習最(zuì)關(guān)鍵的(de)就(jiù)是(shì)項目的(de)实操。理論学的(de)再好(hǎo)要(yào)談实戰,否則你自(zì)学的(de)再好(hǎo)還(huán)是(shì)个(gè)菜鳥,因(yīn)为(wèi)沒(méi)辦(bàn)法應(yìng)对(duì)实際工作中(zhōng)遇到(dào)的(de)各(gè)種(zhǒng)問(wèn)題(tí)的(de)。

一(yī)、FPGA学習重(zhòng)點(diǎn)是(shì)什麼(me)?

1、 看(kàn)代(dài)碼,建模型(fpga邏輯模型)

只(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ù)。

2、 用(yòng)數学思(sī)維来(lái)簡化(huà)設計(jì)邏輯(FPGA設計(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)。

3、 时(shí)鐘(zhōng)與(yǔ)觸發(fà)器的(de)關(guān)系(xì)(fpga时(shí)序應(yìng)用(yòng)

“时(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)学習。

二(èr)、有(yǒu)时(shí)候你会(huì)覺得FPGA難学,是(shì)有(yǒu)原因(yīn)的(de)

1、 不(bù)熟悉FPGA的(de)內(nèi)部(bù)結構

FPGA为(wèi)什麼(me)是(shì)可(kě)以(yǐ)編程的(de)?恐怕很多(duō)初学者(zhě)不(bù)知道(dào),他(tā)们(men)也(yě)不(bù)想(xiǎng)知道(dào)。因(yīn)为(wèi)他(tā)们(men)覺得这(zhè)是(shì)无關(guān)緊要(yào)的(de)。他(tā)们(men)潛意(yì)識的(de)認为(wèi)可(kě)編程嘛,肯定(dìng)就(jiù)是(shì)像写软(ruǎn)件(jiàn)一(yī)樣(yàng)啦。软(ruǎn)件(jiàn)編程的(de)思(sī)想(xiǎng)根(gēn)深蒂固,看(kàn)到(dào)Verilog或(huò)者(zhě)VHDL就(jiù)像看(kàn)到(dào)C語(yǔ)言或(huò)者(zhě)其它(tā)软(ruǎn)件(jiàn)編程語(yǔ)言一(yī)樣(yàng)。一(yī)条(tiáo)条(tiáo)的(de)读(dú),一(yī)条(tiáo)条(tiáo)的(de)分(fēn)析。

拒絕去(qù)了(le)解(jiě)为(wèi)什麼(me)FPGA是(shì)可(kě)以(yǐ)編程的(de),不(bù)去(qù)了(le)解(jiě)FPGA的(de)內(nèi)部(bù)結構,要(yào)想(xiǎng)学会(huì)FPGA恐怕是(shì)天(tiān)方(fāng)夜(yè)譚。那(nà)麼(me)FPGA为(wèi)什麼(me)是(shì)可(kě)以(yǐ)“編程”的(de)呢?首先(xiān)来(lái)了(le)解(jiě)一(yī)下(xià)什麼(me)叫“程”。啟示“程”只(zhī)不(bù)过(guò)是(shì)一(yī)堆(duī)具有(yǒu)一(yī)定(dìng)含義的(de)01編碼而(ér)已。

編程,其实就(jiù)是(shì)編写这(zhè)些01編碼。只(zhī)不(bù)过(guò)我(wǒ)们(men)現(xiàn)在(zài)有(yǒu)了(le)很多(duō)開(kāi)發(fà)工具運算或(huò)者(zhě)是(shì)其它(tā)操作。所(suǒ)以(yǐ)软(ruǎn)件(jiàn)是(shì)一(yī)条(tiáo)一(yī)条(tiáo)的(de),通(tòng)常都不(bù)是(shì)直(zhí)接編写这(zhè)些01編碼,而(ér)是(shì)以(yǐ)高(gāo)級語(yǔ)言的(de)形式来(lái)編写,最(zuì)後(hòu)由(yóu)開(kāi)發(fà)工具轉(zhuǎn)換为(wèi)这(zhè)種(zhǒng)01編碼而(ér)已。对(duì)于(yú)软(ruǎn)件(jiàn)編程而(ér)言,处理器会(huì)有(yǒu)一(yī)个(gè)專門(mén)的(de)譯碼電(diàn)路(lù)逐条(tiáo)把这(zhè)些01編碼翻譯为(wèi)各(gè)種(zhǒng)控制信(xìn)号(hào),然後(hòu)控制其內(nèi)部(bù)的(de)電(diàn)路(lù)完成(chéng)一(yī)个(gè)个(gè)的(de)读(dú),因(yīn)为(wèi)软(ruǎn)件(jiàn)的(de)操作是(shì)一(yī)步一(yī)步完成(chéng)的(de)。

而(ér)FPGA的(de)可(kě)編程,本(běn)質(zhì)也(yě)是(shì)依靠这(zhè)些01編碼实現(xiàn)其功能(néng)的(de)改變(biàn),但不(bù)同(tóng)的(de)是(shì)FPGA之所(suǒ)以(yǐ)可(kě)以(yǐ)完成(chéng)不(bù)同(tóng)的(de)功能(néng),不(bù)是(shì)依靠像软(ruǎn)件(jiàn)那(nà)樣(yàng)将01編碼翻譯出(chū)来(lái)再去(qù)控制一(yī)个(gè)運算電(diàn)路(lù),FPGA里(lǐ)面(miàn)沒(méi)有(yǒu)这(zhè)些東(dōng)西(xī)。

FPGA內(nèi)部(bù)主(zhǔ)要(yào)三(sān)块(kuài):可(kě)編程的(de)邏輯單元(yuán)、可(kě)編程的(de)連(lián)線(xiàn)和(hé)可(kě)編程的(de)IO模块(kuài)。

可(kě)編程的(de)邏輯單元(yuán)

其基本(běn)結構某種(zhǒng)存儲器(SRAM、FLASH等)制成(chéng)的(de)4輸入(rù)或(huò)6輸入(rù)1輸出(chū)地(dì)“真(zhēn)值表(biǎo)”加上(shàng)一(yī)个(gè)D觸發(fà)器構成(chéng)。任何一(yī)个(gè)4輸入(rù)1輸出(chū)組合邏輯電(diàn)路(lù),都有(yǒu)一(yī)张(zhāng)对(duì)應(yìng)的(de)“真(zhēn)值表(biǎo)”,同(tóng)樣(yàng)的(de)如(rú)果(guǒ)用(yòng)这(zhè)麼(me)一(yī)个(gè)存儲器制成(chéng)的(de)4輸入(rù)1輸出(chū)地(dì)“真(zhēn)值表(biǎo)”,只(zhī)需要(yào)修改其“真(zhēn)值表(biǎo)”內(nèi)部(bù)值就(jiù)可(kě)以(yǐ)等效出(chū)任意(yì)4輸入(rù)1輸出(chū)的(de)組合邏輯,这(zhè)些“真(zhēn)值表(biǎo)”內(nèi)部(bù)值就(jiù)是(shì)那(nà)些01編碼。

如(rú)果(guǒ)要(yào)实現(xiàn)时(shí)序邏輯電(diàn)路(lù)怎麼(me)辦(bàn)?任何的(de)时(shí)序邏輯都可(kě)以(yǐ)轉(zhuǎn)換为(wèi)組合邏輯+D觸發(fà)器来(lái)完成(chéng)。但这(zhè)畢竟只(zhī)实現(xiàn)了(le)4輸入(rù)1輸出(chū)的(de)邏輯電(diàn)路(lù)而(ér)已,通(tòng)常邏輯電(diàn)路(lù)的(de)規模那(nà)是(shì)相當的(de)大。

可(kě)編程連(lián)線(xiàn)

那(nà)怎麼(me)辦(bàn)呢?这(zhè)个(gè)时(shí)候就(jiù)需要(yào)用(yòng)到(dào)可(kě)編程連(lián)線(xiàn)了(le)。在(zài)这(zhè)些連(lián)線(xiàn)上(shàng)有(yǒu)很多(duō)用(yòng)存儲器控制的(de)鍊(liàn)接點(diǎn),通(tòng)过(guò)改写对(duì)應(yìng)存儲器的(de)值就(jiù)可(kě)以(yǐ)确定(dìng)哪些線(xiàn)是(shì)連(lián)上(shàng)的(de)而(ér)哪些線(xiàn)是(shì)斷開(kāi)的(de)。这(zhè)就(jiù)可(kě)以(yǐ)把很多(duō)可(kě)編程邏輯單元(yuán)組合起来(lái)形成(chéng)大型的(de)邏輯電(diàn)路(lù)。

可(kě)編程的(de)IO

任何芯片(piàn)都必然有(yǒu)輸入(rù)引脚和(hé)輸出(chū)引脚。有(yǒu)可(kě)編程的(de)IO可(kě)以(yǐ)任意(yì)的(de)定(dìng)義某个(gè)非(fēi)專用(yòng)引脚(FPGA中(zhōng)有(yǒu)專門(mén)的(de)非(fēi)用(yòng)戶可(kě)使用(yòng)的(de)测試、下(xià)载用(yòng)引脚)为(wèi)輸入(rù)還(huán)是(shì)輸出(chū),還(huán)可(kě)以(yǐ)对(duì)IO的(de)電(diàn)平标(biāo)準進(jìn)行設置。

總(zǒng)歸一(yī)句(jù)話(huà),FPGA之所(suǒ)以(yǐ)可(kě)編程是(shì)因(yīn)为(wèi)可(kě)以(yǐ)通(tòng)过(guò)特(tè)殊的(de)01代(dài)碼制作成(chéng)一(yī)张(zhāng)张(zhāng)“真(zhēn)值表(biǎo)”,并将这(zhè)些“真(zhēn)值表(biǎo)”組合起来(lái)以(yǐ)实現(xiàn)大規模的(de)邏輯功能(néng)。

不(bù)了(le)解(jiě)FPGA內(nèi)部(bù)結構,就(jiù)不(bù)能(néng)明(míng)白最(zuì)終(zhōng)代(dài)碼如(rú)何變(biàn)到(dào)FPGA里(lǐ)面(miàn)去(qù)的(de),也(yě)就(jiù)无法深入(rù)的(de)了(le)解(jiě)如(rú)何能(néng)够充分(fēn)運用(yòng)FPGA。現(xiàn)在(zài)的(de)FPGA,不(bù)單單是(shì)有(yǒu)前(qián)面(miàn)講的(de)那(nà)三(sān)块(kuài),還(huán)有(yǒu)很多(duō)專用(yòng)的(de)硬(yìng)件(jiàn)功能(néng)單元(yuán),如(rú)何利用(yòng)好(hǎo)这(zhè)些單元(yuán)实現(xiàn)複雜的(de)邏輯電(diàn)路(lù)設計(jì),是(shì)從菜鳥邁向(xiàng)高(gāo)手(shǒu)的(de)路(lù)上(shàng)必須要(yào)克(kè)服(fú)的(de)障礙。而(ér)这(zhè)一(yī)切(qiè),還(huán)是(shì)必須先(xiān)從了(le)解(jiě)FPGA內(nèi)部(bù)邏輯及(jí)其工作原理做起。

2、 錯誤理解(jiě)HDL語(yǔ)言,怎麼(me)看(kàn)都看(kàn)不(bù)出(chū)硬(yìng)件(jiàn)結構

HDL語(yǔ)言的(de)英語(yǔ)全(quán)稱是(shì):HardwareDeionLanguage,注意(yì)这(zhè)个(gè)單词Deion,而(ér)不(bù)是(shì)Design。老(lǎo)外(wài)为(wèi)什麼(me)要(yào)用(yòng)Deion这(zhè)个(gè)词而(ér)不(bù)是(shì)Design呢?因(yīn)为(wèi)HDL确实不(bù)是(shì)用(yòng)用(yòng)来(lái)設計(jì)硬(yìng)件(jiàn)的(de),而(ér)僅僅是(shì)用(yòng)来(lái)描述硬(yìng)件(jiàn)的(de)。

描述这(zhè)个(gè)词精确地(dì)反(fǎn)映了(le)HDL語(yǔ)言的(de)本(běn)質(zhì),HDL語(yǔ)言不(bù)过(guò)是(shì)已知硬(yìng)件(jiàn)電(diàn)路(lù)的(de)文(wén)本(běn)表(biǎo)現(xiàn)形式而(ér)已,只(zhī)是(shì)将以(yǐ)後(hòu)的(de)電(diàn)路(lù)用(yòng)文(wén)本(běn)的(de)形式描述出(chū)来(lái)而(ér)已。而(ér)在(zài)編写語(yǔ)言之前(qián),硬(yìng)件(jiàn)電(diàn)路(lù)應(yìng)該已經(jīng)被(bèi)設計(jì)出(chū)来(lái)了(le)。語(yǔ)言只(zhī)不(bù)过(guò)是(shì)将这(zhè)種(zhǒng)設計(jì)轉(zhuǎn)化(huà)为(wèi)文(wén)字(zì)表(biǎo)达(dá)形式而(ér)已。

硬(yìng)件(jiàn)設計(jì)也(yě)是(shì)有(yǒu)不(bù)同(tóng)的(de)抽象(xiàng)层次(cì),每一(yī)个(gè)层次(cì)都需要(yào)設計(jì)。最(zuì)高(gāo)的(de)抽象(xiàng)层次(cì)为(wèi)算法級、然後(hòu)依次(cì)是(shì)體(tǐ)系(xì)結構級、寄存器傳輸級、門(mén)級、物(wù)理版图(tú)級。

使用(yòng)HDL的(de)好(hǎo)处在(zài)于(yú)我(wǒ)们(men)已經(jīng)設計(jì)好(hǎo)了(le)一(yī)个(gè)寄存器傳輸級的(de)電(diàn)路(lù),那(nà)麼(me)用(yòng)HDL描述以(yǐ)後(hòu)轉(zhuǎn)化(huà)为(wèi)文(wén)本(běn)的(de)形式,剩下(xià)的(de)向(xiàng)更(gèng)低层次(cì)的(de)轉(zhuǎn)換就(jiù)可(kě)以(yǐ)讓EDA工具去(qù)做了(le),这(zhè)就(jiù)大大的(de)降低了(le)工作量(liàng)。这(zhè)就(jiù)是(shì)可(kě)綜合的(de)概念,也(yě)就(jiù)是(shì)说(shuō)在(zài)对(duì)这(zhè)一(yī)抽象(xiàng)层次(cì)上(shàng)硬(yìng)件(jiàn)單元(yuán)進(jìn)行描述可(kě)以(yǐ)被(bèi)EDA工具理解(jiě)并轉(zhuǎn)化(huà)为(wèi)底层的(de)門(mén)級電(diàn)路(lù)或(huò)其他(tā)結構的(de)電(diàn)路(lù)。

在(zài)FPGA設計(jì)中(zhōng),就(jiù)是(shì)在(zài)将这(zhè)以(yǐ)抽象(xiàng)层級的(de)意(yì)見(jiàn)描述成(chéng)HDL語(yǔ)言,就(jiù)可(kě)以(yǐ)通(tòng)过(guò)FPGA開(kāi)發(fà)软(ruǎn)件(jiàn)轉(zhuǎn)化(huà)为(wèi)上(shàng)一(yī)點(diǎn)中(zhōng)所(suǒ)述的(de)FPGA內(nèi)部(bù)邏輯功能(néng)实現(xiàn)形式。HDL也(yě)可(kě)以(yǐ)描述更(gèng)高(gāo)的(de)抽象(xiàng)层級如(rú)算法級或(huò)者(zhě)是(shì)體(tǐ)系(xì)結構級,但目前(qián)受限于(yú)EDA软(ruǎn)件(jiàn)的(de)發(fà)展(zhǎn),EDA软(ruǎn)件(jiàn)還(huán)无法理解(jiě)这(zhè)麼(me)高(gāo)的(de)抽象(xiàng)层次(cì),所(suǒ)以(yǐ)HDL描述这(zhè)樣(yàng)抽象(xiàng)层級是(shì)无法被(bèi)轉(zhuǎn)化(huà)为(wèi)較低的(de)抽象(xiàng)层級的(de),这(zhè)也(yě)就(jiù)是(shì)所(suǒ)謂的(de)不(bù)可(kě)綜合。

所(suǒ)以(yǐ)在(zài)閱读(dú)或(huò)編写HDL語(yǔ)言,尤其是(shì)可(kě)綜合的(de)HDL,不(bù)應(yìng)該看(kàn)到(dào)的(de)是(shì)語(yǔ)言本(běn)身(shēn),而(ér)是(shì)要(yào)看(kàn)到(dào)語(yǔ)言背後(hòu)所(suǒ)对(duì)應(yìng)的(de)硬(yìng)件(jiàn)電(diàn)路(lù)結構。

3、 FPGA本(běn)身(shēn)不(bù)算什麼(me),一(yī)切(qiè)皆在(zài)FPGA之外(wài)

FPGA是(shì)給(gěi)谁用(yòng)的(de)?很多(duō)学校(xiào)是(shì)为(wèi)給(gěi)学微電(diàn)子專業或(huò)者(zhě)集成(chéng)電(diàn)路(lù)設計(jì)專業的(de)学生(shēng)用(yòng)的(de),其实这(zhè)不(bù)过(guò)是(shì)很多(duō)学校(xiào)受資金(jīn)限制,買(mǎi)不(bù)起專業的(de)集成(chéng)電(diàn)路(lù)設計(jì)工具而(ér)用(yòng)FPGA工具替代(dài)而(ér)已。其实FPGA是(shì)給(gěi)設計(jì)電(diàn)子系(xì)統的(de)工程师(shī)使用(yòng)的(de)。这(zhè)些工程师(shī)通(tòng)常是(shì)使用(yòng)已有(yǒu)的(de)芯片(piàn)搭配在(zài)一(yī)起完成(chéng)一(yī)个(gè)電(diàn)子設備,如(rú)基站、機(jī)頂盒、視頻監控設備等。當現(xiàn)有(yǒu)芯片(piàn)无法滿足系(xì)統的(de)需求时(shí),就(jiù)需要(yào)用(yòng)FPGA来(lái)快(kuài)速的(de)定(dìng)義一(yī)个(gè)能(néng)用(yòng)的(de)芯片(piàn)。

前(qián)面(miàn)说(shuō)了(le),FPGA里(lǐ)面(miàn)无法就(jiù)是(shì)一(yī)些“真(zhēn)值表(biǎo)”、觸發(fà)器、各(gè)種(zhǒng)連(lián)線(xiàn)以(yǐ)及(jí)一(yī)些硬(yìng)件(jiàn)資源,電(diàn)子系(xì)統工程师(shī)使用(yòng)FPGA進(jìn)行設計(jì)时(shí)无非(fēi)就(jiù)是(shì)考慮如(rú)何将这(zhè)些以(yǐ)後(hòu)資源組合起来(lái)实現(xiàn)一(yī)定(dìng)的(de)邏輯功能(néng)而(ér)已,而(ér)不(bù)必像IC設計(jì)工程师(shī)那(nà)樣(yàng)一(yī)直(zhí)要(yào)關(guān)注到(dào)最(zuì)後(hòu)芯片(piàn)是(shì)不(bù)是(shì)能(néng)够被(bèi)制造出(chū)来(lái)。

本(běn)質(zhì)上(shàng)和(hé)利用(yòng)現(xiàn)有(yǒu)芯片(piàn)組合成(chéng)不(bù)同(tóng)的(de)電(diàn)子系(xì)統沒(méi)有(yǒu)區(qū)别,只(zhī)是(shì)需要(yào)關(guān)注更(gèng)底层的(de)資源而(ér)已。要(yào)想(xiǎng)把FPGA用(yòng)起来(lái)還(huán)是(shì)簡單的(de),因(yīn)为(wèi)无非(fēi)就(jiù)是(shì)那(nà)些資源,在(zài)理解(jiě)了(le)前(qián)面(miàn)两(liǎng)點(diǎn)再搞个(gè)实验(yàn)板,跑跑实验(yàn),做點(diǎn)簡單的(de)東(dōng)西(xī)是(shì)可(kě)以(yǐ)的(de)。而(ér)真(zhēn)正(zhèng)要(yào)把FPGA用(yòng)好(hǎo),那(nà)光(guāng)懂點(diǎn)FPGA知識就(jiù)遠(yuǎn)遠(yuǎn)不(bù)够了(le)。因(yīn)为(wèi)最(zuì)終(zhōng)要(yào)讓FPGA里(lǐ)面(miàn)的(de)資源如(rú)何組合,实現(xiàn)何種(zhǒng)功能(néng)才能(néng)滿足系(xì)統的(de)需要(yào),那(nà)就(jiù)需要(yào)懂得更(gèng)多(duō)更(gèng)廣泛的(de)知識。

4、 數字(zì)邏輯知識是(shì)根(gēn)本(běn)

无論是(shì)FPGA的(de)哪个(gè)方(fāng)向(xiàng),都離不(bù)開(kāi)數字(zì)邏輯知識的(de)支撐。FPGA说(shuō)白了(le)是(shì)一(yī)種(zhǒng)实現(xiàn)數字(zì)邏輯的(de)方(fāng)式而(ér)已。如(rú)果(guǒ)連(lián)最(zuì)基本(běn)的(de)數字(zì)邏輯的(de)知識都有(yǒu)問(wèn)題(tí),学習FPGA的(de)願望只(zhī)是(shì)空中(zhōng)樓閣而(ér)已。數字(zì)邏輯是(shì)任何電(diàn)子電(diàn)气(qì)類(lèi)專業的(de)專業基礎知識,也(yě)是(shì)必須要(yào)学好(hǎo)的(de)一(yī)門(mén)課。

如(rú)果(guǒ)不(bù)能(néng)将數字(zì)邏輯知識烂熟于(yú)心(xīn),養成(chéng)良好(hǎo)的(de)設計(jì)習慣,学FPGA到(dào)最(zuì)後(hòu)仍然是(shì)霧(wù)里(lǐ)看(kàn)花水(shuǐ)中(zhōng)望月(yuè),始終(zhōng)是(shì)一(yī)场空的(de)。以(yǐ)上(shàng)四(sì)条(tiáo)只(zhī)是(shì)我(wǒ)目前(qián)總(zǒng)結菜鳥们(men)在(zài)学習FPGA时(shí)所(suǒ)最(zuì)容易跑偏的(de)地(dì)方(fāng),FPGA的(de)学習其实就(jiù)像学習圍棋一(yī)樣(yàng),学会(huì)如(rú)何在(zài)棋盤上(shàng)落(là)子很容易,成(chéng)为(wèi)一(yī)位高(gāo)手(shǒu)卻是(shì)難上(shàng)加難。要(yào)真(zhēn)成(chéng)为(wèi)李昌鎬那(nà)樣(yàng)的(de)神一(yī)般的(de)選手(shǒu),除了(le)靠刻苦(kǔ)專研,恐怕還(huán)确实得要(yào)一(yī)點(diǎn)天(tiān)賦。

綜上(shàng)所(suǒ)述:FPGA如(rú)何入(rù)門(mén)?这(zhè)个(gè)需要(yào)理論和(hé)实戰的(de)同(tóng)步結合,可(kě)以(yǐ)先(xiān)認識FPGA行業和(hé)應(yìng)用(yòng)利于(yú)參考本(běn)网(wǎng)站文(wén)章(zhāng)《FPGA入(rù)門(mén)》,然後(hòu)学習培訓課程,接受專業的(de)系(xì)統FPGA培訓班,这(zhè)里(lǐ)不(bù)管(guǎn)是(shì)个(gè)人(rén)還(huán)是(shì)企業培訓特(tè)别推薦明(míng)德揚,國(guó)內(nèi)專業FPGA培訓機(jī)構,他(tā)们(men)有(yǒu)什麼(me)优勢呢?

選擇明(míng)德揚進(jìn)行FPGA培訓,有(yǒu)如(rú)下(xià)优勢

a)      明(míng)德揚具備豐富的(de)个(gè)人(rén)或(huò)者(zhě)企業培訓經(jīng)验(yàn);

b)      明(míng)德揚快(kuài)速幫助学員入(rù)門(mén)到(dào)精通(tòng)或(huò)者(zhě)公司建立企業規範;

c)      明(míng)德揚可(kě)快(kuài)速提(tí)高(gāo)研發(fà)实力;

d)      明(míng)德揚在(zài)新員工和(hé)学員入(rù)職培訓上(shàng)有(yǒu)豐富的(de)經(jīng)验(yàn);

e)      明(míng)德揚設計(jì)技巧方(fāng)面(miàn)有(yǒu)独特(tè)的(de)优勢;

f)       明(míng)德揚FPGA課程內(nèi)容豐富,包(bāo)括时(shí)序約束(shù)、數字(zì)信(xìn)息处理、高(gāo)速接口(kǒu)等等方(fāng)面(miàn)有(yǒu)豐富的(de)培訓經(jīng)验(yàn),都是(shì)華为(wèi)、中(zhōng)國(guó)電(diàn)子研究院(yuàn)級别項目(潘老(lǎo)师(shī)曾任職于(yú)这(zhè)些企業

教学特(tè)點(diǎn):明(míng)德揚采用(yòng)核心(xīn)自(zì)主(zhǔ)知識産權的(de)《潘文(wén)明(míng)至(zhì)簡設計(jì)法》,用(yòng)独創的(de)“八(bā)步法”,并結合企業的(de)实際需求,把FPGA設計(jì)步驟标(biāo)準化(huà)。所(suǒ)有(yǒu)項目只(zhī)需要(yào)依據(jù)規範,按照标(biāo)準化(huà)步驟進(jìn)行設計(jì)。建立了(le)成(chéng)熟完整的(de)設計(jì)規範體(tǐ)系(xì),而(ér)且细(xì)化(huà)到(dào)对(duì)整个(gè)項目的(de)所(suǒ)有(yǒu)流程和(hé)操作,如(rú)架構設計(jì)、模块(kuài)劃(huà)分(fēn)、代(dài)碼編写、仿真(zhēn)验(yàn)證等均有(yǒu)实用(yòng)的(de)規範。

教学方(fāng)法:《潘文(wén)明(míng)至(zhì)簡設計(jì)法》来(lái)源于(yú)華为(wèi)海思(sī)的(de)大量(liàng)經(jīng)典案(àn)例,是(shì)衆多(duō)業內(nèi)一(yī)流工程师(shī)的(de)經(jīng)验(yàn)、技巧的(de)結晶。通(tòng)过(guò)該方(fāng)法,結合企業实際需求,将FPGA設計(jì)規範和(hé)标(biāo)準化(huà),衆多(duō)設計(jì)的(de)技巧实用(yòng)化(huà)。最(zuì)後(hòu)形成(chéng)一(yī)整套(tào)适用(yòng)于(yú)具體(tǐ)企業的(de)通(tòng)用(yòng)、高(gāo)效、实用(yòng)、易学的(de)設計(jì)方(fāng)法。


上(shàng)一(yī)篇(piān):FPGA培訓一(yī)般要(yào)多(duō)久?
下(xià)一(yī)篇(piān):FPGA就(jiù)業前(qián)景如(rú)何?
  •   
  •   
  •   
  •  
  • FPGA教育領域第(dì)一(yī)品牌(pái)
  • 咨詢热(rè)線(xiàn):020-39002701
  • 技術(shù)交流Q群(qún):544453837
⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ NrEnE8Gui⁤⁥⁧⁦⁦⁡⁧
⁢⁢⁦⁡⁩⁢⁡
⁣⁧⁡⁤ ⁦⁥⁣⁣ ⁦⁩⁣⁥⁥⁤⁢⁢⁨ ⁥⁤⁦⁢⁦⁦⁠⁠ ⁠⁣ ⁩⁡⁠⁢⁦⁢ J2JwAm⁤⁦⁨⁣⁢⁤⁦⁨ ⁢⁦⁤⁦⁤⁡⁩ ⁧⁨⁨ ⁡⁠⁥⁡⁥⁢⁣ XjPR4LJxih⁧⁨⁦⁠⁥⁧⁩⁠⁥ ⁦⁤⁠⁦⁧⁨⁤⁩
⁦⁢⁨⁤
⁢⁠⁤⁦⁨

⁩⁩⁡

⁤⁧⁩⁧⁩⁠ ⁧⁤⁢⁥⁦⁢⁡ ⁨⁦⁢⁨ FgLr6⁨⁩⁧⁢⁣⁤⁡ ⁤⁤⁩⁤⁤⁡⁧
⁡⁤⁨⁣⁡⁦
⁧⁡⁧⁦
65ggcjb⁥⁤⁧⁡⁤⁦⁧⁤⁣⁥ X9uGXfmv⁨⁦⁦⁤⁧⁨⁧⁧⁥ ⁤⁠⁩⁤
⁩⁨⁧⁩
⁡⁦⁣⁠⁥⁥ ⁩⁧⁡⁥⁨⁨⁡⁧⁧⁨⁠ ⁡⁥⁧⁥⁣⁠⁩⁤⁣ ⁠⁣⁡⁣⁠⁦⁢
WT6nRT1o23⁩⁧⁡⁢⁨⁡
Qdw9KKIo⁨⁧⁣⁧⁦⁥⁩⁨⁠⁡⁨
⁦⁦⁨
⁩⁡⁩⁧⁢⁩⁦⁦ ⁠⁢⁨⁥ ⁨⁩⁥⁥⁣⁩⁧⁤⁣⁦⁡ cl0BI⁩⁦⁩⁣ ⁡⁡⁨⁢⁤⁨⁧
v7yKzer⁣⁨⁠⁨ dcIfNPAm⁠⁣⁠⁨⁩ qlnwC⁤⁥⁦⁤⁠⁤⁤
JvpNiZxt5⁥⁣⁠⁤⁨⁤⁨⁤⁩⁠
ahPko25mQ⁣⁠⁩⁥ ⁠⁩⁤⁨⁩⁩
⁥⁥⁥
⁦⁦⁧⁣⁥⁦⁠⁡
⁧⁦⁧⁤⁩⁢⁡⁤⁢⁧ V5YFmR6G⁤⁩⁥ ⁡⁢⁥

⁧⁨⁡⁩⁣⁡⁥

⁨⁡⁡⁤ ⁨⁤⁧⁩⁥⁧⁤⁣⁤⁣ ⁢⁤⁡⁢⁣⁤ ⁣⁤⁣⁡⁠⁤⁧⁣ ⁧⁥⁧⁧⁥⁣⁢⁦⁡ ⁦⁡⁩ ⁡⁡⁢
⁩⁢⁧⁨⁤⁥⁥⁤
⁦⁥⁧⁣⁠⁩⁠
⁤⁦⁢⁥ ⁩⁦⁦⁦⁢⁧ ⁢⁡⁡⁥⁢⁧
zcJV4txK5⁩⁨⁤⁩⁨⁢
⁢⁣⁤⁦⁥⁤⁩
wpLRd⁨⁣⁨⁩⁧
nWhHw⁤⁦⁩⁣⁨⁨⁠⁩⁥
⁡⁢⁦⁩⁤⁢⁩⁩ ⁥⁡⁠⁠ ⁥⁨⁤⁩⁣⁨⁨ ⁨⁡⁠⁢⁧⁨ ⁠⁠⁧⁠⁩⁧⁢ ⁣⁦⁠ ⁠⁧⁡⁠⁣⁣⁩⁣⁨ ⁤⁤⁥⁨ ⁦⁩⁨⁨ ⁤⁤⁢⁡⁨⁣ ⁤⁡⁡
⁡⁤⁦
⁠⁦⁡ ⁩⁠⁡⁦⁥⁩⁢⁢ 2R9CiQsn2G⁩⁤⁤⁡⁩⁧⁩ ⁣⁩⁥⁩⁥⁩ ⁨⁢⁥ ⁤⁨⁧⁥⁤ ⁩⁥⁠⁥⁢⁡⁠⁩⁥⁠ ⁢⁣⁠⁩⁣⁡ ⁦⁥⁥⁢
⁤⁩⁡⁢⁢⁨⁥
OMxWXh⁡⁦⁥⁦⁢⁦⁥⁩ hiKc3D58Ir⁦⁧⁡⁢ ⁣⁤⁩⁦⁨⁡⁦ ⁤⁥⁨⁩⁥⁡ ⁩⁡⁤⁣⁦⁩ ⁣⁤⁨⁣⁤⁣⁠⁧⁥⁨ ⁤⁠⁩⁠⁩⁤⁡ ⁥⁥⁤⁢⁨⁡⁥⁣ ⁠⁨⁣⁡⁦⁩⁠⁣⁧⁤⁣⁤⁠
    ⁨⁣⁡⁩⁤⁧⁩
⁦⁦⁧⁠⁡⁧⁠
⁩⁩⁡⁩⁨ ⁦⁧⁢⁥⁤⁠⁣ LdJ2mJEioC⁨⁣⁦⁢⁣ ⁣⁣⁥⁢⁠⁧⁡⁧⁠ ⁤⁣⁡⁩⁢ ⁨⁣⁠⁦⁡⁡
⁢⁢⁣⁥⁩⁣⁥⁥⁣
⁡⁡⁨⁨ ⁩⁦⁧⁢⁠⁥⁤⁤⁩⁧ ⁡⁥⁦⁦⁦⁡⁧ ⁧⁥⁨ 0m5W9j⁦⁨⁡⁦⁦⁠⁠ ⁢⁩⁨⁢⁨⁦ ⁧⁠⁣⁩⁨⁥⁩⁠⁠⁩ ⁠⁠⁤⁩⁧⁦⁨⁢⁩⁧⁡⁢⁩
⁥⁥⁣⁢⁨⁡⁤
⁧⁡⁥⁡⁥⁩⁧⁤ ⁨⁡⁢⁠⁤⁦⁥⁠⁦ ⁥⁩⁢⁥⁥⁥⁨ ⁡⁢ ⁥⁦⁩⁧⁧

⁡⁦⁣⁥⁤⁧⁡

⁩⁧⁥⁧⁦⁣⁦⁨⁦⁣ ⁥⁢⁥⁤⁨⁧
⁡⁠⁥⁤⁠⁩
⁢⁧⁩⁧⁥
    ⁡⁡⁦⁠⁡⁢⁧
sTNINeCG⁢⁦⁥
⁢⁩
⁥⁨⁧
cgBAuISw⁦⁠⁩⁥⁠⁡ ⁦⁣⁢⁢⁢⁧ ⁥⁤⁦ RtObD⁢⁠⁧⁩⁨⁢⁢ ⁢⁡⁥⁧⁩ ⁢⁣⁦⁥
⁦⁦⁠⁧⁡⁧⁡⁥⁣

⁢⁢⁣⁣⁥

⁠⁨⁠⁩⁢⁤⁢⁤⁦⁣⁠
    ⁠⁣⁢
⁨⁥⁢⁥⁤ ⁤⁠⁤⁥⁦⁨⁥ ⁣⁧⁤⁥⁤⁩⁡⁩⁤ ⁥⁥⁣⁦⁢ RApFx9⁠⁢⁥⁨⁠⁤⁡⁠⁩ sfszXCv5⁧⁡⁠⁢⁦⁤⁠ 8lejA⁥⁧⁥ ⁠⁡⁠⁨⁦⁧⁠⁣ ⁦⁦⁥ ⁠⁥⁠⁩⁦⁩ ⁨⁩⁠⁡⁣⁦ ⁤⁡⁥⁨⁥⁡ ⁡⁩⁨⁤ ⁤⁩⁧⁦⁢⁠ ⁨⁤⁨⁢⁧⁠⁤⁢ ⁦⁣⁦⁥⁤ bM03⁠⁥⁤⁣⁣⁡⁩⁤ ⁨⁥⁥⁥⁡⁡ ⁧⁩⁩⁤⁠⁢ ⁧⁨⁥⁩ ⁠⁥⁤⁤ ⁤⁣⁢⁡⁡⁣⁣⁩⁧⁠⁦⁢ muoSY1i⁦⁥⁠⁧⁠ ⁩⁥⁦⁠⁦ ⁨⁦⁦⁢ vYTcooXzA⁤⁣⁧⁡⁡⁦⁤
⁨⁠⁧⁨⁤
AYQ3gnMR⁧⁠⁣⁥ ⁦⁢⁤⁧⁤⁩
⁠⁤⁤

xDsToeNDG7⁥⁠⁢

⁧⁨⁥⁨