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

温(wēn)度(dù)檢测工程模块(kuài)劃(huà)分(fēn)總(zǒng)結與(yǔ)分(fēn)析(一(yī))

發(fà)布(bù)时(shí)間(jiān):2021-04-15   作者(zhě):王斌 浏覽量(liàng):

 

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

很多(duō)朋友在(zài)学習FPGA的(de)时(shí)候会(huì)發(fà)現(xiàn)模块(kuài)劃(huà)分(fēn)很令人(rén)头(tóu)大,今天(tiān)我(wǒ)就(jiù)通(tòng)过(guò)明(míng)德揚温(wēn)度(dù)檢测工程来(lái)與(yǔ)大家(jiā)分(fēn)享一(yī)下(xià)本(běn)人(rén)的(de)劃(huà)分(fēn)思(sī)路(lù)。

明(míng)德揚温(wēn)度(dù)檢测工程是(shì)基于(yú)FPGA的(de)一(yī)个(gè)实用(yòng)項目,可(kě)以(yǐ)在(zài)明(míng)德揚的(de)MP801開(kāi)發(fà)板上(shàng)進(jìn)行实验(yàn)学習。本(běn)工程功能(néng)虽小,但基本(běn)上(shàng)涉及(jí)了(le)FPGA的(de)常見(jiàn)功能(néng),如(rú)接口(kǒu)傳輸、指令解(jiě)析、外(wài)設的(de)控制等,是(shì)比較好(hǎo)的(de)入(rù)門(mén)工程。

 

一(yī)、模块(kuài)劃(huà)分(fēn)要(yào)點(diǎn)總(zǒng)結

1、列出(chū)項目的(de)功能(néng)要(yào)求(客戶提(tí)出(chū)的(de)産品功能(néng)要(yào)求)

 

2、画(huà)出(chū)硬(yìng)件(jiàn)的(de)系(xì)統結構框图(tú)(添加外(wài)設)

 

3、框图(tú)中(zhōng)每个(gè)外(wài)圍接口(kǒu)都对(duì)應(yìng)有(yǒu)一(yī)个(gè)接口(kǒu)轉(zhuǎn)換模块(kuài)

接口(kǒu)轉(zhuǎn)換模块(kuài)的(de)作用(yòng)是(shì)将外(wài)圍器件(jiàn)的(de)接口(kǒu)时(shí)序轉(zhuǎn)为(wèi)通(tòng)用(yòng)的(de)接口(kǒu)时(shí)序,或(huò)者(zhě)将通(tòng)用(yòng)接口(kǒu)时(shí)序轉(zhuǎn)換为(wèi)外(wài)圍器件(jiàn)接口(kǒu)时(shí)序,这(zhè)樣(yàng)使得FPGA內(nèi)部(bù)其他(tā)模块(kuài)不(bù)用(yòng)再關(guān)心(xīn)外(wài)圍接口(kǒu)的(de)时(shí)序了(le)。

MDY規範通(tòng)用(yòng)接口(kǒu)时(shí)序:

l data以(yǐ)及(jí)对(duì)應(yìng)的(de)vld,傳輸單个(gè)數據(jù)格式

l MDY的(de)包(bāo)文(wén)格式,din,vld,SOP,EOP,MTY,ERR

l wren,waddr,wdata;rden,raddr,rdata,rdata_vld

 

4、考慮是(shì)否涉及(jí)指令系(xì)統(操作碼+數據(jù)格式)

上(shàng)位機(jī),例如(rú)PC,ARM,DSP或(huò)者(zhě)其他(tā)的(de)器件(jiàn),只(zhī)涉及(jí)到(dào)一(yī)个(gè)接口(kǒu),但是(shì)卻有(yǒu)很多(duō)指令或(huò)者(zhě)命令功能(néng)要(yào)發(fà)送,因(yīn)此(cǐ)就(jiù)需要(yào)一(yī)个(gè)指令系(xì)統。

指令系(xì)統一(yī)定(dìng)会(huì)涉及(jí)到(dào)命令、地(dì)址和(hé)數據(jù)。这(zhè)種(zhǒng)情(qíng)況,肯定(dìng)会(huì)有(yǒu)一(yī)个(gè)“寄存器解(jiě)析模块(kuài)”,根(gēn)據(jù)命令、地(dì)址和(hé)數據(jù),改變(biàn)相應(yìng)的(de)寄存器的(de)值。

 

5、考慮外(wài)圍器件(jiàn)是(shì)否涉及(jí)寄存器配置

項目中(zhōng)有(yǒu)某些外(wài)設,上(shàng)電(diàn)工作前(qián)需要(yào)進(jìn)行配置才能(néng)按要(yào)求工作。因(yīn)此(cǐ)需要(yào)对(duì)外(wài)設內(nèi)部(bù)寄存器進(jìn)行读(dú)写,这(zhè)一(yī)流程是(shì)通(tòng)过(guò)FPGA来(lái)進(jìn)行配置。

遇到(dào)这(zhè)个(gè)情(qíng)況,使用(yòng)MDY推薦的(de)模块(kuài)寄存器配置結構:

寄存器配置表(biǎo)模块(kuài)+寄存器读(dú)写配置模块(kuài)+外(wài)設配置接口(kǒu)时(shí)序轉(zhuǎn)換模块(kuài)

 

6、根(gēn)據(jù)实際情(qíng)況,增加、補充或(huò)者(zhě)拆分(fēn),优化(huà)对(duì)應(yìng)模块(kuài),随时(shí)調整

原則:根(gēn)據(jù)接口(kǒu)信(xìn)号(hào),看(kàn)模块(kuài)間(jiān)是(shì)否方(fāng)便对(duì)接。接口(kǒu)就(jiù)決定(dìng)了(le)模块(kuài)功能(néng)。所(suǒ)以(yǐ)在(zài)这(zhè)一(yī)层的(de)調整,一(yī)定(dìng)要(yào)清(qīng)楚接口(kǒu)的(de)定(dìng)義。

 

7、考慮是(shì)否涉及(jí)多(duō)路(lù)進(jìn)一(yī)路(lù)出(chū),要(yào)用(yòng)FIFO

調度(dù)FIFO要(yào)考慮自(zì)身(shēn)带(dài)宽(kuān)能(néng)否滿足多(duō)路(lù)一(yī)起突發(fà)發(fà)送时(shí)的(de)數據(jù)量(liàng)情(qíng)況。如(rú)果(guǒ)带(dài)宽(kuān)不(bù)滿足,就(jiù)要(yào)要(yào)輸出(chū)給(gěi)上(shàng)遊模块(kuài)RDY信(xìn)号(hào)。此(cǐ)时(shí)RDY信(xìn)号(hào)有(yǒu)效取(qǔ)決于(yú)自(zì)己設置FIFO的(de)Almost Full信(xìn)号(hào)。如(rú)果(guǒ)带(dài)宽(kuān)滿足則不(bù)必設RDY信(xìn)号(hào)。

 

8、考慮是(shì)否涉及(jí)到(dào)速率匹(pǐ)配問(wèn)題(tí),要(yào)加上(shàng)RDY信(xìn)号(hào)或(huò)者(zhě)FIFO

首先(xiān)考慮與(yǔ)外(wài)圍器件(jiàn)通(tòng)信(xìn)的(de)接口(kǒu)上(shàng)是(shì)否需要(yào)rdy信(xìn)号(hào)(FPGA內(nèi)部(bù)運行頻率往往與(yǔ)設接口(kǒu)速率不(bù)一(yī)致(zhì)),然後(hòu)考慮FPGA內(nèi)部(bù)模块(kuài)間(jiān)數據(jù)带(dài)宽(kuān)是(shì)否不(bù)一(yī)致(zhì),有(yǒu)等一(yī)等的(de)情(qíng)況。

 

 

二(èr)、温(wēn)度(dù)檢测案(àn)例分(fēn)析

接下(xià)来(lái)根(gēn)據(jù)上(shàng)面(miàn)的(de)總(zǒng)結的(de)要(yào)點(diǎn),通(tòng)过(guò)实際項目案(àn)例来(lái)分(fēn)析一(yī)下(xià)FPGA內(nèi)部(bù)功能(néng)模块(kuài)是(shì)怎樣(yàng)劃(huà)分(fēn)的(de)。这(zhè)里(lǐ)我(wǒ)们(men)選取(qǔ)已經(jīng)做过(guò)的(de)温(wēn)度(dù)檢测項目,接下(xià)来(lái)按照上(shàng)面(miàn)總(zǒng)結的(de)模块(kuài)劃(huà)分(fēn)步驟,一(yī)步步完成(chéng)模块(kuài)初步劃(huà)分(fēn)!

1.列出(chū)項目的(de)功能(néng)要(yào)求

    本(běn)項目功能(néng)要(yào)求:上(shàng)位機(jī)通(tòng)过(guò)發(fà)送一(yī)系(xì)列不(bù)同(tóng)命令給(gěi)FPGA,FPGA接收(shōu)到(dào)指令後(hòu)執行各(gè)个(gè)指令对(duì)應(yìng)的(de)操作。同(tóng)时(shí)将DS18B20采集到(dào)的(de)温(wēn)度(dù)值实时(shí)在(zài)數碼管(guǎn)上(shàng)实时(shí)顯示出(chū)来(lái)并傳給(gěi)上(shàng)位機(jī)。要(yào)求上(shàng)位機(jī)可(kě)以(yǐ)發(fà)送命令設置報警温(wēn)度(dù)上(shàng)限和(hé)下(xià)限值。當温(wēn)度(dù)值超过(guò)温(wēn)度(dù)上(shàng)限或(huò)者(zhě)下(xià)限,蜂鳴器就(jiù)開(kāi)始鳴響。可(kě)以(yǐ)發(fà)送命令關(guān)閉或(huò)打(dǎ)開(kāi)數碼管(guǎn)顯示。

功能(néng)分(fēn)析:

a) 上(shàng)位機(jī)發(fà)送命令給(gěi)FPGA(開(kāi)關(guān)數碼管(guǎn)顯示、開(kāi)關(guān)蜂鳴器、複位温(wēn)度(dù)傳感(gǎn)器、開(kāi)啟温(wēn)度(dù)轉(zhuǎn)換,读(dú)轉(zhuǎn)換後(hòu)温(wēn)度(dù)值、設置報警温(wēn)度(dù)上(shàng)限下(xià)限值);

b) 读(dú)写DS18B20;

c) 數碼管(guǎn)顯示;

d) 數碼管(guǎn)顯示開(kāi)關(guān)控制;

e) 計(jì)算温(wēn)度(dù)值;

f) 将計(jì)算後(hòu)的(de)温(wēn)度(dù)值發(fà)送給(gěi)上(shàng)位機(jī);

g) 設置温(wēn)度(dù)上(shàng)限、下(xià)限;

h) 蜂鳴器開(kāi)關(guān)控制。

 

2.画(huà)出(chū)硬(yìng)件(jiàn)系(xì)統結構框图(tú)

根(gēn)據(jù)步驟1總(zǒng)結出(chū)的(de)功能(néng)要(yào)求,找(zhǎo)到(dào)除FPGA外(wài)需要(yào)哪些外(wài)圍器件(jiàn)。

外(wài)圍器件(jiàn)總(zǒng)共(gòng)需要(yào)四(sì)个(gè):

a) PC

b) 數碼管(guǎn)

c) 温(wēn)度(dù)傳感(gǎn)器DS18B20

d) 蜂鳴器

 画(huà)出(chū)系(xì)統框图(tú)如(rú)下(xià)所(suǒ)示:

 

3.框图(tú)中(zhōng)每个(gè)外(wài)圍接口(kǒu)都对(duì)應(yìng)有(yǒu)一(yī)个(gè)接口(kǒu)轉(zhuǎn)換模块(kuài)

首先(xiān)要(yào)思(sī)考PC與(yǔ)FPGA通(tòng)信(xìn)需要(yào)哪種(zhǒng)方(fāng)式?

上(shàng)位機(jī)PC與(yǔ)FPGA通(tòng)信(xìn)既有(yǒu)發(fà)送也(yě)有(yǒu)接收(shōu),由(yóu)于(yú)PC發(fà)送命令給(gěi)FPGA的(de)速度(dù)慢(màn)于(yú)FPGA回(huí)傳温(wēn)度(dù)值給(gěi)PC的(de)速度(dù),所(suǒ)以(yǐ)上(shàng)位機(jī)PC與(yǔ)FPGA通(tòng)信(xìn)接口(kǒu)速度(dù)取(qǔ)決于(yú)FPGA回(huí)傳温(wēn)度(dù)值給(gěi)PC的(de)速度(dù)。

 

查閱手(shǒu)册如(rú)上(shàng)图(tú)所(suǒ)示,得知DS18B20轉(zhuǎn)換一(yī)次(cì)采集的(de)温(wēn)度(dù)值需要(yào)750ms。所(suǒ)以(yǐ)FPGA與(yǔ)上(shàng)位機(jī)通(tòng)信(xìn)接口(kǒu)速率大于(yú)750ms就(jiù)不(bù)会(huì)丢傳數據(jù)。因(yīn)此(cǐ)選用(yòng)串口(kǒu)作为(wèi)上(shàng)位機(jī)與(yǔ)FPGA的(de)通(tòng)信(xìn)接口(kǒu)足够滿足要(yào)求了(le)。

a) 數碼管(guǎn)段(duàn)選位選接口(kǒu)模块(kuài): 完成(chéng)數碼管(guǎn)位選和(hé)段(duàn)選的(de)輸出(chū)

b) DS18B20單bit轉(zhuǎn)換接口(kǒu)模块(kuài):DS18B20是(shì)單總(zǒng)線(xiàn)協議,只(zhī)支持(chí)1bit數據(jù)傳輸,所(suǒ)以(yǐ)需要(yào)将MDY規範接口(kǒu)轉(zhuǎn)換为(wèi)1bit

c) 蜂鳴器開(kāi)關(guān)使能(néng)接口(kǒu)模块(kuài):完成(chéng)蜂鳴器開(kāi)關(guān)使能(néng)


 

将串口(kǒu)接口(kǒu)轉(zhuǎn)換模块(kuài)功能(néng)细(xì)分(fēn)为(wèi)“串口(kǒu)接收(shōu)串轉(zhuǎn)并模块(kuài)”和(hé)“串口(kǒu)發(fà)送并轉(zhuǎn)串模块(kuài)”,進(jìn)一(yī)步轉(zhuǎn)化(huà)为(wèi)符合MDY規範的(de)接口(kǒu)。如(rú)下(xià)图(tú)所(suǒ)示:

 

未完待續》》》

   拓展(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⁥⁠⁢

⁧⁨⁥⁨