⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ 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ī)

光(guāng)纤項目系(xì)統概述

發(fà)布(bù)时(shí)間(jiān):2023-06-30   作者(zhě):huanglina 浏覽量(liàng):

光(guāng)纤項目系(xì)統概述

第(dì)一(yī)章(zhāng) 項目背景

光(guāng)纤項目是(shì)明(míng)德揚承接自(zì)某研究所(suǒ)的(de)項目。該項目功能(néng)是(shì)接收(shōu)4路(lù)光(guāng)纤數據(jù),經(jīng)过(guò)內(nèi)部(bù)DDR3緩存後(hòu),通(tòng)过(guò)PCIE接口(kǒu)上(shàng)送到(dào)電(diàn)腦保存。其中(zhōng)光(guāng)纤采集到(dào)數據(jù)後(hòu),需要(yào)做一(yī)定(dìng)的(de)算法处理,該算法处理由(yóu)客戶实現(xiàn),明(míng)德揚保留易修改、易插入(rù)的(de)模块(kuài)接口(kǒu)。

該項目实質(zhì)就(jiù)是(shì)一(yī)个(gè)數據(jù)采集卡(kǎ)功能(néng):采集到(dào)高(gāo)速數據(jù)并保存到(dào)電(diàn)腦本(běn)地(dì),具有(yǒu)速率高(gāo)、數據(jù)量(liàng)大的(de)特(tè)點(diǎn)。采集卡(kǎ)項目均可(kě)參考此(cǐ)方(fāng)案(àn)实現(xiàn)。

該項目使用(yòng)到(dào)光(guāng)纤接口(kǒu),可(kě)以(yǐ)学習到(dào)光(guāng)纤IP核的(de)應(yìng)用(yòng)。

本(běn)項目可(kě)以(yǐ)通(tòng)过(guò)PCIE,实現(xiàn)对(duì)FPGA的(de)配置。特(tè)别是(shì)实現(xiàn)了(le)可(kě)分(fēn)别配置和(hé)读(dú)取(qǔ)1路(lù)接收(shōu)FPGA4路(lù)發(fà)送FPGA寄存器的(de)功能(néng)。關(guān)于(yú)上(shàng)位機(jī),如(rú)DSPARM、單片(piàn)機(jī)、電(diàn)腦 ,如(rú)何與(yǔ)FPGA通(tòng)信(xìn)交互的(de),可(kě)以(yǐ)參考此(cǐ)方(fāng)案(àn)。(在(zài)优化(huà)版本(běn)中(zhōng),也(yě)提(tí)供了(le)通(tòng)过(guò)串口(kǒu)配置的(de)方(fāng)案(àn),即将PCIE配置改为(wèi)用(yòng)串口(kǒu)配置。)

PCIE部(bù)分(fēn)不(bù)作講解(jiě),要(yào)注意(yì)。

該項目有(yǒu)对(duì)應(yìng)的(de)視頻專題(tí)課,并提(tí)供代(dài)碼学習。

第(dì)二(èr)章(zhāng) 系(xì)統功能(néng)和(hé)架構

上(shàng)图(tú)是(shì)本(běn)項目整體(tǐ)的(de)簡图(tú),包(bāo)括4个(gè)發(fà)送板、1个(gè)接收(shōu)板和(hé)PC電(diàn)腦。其中(zhōng)本(běn)項目主(zhǔ)要(yào)实現(xiàn)提(tí)接收(shōu)板功能(néng)。

接收(shōu)板包(bāo)括四(sì)片(piàn)的(de)DDR3、一(yī)个(gè)PCIE接口(kǒu)、四(sì)路(lù)光(guāng)纤接口(kǒu)。當然接收(shōu)板上(shàng)還(huán)有(yǒu)很多(duō)其他(tā)接口(kǒu),但是(shì)对(duì)于(yú)我(wǒ)们(men)的(de)項目来(lái)講,主(zhǔ)要(yào)的(de)就(jiù)是(shì)这(zhè)三(sān)種(zhǒng)接口(kǒu)。

接收(shōu)卡(kǎ)通(tòng)过(guò)PCIE接口(kǒu),直(zhí)接插到(dào)PC的(de)插槽上(shàng),跟PC進(jìn)行相連(lián)

發(fà)送板可(kě)以(yǐ)通(tòng)过(guò)光(guāng)纤口(kǒu)發(fà)送數據(jù),從接收(shōu)板看(kàn)来(lái),可(kě)以(yǐ)認为(wèi)外(wài)部(bù)有(yǒu)四(sì)路(lù)光(guāng)纤口(kǒu),接受这(zhè)四(sì)種(zhǒng)光(guāng)纤的(de)數據(jù)。

本(běn)項目中(zhōng),四(sì)路(lù)發(fà)送板,每一(yī)个(gè)發(fà)送板其实它(tā)是(shì)一(yī)个(gè)AD采集卡(kǎ)。每个(gè)發(fà)送板它(tā)大概有(yǒu)16路(lù)的(de)AD的(de)采集,采集好(hǎo)數據(jù)彙總(zǒng)通(tòng)过(guò)光(guāng)纤送到(dào)这(zhè)个(gè)接收(shōu)卡(kǎ)。

接收(shōu)卡(kǎ)從光(guāng)纤接受到(dào)數據(jù)後(hòu),把數據(jù)彙聚起来(lái),做适當的(de)处理後(hòu),将數據(jù)保存到(dào)DDR3中(zhōng),等待被(bèi)读(dú)出(chū)送給(gěi)PCIE接口(kǒu),然後(hòu)上(shàng)送給(gěi)PC電(diàn)腦 ,这(zhè)个(gè)就(jiù)是(shì)我(wǒ)们(men)整體(tǐ)的(de)功能(néng)。

 

第(dì)三(sān)章(zhāng) FPGA架構

 

上(shàng)图(tú)是(shì)FPGA的(de)內(nèi)部(bù)实現(xiàn)架構。根(gēn)據(jù)功能(néng),可(kě)以(yǐ)大概劃(huà)分(fēn)成(chéng)光(guāng)纤功能(néng)、存儲控制功能(néng)、PCIE功能(néng)三(sān)大部(bù)分(fēn)。

 

第(dì)1节(jié) 光(guāng)纤功能(néng)

本(běn)項目通(tòng)过(guò)光(guāng)纤模块(kuài),实現(xiàn)接收(shōu)板和(hé)發(fà)送板的(de)通(tòng)信(xìn),通(tòng)信(xìn)速率是(shì)2.5Gbps,采用(yòng)XILINX的(de)官方(fāng)IP核:7 Series FPGAs Transceivers Wizard(以(yǐ)下(xià)簡稱:GTX IP核)。關(guān)于(yú)該IP核的(de)設置,有(yǒu)興趣的(de)读(dú)者(zhě),可(kě)以(yǐ)閱读(dú)我(wǒ)们(men)之前(qián)發(fà)表(biǎo)的(de)文(wén)章(zhāng)《XILINX(K7)和(hé)CycloneV之間(jiān)的(de)光(guāng)纤通(tòng)信(xìn)設置》一(yī)文(wén)。

由(yóu)于(yú)使用(yòng)到(dào)4路(lù)光(guāng)纤,在(zài)設置高(gāo)速收(shōu)發(fà)器IP核 时(shí),注意(yì)要(yào)生(shēng)成(chéng)4路(lù)通(tòng)道(dào)。當生(shēng)成(chéng)後(hòu),每路(lù)通(tòng)道(dào)給(gěi)用(yòng)戶側的(de)數據(jù)發(fà)送接口(kǒu)只(zhī)有(yǒu)两(liǎng)个(gè):發(fà)送數據(jù)tx_data和(hé)K碼指示tx_kchar。同(tóng)理,接收(shōu)方(fāng)向(xiàng)則是(shì)rx_data和(hé)rx_kchar

我(wǒ)们(men)注意(yì)到(dào),數據(jù)接口(kǒu)只(zhī)有(yǒu)數據(jù)和(hé)K碼指示,而(ér)不(bù)是(shì)明(míng)德揚常見(jiàn)的(de)包(bāo)文(wén)形式。事(shì)实上(shàng),两(liǎng)个(gè)較高(gāo)級的(de)設備之間(jiān)通(tòng)信(xìn),一(yī)般就(jiù)是(shì)采用(yòng)包(bāo)文(wén)的(de)形式,一(yī)次(cì)發(fà)一(yī)組數據(jù),每組數據(jù)可(kě)以(yǐ)达(dá)到(dào)幾(jǐ)千(qiān)字(zì)节(jié)。为(wèi)实現(xiàn)分(fēn)組發(fà)送,特(tè)自(zì)定(dìng)義了(le)光(guāng)纤協議层包(bāo)文(wén)格式,如(rú)下(xià)表(biǎo)。

 

包(bāo)文(wén)头(tóu)

數據(jù)长度(dù)

校(xiào)验(yàn)和(hé)

无效值

數據(jù)

16

16

16

16

數據(jù)长度(dù)个(gè)數據(jù)

 

上(shàng)面(miàn)是(shì)光(guāng)纤協議层的(de)包(bāo)文(wén)格式,其有(yǒu)一(yī)个(gè)16位的(de)包(bāo)文(wén)头(tóu)(固定(dìng)为(wèi)0x55d5),一(yī)个(gè)16位的(de)长度(dù)指示(指示後(hòu)面(miàn)數據(jù)的(de)长度(dù),單位为(wèi)字(zì)节(jié)),一(yī)个(gè)16位的(de)校(xiào)验(yàn)碼,一(yī)个(gè)16位的(de)无效值,以(yǐ)及(jí)數據(jù)。

在(zài)FPGA內(nèi)部(bù)架構图(tú)中(zhōng)的(de)光(guāng)纤打(dǎ)包(bāo)模块(kuài),當從上(shàng)遊模块(kuài)收(shōu)到(dào)一(yī)个(gè)包(bāo)文(wén)时(shí),就(jiù)計(jì)算該包(bāo)文(wén)的(de)长度(dù)、校(xiào)验(yàn)和(hé),然後(hòu)産生(shēng)包(bāo)文(wén)头(tóu)+數據(jù)长度(dù)+校(xiào)验(yàn)和(hé)+无效值字(zì)段(duàn),再加上(shàng)輸入(rù)的(de)包(bāo)文(wén)數據(jù),送給(gěi)GXT IP核。GTX IP核再通(tòng)过(guò)光(guāng)纤送給(gěi)發(fà)送板。

同(tóng)理,發(fà)送板那(nà)里(lǐ),也(yě)應(yìng)該有(yǒu)一(yī)个(gè)打(dǎ)包(bāo)模块(kuài),其要(yào)發(fà)送數據(jù)給(gěi)接收(shōu)卡(kǎ),就(jiù)会(huì)将包(bāo)文(wén)封(fēng)裝(zhuāng)成(chéng)上(shàng)面(miàn)格式,再通(tòng)过(guò)光(guāng)纤傳輸到(dào)接收(shōu)板。接收(shōu)板從GTX IP核接收(shōu)數據(jù),在(zài)光(guāng)纤解(jiě)包(bāo)模块(kuài)中(zhōng),搜索包(bāo)文(wén)头(tóu)55D5。如(rú)果(guǒ)搜索到(dào)包(bāo)文(wén)头(tóu),下(xià)一(yī)狀态就(jiù)獲取(qǔ)數據(jù)长度(dù)和(hé)校(xiào)验(yàn)和(hé)。根(gēn)據(jù)數據(jù)长度(dù),接收(shōu)後(hòu)面(miàn)的(de)數據(jù)。邊(biān)接收(shōu)數據(jù)邊(biān)計(jì)數數據(jù)的(de)校(xiào)验(yàn)和(hé)。當接收(shōu)數據(jù)完畢,校(xiào)验(yàn)和(hé)也(yě)計(jì)算完了(le)。这(zhè)个(gè)时(shí)候,就(jiù)对(duì)比收(shōu)到(dào)的(de)校(xiào)验(yàn)和(hé)與(yǔ)計(jì)算的(de)校(xiào)验(yàn)和(hé),是(shì)否相同(tóng)。如(rú)果(guǒ)相同(tóng),说(shuō)明(míng)包(bāo)文(wén)是(shì)正(zhèng)确的(de);如(rú)果(guǒ)不(bù)同(tóng),说(shuō)明(míng)包(bāo)文(wén)是(shì)錯誤的(de)。

上(shàng)面(miàn)就(jiù)是(shì)光(guāng)纤的(de)基本(běn)功能(néng),主(zhǔ)要(yào)涉及(jí)到(dào)光(guāng)纤打(dǎ)包(bāo)、光(guāng)纤解(jiě)包(bāo)等。

事(shì)实上(shàng),如(rú)果(guǒ)光(guāng)纤采用(yòng)的(de)是(shì)Aurora協議,那(nà)麼(me)推薦采用(yòng)另(lìng)一(yī)个(gè)IP核:Aurora 8B10B。这(zhè)个(gè)IP核使用(yòng)AXI4-stream總(zǒng)線(xiàn)接口(kǒu),并且已經(jīng)是(shì)包(bāo)文(wén)的(de)格式。因(yīn)此(cǐ)使用(yòng)起来(lái)更(gèng)加簡單。

 

第(dì)2节(jié) 存儲控制功能(néng)

 

本(běn)項目接收(shōu)光(guāng)纤數據(jù)後(hòu),首先(xiān)会(huì)保存到(dào)DDR3中(zhōng),等存够一(yī)定(dìng)數據(jù)时(shí),读(dú)出(chū)數據(jù),送到(dào)PCIE

接收(shōu)板一(yī)共(gòng)有(yǒu)4片(piàn)DDR3,每片(piàn)DDR3的(de)數據(jù)位宽(kuān)是(shì)16位。要(yào)注意(yì)的(de)是(shì),虽然有(yǒu)4片(piàn)DDR4,但这(zhè)4片(piàn)DDR3不(bù)是(shì)各(gè)自(zì)独立工作的(de)。在(zài)硬(yìng)件(jiàn)設計(jì)时(shí),将DDR3的(de)地(dì)址線(xiàn)、控制線(xiàn)共(gòng)用(yòng),數據(jù)線(xiàn)分(fēn)開(kāi)。也(yě)就(jiù)是(shì)说(shuō),4片(piàn)DDR3同(tóng)时(shí)進(jìn)行读(dú)写,对(duì)FPGA来(lái)说(shuō),这(zhè)相當于(yú)一(yī)片(piàn)64位的(de)DDR3

由(yóu)于(yú)光(guāng)纤數據(jù)一(yī)共(gòng)有(yǒu)4路(lù),并且4路(lù)數據(jù)都同(tóng)时(shí)过(guò)来(lái)的(de),但只(zhī)有(yǒu)一(yī)片(piàn)64位的(de)DDR3,如(rú)果(guǒ)不(bù)做处理,必須会(huì)有(yǒu)沖突。所(suǒ)以(yǐ)必須要(yào)做一(yī)个(gè)調度(dù)模块(kuài):4路(lù)光(guāng)纤數據(jù),首先(xiān)会(huì)保存到(dào)內(nèi)部(bù)的(de)写FIFO中(zhōng);調度(dù)模块(kuài)判斷4路(lù)FIFO的(de)空閑情(qíng)況,從而(ér)決定(dìng)读(dú)取(qǔ)哪一(yī)路(lù)數據(jù),存到(dào)DDR3中(zhōng)。沒(méi)有(yǒu)被(bèi)读(dú)取(qǔ)的(de),則繼續保存在(zài)FIFO中(zhōng),直(zhí)到(dào)被(bèi)調度(dù)出(chū)来(lái)。

在(zài)設計(jì)調度(dù)模块(kuài)时(shí),要(yào)注意(yì)如(rú)下(xià)幾(jǐ)點(diǎn):

a. 調度(dù)的(de)优先(xiān)級

一(yī)共(gòng)有(yǒu)4路(lù)數據(jù),那(nà)麼(me)調度(dù)器的(de)优先(xiān)級如(rú)何選擇,即如(rú)果(guǒ)4路(lù)中(zhōng)有(yǒu)多(duō)于(yú)1路(lù)均同(tóng)时(shí)有(yǒu)數據(jù),那(nà)麼(me)該如(rú)何選擇哪一(yī)路(lù)。例如(rú),您可(kě)以(yǐ)指定(dìng)第(dì)0~3路(lù)优先(xiān)級依次(cì)由(yóu)高(gāo)變(biàn)低,即當第(dì)0路(lù)有(yǒu)數據(jù),一(yī)定(dìng)選擇0路(lù);當第(dì)0路(lù)沒(méi)有(yǒu)數據(jù)了(le),再決定(dìng)看(kàn)下(xià)一(yī)路(lù)。當采用(yòng)此(cǐ)方(fāng)式时(shí),就(jiù)要(yào)考慮是(shì)否存在(zài)如(rú)下(xià)情(qíng)況:第(dì)0路(lù)一(yī)直(zhí)有(yǒu)數據(jù),導致(zhì)其他(tā)路(lù)一(yī)直(zhí)无法读(dú)出(chū)送到(dào)DDR3呢,这(zhè)是(shì)要(yào)思(sī)考的(de)問(wèn)題(tí)。

b. 調度(dù)的(de)單位

調度(dù)的(de)單位是(shì)指:選擇了(le)一(yī)路(lù)數據(jù)後(hòu),会(huì)读(dú)取(qǔ)多(duō)少(shǎo)个(gè)數據(jù)才結束(shù)。可(kě)供選擇是(shì)1个(gè)數據(jù)、多(duō)个(gè)數據(jù),或(huò)者(zhě)是(shì)读(dú)到(dào)FIFO空为(wèi)止。这(zhè)里(lǐ)要(yào)思(sī)考的(de)是(shì),1个(gè)數據(jù)最(zuì)靈活,但是(shì)最(zuì)繁瑣,会(huì)出(chū)現(xiàn)頻率調度(dù)的(de)情(qíng)況;如(rú)果(guǒ)是(shì)越多(duō)的(de)數據(jù),調度(dù)沒(méi)有(yǒu)那(nà)麼(me)繁瑣了(le),但也(yě)意(yì)味着写FIFO要(yào)臨时(shí)存比較多(duō)的(de)數據(jù)才行,所(suǒ)以(yǐ)这(zhè)里(lǐ)要(yào)有(yǒu)一(yī)个(gè)平衡。

c. 調度(dù)的(de)起啟水(shuǐ)線(xiàn)

調度(dù)的(de)起啟水(shuǐ)線(xiàn):當FIFO存够多(duō)少(shǎo)个(gè)數據(jù),才可(kě)以(yǐ)被(bèi)調度(dù)器調度(dù)。这(zhè)个(gè)是(shì)要(yào)考慮DDR的(de)写速度(dù)、光(guāng)纤的(de)輸入(rù)速度(dù)、以(yǐ)及(jí)調度(dù)單位的(de)。例如(rú),如(rú)果(guǒ)調度(dù)單位为(wèi)1024个(gè)數據(jù),起啟水(shuǐ)線(xiàn)100,當DDR写速度(dù)比光(guāng)纤速度(dù)快(kuài)时(shí),就(jiù)可(kě)能(néng)会(huì)存在(zài)DDR写到(dào)一(yī)半时(shí),新的(de)數據(jù)還(huán)沒(méi)有(yǒu)来(lái)的(de)情(qíng)況。

當然,最(zuì)省(shěng)事(shì)的(de),就(jiù)是(shì)将起啟水(shuǐ)線(xiàn)設置为(wèi)跟調度(dù)單位一(yī)樣(yàng),这(zhè)樣(yàng)就(jiù)絕对(duì)不(bù)存在(zài)問(wèn)題(tí),但这(zhè)会(huì)存在(zài)一(yī)定(dìng)的(de)浪費。为(wèi)什麼(me)呢?我(wǒ)们(men)設想(xiǎng)如(rú)下(xià)场景,當往DDR写數據(jù)的(de)同(tóng)时(shí),光(guāng)纤也(yě)会(huì)同(tóng)时(shí)有(yǒu)新的(de)數據(jù)送到(dào)写FIFO。我(wǒ)们(men)可(kě)以(yǐ)計(jì)算DDR的(de)写速度(dù),以(yǐ)及(jí)新數據(jù)輸入(rù)速度(dù),根(gēn)據(jù)速度(dù)差,得到(dào)起啟水(shuǐ)線(xiàn)。最(zuì)理想(xiǎng)的(de)情(qíng)況,就(jiù)是(shì)當最(zuì)後(hòu)一(yī)个(gè)數據(jù)写到(dào)FIFO时(shí),刚好(hǎo)也(yě)要(yào)将該數據(jù)写到(dào)DDR,然後(hòu)調度(dù)結束(shù)。这(zhè)樣(yàng)做的(de)好(hǎo)处,就(jiù)是(shì)将FIFO的(de)深度(dù)設置为(wèi)最(zuì)适合的(de)大小,從而(ér)节(jié)省(shěng)資源。

在(zài)FPGA領域,貌似還(huán)不(bù)能(néng)理解(jiě)FIFO深度(dù)多(duō)一(yī)點(diǎn)或(huò)者(zhě)少(shǎo)一(yī)點(diǎn)有(yǒu)什麼(me)所(suǒ)謂。但在(zài)芯片(piàn)設計(jì)領域則是(shì)經(jīng)常考慮的(de)點(diǎn)。笔(bǐ)者(zhě)在(zài)做芯片(piàn)設計(jì)时(shí),經(jīng)常要(yào)花很多(duō)精力去(qù)計(jì)算出(chū)最(zuì)省(shěng)資源的(de)方(fāng)案(àn)。其实这(zhè)也(yě)说(shuō)明(míng)了(le)FPGA設計(jì)和(hé)芯片(piàn)設計(jì)的(de)區(qū)别,區(qū)别是(shì)做得更(gèng)细(xì)、設計(jì)得更(gèng)好(hǎo)。

by the way,就(jiù)如(rú)我(wǒ)一(yī)直(zhí)在(zài)強(qiáng)調的(de),FPGA和(hé)芯片(piàn)是(shì)一(yī)个(gè)講究做细(xì)节(jié)的(de)技術(shù),很多(duō)人(rén)可(kě)以(yǐ)做很粗(cū)的(de)功能(néng),但很少(shǎo)人(rén)可(kě)以(yǐ)做很细(xì)的(de)功能(néng),例如(rú)图(tú)像顯示很多(duō)人(rén)都会(huì),但用(yòng)較少(shǎo)資源来(lái)实現(xiàn)图(tú)像顯示,那(nà)就(jiù)不(bù)会(huì)了(le)。

第(dì)3节(jié) PCIE功能(néng)

 

PCIE实現(xiàn)FPGA與(yǔ)上(shàng)位機(jī)通(tòng)信(xìn)的(de)功能(néng),通(tòng)信(xìn)包(bāo)文(wén)有(yǒu)两(liǎng)種(zhǒng),一(yī)種(zhǒng)是(shì)業务包(bāo)文(wén),一(yī)種(zhǒng)是(shì)配置包(bāo)文(wén)。

配置包(bāo)文(wén)是(shì)用(yòng)来(lái)对(duì)接收(shōu)卡(kǎ)、發(fà)送卡(kǎ)內(nèi)的(de)寄存器读(dú)写的(de)包(bāo)文(wén)。例如(rú)上(shàng)位機(jī)对(duì)接收(shōu)卡(kǎ)通(tòng)道(dào)的(de)開(kāi)戶和(hé)關(guān)閉,对(duì)發(fà)送卡(kǎ)的(de)數據(jù)收(shōu)發(fà)控制、上(shàng)位機(jī)读(dú)取(qǔ)接收(shōu)卡(kǎ)的(de)內(nèi)部(bù)狀态等,均是(shì)由(yóu)配置包(bāo)文(wén)来(lái)实現(xiàn)的(de)。

業务包(bāo)文(wén)是(shì)指發(fà)送卡(kǎ)里(lǐ)的(de)AD采集的(de)數據(jù),是(shì)真(zhēn)正(zhèng)上(shàng)位機(jī)要(yào)保存的(de)數據(jù)。

下(xià)面(miàn)上(shàng)位機(jī)和(hé)FPGA的(de)通(tòng)信(xìn)格式。

包(bāo)文(wén)類(lèi)型

16b

读(dú)写屬性(xìng)

(1b)

板卡(kǎ)編号(hào)

15b

寄存器地(dì)址

16b

寄存器數據(jù)

32b

无效填充

48b

 

Ø 包(bāo)文(wén)類(lèi)型:用(yòng)来(lái)指示是(shì)業务包(bāo)文(wén)還(huán)是(shì)配置包(bāo)文(wén)。業务包(bāo)文(wén)的(de)包(bāo)文(wén)類(lèi)型为(wèi)16'h55AA;配置包(bāo)文(wén)的(de)類(lèi)型为(wèi)16'hF8F8

Ø 读(dú)写屬于(yú):用(yòng)于(yú)上(shàng)位機(jī)指示对(duì)FPGA的(de)寄存器進(jìn)行写,還(huán)是(shì)读(dú)其值 。

Ø 板卡(kǎ)編号(hào):用(yòng)来(lái)指示當前(qián)包(bāo)文(wén)是(shì)对(duì)哪个(gè)板卡(kǎ)進(jìn)行配置,可(kě)以(yǐ)理解(jiě)为(wèi)設備地(dì)址。例如(rú)是(shì)对(duì)接收(shōu)卡(kǎ)或(huò)具體(tǐ)的(de)一(yī)个(gè)發(fà)送卡(kǎ)進(jìn)行寄存器读(dú)取(qǔ)。編号(hào)为(wèi)0~3表(biǎo)示發(fà)送板0~3,編号(hào)4为(wèi)接收(shōu)卡(kǎ)。

Ø 寄存器地(dì)址:这(zhè)个(gè)可(kě)以(yǐ)理解(jiě) 为(wèi)寄存器地(dì)址。

Ø 寄存器數據(jù):对(duì)寄存器配置的(de)數據(jù),如(rú)果(guǒ)是(shì)读(dú)的(de)話(huà),則填0

 

上(shàng)位機(jī)當要(yào)配置或(huò)者(zhě)读(dú)取(qǔ)寄存器时(shí),会(huì)按格式産生(shēng)一(yī)个(gè)配置包(bāo)文(wén),通(tòng)过(guò)PCIE傳給(gěi)FPGAFPGA的(de)內(nèi)部(bù)有(yǒu)一(yī)个(gè)PCIE IP核。該IP核支持(chí)AXI4并且是(shì)包(bāo)文(wén)形式,從PCIE里(lǐ)接收(shōu)到(dào)包(bāo)文(wén)數據(jù),并送往協議解(jiě)析模块(kuài)。

協議解(jiě)析模块(kuài)分(fēn)析該包(bāo)文(wén),特(tè)别是(shì)对(duì)包(bāo)文(wén)編号(hào)進(jìn)行識别。根(gēn)據(jù)編号(hào),如(rú)果(guǒ)是(shì)接收(shōu)卡(kǎ)配置包(bāo)文(wén),則直(zhí)接对(duì)內(nèi)部(bù)的(de)寄存器進(jìn)行读(dú)取(qǔ);如(rú)果(guǒ)是(shì)某一(yī)路(lù)發(fà)送板配置包(bāo)文(wén),則将該包(bāo)文(wén)轉(zhuǎn)發(fà)到(dào)該路(lù)光(guāng)纤接口(kǒu)。

如(rú)果(guǒ)是(shì)读(dú)取(qǔ)寄存器數據(jù),則会(huì)将配置包(bāo)文(wén)返回(huí)給(gěi)上(shàng)位機(jī),具體(tǐ)路(lù)徑是(shì):協議解(jiě)析模块(kuài)处理後(hòu),将寄存器數據(jù)補充到(dào)包(bāo)文(wén)的(de)數據(jù)域,然後(hòu)读(dú)該包(bāo)文(wén)轉(zhuǎn)給(gěi)61 SP調度(dù)模块(kuài)。在(zài)該調度(dù)模块(kuài)中(zhōng),從6路(lù)包(bāo)文(wén)(1路(lù)是(shì)業务包(bāo)文(wén),1路(lù)是(shì)接收(shōu)卡(kǎ)返回(huí)的(de)配置包(bāo)文(wén),其他(tā)4路(lù)是(shì)4个(gè)光(guāng)纤返回(huí)的(de)配置包(bāo)文(wén)),選取(qǔ)一(yī)路(lù)發(fà)給(gěi)PCIE IP核。

上(shàng)位機(jī)從包(bāo)文(wén)類(lèi)型中(zhōng),識别出(chū)業务包(bāo)文(wén)還(huán)是(shì)配置包(bāo)文(wén),做相对(duì)應(yìng)的(de)处理。

 

 



温(wēn)馨提(tí)示:明(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. 前(qián)端模拟采集、射頻、電(diàn)荷靈敏前(qián)置放(fàng)大器



上(shàng)一(yī)篇(piān):沒(méi)有(yǒu)了(le)
   拓展(zhǎn)閱读(dú)
⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ 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⁥⁠⁢

⁧⁨⁥⁨