⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ 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)纤項目中(zhōng)光(guāng)纤用(yòng)戶层接口(kǒu)設計(jì)分(fēn)享(个(gè)人(rén)總(zǒng)結)

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


本(běn)文(wén)为(wèi)明(míng)德揚原創文(wén)章(zhāng),轉(zhuǎn)载請注明(míng)出(chū)处!

光(guāng)纤接口(kǒu)是(shì)FPGA比較常用(yòng)的(de)接口(kǒu)之一(yī),它(tā)的(de)傳輸方(fāng)式與(yǔ)一(yī)些尋常接口(kǒu)的(de)傳輸方(fāng)式有(yǒu)些不(bù)同(tóng),为(wèi)了(le)讓大家(jiā)了(le)解(jiě)光(guāng)纤接口(kǒu),并避免配置接口(kǒu)时(shí)的(de)一(yī)些常見(jiàn)問(wèn)題(tí),我(wǒ)特(tè)意(yì)写下(xià)了(le)这(zhè)个(gè)總(zǒng)結,希望能(néng)够对(duì)大家(jiā)有(yǒu)所(suǒ)幫助。

 

一(yī)、光(guāng)纤接口(kǒu)的(de)傳輸特(tè)點(diǎn)

大多(duō)數接口(kǒu)發(fà)送包(bāo)文(wén)數據(jù)时(shí)会(huì)發(fà)送:數據(jù)data、有(yǒu)效指示信(xìn)号(hào)data_vld、包(bāo)文(wén)起始信(xìn)号(hào)data_sop、包(bāo)文(wén)結束(shù)信(xìn)号(hào)data_eop以(yǐ)及(jí)无效字(zì)节(jié)數data_mty等。如(rú)下(xià)图(tú)1所(suǒ)示。



图(tú)1

 

光(guāng)纤接口(kǒu)和(hé)上(shàng)述接口(kǒu)發(fà)送的(de)方(fāng)式不(bù)同(tóng),光(guāng)纤接口(kǒu)發(fà)送包(bāo)文(wén)數據(jù)时(shí)只(zhī)会(huì)發(fà)送數據(jù)txdata和(hé)Ktx_k,內(nèi)部(bù)读(dú)取(qǔ)數據(jù)时(shí)也(yě)只(zhī)会(huì)读(dú)取(qǔ)數據(jù)rxdata和(hé)krx_k。若數據(jù)(txdatarxdata)为(wèi)8字(zì)节(jié),則k碼为(wèi)8位數據(jù)。如(rú)下(xià)图(tú)2所(suǒ)示。

图(tú)2

 

二(èr)、k碼的(de)表(biǎo)示

k碼是(shì)用(yòng)来(lái)表(biǎo)示數據(jù)是(shì)否有(yǒu)效的(de),那(nà)麼(me)我(wǒ)们(men)應(yìng)該如(rú)何設定(dìng)k碼呢?假設用(yòng)下(xià)述方(fāng)式表(biǎo)示k碼:

數據(jù)无效时(shí):8’b0 

數據(jù)有(yǒu)效+SOP时(shí):8’mty(4mty)+0110 

數據(jù)有(yǒu)效+EOP时(shí):8’mty(4mty)+0011 

數據(jù)有(yǒu)效+其它(tā)时(shí):8’mty(4mty)+0010 

我(wǒ)们(men)会(huì)發(fà)現(xiàn)數據(jù)会(huì)出(chū)現(xiàn)錯誤!因(yīn)为(wèi)數據(jù)和(hé)k碼在(zài)傳輸过(guò)程中(zhōng)可(kě)能(néng)会(huì)發(fà)生(shēng)偏移!例如(rú)發(fà)送第(dì)一(yī)个(gè)數據(jù)时(shí),txdata=64’h0102030405060708tx_k=8’b00000110

而(ér)內(nèi)部(bù)接收(shōu)时(shí),數據(jù)可(kě)能(néng)会(huì)右(yòu)移2位,造成(chéng)接收(shōu)到(dào)的(de)數據(jù)與(yǔ)發(fà)送出(chū)的(de)數據(jù)有(yǒu)所(suǒ)不(bù)同(tóng)。如(rú)rxdata=64’h0000010203040506,rx_k=8’b000000001。即如(rú)下(xià)图(tú)所(suǒ)示3

 

图(tú)3

 

因(yīn)此(cǐ),我(wǒ)们(men)僅将k碼用(yòng)做有(yǒu)效无效的(de)指示信(xìn)号(hào)以(yǐ)及(jí)同(tóng)步信(xìn)号(hào),并用(yòng)下(xià)述方(fāng)式進(jìn)行表(biǎo)示:

數據(jù)无效时(shí),發(fà)送固定(dìng)k碼:0x01,接收(shōu)根(gēn)據(jù)这(zhè)个(gè)1的(de)位置,判斷開(kāi)始位;

數據(jù)有(yǒu)效时(shí),發(fà)送固定(dìng)k碼:0x00,接收(shōu)根(gēn)據(jù)k碼的(de)值,識别數據(jù)是(shì)否有(yǒu)效。

在(zài)这(zhè)種(zhǒng)情(qíng)況下(xià),即使發(fà)生(shēng)了(le)偏移,我(wǒ)们(men)也(yě)能(néng)知道(dào)k碼中(zhōng)1後(hòu)面(miàn)的(de)8个(gè)0所(suǒ)对(duì)應(yìng)的(de)rxdata为(wèi)有(yǒu)效數據(jù)。例如(rú),第(dì)n个(gè)周期(qī)接收(shōu)到(dào)rxdata=64’h00bc010203040506,接收(shōu)到(dào)rx_k=8’b01000000,第(dì)n+1个(gè)周期(qī)接收(shōu)到(dào)rxdata=64’h0708020304050607,接收(shōu)到(dào)rx_k=8’b00000000。通(tòng)过(guò)第(dì)n个(gè)周期(qī)rx_k中(zhōng)的(de)1能(néng)够判斷出(chū)後(hòu)面(miàn)80所(suǒ)对(duì)應(yìng)的(de)rxdata=64’h0102030405060708为(wèi)有(yǒu)效數據(jù)。

 

三(sān)、比特(tè)位順序調換

我(wǒ)们(men)先(xiān)介紹一(yī)下(xià)小头(tóu)模式和(hé)大头(tóu)模式。小头(tóu)模式指的(de)是(shì)低位在(zài)前(qián)高(gāo)位在(zài)後(hòu),大头(tóu)模式指的(de)是(shì)高(gāo)位在(zài)前(qián)低位在(zài)後(hòu)。例如(rú)同(tóng)樣(yàng)的(de)數據(jù)012345678,在(zài)小头(tóu)模式中(zhōng),0是(shì)最(zuì)低位,8是(shì)最(zuì)高(gāo)位,在(zài)大头(tóu)模式中(zhōng)則0是(shì)最(zuì)高(gāo)位,8是(shì)最(zuì)低位。由(yóu)于(yú)光(guāng)纤接口(kǒu)是(shì)小头(tóu)模式,而(ér)我(wǒ)们(men)熟悉的(de)是(shì)大头(tóu)模式。因(yīn)此(cǐ)我(wǒ)们(men)需要(yào)将光(guāng)纤接口(kǒu)數據(jù)的(de)比特(tè)位順序進(jìn)行調換。

 

四(sì)、數據(jù)对(duì)齊

由(yóu)于(yú)我(wǒ)们(men)接收(shōu)到(dào)的(de)數據(jù)是(shì)偏移了(le)的(de),因(yīn)此(cǐ)我(wǒ)们(men)需要(yào)利用(yòng)一(yī)个(gè)模块(kuài)将光(guāng)纤接口(kǒu)偏移的(de)數據(jù)進(jìn)行還(huán)原。例如(rú),第(dì)n个(gè)周期(qī)接收(shōu)到(dào)rxdata=64’h00bc010203040506,接收(shōu)到(dào)rx_k=8’b01000000,第(dì)n+1个(gè)周期(qī)接收(shōu)到(dào)rxdata=64’h0708020304050607,接收(shōu)到(dào)rx_k=8’b00000000,我(wǒ)们(men)通(tòng)过(guò)对(duì)其模块(kuài)将其還(huán)原成(chéng)第(dì)n个(gè)周期(qī)为(wèi)rxdata=64’0102030405060708rx_k=8’00000000即将下(xià)图(tú)4變(biàn)換成(chéng)下(xià)图(tú)5

 

图(tú)4

图(tú)5

 

五(wǔ)、數據(jù)解(jiě)包(bāo)與(yǔ)打(dǎ)包(bāo)

我(wǒ)们(men)定(dìng)義發(fà)送包(bāo)文(wén)的(de)方(fāng)式是(shì)發(fà)送:55D5+16b长度(dù)+长度(dù)字(zì)节(jié)个(gè)DATA+校(xiào)验(yàn)和(hé)。为(wèi)了(le)判斷是(shì)否接收(shōu)有(yǒu)效包(bāo)文(wén),我(wǒ)们(men)設定(dìng)當接收(shōu)到(dào)55D5时(shí),表(biǎo)示後(hòu)面(miàn)的(de)數據(jù)信(xìn)号(hào)有(yǒu)效,接着接收(shōu)數據(jù)的(de)长度(dù),表(biǎo)示該包(bāo)文(wén)的(de)有(yǒu)效长度(dù),然後(hòu)接收(shōu)數據(jù),最(zuì)後(hòu)再接收(shōu)一(yī)个(gè)校(xiào)验(yàn)位,檢验(yàn)包(bāo)文(wén)是(shì)否有(yǒu)錯誤。

例如(rú)接收(shōu)到(dào)8’h55+8’hd5 + 8’h00+8’h03 + 8’h12+8’hbc +8’h63 + 8’h00+ 8’h03 , 表(biǎo)示55d5後(hòu)面(miàn)的(de)數據(jù)是(shì)包(bāo)文(wén),包(bāo)文(wén)內(nèi)數據(jù)一(yī)共(gòng)有(yǒu)3个(gè),數據(jù)分(fēn)别是(shì) 8’h128’hbc8’h63,最(zuì)後(hòu)檢验(yàn)位顯示一(yī)共(gòng)有(yǒu)3个(gè)數據(jù),包(bāo)文(wén)正(zhèng)确。这(zhè)樣(yàng)我(wǒ)们(men)就(jiù)将一(yī)个(gè)有(yǒu)效包(bāo)文(wén)解(jiě)包(bāo)成(chéng)有(yǒu)效數據(jù) 8’h128’hbc8’h63

數據(jù)打(dǎ)包(bāo)的(de)过(guò)程與(yǔ)打(dǎ)包(bāo)的(de)过(guò)程正(zhèng)好(hǎo)相反(fǎn),假如(rú)我(wǒ)们(men)接收(shōu)到(dào)5字(zì)节(jié)有(yǒu)效數據(jù)8’h128’hbc8’h638’hbc8’h63,我(wǒ)们(men)需要(yào)将其打(dǎ)包(bāo)成(chéng)8’h55+8’hd5 + 8’h00+8’h05 + 8’h12+8’hbc +8’h63 + 8’hbc +8’h63 + 8’h00 +8’h05

 

六(liù)、光(guāng)纤串口(kǒu)的(de)模块(kuài)

在(zài)接收(shōu)端中(zhōng),我(wǒ)们(men)利用(yòng)Rx_data_reverse模块(kuài)和(hé)Rx_ctrl_reverse模块(kuài)将輸入(rù)的(de)rxdata和(hé)rx_k執行要(yào)點(diǎn)三(sān)的(de)比特(tè)位順序調換操作,利用(yòng)Rx_align模块(kuài)執行要(yào)點(diǎn)四(sì)的(de)數據(jù)对(duì)齊操作,利用(yòng)Decoder模块(kuài)執行有(yǒu)效數據(jù)的(de)判斷,利用(yòng)Unpackcomm模块(kuài)執行數據(jù)的(de)解(jiě)包(bāo)操作。

在(zài)發(fà)送端中(zhōng),我(wǒ)们(men)利用(yòng)packcommpack模块(kuài)将數據(jù)進(jìn)行打(dǎ)包(bāo),再利用(yòng)Tx_data_reverse模块(kuài)和(hé)Tx_ctrl_reverse模块(kuài)将數據(jù)從大头(tóu)模式還(huán)原成(chéng)小头(tóu)模式,即再進(jìn)行一(yī)次(cì)比特(tè)位順序的(de)調換,然後(hòu)再發(fà)送。

 

下(xià)一(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⁥⁠⁢

⁧⁨⁥⁨