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

2.16 AD采集

發(fà)布(bù)时(shí)間(jiān):2021-08-22   作者(zhě):admin 浏覽量(liàng):

本(běn)文(wén)的(de)文(wén)檔編号(hào):000400000027

需要(yào)看(kàn)对(duì)應(yìng)的(de)視頻,請點(diǎn)擊視頻編号(hào):002700000454

1、本(běn)文(wén)檔講述FPGA産生(shēng)正(zhèng)弦波(bō)數據(jù),由(yóu)DA輸出(chū),然後(hòu)再外(wài)部(bù)环(huán)回(huí)到(dào)AD接口(kǒu)進(jìn)行采集,可(kě)通(tòng)过(guò)在(zài)線(xiàn)調試工具進(jìn)行观察

2、801開(kāi)發(fà)板使用(yòng)

項目背景

1.1 AD轉(zhuǎn)換

轉(zhuǎn)換 轉(zhuǎn)換就(jiù)是(shì)模數轉(zhuǎn)換。顧名思(sī)義,就(jiù)是(shì)把模拟信(xìn)号(hào)轉(zhuǎn)換成(chéng)數字(zì)信(xìn)号(hào)。主(zhǔ)要(yào)包(bāo)括積分(fēn)型、逐次(cì)逼近(jìn)型、并行比較型串并行型、ΣΔ調制型、電(diàn)容阵(zhèn)列逐次(cì)比較型及(jí)壓頻變(biàn)換型。

A/D轉(zhuǎn)換器是(shì)用(yòng)来(lái)通(tòng)过(guò)一(yī)定(dìng)的(de)電(diàn)路(lù)将模拟量(liàng)轉(zhuǎn)變(biàn)为(wèi)數字(zì)量(liàng)。模拟量(liàng)可(kě)以(yǐ)是(shì)電(diàn)壓、電(diàn)流等電(diàn)信(xìn)号(hào),也(yě)可(kě)以(yǐ)是(shì)壓力、温(wēn)度(dù)、湿(shī)度(dù)、位移、聲音(yīn)等非(fēi)電(diàn)信(xìn)号(hào)。但在(zài)A/D轉(zhuǎn)換前(qián),輸入(rù)到(dào)A/D轉(zhuǎn)換器的(de)輸入(rù)信(xìn)号(hào)必須經(jīng)各(gè)種(zhǒng)傳感(gǎn)器把各(gè)種(zhǒng)物(wù)理量(liàng)轉(zhuǎn)換成(chéng)電(diàn)壓信(xìn)号(hào)。

AD轉(zhuǎn)換的(de)技術(shù)指标(biāo),一(yī)般有(yǒu)如(rú)下(xià)幾(jǐ)个(gè):

1. 分(fēn)辨率(Resolution) 指數字(zì)量(liàng)變(biàn)化(huà)一(yī)个(gè)最(zuì)小量(liàng)时(shí)模拟信(xìn)号(hào)的(de)變(biàn)化(huà)量(liàng),定(dìng)義为(wèi)滿刻度(dù)與(yǔ)2^n的(de)比值。分(fēn)辨率又稱精度(dù),通(tòng)常以(yǐ)數字(zì)信(xìn)号(hào)的(de)位數来(lái)表(biǎo)示。

2. 轉(zhuǎn)換速率(Conversion Rate)是(shì)指完成(chéng)一(yī)次(cì)從模拟轉(zhuǎn)換到(dào)數字(zì)的(de)AD轉(zhuǎn)換所(suǒ)需的(de)时(shí)間(jiān)的(de)倒數。積分(fēn)型AD的(de)轉(zhuǎn)換时(shí)間(jiān)是(shì)毫(háo)秒(miǎo)級屬低速AD,逐次(cì)比較型AD是(shì)微秒(miǎo)級屬中(zhōng)速AD,全(quán)并行/串并行型AD可(kě)达(dá)到(dào)納秒(miǎo)級。采樣(yàng)时(shí)間(jiān)則是(shì)另(lìng)外(wài)一(yī)个(gè)概念,是(shì)指两(liǎng)次(cì)轉(zhuǎn)換的(de)間(jiān)隔。为(wèi)了(le)保證轉(zhuǎn)換的(de)正(zhèng)确完成(chéng),采樣(yàng)速率 (Sample Rate)必須小于(yú)或(huò)等于(yú)轉(zhuǎn)換速率。因(yīn)此(cǐ)有(yǒu)人(rén)習慣上(shàng)将轉(zhuǎn)換速率在(zài)數值上(shàng)等同(tóng)于(yú)采樣(yàng)速率也(yě)是(shì)可(kě)以(yǐ)接受的(de)。常用(yòng)單位是(shì)ksps和(hé)Msps,表(biǎo) 示每秒(miǎo)采樣(yàng)千(qiān)/百(bǎi)万(wàn)次(cì)(kilo / Million Samples per Second)。

3. 量(liàng)化(huà)誤差 (Quantizing Error) 由(yóu)于(yú)AD的(de)有(yǒu)限分(fēn)辨率而(ér)引起的(de)誤差,即有(yǒu)限分(fēn)辨率AD的(de)階(jiē)梯(tī)狀轉(zhuǎn)移特(tè)性(xìng)曲(qū)線(xiàn)與(yǔ)无限分(fēn)辨率AD(理想(xiǎng)AD)的(de)轉(zhuǎn)移特(tè) 性(xìng)曲(qū)線(xiàn)(直(zhí)線(xiàn))之間(jiān)的(de)最(zuì)大偏差。通(tòng)常是(shì)1个(gè)或(huò)半个(gè)最(zuì)小數字(zì)量(liàng)的(de)模拟變(biàn)化(huà)量(liàng),表(biǎo)示为(wèi)1LSB1/2LSB

4. 偏移誤差(Offset Error) 輸入(rù)信(xìn)号(hào)为(wèi)零(líng)时(shí)輸出(chū)信(xìn)号(hào)不(bù)为(wèi)零(líng)的(de)值,可(kě)外(wài)接電(diàn)位器調至(zhì)最(zuì)小。

5. 滿刻度(dù)誤差(Full Scale Error) 滿度(dù)輸出(chū)时(shí)对(duì)應(yìng)的(de)輸入(rù)信(xìn)号(hào)與(yǔ)理想(xiǎng)輸入(rù)信(xìn)号(hào)值之差。

6. 線(xiàn)性(xìng)度(dù)(Linearity) 实際轉(zhuǎn)換器的(de)轉(zhuǎn)移函(hán)數與(yǔ)理想(xiǎng)直(zhí)線(xiàn)的(de)最(zuì)大偏移,不(bù)包(bāo)括以(yǐ)上(shàng)三(sān)種(zhǒng)誤差。

其他(tā)指标(biāo)還(huán)有(yǒu):絕对(duì)精度(dù)(Absolute Accuracy) ,相对(duì)精度(dù)(Relative Accuracy),微分(fēn)非(fēi)線(xiàn)性(xìng),單調性(xìng)和(hé)无錯碼,總(zǒng)諧波(bō)失真(zhēn)(Total Harmonic Distotortion縮写THD)和(hé)積分(fēn)非(fēi)線(xiàn)性(xìng)。


1.2 教学板AD原理图(tú)

明(míng)德揚教学板上(shàng)板载板载32Mhz 轉(zhuǎn)換速率、8bit高(gāo)速AD芯片(piàn)AD9280,滿足各(gè)種(zhǒng)信(xìn)号(hào)的(de)采集,滿足用(yòng)戶实現(xiàn)各(gè)種(zhǒng)常見(jiàn)濾波(bō)算法的(de)实現(xiàn)。实際位置如(rú)下(xià)所(suǒ)示:

图(tú) 599

图(tú) 600

上(shàng)面(miàn)是(shì)AD9280的(de)原理图(tú)。與(yǔ)FPGA相連(lián)的(de)信(xìn)号(hào)有(yǒu):AD_D0~7AD_OTRAD_CLK

AD9280管(guǎn)脚

原理图(tú)信(xìn)号(hào)

FPGA管(guǎn)脚

作用(yòng)

CLK

AD_CLK

AD9280的(de)工作时(shí)鐘(zhōng),最(zuì)大是(shì)32MHz

OTR

AD_OTR

超过(guò)電(diàn)壓範圍指示信(xìn)号(hào)

D7

AD_D7

AD轉(zhuǎn)換後(hòu)的(de)數字(zì)值。

D6

AD_D6

D5

AD_D5

D4

AD_D4

D3

AD_D3

D2

AD_D2

D1

AD_D1

D0

AD_D0

1.3 AD9280的(de)控制时(shí)序

AD9280的(de)控制时(shí)序如(rú)下(xià)图(tú)。

图(tú) 601

图(tú) 602

图(tú) 603

由(yóu)时(shí)鐘(zhōng)图(tú)可(kě)以(yǐ)看(kàn)出(chū),每个(gè)时(shí)鐘(zhōng)就(jiù)可(kě)以(yǐ)做AD轉(zhuǎn)換一(yī)次(cì),但会(huì)延遲3个(gè)时(shí)鐘(zhōng)才輸出(chū)。例如(rú)时(shí)序图(tú)中(zhōng)第(dì)一(yī)个(gè)时(shí)鐘(zhōng)采集到(dào)S1,并对(duì)S1進(jìn)行模數轉(zhuǎn)換,經(jīng)过(guò)3个(gè)时(shí)鐘(zhōng)後(hòu),輸出(chū)DATA1,这(zhè)个(gè)DATA1就(jiù)是(shì)S1所(suǒ)應(yìng)对(duì)的(de)數字(zì)值。

由(yóu)參數时(shí)序可(kě)以(yǐ)看(kàn)出(chū),时(shí)鐘(zhōng)最(zuì)大是(shì)32MHz

由(yóu)上(shàng)面(miàn)时(shí)序可(kě)以(yǐ)看(kàn)出(chū),控制AD9280非(fēi)常簡單,只(zhī)要(yào)給(gěi)出(chū)不(bù)超过(guò)32MHz的(de)时(shí)鐘(zhōng),然後(hòu)对(duì)其采集就(jiù)行了(le)。


2 設計(jì)目标(biāo)

本(běn)次(cì)案(àn)例将使用(yòng)到(dào)AD9709和(hé)AD9280。其連(lián)接示意(yì)如(rú)下(xià)图(tú)所(suǒ)示

图(tú) 604

其中(zhōng)跳帽(mào)就(jiù)設置成(chéng)XXX,設置後(hòu),AD9709的(de)通(tòng)道(dào)A輸出(chū),就(jiù)会(huì)环(huán)回(huí)給(gěi)AD9280

本(běn)案(àn)例是(shì)FPGA先(xiān)産生(shēng)正(zhèng)弦信(xìn)号(hào),这(zhè)个(gè)正(zhèng)弦信(xìn)号(hào)輸出(chū)給(gěi)DA通(tòng)道(dào)A,經(jīng)过(guò)环(huán)回(huí)後(hòu),給(gěi)回(huí)AD9280的(de)輸入(rù)端,FPGA再采集AD9280的(de)數據(jù),最(zuì)後(hòu)使用(yòng)signaltap采集數字(zì)信(xìn)号(hào)。

图(tú) 605

正(zhèng)弦信(xìn)号(hào)的(de)産生(shēng)方(fāng)式,與(yǔ)FIR濾波(bō)器的(de)設計(jì)”案(àn)例一(yī)致(zhì)。正(zhèng)弦信(xìn)号(hào)的(de)頻率受開(kāi)發(fà)板上(shàng)的(de)3个(gè)撥碼開(kāi)關(guān)控制,用(yòng)3位信(xìn)号(hào)key表(biǎo)示,一(yī)共(gòng)可(kě)以(yǐ)産生(shēng)8種(zhǒng)頻率。

正(zhèng)弦信(xìn)号(hào)的(de)頻率 約等于(yú): 100KHz * (key+1)

例如(rú),當key等于(yú)0时(shí),産生(shēng)約100KHz的(de)正(zhèng)弦信(xìn)号(hào);

key等于(yú)1时(shí),産生(shēng)約200KHz的(de)正(zhèng)弦波(bō);

key等于(yú)7时(shí),産生(shēng)約800KHz的(de)正(zhèng)弦波(bō)。

FPGA産生(shēng)25MHz的(de)时(shí)鐘(zhōng)給(gěi)AD9280,也(yě)就(jiù)是(shì)采樣(yàng)率为(wèi)25M。用(yòng)这(zhè)个(gè)时(shí)鐘(zhōng)作为(wèi)SIGNALTAP的(de)采樣(yàng)时(shí)鐘(zhōng),观察AD9280过(guò)来(lái)的(de)數據(jù)波(bō)形。

上(shàng)板效果(guǒ)图(tú)如(rú)下(xià)图(tú)所(suǒ)示。(用(yòng)signaltap抓取(qǔ)波(bō)形)

图(tú) 606


3 設計(jì)实現(xiàn)

3.1 頂层信(xìn)号(hào)

新建目录(lù):D:mdy_bookd_prj在(zài)該目录(lù)中(zhōng),新建一(yī)个(gè)名为(wèi)ad_prj.v的(de)文(wén)件(jiàn),并用(yòng)GVIM打(dǎ)開(kāi),開(kāi)始編写代(dài)碼。

我(wǒ)们(men)要(yào)实現(xiàn)的(de)功能(néng),概括起来(lái)就(jiù)是(shì)FPGA産生(shēng)控制AD9709,讓其中(zhōng)的(de)通(tòng)道(dào)A産生(shēng)正(zhèng)弦波(bō)所(suǒ)对(duì)應(yìng)的(de)電(diàn)壓,同(tóng)时(shí)采集AD9280的(de)數據(jù)并观察。为(wèi)了(le)控制AD9709的(de)通(tòng)道(dào)A,就(jiù)需要(yào)控制AD9709的(de)MODESLEEPCLK1WRT1DB7~0P1管(guǎn)脚。为(wèi)了(le)采集AD9280,那(nà)麼(me)就(jiù)需要(yào)控制AD9280的(de)CLKD0~D7管(guǎn)脚。根(gēn)據(jù)設計(jì)目标(biāo)的(de)要(yào)求,整个(gè)工程需要(yào)以(yǐ)下(xià)信(xìn)号(hào):

1. 使用(yòng)clk連(lián)接到(dào)晶振,表(biǎo)示50M时(shí)鐘(zhōng)的(de)輸入(rù)。

2. 使用(yòng)rst_n連(lián)接到(dào)按鍵,表(biǎo)示複位信(xìn)号(hào)。

3. 使用(yòng)3位信(xìn)号(hào)key,表(biǎo)示三(sān)位撥碼開(kāi)關(guān)。

4. 使用(yòng)dac_mode信(xìn)号(hào)連(lián)接到(dào)AD9709的(de)MODE管(guǎn)脚,用(yòng)来(lái)控制其工作模式。

5. 使用(yòng)dac_sleep信(xìn)号(hào)連(lián)接到(dào)AD9709的(de)SLEEP管(guǎn)脚,用(yòng)来(lái)控制其睡眠模式。

6. 使用(yòng)dac_clka信(xìn)号(hào)連(lián)接到(dào)AD9709的(de)CLK1管(guǎn)脚,用(yòng)来(lái)控制通(tòng)道(dào)A的(de)时(shí)鐘(zhōng)。

7. 使用(yòng)dac_wra信(xìn)号(hào)連(lián)接到(dào)AD9709的(de)WRT1管(guǎn)脚,用(yòng)来(lái)控制通(tòng)道(dào)A的(de)写使能(néng)。

8. 使用(yòng)8位信(xìn)号(hào)dac_da連(lián)接到(dào)AD9709的(de)DB7~0P1管(guǎn)脚,用(yòng)来(lái)控制通(tòng)道(dào)A的(de)写數據(jù)。

9. 使用(yòng)ad_clk信(xìn)号(hào)連(lián)接到(dào)AD9280的(de)CLK管(guǎn)脚,用(yòng)来(lái)作来(lái)采樣(yàng)时(shí)鐘(zhōng)。

10. 使用(yòng)8ad_in信(xìn)号(hào)連(lián)接到(dào)AD9280的(de)D7~0管(guǎn)脚,用(yòng)来(lái)采集數據(jù)。

綜上(shàng)所(suǒ)述,我(wǒ)们(men)这(zhè)个(gè)工程需要(yào)10个(gè)信(xìn)号(hào),时(shí)鐘(zhōng)clk,複位rst_ndac_modedac_sleepdac_clkadac_wradac_daad_clk和(hé)ad_in,其中(zhōng)dac_da ad_in是(shì)8位信(xìn)号(hào),key是(shì)3位信(xìn)号(hào),其他(tā)都是(shì)1位信(xìn)号(hào)。

器件(jiàn)

AD9709管(guǎn)脚

AD9280管(guǎn)脚

原理图(tú)信(xìn)号(hào)

FPGA管(guǎn)脚

FPGA工程信(xìn)号(hào)

U8

MODE

DAC_MODE

Y4

dac_mode

SLEEP

DAC_SLEEP

H2

dac_sleep

CLK1

DA_CLKA

R2

dac_clka

WRT1

DA_WRA

U1

dac_wra

DB7P1

DAC_DA7

AA1

dac_da[7]

DB6P1

DAC_DA6

Y2

dac_da[6]

DB5P1

DAC_DA5

Y1

dac_da[5]

DB4P1

DAC_DA4

W2

dac_da[4]

DB3P1

DAC_DA3

W1

dac_da[3]

DB2P1

DAC_DA2

V2

dac_da[2]

DB1P1

DAC_DA1

V1

dac_da[1]

DB0P1

DAC_DA0

U2

dac_da[0]

U1

CLK

AD_CLK

L6

ad_clk

D7

AD_D7

N5

ad_in[7]

D6

AD_D6

M4

ad_in[6]

D5

AD_D5

M5

ad_in[5]

D4

AD_D4

R6

ad_in[4]

D3

AD_D3

T5

ad_in[3]

D2

AD_D2

U7

ad_in[2]

D1

AD_D1

V5

ad_in[1]

D0

AD_D0

V6

ad_in[0]

X1

SYS_CLK

G1

clk

K1

SYS_RST

AB12

rst_n

sw0

SW_D0

AA3

key[2]

sw1

SW_D1

AB3

key[1]

sw2

SW_D2

AB5

key[0]

module的(de)名稱定(dìng)義为(wèi)ad_prj,代(dài)碼如(rú)下(xià):

1

2

3

4

5

6

7

8

9

module ad_prj(

clk       ,

rst_n     ,

key       ,

dac_mode ,

dac_clka  ,

dac_da   ,

dac_wra  ,

dac_sleep,

ad_clk    ,

ad_in

);

其中(zhōng)clkrst_n是(shì)1位的(de)輸入(rù)信(xìn)号(hào),dac_da是(shì)8位的(de)輸出(chū)信(xìn)号(hào),dac_modedac_clkadac_wradac_sleep是(shì)1位輸出(chū)信(xìn)号(hào),ad_clk是(shì)1位輸出(chū)信(xìn)号(hào),ad_in是(shì)8位輸入(rù)信(xìn)号(hào),key是(shì)3位輸入(rù)信(xìn)号(hào)。

1

2

3

4

5

6

7

input             clk        ;

input             rst_n      ;

input [ 3-1:0]     key        ;

output            dac_mode ;

output            dac_clka  ;

output [ 8-1:0]    dac_da    ;

output            dac_wra   ;

output            dac_sleep ;

output            ad_clk    ;

input  [8-1:0]      ad_in     ;


3.2 信(xìn)号(hào)設計(jì)

由(yóu)于(yú)正(zhèng)弦信(xìn)号(hào)的(de)産生(shēng)要(yào)求,與(yǔ)FIR濾波(bō)器設計(jì)”相同(tóng),所(suǒ)以(yǐ)不(bù)再詳细(xì)描述原因(yīn)。現(xiàn)在(zài)把相關(guān)代(dài)碼整理如(rú)下(xià)。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

always  @(*)begin

case(addr)

0: sin_data = 8'h7F;

1: sin_data = 8'h85;

2: sin_data = 8'h8C;

3: sin_data = 8'h92;

4: sin_data = 8'h98;

5: sin_data = 8'h9E;

6: sin_data = 8'hA4;

7: sin_data = 8'hAA;

8: sin_data = 8'hB0;

9: sin_data = 8'hB6;

10: sin_data = 8'hBC;

11: sin_data = 8'hC1;

12: sin_data = 8'hC6;

13: sin_data = 8'hCB;

14: sin_data = 8'hD0;

15: sin_data = 8'hD5;

16: sin_data = 8'hDA;

17: sin_data = 8'hDE;

18: sin_data = 8'hE2;

19: sin_data = 8'hE6;

20: sin_data = 8'hEA;

21: sin_data = 8'hED;

22: sin_data = 8'hF0;

23: sin_data = 8'hF3;

24: sin_data = 8'hF5;

25: sin_data = 8'hF7;

26: sin_data = 8'hF9;

27: sin_data = 8'hFB;

28: sin_data = 8'hFC;

29: sin_data = 8'hFD;

30: sin_data = 8'hFE;

31: sin_data = 8'hFE;

32: sin_data = 8'hFE;

33: sin_data = 8'hFE;

34: sin_data = 8'hFE;

35: sin_data = 8'hFD;

36: sin_data = 8'hFC;

37: sin_data = 8'hFA;

38: sin_data = 8'hF8;

39: sin_data = 8'hF6;

40: sin_data = 8'hF4;

41: sin_data = 8'hF1;

42: sin_data = 8'hEF;

43: sin_data = 8'hEB;

44: sin_data = 8'hE8;

45: sin_data = 8'hE4;

46: sin_data = 8'hE0;

47: sin_data = 8'hDC;

48: sin_data = 8'hD8;

49: sin_data = 8'hD3;

50: sin_data = 8'hCE;

51: sin_data = 8'hC9;

52: sin_data = 8'hC4;

53: sin_data = 8'hBE;

54: sin_data = 8'hB9;

55: sin_data = 8'hB3;

56: sin_data = 8'hAD;

57: sin_data = 8'hA7;

58: sin_data = 8'hA1;

59: sin_data = 8'h9B;

60: sin_data = 8'h95;

61: sin_data = 8'h8F;

62: sin_data = 8'h89;

63: sin_data = 8'h82;

64: sin_data = 8'h7D;

65: sin_data = 8'h77;

66: sin_data = 8'h70;

67: sin_data = 8'h6A;

68: sin_data = 8'h64;

69: sin_data = 8'h5E;

70: sin_data = 8'h58;

71: sin_data = 8'h52;

72: sin_data = 8'h4C;

73: sin_data = 8'h46;

74: sin_data = 8'h41;

75: sin_data = 8'h3C;

76: sin_data = 8'h36;

77: sin_data = 8'h31;

78: sin_data = 8'h2C;

79: sin_data = 8'h28;

80: sin_data = 8'h23;

81: sin_data = 8'h1F;

82: sin_data = 8'h1B;

83: sin_data = 8'h17;

84: sin_data = 8'h14;

85: sin_data = 8'h11;

86: sin_data = 8'hE ;

87: sin_data = 8'hB ;

88: sin_data = 8'h9 ;

89: sin_data = 8'h7 ;

90: sin_data = 8'h5 ;

91: sin_data = 8'h3 ;

92: sin_data = 8'h2 ;

93: sin_data = 8'h1 ;

94: sin_data = 8'h1 ;

95: sin_data = 8'h1 ;

96: sin_data = 8'h1 ;

97: sin_data = 8'h1 ;

98: sin_data = 8'h2 ;

99: sin_data = 8'h3 ;

100: sin_data = 8'h4 ;

101: sin_data = 8'h6 ;

102: sin_data = 8'h7 ;

103: sin_data = 8'hA ;

104: sin_data = 8'hC ;

105: sin_data = 8'hF ;

106: sin_data = 8'h12;

107: sin_data = 8'h15;

108: sin_data = 8'h19;

109: sin_data = 8'h1D;

110: sin_data = 8'h21;

111: sin_data = 8'h25;

112: sin_data = 8'h2A;

113: sin_data = 8'h2E;

114: sin_data = 8'h33;

115: sin_data = 8'h38;

116: sin_data = 8'h3E;

117: sin_data = 8'h43;

118: sin_data = 8'h49;

119: sin_data = 8'h4E;

120: sin_data = 8'h54;

121: sin_data = 8'h5A;

122: sin_data = 8'h60;

123: sin_data = 8'h67;

124: sin_data = 8'h6D;

125: sin_data = 8'h73;

126: sin_data = 8'h79;

127: sin_data = 8'h7F;

endcase

end

always  @(posedge clk or negedge rst_n)begin

if(rst_n==1'b0)begin

addr_tmp <= 0;

end

else if(key==0) begin

addr_tmp <= addr_tmp + 262;

end

else if(key==1) begin

addr_tmp <= addr_tmp + 524;

end

else if(key==2) begin

addr_tmp <= addr_tmp + 786;

end

else if(key==3) begin

addr_tmp <= addr_tmp + 1029;

end

else if(key==4) begin

addr_tmp <= addr_tmp + 1311;

end

else if(key==5) begin

addr_tmp <= addr_tmp + 1573;

end

else if(key==6) begin

addr_tmp <= addr_tmp + 1835;

end

else begin

addr_tmp <= addr_tmp + 2097;

end

end

assign addr = addr_tmp >>10 ;

always  @(posedge clk or negedge rst_n)begin

if(rst_n==1'b0)begin

dac_da <= 0;

end

else begin

dac_da <= 255 - sin_data;

end

end

assign dac_sleep = 0        ;

assign dac_wra   = dac_clka ;

assign dac_clka  = ~clk      ;

還(huán)有(yǒu)最(zuì)後(hòu)一(yī)个(gè)信(xìn)号(hào)要(yào)設計(jì):ad_clk。由(yóu)設計(jì)目标(biāo)可(kě)知,要(yào)求是(shì)25MHz的(de)时(shí)鐘(zhōng)。为(wèi)了(le)産生(shēng)时(shí)鐘(zhōng),我(wǒ)们(men)就(jiù)要(yào)用(yòng)到(dào)PLL

3.3 生(shēng)成(chéng)PLL IP

1.打(dǎ)開(kāi)IP核管(guǎn)理工具

打(dǎ)開(kāi)quartus软(ruǎn)件(jiàn),然後(hòu)選擇Tools ->IPcatalog,在(zài)右(yòu)側弹出(chū)如(rú)下(xià)界面(miàn)

图(tú) 607

在(zài)搜索框中(zhōng),填下(xià)ALTPLL,就(jiù)会(huì)出(chū)現(xiàn)如(rú)下(xià)界面(miàn)。

图(tú) 608

ALTPLL就(jiù)是(shì)我(wǒ)们(men)需要(yào)使用(yòng)的(de)PLL IP核。双(shuāng)擊ALTPLL,在(zài)弹出(chū)的(de)对(duì)話(huà)框中(zhōng)起个(gè)文(wén)件(jiàn)名,如(rú)vga_pll,記(jì)得選擇verilog。然後(hòu)點(diǎn)OK就(jiù)可(kě)以(yǐ)開(kāi)始設置參數了(le)。

图(tú) 609

2.設置IP參數

图(tú) 610

上(shàng)图(tú)中(zhōng),主(zhǔ)要(yào)是(shì)設置輸入(rù)的(de)时(shí)鐘(zhōng)頻率,明(míng)德揚開(kāi)發(fà)板輸入(rù)时(shí)鐘(zhōng)是(shì)固定(dìng)的(de)50MHz,因(yīn)此(cǐ)可(kě)填写50,注意(yì)旁邊(biān)的(de)單位是(shì)選擇MHz。其他(tā)默認,按next

图(tú) 611

上(shàng)图(tú)的(de)option inputs中(zhōng),全(quán)部(bù)取(qǔ)消勾選,不(bù)需要(yào)産生(shēng)複位信(xìn)号(hào)。上(shàng)图(tú)中(zhōng)的(de)lock output,全(quán)部(bù)取(qǔ)消勾選,不(bù)需要(yào)産生(shēng)locked指示信(xìn)号(hào)。然後(hòu)選Next

图(tú) 612

不(bù)用(yòng)做任何更(gèng)改,直(zhí)接Next

图(tú) 613

不(bù)用(yòng)做任何更(gèng)改,直(zhí)接Next。

图(tú) 614

增加輸入(rù)时(shí)鐘(zhōng),由(yóu)于(yú)我(wǒ)们(men)只(zhī)有(yǒu)一(yī)个(gè)輸入(rù)时(shí)鐘(zhōng),所(suǒ)以(yǐ)只(zhī)用(yòng)inclk0即可(kě),无需增加。直(zhí)接Next

图(tú) 615

不(bù)用(yòng)做任何更(gèng)改,直(zhí)接Next

图(tú) 616

設置c0的(de)輸出(chū)頻率。我(wǒ)们(men)選擇Enter output clock frequest中(zhōng),直(zhí)接填入(rù)25,單位選擇MHz,就(jiù)是(shì)表(biǎo)示要(yào)産生(shēng)25MHz的(de)时(shí)鐘(zhōng)。然後(hòu)點(diǎn)擊Finish,弹出(chū)如(rú)下(xià)窗(chuāng)口(kǒu)。

图(tú) 617

取(qǔ)消my_pll_bb.v的(de)勾選,然後(hòu)選擇FinishQUARTUS就(jiù)会(huì)産生(shēng)PLL IP的(de)代(dài)碼了(le)。

稍等片(piàn)刻,到(dào)工程目录(lù) D:mdy_bookd_prj,可(kě)以(yǐ)看(kàn)到(dào)生(shēng)成(chéng)一(yī)个(gè)my_pll.v文(wén)件(jiàn),用(yòng)GVIM打(dǎ)開(kāi)後(hòu),可(kě)以(yǐ)看(kàn)到(dào)PLL模块(kuài)的(de)模块(kuài)輸入(rù)輸出(chū)接口(kǒu)。其中(zhōng)inclk0是(shì)50MHz輸入(rù)时(shí)鐘(zhōng),c0是(shì)25MHz的(de)輸出(chū)时(shí)鐘(zhōng)。頂层模块(kuài)直(zhí)接例化(huà)就(jiù)可(kě)以(yǐ)使用(yòng)了(le)。

图(tú) 618

1

2

3

4

my_pll u_my_pll(

.inclk0(clk   ) ,

.c0    (ad_clk )

);

至(zhì)此(cǐ),主(zhǔ)體(tǐ)程序已經(jīng)完成(chéng)。接下(xià)来(lái)是(shì)将module補充完整。

3.4 信(xìn)号(hào)定(dìng)義

接下(xià)来(lái)定(dìng)義信(xìn)号(hào)類(lèi)型。

在(zài)FIR濾波(bō)器案(àn)例”中(zhōng)已經(jīng)说(shuō)明(míng)了(le)部(bù)分(fēn)信(xìn)号(hào)的(de)说(shuō)明(míng),現(xiàn)補充如(rú)下(xià)。

1

2

3

4

wire    [6:0]    addr    ;

reg   [7:0]      sin_data    ;

reg   [7:0]      dac_da    ;

wire             dac_sleep  ;

wire             dac_wra   ;

wire             dac_clka   ;

wire             dac_mode ;

reg   [16:0]    addr_tmp    ;

ad_clk是(shì)由(yóu)例化(huà)模块(kuài)輸出(chū)信(xìn)号(hào),非(fēi)always産生(shēng),可(kě)以(yǐ)定(dìng)義为(wèi)wire型,只(zhī)有(yǒu)1位。

1

wire                        ad_clk  ;

4 綜合與(yǔ)上(shàng)板

4.1 添加文(wén)件(jiàn)到(dào)工程

图(tú) 619

1.前(qián)面(miàn)已經(jīng)介紹了(le)新建工程。現(xiàn)在(zài)打(dǎ)開(kāi)quartus,在(zài)Project菜單中(zhōng)選擇Add/Remove File to Project,弹出(chū)文(wén)件(jiàn)窗(chuāng)口(kǒu)。

图(tú) 620

點(diǎn)擊右(yòu)上(shàng)角(jiǎo)的(de),在(zài)弹出(chū)来(lái)的(de)窗(chuāng)口(kǒu)中(zhōng),双(shuāng)擊選擇D:mdy_bookd_prj目录(lù)下(xià)的(de)ad_prj.v文(wén)件(jiàn)。然後(hòu)記(jì)得要(yào)點(diǎn)Add,才算正(zhèng)式加到(dào)工程。

图(tú) 621

點(diǎn)OK關(guān)閉本(běn)窗(chuāng)口(kǒu)。


4.2 綜合

1.點(diǎn)擊右(yòu)上(shàng)角(jiǎo)藍(lán)色(sè)三(sān)角(jiǎo)鍵進(jìn)行編譯

图(tú) 622

之後(hòu)等待編譯成(chéng)功


4.3 配置管(guǎn)脚

图(tú) 623

在(zài)菜單欄中(zhōng),選中(zhōng)Assignments,然後(hòu)選擇Pin Planner,就(jiù)会(huì)弹出(chū)配置管(guǎn)脚的(de)窗(chuāng)口(kǒu)。

图(tú) 624

在(zài)配置窗(chuāng)口(kǒu)中(zhōng)的(de)location一(yī)列,可(kě)以(yǐ)填写每个(gè)管(guǎn)脚所(suǒ)对(duì)應(yìng)的(de)FPGA管(guǎn)脚号(hào)。

器件(jiàn)

AD9709管(guǎn)脚

AD9280管(guǎn)脚

原理图(tú)信(xìn)号(hào)

FPGA管(guǎn)脚

FPGA工程信(xìn)号(hào)

U8

MODE

DAC_MODE

Y4

dac_mode

SLEEP

DAC_SLEEP

H2

dac_sleep

CLK1

DA_CLKA

R2

dac_clka

WRT1

DA_WRA

U1

dac_wra

DB7P1

DAC_DA7

AA1

dac_da[7]

DB6P1

DAC_DA6

Y2

dac_da[6]

DB5P1

DAC_DA5

Y1

dac_da[5]

DB4P1

DAC_DA4

W2

dac_da[4]

DB3P1

DAC_DA3

W1

dac_da[3]

DB2P1

DAC_DA2

V2

dac_da[2]

DB1P1

DAC_DA1

V1

dac_da[1]

DB0P1

DAC_DA0

U2

dac_da[0]

U1

CLK

AD_CLK

L6

ad_clk

D7

AD_D7

N5

ad_in[7]

D6

AD_D6

M4

ad_in[6]

D5

AD_D5

M5

ad_in[5]

D4

AD_D4

R6

ad_in[4]

D3

AD_D3

T5

ad_in[3]

D2

AD_D2

U7

ad_in[2]

D1

AD_D1

V5

ad_in[1]

D0

AD_D0

V6

ad_in[0]

X1

SYS_CLK

G1

clk

K1

SYS_RST

AB12

rst_n

sw0

SW_D0

AA3

key[2]

sw1

SW_D1

AB3

key[1]

sw2

SW_D2

AB5

key[0]

按上(shàng)面(miàn)配置好(hǎo)每个(gè)信(xìn)号(hào)的(de)管(guǎn)脚,其最(zuì)終(zhōng)效果(guǒ)如(rú)下(xià)图(tú)。

图(tú) 625

關(guān)閉Pin Planner,软(ruǎn)件(jiàn)自(zì)動(dòng)会(huì)保存管(guǎn)脚配置信(xìn)息。


4.4 再次(cì)綜合

图(tú) 626

在(zài)菜單欄中(zhōng),選中(zhōng)Processing,然後(hòu)選擇Start Compilation,再次(cì)对(duì)整个(gè)工程進(jìn)行編譯和(hé)綜合。

图(tú) 627

出(chū)現(xiàn)上(shàng)面(miàn)的(de)界面(miàn),就(jiù)说(shuō)明(míng)編譯綜合成(chéng)功。


4.5 連(lián)接開(kāi)發(fà)板

图(tú) 628

連(lián)接示意(yì)如(rú)上(shàng)图(tú)所(suǒ)示。将電(diàn)源接上(shàng)開(kāi)發(fà)板;USB BLASTER一(yī)端連(lián)接到(dào)JTAG插口(kǒu),另(lìng)一(yī)端連(lián)到(dào)PC的(de)USB接口(kǒu);将開(kāi)發(fà)板上(shàng)的(de)P7接口(kǒu)和(hé)P11與(yǔ)示波(bō)器的(de)两(liǎng)个(gè)通(tòng)道(dào)相連(lián)。最(zuì)後(hòu)再将電(diàn)源打(dǎ)開(kāi)。


4.6 設置SIGNALTAP


4.7 用(yòng)SIGNALTAP观察




上(shàng)一(yī)篇(piān):2.6 數碼管(guǎn)動(dòng)态掃描
   拓展(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⁥⁠⁢

⁧⁨⁥⁨