⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ 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.15 插值濾波(bō)器設計(jì)

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

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

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


1、本(běn)文(wén)檔講述FPGA産生(shēng)两(liǎng)路(lù)正(zhèng)弦波(bō)數據(jù),一(yī)路(lù)直(zhí)接由(yóu)DA輸出(chū),一(yī)路(lù)經(jīng)过(guò)CIC处理之後(hòu)輸出(chū),然後(hòu)傳到(dào)示波(bō)器進(jìn)行观察,從而(ér)了(le)解(jiě)CIC濾波(bō)器的(de)效果(guǒ)
2、801開(kāi)發(fà)板使用(yòng)

1項目背景

1.1多(duō)采樣(yàng)率數字(zì)濾波(bō)器 

      多(duō)采樣(yàng)率就(jiù)是(shì)有(yǒu)多(duō)个(gè)采樣(yàng)率的(de)意(yì)思(sī)。前(qián)面(miàn)所(suǒ)说(shuō)的(de)FIR,IIR濾波(bō)器都是(shì)只(zhī)有(yǒu)一(yī)个(gè)采樣(yàng)頻率,是(shì)固定(dìng)不(bù)變(biàn)的(de)采樣(yàng)率,然而(ér)有(yǒu)些情(qíng)況下(xià)需要(yào)不(bù)同(tóng)采樣(yàng)頻率下(xià)的(de)信(xìn)号(hào)。 按照傳統的(de)速率轉(zhuǎn)換理論,我(wǒ)们(men)要(yào)实現(xiàn)采樣(yàng)速率的(de)轉(zhuǎn)換,可(kě)以(yǐ)这(zhè)樣(yàng)做,假如(rú)有(yǒu)一(yī)个(gè)有(yǒu)用(yòng)的(de)正(zhèng)弦波(bō)模拟信(xìn)号(hào),AD采樣(yàng)速率是(shì)f1,現(xiàn)在(zài)我(wǒ)需要(yào)用(yòng)到(dào)的(de)是(shì)采樣(yàng)頻率是(shì)f2的(de)信(xìn)号(hào),傳統做法是(shì)将这(zhè)个(gè)經(jīng)过(guò)f1采樣(yàng)後(hòu)的(de)信(xìn)号(hào)進(jìn)行DA轉(zhuǎn)換,再将轉(zhuǎn)換後(hòu)的(de)模拟信(xìn)号(hào)進(jìn)行以(yǐ)f2采樣(yàng)頻率的(de)抽樣(yàng),得到(dào)采樣(yàng)率为(wèi)f2的(de)數字(zì)信(xìn)号(hào),至(zhì)此(cǐ)完成(chéng)采樣(yàng)頻率的(de)轉(zhuǎn)換 但是(shì)这(zhè)樣(yàng)的(de)做法不(bù)僅麻(má)煩,而(ér)且处理不(bù)好(hǎo)的(de)話(huà)会(huì)使信(xìn)号(hào)受到(dào)損傷,所(suǒ)以(yǐ)这(zhè)種(zhǒng)思(sī)想(xiǎng)就(jiù)被(bèi)淘汰了(le),現(xiàn)在(zài)我(wǒ)们(men)用(yòng)到(dào)的(de)采樣(yàng)率轉(zhuǎn)換的(de)方(fāng)法就(jiù)是(shì)抽取(qǔ)與(yǔ)內(nèi)插的(de)思(sī)想(xiǎng)。

1.2抽取(qǔ)

       先(xiān)来(lái)總(zǒng)體(tǐ)来(lái)解(jiě)釋一(yī)下(xià)抽取(qǔ)的(de)含義:前(qián)面(miàn)不(bù)是(shì)说(shuō),一(yī)个(gè)有(yǒu)用(yòng)的(de)正(zhèng)弦波(bō)模拟信(xìn)号(hào)經(jīng)采樣(yàng)頻率为(wèi)f1的(de)抽樣(yàng)信(xìn)号(hào)抽樣(yàng)後(hòu)得到(dào)了(le)數字(zì)信(xìn)号(hào),很明(míng)顯这(zhè)个(gè)數字(zì)信(xìn)号(hào)序列是(shì)在(zài)f1頻率下(xià)得到(dào)的(de),現(xiàn)在(zài),假如(rú)我(wǒ)隔幾(jǐ)个(gè)點(diǎn)抽取(qǔ)一(yī)个(gè)信(xìn)号(hào),比如(rú)就(jiù)是(shì)5吧,我(wǒ)隔5个(gè)點(diǎn)抽取(qǔ)一(yī)个(gè)信(xìn)号(hào),是(shì)不(bù)是(shì)就(jiù)是(shì)相當于(yú)我(wǒ)采用(yòng)了(le)1/5倍f1的(de)采樣(yàng)頻率对(duì)模拟信(xìn)号(hào)進(jìn)行采樣(yàng)了(le)?所(suǒ)以(yǐ),抽取(qǔ)的(de)过(guò)程就(jiù)是(shì)降低抽樣(yàng)率的(de)过(guò)程,但是(shì)我(wǒ)们(men)知道(dào),这(zhè)是(shì)在(zài)时(shí)域的(de)抽樣(yàng),时(shí)域的(de)抽樣(yàng)等于(yú)信(xìn)号(hào)在(zài)頻域波(bō)形的(de)周期(qī)延拓,周期(qī)就(jiù)是(shì)采樣(yàng)頻率,所(suǒ)以(yǐ),为(wèi)了(le)避免在(zài)頻域發(fà)生(shēng)頻谱混疊,抽樣(yàng)定(dìng)理也(yě)是(shì)我(wǒ)们(men)要(yào)考慮的(de)因(yīn)素。

下(xià)面(miàn)来(lái)具體(tǐ)来(lái)介紹

图(tú)561

      如(rú)上(shàng)图(tú)所(suǒ)示,假如(rú)上(shàng)面(miàn)就(jiù)是(shì)某一(yī)有(yǒu)用(yòng)信(xìn)号(hào)經(jīng)采樣(yàng)頻率f1抽樣(yàng)得到(dào)的(de)頻谱,假設这(zhè)时(shí)候的(de)采樣(yàng)頻率为(wèi)8Khz,可(kě)以(yǐ)通(tòng)过(guò)數格子得到(dào),從0到(dào)F1处有(yǒu)8个(gè)空格,每个(gè)空格代(dài)表(biǎo)1Khz,有(yǒu)些朋友可(kě)能(néng)会(huì)問(wèn),这(zhè)不(bù)是(shì)在(zài)數字(zì)頻域吗,單位不(bù)是(shì)π吗,哪来(lái)的(de)hz?是(shì)的(de),这(zhè)里(lǐ)是(shì)數字(zì)頻域,采樣(yàng)頻率F1处对(duì)應(yìng)的(de)是(shì)2π,这(zhè)里(lǐ)只(zhī)是(shì)为(wèi)了(le)好(hǎo)解(jiě)釋,我(wǒ)们(men)用(yòng)模拟頻率来(lái)对(duì)應(yìng)數字(zì)頻率。

图(tú)562

上(shàng)面(miàn)是(shì)采樣(yàng)頻率为(wèi)8K的(de)數字(zì)信(xìn)号(hào)頻域图(tú),現(xiàn)在(zài)我(wǒ)要(yào)对(duì)这(zhè)个(gè)數字(zì)信(xìn)号(hào)進(jìn)行时(shí)域抽取(qǔ),從而(ér)来(lái)降低信(xìn)号(hào)的(de)采樣(yàng)率,我(wǒ)们(men)知道(dào),一(yī)旦我(wǒ)们(men)对(duì)數字(zì)信(xìn)号(hào)進(jìn)行时(shí)域抽取(qǔ),那(nà)麼(me)采樣(yàng)率下(xià)降,而(ér)采樣(yàng)率就(jiù)是(shì)數字(zì)信(xìn)号(hào)頻域的(de)波(bō)形周期(qī),那(nà)麼(me)也(yě)就(jiù)是(shì)周期(qī)下(xià)降,所(suǒ)以(yǐ),我(wǒ)们(men)对(duì)信(xìn)号(hào)進(jìn)行抽取(qǔ)要(yào)有(yǒu)个(gè)度(dù),要(yào)在(zài)滿足抽樣(yàng)定(dìng)理的(de)条(tiáo)件(jiàn)下(xià)对(duì)信(xìn)号(hào)進(jìn)行抽取(qǔ),否則就(jiù)会(huì)發(fà)生(shēng)頻谱混疊。

上(shàng)图(tú)就(jiù)是(shì)对(duì)信(xìn)号(hào)進(jìn)行了(le)1/5倍的(de)F1采樣(yàng)頻率抽取(qǔ),可(kě)見(jiàn),由(yóu)于(yú)發(fà)生(shēng)了(le)頻谱混疊現(xiàn)象(xiàng),因(yīn)为(wèi)1/5倍的(de)F1是(shì)1600hz,而(ér)信(xìn)号(hào)的(de)頻带(dài)是(shì)1000hz,不(bù)滿足抽樣(yàng)定(dìng)理,導致(zhì)發(fà)生(shēng)了(le)頻谱混疊,所(suǒ)以(yǐ),为(wèi)了(le)避免發(fà)生(shēng)这(zhè)種(zhǒng)情(qíng)況,除了(le)要(yào)滿足抽樣(yàng)定(dìng)理之外(wài),即抽樣(yàng)倍數不(bù)能(néng)太高(gāo),我(wǒ)们(men)還(huán)需要(yào)把信(xìn)号(hào)的(de)頻带(dài)設置在(zài)F1/2以(yǐ)下(xià),才能(néng)确保信(xìn)号(hào)不(bù)發(fà)生(shēng)頻谱混疊,因(yīn)此(cǐ),我(wǒ)们(men)需要(yào)在(zài)抽取(qǔ)之前(qián)加一(yī)个(gè)低通(tòng)濾波(bō)器,書(shū)上(shàng)叫做抗混疊低通(tòng)濾波(bō)器,用(yòng)来(lái)限制信(xìn)号(hào)的(de)頻带(dài),然後(hòu)再進(jìn)行抽取(qǔ),这(zhè)樣(yàng)的(de)話(huà)我(wǒ)们(men)来(lái)算一(yī)下(xià)

低通(tòng)濾波(bō)器的(de)截止頻率就(jiù)是(shì)1/2倍的(de)經(jīng)抽取(qǔ)後(hòu)的(de)采樣(yàng)速率,即fc = 1/2 *(F1/M) ,M是(shì)抽取(qǔ)倍數。而(ér)1/2*F1对(duì)應(yìng)的(de)數域頻率是(shì)π,因(yīn)此(cǐ)我(wǒ)们(men)得出(chū),

抗混疊低通(tòng)濾波(bō)器的(de)截止頻率是(shì)π/M


1.3內(nèi)插

抽取(qǔ)的(de)过(guò)程是(shì)降低采樣(yàng)率的(de)过(guò)程,那(nà)麼(me)插值的(de)过(guò)程當然就(jiù)是(shì)提(tí)高(gāo)采樣(yàng)率的(de)过(guò)程。大體(tǐ)的(de)思(sī)路(lù)可(kě)以(yǐ)这(zhè)麼(me)理解(jiě),我(wǒ)们(men)将經(jīng)f1抽樣(yàng)下(xià)得到(dào)的(de)數字(zì)信(xìn)号(hào)的(de)每两(liǎng)个(gè)點(diǎn)之間(jiān)進(jìn)行插值,插入(rù)的(de)值是(shì)0,插值之後(hòu),信(xìn)号(hào)在(zài)單位时(shí)間(jiān)內(nèi)的(de)采樣(yàng)點(diǎn)數增多(duō),當然也(yě)就(jiù)是(shì)采樣(yàng)速率的(de)提(tí)升(shēng),采樣(yàng)速率提(tí)升(shēng)後(hòu)我(wǒ)们(men)知道(dào),那(nà)麼(me)信(xìn)号(hào)的(de)頻谱的(de)周期(qī)就(jiù)会(huì)增加

图(tú)563

需要(yào)注意(yì)的(de)一(yī)點(diǎn)就(jiù)是(shì),插值前(qián)後(hòu),我(wǒ)们(men)只(zhī)是(shì)在(zài)时(shí)域信(xìn)号(hào)中(zhōng)間(jiān)插入(rù)了(le)D-1个(gè)零(líng)值,僅僅是(shì)改變(biàn)了(le)采樣(yàng)率,并沒(méi)有(yǒu)改變(biàn)信(xìn)号(hào)的(de)信(xìn)息,因(yīn)此(cǐ),在(zài)頻域,信(xìn)号(hào)頻谱的(de)形狀是(shì)不(bù)会(huì)改變(biàn)的(de),改變(biàn)的(de)僅僅是(shì)周期(qī),如(rú)上(shàng)图(tú),F1是(shì)插值之前(qián)信(xìn)号(hào)的(de)周期(qī),插值之後(hòu),信(xìn)号(hào)頻谱的(de)形狀不(bù)變(biàn),周期(qī)成(chéng)了(le)F1*D,D是(shì)插值倍數。如(rú)果(guǒ)我(wǒ)们(men)直(zhí)接用(yòng)F1*D倍的(de)采樣(yàng)率采信(xìn)号(hào),得到(dào)的(de)頻谱会(huì)發(fà)現(xiàn),就(jiù)不(bù)会(huì)有(yǒu)中(zhōng)間(jiān)两(liǎng)个(gè)波(bō)形,因(yīn)此(cǐ),这(zhè)两(liǎng)个(gè)波(bō)形是(shì)多(duō)餘的(de),書(shū)上(shàng)叫做是(shì)鏡(jìng)像頻谱。既然是(shì)多(duō)餘的(de),我(wǒ)们(men)就(jiù)可(kě)以(yǐ)将它(tā)用(yòng)一(yī)个(gè)低通(tòng)濾波(bō)器濾掉,这(zhè)樣(yàng)的(de)低通(tòng)濾波(bō)器,就(jiù)叫做鏡(jìng)像低通(tòng)濾波(bō)器。这(zhè)樣(yàng)我(wǒ)们(men)来(lái)計(jì)算一(yī)下(xià)鏡(jìng)像低通(tòng)濾波(bō)器的(de)截止頻率

图(tú)564

根(gēn)據(jù)上(shàng)面(miàn)这(zhè)张(zhāng)图(tú)我(wǒ)们(men)可(kě)以(yǐ)求出(chū)鏡(jìng)像低通(tòng)濾波(bō)器的(de)截止頻率,可(kě)以(yǐ)看(kàn)到(dào),fc = 1/2 *F1,这(zhè)里(lǐ)我(wǒ)们(men)假設,內(nèi)插之後(hòu)的(de)采樣(yàng)頻率为(wèi)F2 =F1*D,那(nà)麼(me),fc =1/2*(F2/D),而(ér)1/2*F2对(duì)應(yìng)的(de)是(shì)π,注意(yì),这(zhè)里(lǐ)是(shì)1/2*F2对(duì)應(yìng)π,不(bù)是(shì)1/2*F1了(le),因(yīn)为(wèi)这(zhè)已經(jīng)是(shì)插值之後(hòu)采樣(yàng)率增加之後(hòu)的(de)頻谱了(le),所(suǒ)以(yǐ)我(wǒ)们(men)得出(chū):

鏡(jìng)像低通(tòng)濾波(bō)器的(de)截止頻率为(wèi):π/D


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

本(běn)次(cì)案(àn)例将使用(yòng)到(dào)采樣(yàng)率大于(yú)100M的(de)双(shuāng)通(tòng)道(dào)的(de)示波(bō)器。将示波(bō)器的(de)两(liǎng)个(gè)通(tòng)道(dào),分(fēn)别與(yǔ)FPGA的(de)DA通(tòng)道(dào)1和(hé)DA通(tòng)道(dào)2相連(lián),观察两(liǎng)路(lù)DA的(de)輸出(chū)。其連(lián)接示意(yì)如(rú)下(xià)图(tú)所(suǒ)示。

图(tú)565

本(běn)案(àn)例是(shì)FPGA內(nèi)部(bù)産生(shēng)正(zhèng)弦信(xìn)号(hào),这(zhè)个(gè)正(zhèng)弦信(xìn)号(hào)一(yī)路(lù)輸出(chū)給(gěi)DA通(tòng)道(dào)A,另(lìng)一(yī)路(lù)經(jīng)过(guò)插值濾波(bō)器後(hòu),輸出(chū)給(gěi)DA通(tòng)道(dào)B。

图(tú)566

正(zhèng)弦信(xìn)号(hào)産生(shēng)電(diàn)路(lù)産生(shēng)頻率为(wèi)62.5KHz的(de)正(zhèng)弦信(xìn)号(hào),該正(zhèng)弦信(xìn)号(hào)由(yóu)8个(gè)點(diǎn)組成(chéng)。

插值濾波(bō)器是(shì)4倍的(de)插值,也(yě)就(jiù)是(shì)说(shuō)進(jìn)来(lái)是(shì)8个(gè)點(diǎn)的(de)正(zhèng)弦波(bō),輸出(chū)将是(shì)32个(gè)的(de)正(zhèng)弦波(bō)。

仿真(zhēn)效果(guǒ),上(shàng)面(miàn)的(de)波(bō)形为(wèi)插值前(qián),下(xià)面(miàn)的(de)为(wèi)插值後(hòu)可(kě)以(yǐ)明(míng)顯看(kàn)出(chū)下(xià)面(miàn)的(de)波(bō)形更(gèng)为(wèi)圆(yuán)滑。

图(tú)567

下(xià)面(miàn)是(shì)示波(bō)器的(de)顯示效果(guǒ)

图(tú)568

上(shàng)面(miàn)黃色(sè)是(shì)通(tòng)道(dào)1輸出(chū)的(de)信(xìn)号(hào),下(xià)面(miàn)藍(lán)色(sè)是(shì)通(tòng)道(dào)2的(de)輸出(chū)信(xìn)号(hào)。

上(shàng)板效果(guǒ)图(tú)如(rú)下(xià)图(tú)所(suǒ)示。


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

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

新建目录(lù):D:mdy_bookcic_prj。在(zài)該目录(lù)中(zhōng),新建一(yī)个(gè)名为(wèi)cic_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未濾波(bō)的(de)正(zhèng)弦信(xìn)号(hào),讓通(tòng)道(dào)B輸出(chū)濾波(bō)後(hòu)的(de)正(zhèng)弦信(xìn)号(hào)。为(wèi)了(le)控制AD9709的(de)工作模式,就(jiù)要(yào)控制AD9709的(de)MODE、SLEEP管(guǎn)脚;为(wèi)了(le)控制通(tòng)道(dào)A,就(jiù)需要(yào)控制AD9729的(de)CLK1、WRT1、DB7~0P1管(guǎn)脚;为(wèi)了(le)控制通(tòng)道(dào)B,就(jiù)需要(yào)控制AD9729的(de)CLK2、WRT2、DB7~0P2管(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)dac_mode信(xìn)号(hào)連(lián)接到(dào)AD9709的(de)MODE管(guǎn)脚,用(yòng)来(lái)控制其工作模式。

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

5.使用(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)。

6.使用(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)。

7.使用(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ù)。

8.使用(yòng)dac_clkb号(hào)連(lián)接到(dào)AD9709的(de)CLK2脚,用(yòng)来(lái)控制通(tòng)道(dào)B时(shí)鐘(zhōng)。

9.使用(yòng)dac_wrb号(hào)連(lián)接到(dào)AD9709的(de)WRT2脚,用(yòng)来(lái)控制通(tòng)道(dào)B使能(néng)。

10.使用(yòng)8位信(xìn)号(hào)dac_db接到(dào)AD9709的(de)DB7~0P2脚,用(yòng)来(lái)控制通(tòng)道(dào)B写數據(jù)。

綜上(shàng)所(suǒ)述,我(wǒ)们(men)这(zhè)个(gè)工程需要(yào)10个(gè)信(xìn)号(hào),时(shí)鐘(zhōng)clk,複位rst_n,dac_mode、dac_sleep、dac_clka、dac_wra、dac_da、dac_clkb、dac_wrb和(hé)dac_db信(xìn)号(hào),其中(zhōng)dac_da和(hé)dac_db是(shì)8位信(xìn)号(hào),其他(tā)都是(shì)1位信(xìn)号(hào)。下(xià)面(miàn)表(biǎo)格表(biǎo)示了(le)硬(yìng)件(jiàn)電(diàn)路(lù)图(tú)的(de)連(lián)接關(guān)系(xì)。

器件(jiàn)

AD9709管(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]

CLK2

DA_CLKB

R1

dac_clkb

WRT2

DA_WRB

P2

dac_wrb

DB7P2

DAC_DB7

P1

dac_db[7]

DB6P2

DAC_DB6

N2

dac_db[6]

DB5P2

DAC_DB5

N1

dac_db[5]

DB4P2

DAC_DB4

M2

dac_db[4]

DB3P2

DAC_DB3

M1

dac_db[3]

DB2P2

DAC_DB2

J1

dac_db[2]

DB1P2

DAC_DB1

J2

dac_db[1]

DB0P2

DAC_DB0

H1

dac_db[0]

X1


SYS_CLK

G1

clk

K1


SYS_RST

AB12

rst_n

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

1

2

3

4

5

6

7

8

9

module cic_prj(

clk       ,

rst_n     ,

dac_mode ,

dac_sleep ,

dac_clka  ,

dac_da   ,

dac_wra  ,

dac_clkb  ,

dac_db   ,

dac_wrb

);

其中(zhōng)clk、rst_n是(shì)1位的(de)輸入(rù)信(xìn)号(hào),dac_da和(hé)dac_db是(shì)8位的(de)輸出(chū)信(xìn)号(hào),dac_mode,dac_clka,dac_wra,dac_sleep,dac_clkb,dac_wrb是(shì)一(yī)位輸出(chū)信(xìn)号(hào)。

1

2

3

4

5

6

7

input             clk        ;

input             rst_n      ;

output            dac_mode ;

output            dac_clka  ;

output [ 8-1:0]    dac_da    ;

output            dac_wra   ;

output            dac_sleep ;

output            dac_clkb  ;

output [ 8-1:0]    dac_db    ;

output            dac_wrb   ;



3.2正(zhèng)弦信(xìn)号(hào)設計(jì)

假設産生(shēng)的(de)正(zhèng)弦信(xìn)号(hào)命名为(wèi)sin_data信(xìn)号(hào)。sin_data一(yī)共(gòng)有(yǒu)8个(gè)值,是(shì)從一(yī)个(gè)正(zhèng)弦信(xìn)号(hào)中(zhōng),按(2*pi/8)的(de)間(jiān)隔采樣(yàng)到(dào)的(de),可(kě)列出(chū)下(xià)表(biǎo)。

采樣(yàng)點(diǎn)i

sin_data

(16進(jìn)制)

采樣(yàng)點(diǎn)i

sin_data

(16進(jìn)制)

采樣(yàng)點(diǎn)i

sin_data

(16進(jìn)制)

采樣(yàng)點(diǎn)i

sin_data

(16進(jìn)制)

0

7F

2

FE

4

7D

6

1

1

DA

3

D8

5

23

7

2A

很自(zì)然地(dì)定(dìng)義一(yī)个(gè)7位的(de)選擇信(xìn)号(hào)addr。我(wǒ)们(men)只(zhī)要(yào)控制好(hǎo)addr,就(jiù)能(néng)方(fāng)便得到(dào)sin_data。因(yīn)此(cǐ)可(kě)以(yǐ)写出(chū)下(xià)面(miàn)代(dài)碼。

1

2

3

4

5

6

7

8

9

always  @(*)begin

case(addr)

0: sin_data = 8'h7F;

1: sin_data = 8'hDA;

2: sin_data = 8'hFE;

3: sin_data = 8'HD8;

4: sin_data = 8'h7D;

5: sin_data = 8'h23;

6: sin_data = 8'h1;

7: sin_data = 8'h2A;

endcase

end

接下(xià)来(lái)是(shì)設計(jì)信(xìn)号(hào)addr。

addr是(shì)用(yòng)来(lái)控制選擇數據(jù)的(de)地(dì)址,通(tòng)过(guò)控制addr的(de)增加值,就(jiù)能(néng)産生(shēng)所(suǒ)需要(yào)的(de)正(zhèng)弦波(bō)。

本(běn)案(àn)例要(yào)求産生(shēng)62.5KHz的(de)正(zhèng)弦信(xìn)号(hào)。該正(zhèng)弦信(xìn)号(hào)的(de)周期(qī)是(shì)16000ns。本(běn)工程的(de)工作时(shí)鐘(zhōng)是(shì)20ns,也(yě)就(jiù)是(shì)16000/20 = 800个(gè)时(shí)鐘(zhōng)輸出(chū)一(yī)个(gè)正(zhèng)弦信(xìn)号(hào),也(yě)就(jiù)是(shì)800个(gè)时(shí)鐘(zhōng)将上(shàng)表(biǎo)的(de)8个(gè)值輸出(chū)一(yī)遍(biàn),即每100个(gè)时(shí)鐘(zhōng)輸出(chū)addr加1。

每100个(gè)时(shí)鐘(zhōng)輸出(chū)一(yī)个(gè)值,那(nà)意(yì)味着我(wǒ)们(men)需要(yào)一(yī)个(gè)計(jì)數器cnt0,該計(jì)數器用(yòng)来(lái)对(duì)这(zhè)100進(jìn)行計(jì)數。計(jì)數器的(de)加1条(tiáo)件(jiàn)是(shì)“1”,結束(shù)条(tiáo)件(jiàn)是(shì)“數到(dào)100个(gè)”。因(yīn)此(cǐ)可(kě)写出(chū)cnt0的(de)代(dài)碼。


1

2

3

always @(posedge clk or negedge rst_n) begin

if (rst_n==0) begin

cnt0 <= 0;

end

else if(add_cnt0) begin

if(end_cnt0)

cnt0 <= 0;

else

cnt0 <= cnt0+1 ;

end

end

assign add_cnt0 = 1;

assign end_cnt0 = add_cnt0  && cnt0 == 100 -1 ;

每100个(gè)时(shí)鐘(zhōng)後(hòu),addr就(jiù)加1。说(shuō)明(míng)这(zhè)个(gè)addr也(yě)是(shì)一(yī)个(gè)計(jì)數器,該計(jì)數器的(de)加1条(tiáo)件(jiàn)是(shì)“數到(dào)100个(gè)时(shí)鐘(zhōng)”,即end_cnt0,結束(shù)条(tiáo)件(jiàn)是(shì)“數到(dào)8个(gè)”。

1

always @(posedge clk or negedge rst_n) begin

if (rst_n==0) begin

addr <= 0;

end

else if(add_addr) begin

if(end_addr)

addr <= 0;

else

addr <= addr+1 ;

end

end

assign add_addr = end_cnt0;

assign end_addr = add_addr  && addr == 8 -1 ;


3.3CIC濾波(bō)器設計(jì)

3.3.1新建FPGA工程

图(tú)569

1.打(dǎ)開(kāi)quartus,點(diǎn)擊File在(zài)File菜單中(zhōng)選擇New Project Wizard....。

图(tú)570

2.弹出(chū)Introduction界面(miàn)選擇Next。

图(tú)571

3.設置工程目录(lù),工程名,頂层模块(kuài)名

工程目录(lù)設置为(wèi):D:mdy_bookcic_prj

工程名:cic_prj

頂层模块(kuài)名:cic_prj

填写完畢後(hòu),點(diǎn)擊next之後(hòu)進(jìn)入(rù)下(xià)一(yī)界面(miàn)。

图(tú)572

4.工程類(lèi)型界面(miàn),Project Type選擇Empty project,選擇空白工程。點(diǎn)Next進(jìn)入(rù)下(xià)一(yī)个(gè)界面(miàn)。

图(tú)573

5.在(zài)文(wén)件(jiàn)添加界面(miàn),不(bù)選擇任何文(wén)件(jiàn)。點(diǎn)擊Next,進(jìn)入(rù)下(xià)一(yī)个(gè)界面(miàn)。

图(tú)574

6.器件(jiàn)選擇界面(miàn)。在(zài)Device family这(zhè)一(yī)項之中(zhōng)選擇Cyclone IV E;在(zài)下(xià)部(bù)的(de)Available device選擇EP4CE6F23C8。完成(chéng)後(hòu)直(zhí)接點(diǎn)擊Finish。


3.3.2FPGA生(shēng)成(chéng)CIC IP核

图(tú)575

建立工程後(hòu),在(zài)quartus中(zhōng)IP catalog这(zhè)一(yī)界面(miàn)中(zhōng)選擇DSP下(xià)一(yī)目录(lù)中(zhōng)選擇Filter再選擇CIC。

图(tú)576

點(diǎn)擊後(hòu)進(jìn)入(rù)此(cǐ)界面(miàn)給(gěi)新生(shēng)成(chéng)的(de)fir濾波(bō)器ip核選擇如(rú)下(xià)路(lù)徑:D:mdy_bookcic_prj,entity name填写:my_cic。點(diǎn)擊OK後(hòu),進(jìn)入(rù)FIR濾波(bō)器設置界面(miàn)。

图(tú)577

按如(rú)下(xià)設置:

Filter Type:要(yào)選擇Interpolator,表(biǎo)示是(shì)插值濾波(bō)器。

Rate change factor:填上(shàng)4,表(biǎo)示是(shì)4倍插值。

output Rounding Method:選擇Truncation,表(biǎo)示輸出(chū)的(de)結果(guǒ)要(yào)截斷。

Output data width:選擇8。表(biǎo)示輸出(chū)結果(guǒ)要(yào)截斷为(wèi)8位。

其他(tā)選項默認,點(diǎn)擊窗(chuāng)口(kǒu)右(yòu)下(xià)角(jiǎo)的(de)Generate Hdl,会(huì)弹出(chū)下(xià)面(miàn)的(de)窗(chuāng)口(kǒu)。

图(tú)578

注意(yì)選擇文(wén)件(jiàn)是(shì)Verilog文(wén)件(jiàn),其他(tā)都不(bù)用(yòng)勾選。點(diǎn)擊Generate,就(jiù)会(huì)生(shēng)成(chéng)y_cic的(de)verilog文(wén)件(jiàn)。

图(tú)579

出(chū)現(xiàn)上(shàng)面(miàn)的(de)提(tí)示,就(jiù)是(shì)生(shēng)成(chéng)成(chéng)功了(le)。

點(diǎn)Finish關(guān)閉CIC濾波(bō)器生(shēng)成(chéng)窗(chuāng)口(kǒu)。

图(tú)580

如(rú)果(guǒ)出(chū)現(xiàn)上(shàng)面(miàn)的(de)提(tí)示,就(jiù)是(shì)表(biǎo)示要(yào)手(shǒu)動(dòng)将刚才生(shēng)成(chéng)的(de)IP核加到(dào)本(běn)工程。

图(tú)581

在(zài)Project菜單中(zhōng)選擇Add/Remove File to Project,弹出(chū)文(wén)件(jiàn)窗(chuāng)口(kǒu)。

图(tú)582

點(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_bookcic_prjmy_cicsynthesis目录(lù)下(xià)的(de)my_cic.qip文(wén)件(jiàn)(注意(yì)不(bù)要(yào)搞錯文(wén)件(jiàn)類(lèi)型)。然後(hòu)記(jì)得要(yào)點(diǎn)Add,才算正(zhèng)式加到(dào)工程。

图(tú)583

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

IP核生(shēng)成(chéng)後(hòu)弹出(chū)此(cǐ)对(duì)話(huà)框點(diǎn)擊yes将此(cǐ)IP核添加進(jìn)工程。


3.3.3例化(huà)CIC IP核
用(yòng)GVIM打(dǎ)開(kāi)D:mdy_bookcic_prjmy_cicsynthesismy_cic.v文(wén)件(jiàn),該文(wén)件(jiàn)就(jiù)是(shì)生(shēng)成(chéng)的(de)CIC IP核文(wén)件(jiàn)。

图(tú)584

my_fir模块(kuài)的(de)各(gè)个(gè)信(xìn)号(hào)的(de)描述見(jiàn)下(xià)表(biǎo)。

信(xìn)号(hào)名

I/O

位宽(kuān)

作用(yòng)

clk

I

1

时(shí)鐘(zhōng)輸入(rù)信(xìn)号(hào)。

reset_n

I

1

複位信(xìn)号(hào),低電(diàn)平有(yǒu)效。

in_data

I

8

濾波(bō)器輸入(rù)的(de)數據(jù)輸入(rù)。注意(yì),輸入(rù)的(de)是(shì)有(yǒu)符号(hào)數。

in_valid

I

1

濾波(bō)器輸入(rù)的(de)數據(jù)有(yǒu)效指示信(xìn)号(hào)。

in_error

I

2

輸入(rù)數據(jù)錯誤指示信(xìn)号(hào)。实在(zài)想(xiǎng)不(bù)出(chū)有(yǒu)啥錯誤情(qíng)況,所(suǒ)以(yǐ)此(cǐ)处直(zhí)接填0。

in_ready

O

1

本(běn)IP核準備好(hǎo)信(xìn)号(hào)。

out_data

O

8

濾波(bō)器的(de)輸出(chū)。注意(yì),是(shì)有(yǒu)符号(hào)數。

out_valid

O

1

濾波(bō)器輸出(chū)有(yǒu)效指示信(xìn)号(hào)。

out_error

O

2

FIR濾波(bō)器輸出(chū)錯誤指示信(xìn)号(hào)。由(yóu)于(yú)輸入(rù)沒(méi)錯誤,輸出(chū)也(yě)不(bù)会(huì)有(yǒu)錯誤,所(suǒ)以(yǐ)可(kě)以(yǐ)忽略該信(xìn)号(hào),例化(huà)时(shí)不(bù)連(lián)接。

out_ready

I

1

下(xià)遊模块(kuài)準備好(hǎo)信(xìn)号(hào)。當下(xià)遊模块(kuài)準備好(hǎo)时(shí),本(běn)IP核才会(huì)輸出(chū)一(yī)个(gè)數據(jù)。

可(kě)以(yǐ)利用(yòng)此(cǐ)信(xìn)号(hào)来(lái)控制IP核數據(jù)輸出(chū)的(de)頻率。

特(tè)别注意(yì)的(de)是(shì),濾波(bō)器的(de)輸入(rù)數據(jù)和(hé)輸出(chū)數據(jù)都是(shì)有(yǒu)符号(hào)數(補碼的(de)形式,-128~127)。而(ér)我(wǒ)们(men)知道(dào),正(zhèng)弦信(xìn)sin_data是(shì)无符号(hào)數(0~255)。所(suǒ)以(yǐ)要(yào)将sin_data變(biàn)成(chéng)有(yǒu)符号(hào)數,再送給(gěi)FIR進(jìn)行濾波(bō)。假設轉(zhuǎn)換後(hòu)的(de)信(xìn)号(hào)为(wèi)cic_din,該信(xìn)号(hào)位宽(kuān)为(wèi)8位。

无符号(hào)數轉(zhuǎn)成(chéng)有(yǒu)符号(hào)數的(de)方(fāng)法很簡單:cic_din = sin_data - 128。读(dú)者(zhě)有(yǒu)興趣可(kě)以(yǐ)验(yàn)證一(yī)下(xià)。

生(shēng)成(chéng)CIC IP核後(hòu),我(wǒ)们(men)要(yào)对(duì)其進(jìn)行例化(huà),才行使用(yòng)上(shàng)这(zhè)个(gè)IP核,例化(huà)名起名u_my_cic,cic的(de)輸出(chū)數據(jù)信(xìn)号(hào)命名为(wèi)cic_dout。

我(wǒ)们(men)要(yào)控制CIC IP核的(de)輸出(chū),使每个(gè)數據(jù)都能(néng)等間(jiān)隔輸出(chū)數據(jù)。由(yóu)于(yú)CIC濾波(bō)器的(de)輸入(rù)是(shì)100个(gè)时(shí)鐘(zhōng)一(yī)个(gè)數據(jù),CIC是(shì)4倍速率,因(yīn)此(cǐ)輸出(chū)是(shì)25个(gè)时(shí)鐘(zhōng)一(yī)个(gè)數據(jù)。所(suǒ)以(yǐ)我(wǒ)们(men)每25个(gè)时(shí)鐘(zhōng)給(gěi)一(yī)个(gè)有(yǒu)效信(xìn)号(hào)連(lián)到(dào)out_ready接口(kǒu)上(shàng)。这(zhè)时(shí)需要(yào)一(yī)个(gè)計(jì)數器cnt1来(lái)計(jì)时(shí)25个(gè)时(shí)鐘(zhōng),該計(jì)數器加1条(tiáo)件(jiàn)是(shì)“1”,結束(shù)条(tiáo)件(jiàn)是(shì)“數到(dào)25个(gè)”。

1

2

3

4

5

6

7

8

always @(posedge clk or negedge rst_n) begin

if (rst_n==0) begin

cnt1 <= 0;

end

else if(add_cnt1) begin

if(end_cnt1)

cnt1 <= 0;

else

cnt1 <= cnt1+1 ;

end

end

assign add_cnt1 = 1;

assign end_cnt1 = add_cnt1  && cnt1 == 25-1 ;

有(yǒu)了(le)这(zhè)些信(xìn)号(hào)後(hòu),就(jiù)可(kě)以(yǐ)例化(huà)CIC IP核了(le)。


1

2

3

4

5

6

7

8

assigncic_din = sin_data - 128;

my_cic u_my_cic(

.in_error  (0           ),

.in_valid  (end_cnt0    ),

.in_ready  (            ),

.in_data   (cic_din     ),

.out_data  (cic_dout    ),

.out_error (            ),

.out_valid (cic_dout_vld),

.out_ready (end_cnt1    ),

.clk       (clk         ),

.reset_n   (rst_n       )

);


3.4DA接口(kǒu)信(xìn)号(hào)設計(jì)

接下(xià)来(lái)是(shì)設計(jì)信(xìn)号(hào)dac_da。dac_da是(shì)直(zhí)接輸出(chū)正(zhèng)弦信(xìn)号(hào),但由(yóu)于(yú)DA的(de)輸出(chū)電(diàn)壓與(yǔ)dac_da是(shì)成(chéng)反(fǎn)比例線(xiàn)性(xìng)關(guān)系(xì),所(suǒ)以(yǐ)dac_da都是(shì)按(255-sin_data)得到(dào)。那(nà)麼(me)可(kě)以(yǐ)写出(chū)dac_da的(de)代(dài)碼。

1

2

3

4

5

6

7

8

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

接下(xià)来(lái)是(shì)設計(jì)信(xìn)号(hào)dac_sleep,AD是(shì)一(yī)直(zhí)工作的(de),所(suǒ)以(yǐ)要(yào)讓dac_sleep一(yī)直(zhí)为(wèi)0。

dac_clka为(wèi)了(le)滿足tS的(de)时(shí)間(jiān)要(yào)求,可(kě)以(yǐ)讓dac_clka = ~clk。

dac_wra可(kě)以(yǐ)與(yǔ)dac_clka相同(tóng)。

1

2

3

assign dac_sleep = 0        ;

assign dac_wra   = dac_clka ;

assign dac_clka  = ~clk      ;

接下(xià)来(lái)是(shì)設計(jì)信(xìn)号(hào)dac_db。dac_db是(shì)直(zhí)接輸出(chū)濾波(bō)後(hòu)的(de)信(xìn)号(hào)cic_dout。但要(yào)注意(yì)的(de)是(shì)cic_dout是(shì)有(yǒu)符号(hào)數(範圍是(shì)-128~127),所(suǒ)以(yǐ)要(yào)轉(zhuǎn)有(yǒu)无符号(hào)數(0~255)。假設轉(zhuǎn)換後(hòu)的(de)信(xìn)号(hào)为(wèi)cic_dout2,則cic_dout2 = cic_dout + 128。另(lìng)外(wài),由(yóu)于(yú)DA的(de)通(tòng)道(dào)2的(de)輸出(chū)電(diàn)壓與(yǔ)dac_db是(shì)成(chéng)反(fǎn)比例線(xiàn)性(xìng)關(guān)系(xì),所(suǒ)以(yǐ)dac_db都是(shì)按(255-cic_dout2)得到(dào)。那(nà)麼(me)可(kě)以(yǐ)写出(chū)dac_db的(de)代(dài)碼。

1

2

3

4

5

6

7

8

assign cic_dout2 = cic_dout + 128;

always  @(posedge clk or negedge rst_n)begin

if(rst_n==1'b0)begin

dac_db<= 0;

end

else begin

dac_db<= 255 -cic_dout2;

end

end

dac_clkb为(wèi)了(le)滿足tS的(de)时(shí)間(jiān)要(yào)求,可(kě)以(yǐ)讓dac_clkb = ~clk。

dac_wrb可(kě)以(yǐ)與(yǔ)dac_clkb相同(tóng)。

1

2

3

assign dac_wrb   = dac_clkb ;

assign dac_clkb  = ~clk      ;


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

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

cnt0是(shì)用(yòng)always産生(shēng)的(de)信(xìn)号(hào),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。cnt0計(jì)數的(de)最(zuì)大值为(wèi)99,需要(yào)用(yòng)7根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)是(shì)7位。add_cnt0和(hé)end_cnt0都是(shì)用(yòng)assign方(fāng)式設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire。并且其值是(shì)0或(huò)者(zhě)1,1个(gè)線(xiàn)表(biǎo)示即可(kě)。因(yīn)此(cǐ)代(dài)碼如(rú)下(xià):

1

2

3

reg    [6:0]                 cnt0      ;

wire                        add_cnt0  ;

wire                        end_cnt0  ;

cnt1是(shì)用(yòng)always産生(shēng)的(de)信(xìn)号(hào),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。cnt1計(jì)數的(de)最(zuì)大值为(wèi)24,需要(yào)用(yòng)5根(gēn)線(xiàn)表(biǎo)示,即位宽(kuān)是(shì)5位。add_cnt1和(hé)end_cnt1都是(shì)用(yòng)assign方(fāng)式設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire。并且其值是(shì)0或(huò)者(zhě)1,1根(gēn)線(xiàn)表(biǎo)示即可(kě)。因(yīn)此(cǐ)代(dài)碼如(rú)下(xià):

1

2

3

reg    [4:0]                 cnt1      ;

wire                        add_cnt1  ;

wire                        end_cnt1  ;

addr是(shì)用(yòng)assign設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire。其值最(zuì)大为(wèi)7,一(yī)共(gòng)有(yǒu)3根(gēn)線(xiàn),位宽(kuān)为(wèi)3;add_addr和(hé)end_addr都是(shì)用(yòng)assign方(fāng)式設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire。并且其值是(shì)0或(huò)者(zhě)1,1根(gēn)線(xiàn)表(biǎo)示即可(kě)。故而(ér)代(dài)碼如(rú)下(xià)

1

wire    [2:0]    addr    ;

wire        add_addr ;

wire        end_addr ;

sin_data是(shì)用(yòng)always設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。其最(zuì)大值为(wèi)255,要(yào)有(yǒu)8根(gēn)線(xiàn)表(biǎo)示,位宽(kuān)为(wèi)8,故而(ér)代(dài)碼如(rú)下(xià)

1

reg   [7:0]    sin_data    ;

cic_din是(shì)用(yòng)assign設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire。其位宽(kuān)为(wèi)8,故而(ér)代(dài)碼如(rú)下(xià)

1

wire    [7:0]    cic_din    ;

cic_dout是(shì)例化(huà)模块(kuài)的(de)輸出(chū),非(fēi)always設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire。其位宽(kuān)为(wèi)8,故而(ér)代(dài)碼如(rú)下(xià)

1

wire    [7:0]    cic_dout    ;

cic_dout2是(shì)用(yòng)assign設計(jì)的(de),非(fēi)always設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire。其位宽(kuān)为(wèi)8,故而(ér)代(dài)碼如(rú)下(xià)

1

wire    [7:0]    cic_dout2    ;

dac_da是(shì)用(yòng)always設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。其位宽(kuān)为(wèi)8;dac_sleep是(shì)用(yòng)assign設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire,位宽(kuān)为(wèi)1;dac_wra是(shì)用(yòng)assign設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire,位宽(kuān)为(wèi)1;dac_clka是(shì)用(yòng)assign設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire,位宽(kuān)为(wèi)1;dac_mode是(shì)用(yòng)assign設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire,位宽(kuān)为(wèi)1。故而(ér)代(dài)碼如(rú)下(xià)

1

reg   [7:0]    dac_da    ;

wire          dac_sleep  ;

wire          dac_wra   ;

wire          dac_clka   ;

wire          dac_mode ;

dac_db是(shì)用(yòng)always設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。其位宽(kuān)为(wèi)8;dac_wrb是(shì)用(yòng)assign設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire,位宽(kuān)为(wèi)1;dac_clkb是(shì)用(yòng)assign設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire,位宽(kuān)为(wèi)1。故而(ér)代(dài)碼如(rú)下(xià)。

1

reg   [7:0]    dac_db    ;

wire          dac_wrb   ;

wire          dac_clkb   ;

在(zài)代(dài)碼的(de)最(zuì)後(hòu)一(yī)行写下(xià)endmodule

1

endmodule

至(zhì)此(cǐ),整个(gè)代(dài)碼的(de)設計(jì)工作已經(jīng)完成(chéng)。下(xià)一(yī)步是(shì)新建工程和(hé)上(shàng)板查看(kàn)現(xiàn)象(xiàng)。


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

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

图(tú)585

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ú)586

點(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_bookcic_prj目录(lù)下(xià)的(de)cic_prj.v文(wén)件(jiàn)。然後(hòu)記(jì)得要(yào)點(diǎn)Add,才算正(zhèng)式加到(dào)工程。

图(tú)587

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


4.2綜合

图(tú)588

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

图(tú)589

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


4.3配置管(guǎn)脚

图(tú)590

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

图(tú)591

在(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)脚

原理图(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]

CLK2

DA_CLKB

R1

dac_clkb

WRT2

DA_WRB

P2

dac_wrb

DB7P2

DAC_DB7

P1

dac_db[7]

DB6P2

DAC_DB6

N2

dac_db[6]

DB5P2

DAC_DB5

N1

dac_db[5]

DB4P2

DAC_DB4

M2

dac_db[4]

DB3P2

DAC_DB3

M1

dac_db[3]

DB2P2

DAC_DB2

J1

dac_db[2]

DB1P2

DAC_DB1

J2

dac_db[1]

DB0P2

DAC_DB0

H1

dac_db[0]

X1


SYS_CLK

G1

clk

K1


SYS_RST

AB12

rst_n

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

图(tú)592

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


4.4再次(cì)綜合

图(tú)593

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

图(tú)594

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


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

图(tú)595

連(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上(shàng)板

图(tú)596

在(zài)quartus的(de)Task窗(chuāng)口(kǒu)中(zhōng),右(yòu)鍵Program Device選擇Open進(jìn)入(rù)燒录(lù)界面(miàn)。

图(tú)597

在(zài)上(shàng)面(miàn)的(de)界面(miàn)中(zhōng),默認会(huì)選中(zhōng)文(wén)件(jiàn)output/cic_prj.sof,

在(zài)上(shàng)面(miàn)的(de)界面(miàn)中(zhōng),Hardware Setup的(de)旁邊(biān)会(huì)顯示:USB-Blaster。

图(tú)598

點(diǎn)擊statr,在(zài)progress这(zhè)一(yī)条(tiáo)顯示100%即表(biǎo)示成(chéng)功,此(cǐ)时(shí)可(kě)以(yǐ)看(kàn)FPGA輸出(chū)效果(guǒ)了(le)。



技術(shù)交流QQ群(qún):97925396
更(gèng)多(duō)FPGA技術(shù)資訊:微信(xìn)公衆号(hào) fpga資訊


上(shàng)一(yī)篇(piān):2.5 串口(kǒu)通(tòng)信(xìn)
   拓展(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⁥⁠⁢

⁧⁨⁥⁨