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

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

    官网(wǎng)連(lián)载的(de)內(nèi)容将出(chū)版成(chéng)图(tú)書(shū),并将录(lù)制視頻,免費公開(kāi)学習,欢迎大家(jiā)留意(yì)。本(běn)連(lián)载前(qián)面(miàn)是(shì)基礎部(bù)分(fēn),與(yǔ)一(yī)般教材无异(yì),後(hòu)面(miàn)是(shì)項目实踐,是(shì)本(běn)連(lián)载的(de)特(tè)色(sè)。如(rú)果(guǒ)你有(yǒu)一(yī)定(dìng)的(de)基礎(能(néng)看(kàn)懂verilog代(dài)碼即可(kě)),那(nà)麼(me)可(kě)跳过(guò)前(qián)面(miàn)部(bù)分(fēn),直(zhí)接学習後(hòu)面(miàn)的(de)項目实踐。項目实踐将有(yǒu)16个(gè),從基礎的(de)閃爍燈(dēng)開(kāi)始,到(dào)最(zuì)後(hòu)是(shì)信(xìn)号(hào)处理的(de)項目,如(rú)信(xìn)号(hào)發(fà)生(shēng)器、FIR濾波(bō)器、插值濾波(bō)器和(hé)AD采集等。 

    本(běn)連(lián)载学習效果(guǒ):不(bù)僅看(kàn)能(néng)懂代(dài)碼,還(huán)能(néng)知道(dào)每一(yī)行代(dài)碼怎麼(me)写,怎麼(me)設計(jì)。


第(dì)二(èr)階(jiē)段(duàn)  項目实踐

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

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

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ò)FIR处理之後(hòu)輸出(chū),然後(hòu)傳到(dào)示波(bō)器進(jìn)行观察,從而(ér)了(le)解(jiě)FIR濾波(bō)器的(de)效果(guǒ)
2、801開(kāi)發(fà)板使用(yòng)

                         

第(dì)十(shí)四(sì)章(zhāng)  FIR濾波(bō)器設計(jì)


1 項目背景

1.1 FIR和(hé)IIR濾波(bō)器

    FIRFinite Impulse ResponseFilter:有(yǒu)限沖激響應(yìng)濾波(bō)器,又稱为(wèi)非(fēi)遞歸線(xiàn)性(xìng)濾波(bō)器。

    FIR濾波(bō)器,顧名思(sī)義,其脈沖響應(yìng)由(yóu)有(yǒu)限个(gè)采樣(yàng)值構成(chéng)。长度(dù)(抽头(tóu)數)为(wèi)N、階(jiē)數为(wèi)N?1的(de)FIR系(xì)統的(de)轉(zhuǎn)移函(hán)數、差分(fēn)方(fāng)程和(hé)單位沖激響應(yìng)分(fēn)别如(rú)下(xià)列三(sān)式所(suǒ)示。

 

图(tú) 510

    IIRInfinite Impulse ResponseFilter:无限沖激響應(yìng)濾波(bō)器,又稱为(wèi)遞歸線(xiàn)性(xìng)濾波(bō)器。

    FIR相对(duì)與(yǔ)IIR来(lái)说(shuō),具有(yǒu)如(rú)下(xià)的(de)优點(diǎn):


  • 可(kě)以(yǐ)具備線(xiàn)性(xìng)相位特(tè)性(xìng)


    線(xiàn)性(xìng)相位的(de)概念: 如(rú)果(guǒ)濾波(bō)器的(de)N个(gè)实值系(xì)數为(wèi)对(duì)稱或(huò)者(zhě)反(fǎn)对(duì)稱結構,該濾波(bō)器具有(yǒu)線(xiàn)性(xìng)相位。 W(n)=±W(N?1?n)W(n)=±W(N?1?n)

    線(xiàn)性(xìng)相位的(de)特(tè)性(xìng):通(tòng)过(guò)線(xiàn)性(xìng)相位濾波(bō)器的(de)信(xìn)号(hào)的(de)所(suǒ)有(yǒu)頻率部(bù)分(fēn)具有(yǒu)相同(tóng)的(de)延遲量(liàng)。 


  • 易于(yú)設計(jì)


       但FIR也(yě)有(yǒu)自(zì)身(shēn)的(de)缺點(diǎn):同(tóng)樣(yàng)指标(biāo)的(de)濾波(bō)器,FIR需要(yào)更(gèng)多(duō)的(de)參數,即实現(xiàn)时(shí)消耗更(gèng)多(duō)的(de)計(jì)算單元(yuán),産生(shēng)更(gèng)大的(de)延遲。


1.2 FIR濾波(bō)器的(de)原理

    信(xìn)号(hào)通(tòng)过(guò)一(yī)个(gè)FIR濾波(bō)器其实就(jiù)是(shì)信(xìn)号(hào)與(yǔ)FIR濾波(bō)器的(de)系(xì)數進(jìn)行卷(juǎn)積(即乘累加)的(de)过(guò)程。我(wǒ)们(men)以(yǐ)一(yī)个(gè)簡單信(xìn)号(hào)模型为(wèi)例,了(le)解(jiě)一(yī)下(xià)FIR波(bō)形器的(de)原理。

    現(xiàn)在(zài)有(yǒu)三(sān)組信(xìn)号(hào),分(fēn)别是(shì):

    信(xìn)号(hào)1:低頻信(xìn)号(hào),即在(zài)时(shí)域上(shàng)變(biàn)化(huà)慢(màn)的(de)信(xìn)号(hào),其輸入(rù)先(xiān)後(hòu)为(wèi)1 1 1 1 2 2 2 2

    信(xìn)号(hào)2:直(zhí)流信(xìn)号(hào),其輸入(rù)先(xiān)後(hòu)为(wèi)1 1 1 1 1 1 1

    信(xìn)号(hào)3:高(gāo)頻信(xìn)号(hào),即在(zài)时(shí)域上(shàng)變(biàn)化(huà)快(kuài)的(de)信(xìn)号(hào),其輸入(rù)先(xiān)後(hòu)为(wèi)1 2 1 2 1 2 1 2

    簡單的(de)濾波(bō)器模型

    低通(tòng)濾波(bō)器:1 1

    信(xìn)号(hào)1與(yǔ)低通(tòng)濾波(bō)器進(jìn)行卷(juǎn)積運算,其結果(guǒ)再除以(yǐ)2,得到(dào)如(rú)下(xià)數據(jù):1 1 1 1.5 2 2 2。可(kě)以(yǐ)看(kàn)到(dào),低頻信(xìn)号(hào)經(jīng)过(guò)低通(tòng)濾波(bō)器後(hòu),各(gè)个(gè)點(diǎn)仍然保持(chí)了(le)其形狀,而(ér)且在(zài)1變(biàn)成(chéng)2时(shí),還(huán)變(biàn)平緩了(le)。

    信(xìn)号(hào)2與(yǔ)低通(tòng)濾波(bō)器進(jìn)行卷(juǎn)積運算,其結果(guǒ)再除以(yǐ)2,得到(dào)如(rú)下(xià)數據(jù):1 1 1 1 1 1 1。可(kě)以(yǐ)看(kàn)到(dào),直(zhí)流信(xìn)号(hào)與(yǔ)輸入(rù)的(de)信(xìn)号(hào)完成(chéng)相同(tóng)。

    信(xìn)号(hào)3與(yǔ)低通(tòng)濾波(bō)器進(jìn)行卷(juǎn)積運算,其結果(guǒ)再除以(yǐ)2,得到(dào)如(rú)下(xià)數據(jù):1.5 1.5 1.5 1.5 1.5 1.5 1.5。可(kě)以(yǐ)看(kàn)到(dào),高(gāo)頻信(xìn)号(hào)經(jīng)过(guò)低通(tòng)濾波(bō)器後(hòu),已經(jīng)完成(chéng)消去(qù)了(le)形狀,變(biàn)成(chéng)了(le)直(zhí)流信(xìn)号(hào)。

    再考慮另(lìng)一(yī)種(zhǒng)濾波(bō)器模型,高(gāo)通(tòng)濾波(bō)器:1 -1

    信(xìn)号(hào)1與(yǔ)高(gāo)通(tòng)濾波(bō)器進(jìn)行卷(juǎn)積運算,其結果(guǒ)再除以(yǐ)2,得到(dào)如(rú)下(xià)數據(jù):0 0 0 -0.5 0 0 0。可(kě)以(yǐ)看(kàn)到(dào),低頻信(xìn)号(hào)經(jīng)过(guò)高(gāo)通(tòng)濾波(bō)器後(hòu),信(xìn)号(hào)變(biàn)化(huà)基本(běn)上(shàng)消失。

    信(xìn)号(hào)2與(yǔ)低通(tòng)濾波(bō)器進(jìn)行卷(juǎn)積運算,其結果(guǒ)再除以(yǐ)2,得到(dào)如(rú)下(xià)數據(jù):0 0 0 0 0 0 0。可(kě)以(yǐ)看(kàn)到(dào),直(zhí)流信(xìn)号(hào)仍然是(shì)沒(méi)有(yǒu)變(biàn)化(huà)。

    信(xìn)号(hào)3與(yǔ)低通(tòng)濾波(bō)器進(jìn)行卷(juǎn)積運算,其結果(guǒ)再除以(yǐ)2,得到(dào)如(rú)下(xià)數據(jù):-0.5 0.5 -0.5 0.5 -0.5 0.5 -0.5 0.5。可(kě)以(yǐ)看(kàn)到(dào),高(gāo)頻信(xìn)号(hào)已經(jīng)仍然保持(chí)了(le)變(biàn)化(huà)的(de)形狀。

    由(yóu)这(zhè)两(liǎng)个(gè)例子可(kě)以(yǐ)看(kàn)出(chū),FIR濾波(bō)器其实就(jiù)是(shì)信(xìn)号(hào)與(yǔ)FIR濾波(bō)器的(de)系(xì)數進(jìn)行卷(juǎn)積(即乘累加)的(de)过(guò)程。通(tòng)过(guò)調整濾波(bō)器系(xì)數、抽头(tóu)个(gè)數,就(jiù)可(kě)实現(xiàn)低通(tòng)、高(gāo)通(tòng)、带(dài)通(tòng)等濾波(bō)器。


1.3 FIR濾波(bō)器的(de)設計(jì)

1.3.1 matlab産生(shēng)濾波(bō)器系(xì)數

    打(dǎ)開(kāi)matlab在(zài)其命令窗(chuāng)口(kǒu)輸入(rù)fdatool 按下(xià)回(huí)車

 

    調出(chū)FIR濾波(bō)器的(de)設計(jì)界面(miàn)

图(tú) 511

    在(zài)波(bō)形設計(jì)界面(miàn)中(zhōng),我(wǒ)们(men)重(zhòng)要(yào)關(guān)注以(yǐ)下(xià)選項。

    Response Type:選擇可(kě)以(yǐ)選擇濾波(bō)器的(de)類(lèi)型,可(kě)選擇:lowpass低通(tòng)濾波(bō)器、Highpass高(gāo)通(tòng)濾波(bō)器、bandpass带(dài)通(tòng)濾波(bō)器、bandstop带(dài)阻濾波(bō)器。

    Fs采樣(yàng)頻率):

    Fstop :信(xìn)号(hào)截止頻率

    Fpass

    Filter Order:用(yòng)来(lái)設置濾波(bō)器的(de)抽头(tóu)个(gè)數。可(kě)以(yǐ)在(zài)specify order中(zhōng)輸入(rù)个(gè)數,也(yě)可(kě)以(yǐ)選擇Minimum order,讓系(xì)統計(jì)算滿足要(yào)求的(de)前(qián)提(tí)下(xià)的(de)最(zuì)小抽头(tóu)个(gè)數。

    點(diǎn)擊Design Filter,就(jiù)可(kě)以(yǐ)計(jì)算出(chū)抽头(tóu)系(xì)數。

    産生(shēng)系(xì)數後(hòu)點(diǎn)擊file 菜單里(lǐ)的(de)Export 将系(xì)數保存到(dào)工作區(qū)

 

图(tú) 512

    點(diǎn)擊export

 

图(tú) 513

    點(diǎn)擊之後(hòu)打(dǎ)開(kāi)工作區(qū)里(lǐ)的(de)Num

图(tú) 514

    而(ér)後(hòu)将下(xià)图(tú)第(dì)一(yī)列的(de)數據(jù)複制粘贴到(dào)txt文(wén)件(jiàn)中(zhōng)

 

图(tú) 515

    注意(yì)複制後(hòu)需在(zài)两(liǎng)个(gè)系(xì)數間(jiān)插入(rù)逗(dòu)号(hào)(英文(wén)輸入(rù)狀态下(xià)的(de)的(de)逗(dòu)号(hào))

图(tú) 516

    这(zhè)樣(yàng)就(jiù)得到(dào)濾波(bō)器的(de)系(xì)數了(le)。


1.3.2 FPGA生(shēng)成(chéng)FIR IP

    打(dǎ)開(kāi)工程後(hòu),在(zài)IP catalog这(zhè)一(yī)界面(miàn)中(zhōng)選擇DSP下(xià)一(yī)目录(lù)中(zhōng)選擇Filter 在(zài)選擇選擇 FIR II

 

图(tú) 517

    首先(xiān)在(zài)Fitter这(zhè)一(yī)界面(miàn)做如(rú)下(xià)操作

 

图(tú) 518

    Filter Type

    Interpolation Factor

    Decimation Factor

    Max Number of channels

    Clock rate:填写本(běn)IP核的(de)工作时(shí)鐘(zhōng)頻率。

    clock slack

    Input sample rate msps):采樣(yàng)率

    點(diǎn)擊coefficients,進(jìn)入(rù)coefficients界面(miàn)。

    这(zhè)一(yī)界面(miàn)點(diǎn)擊import from file ,弹出(chū)一(yī)下(xià)界面(miàn),找(zhǎo)出(chū)我(wǒ)们(men)之前(qián)用(yòng)matlab生(shēng)成(chéng)的(de)系(xì)數文(wén)件(jiàn),點(diǎn)擊import,導入(rù)成(chéng)功後(hòu)可(kě)以(yǐ)看(kàn)到(dào)下(xià)图(tú)的(de) frequency response界面(miàn)的(de)波(bō)形發(fà)生(shēng)變(biàn)化(huà)。

图(tú) 519

    在(zài)coefficient界面(miàn),還(huán)可(kě)以(yǐ)設置系(xì)數的(de)格式、數據(jù)位宽(kuān)等。

图(tú) 520

    其它(tā)選項不(bù)改按默認的(de)来(lái)點(diǎn)擊finish即可(kě)。

    以(yǐ)上(shàng)就(jiù)是(shì)生(shēng)成(chéng) FIR濾波(bō)器的(de)主(zhǔ)要(yào)步驟。


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

    本(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)1,另(lìng)一(yī)路(lù)經(jīng)过(guò)FIR濾波(bō)器後(hòu),輸出(chū)給(gěi)DA通(tòng)道(dào)2

图(tú) 522

    正(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ō)。

    FIR濾波(bō)器是(shì)低通(tòng)濾波(bō)器,其截止頻率是(shì)500KHz,这(zhè)樣(yàng)原則上(shàng)超过(guò)500KHz的(de)信(xìn)号(hào)就(jiù)会(huì)被(bèi)濾除。濾波(bō)器的(de)輸出(chū)給(gěi)通(tòng)道(dào)2

    下(xià)面(miàn)是(shì)示波(bō)器的(de)顯示效果(guǒ),其中(zhōng)黃色(sè)是(shì)通(tòng)道(dào)1輸出(chū)的(de)信(xìn)号(hào)(上(shàng)面(miàn)的(de)波(bō)形),下(xià)面(miàn)藍(lán)色(sè)是(shì)通(tòng)道(dào)2的(de)輸出(chū)信(xìn)号(hào)(下(xià)面(miàn)的(de)波(bō)形)。

下(xià)图(tú)是(shì)100KHz的(de)信(xìn)号(hào)图(tú)。

100KHz的(de)信(xìn)号(hào)图(tú)

    下(xià)图(tú)是(shì)200KHz的(de)信(xìn)号(hào)图(tú)。 


200KHz的(de)信(xìn)号(hào)图(tú)

下(xià)图(tú)是(shì)300KHz的(de)信(xìn)号(hào)图(tú)。

300KHz的(de)信(xìn)号(hào)图(tú)

下(xià)图(tú)是(shì)400KHz的(de)信(xìn)号(hào)图(tú),可(kě)以(yǐ)看(kàn)到(dào)已經(jīng)衰減了(le)。 


400KHz的(de)信(xìn)号(hào)图(tú)

下(xià)图(tú)是(shì)500KHz的(de)信(xìn)号(hào)图(tú),可(kě)以(yǐ)看(kàn)到(dào)已經(jīng)衰減的(de)很小了(le)。 


500KHz的(de)信(xìn)号(hào)图(tú)

下(xià)图(tú)是(shì)600KHz的(de)信(xìn)号(hào)图(tú),可(kě)以(yǐ)看(kàn)到(dào)通(tòng)道(dào)2已經(jīng)沒(méi)有(yǒu)波(bō)形。 


600KHz的(de)信(xìn)号(hào)图(tú)

下(xià)图(tú)是(shì)700KHz的(de)信(xìn)号(hào)图(tú),可(kě)以(yǐ)看(kàn)到(dào)通(tòng)道(dào)2已經(jīng)沒(méi)有(yǒu)波(bō)形。


700KHz的(de)信(xìn)号(hào)图(tú)

下(xià)图(tú)是(shì)800KHz的(de)信(xìn)号(hào)图(tú),可(kě)以(yǐ)看(kàn)到(dào)通(tòng)道(dào)2已經(jīng)沒(méi)有(yǒu)波(bō)形。

800KHz的(de)信(xìn)号(hào)图(tú)


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

3.1 頂层接口(kǒu)

    新建目录(lù):D:mdy_book ir_prj在(zài)該目录(lù)中(zhōng),新建一(yī)个(gè)名为(wèi)fir_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)MODESLEEP管(guǎn)脚;为(wèi)了(le)控制通(tòng)道(dào)A,就(jiù)需要(yào)控制AD9729的(de)CLK1WRT1DB7~0P1管(guǎn)脚;为(wèi)了(le)控制通(tòng)道(dào)B,就(jiù)需要(yào)控制AD9729的(de)CLK2WRT2DB7~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)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)dac_clkb号(hào)連(lián)接到(dào)AD9709的(de)CLK2脚,用(yòng)来(lái)控制通(tòng)道(dào)B时(shí)鐘(zhōng)。

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

    11. 使用(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)11个(gè)信(xìn)号(hào),时(shí)鐘(zhōng)clk,複位rst_n,撥碼開(kāi)關(guān)的(de)輸入(rù)keydac_modedac_sleepdac_clkadac_wradac_dadac_clkbdac_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)fir_prj,代(dài)碼如(rú)下(xià):

1

2

3

4

5

6

7

8

9

module fir_prj(

           clk       ,

           rst_n     ,

           key       ,

           dac_mode ,

           dac_sleep ,

           dac_clka  ,

           dac_da   ,

           dac_wra  ,

           dac_clkb  ,

           dac_db   ,

           dac_wrb               

           );

    其中(zhōng)clkrst_n是(shì)1位的(de)輸入(rù)信(xìn)号(hào),dac_da和(hé)dac_db是(shì)8位的(de)輸出(chū)信(xìn)号(hào),key是(shì)3位輸入(rù)信(xìn)号(hào),dac_modedac_clkadac_wradac_sleepdac_clkbdac_wrb是(shì)一(yī)位輸出(chū)信(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            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是(shì)從表(biǎo)XX中(zhōng)選擇出(chū)来(lái)的(de)值,該表(biǎo)一(yī)共(gòng)有(yǒu)128个(gè)點(diǎn)。該表(biǎo)的(de)産生(shēng)方(fāng)法,請看(kàn)案(àn)例“信(xìn)号(hào)發(fà)生(shēng)器和(hé)DA轉(zhuǎn)換”一(yī)章(zhāng)的(de)內(nèi)容。

采樣(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

32

FE

64

7D

96

1

1

85

33

FE

65

77

97

1

2

8C

34

FE

66

70

98

2

3

92

35

FD

67

6A

99

3

4

98

36

FC

68

64

100

4

5

9E

37

FA

69

5E

101

6

6

A4

38

F8

70

58

102

7

7

AA

39

F6

71

52

103

A

8

B0

40

F4

72

4C

104

C

9

B6

41

F1

73

46

105

F

10

BC

42

EF

74

41

106

12

11

C1

43

EB

75

3C

107

15

12

C6

44

E8

76

36

108

19

13

CB

45

E4

77

31

109

1D

14

D0

46

E0

78

2C

110

21

15

D5

47

DC

79

28

111

25

16

DA

48

D8

80

23

112

2A

17

DE

49

D3

81

1F

113

2E

18

E2

50

CE

82

1B

114

33

19

E6

51

C9

83

17

115

38

20

EA

52

C4

84

14

116

3E

21

ED

53

BE

85

11

117

43

22

F0

54

B9

86

E

118

49

23

F3

55

B3

87

B

119

4E

24

F5

56

AD

88

9

120

54

25

F7

57

A7

89

7

121

5A

26

F9

58

A1

90

5

122

60

27

FB

59

9B

91

3

123

67

28

FC

60

95

92

2

124

6D

29

FD

61

8F

93

1

125

73

30

FE

62

89

94

1

126

79

31

FE

63

82

95

1

127

7F

    很自(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'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

    接下(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)多(duō)種(zhǒng)頻率的(de)正(zhèng)弦波(bō)。

    以(yǐ)頻率为(wèi)100KHz的(de)正(zhèng)弦信(xìn)号(hào)为(wèi)例。該正(zhèng)弦信(xìn)号(hào)的(de)周期(qī)是(shì)10000ns。本(běn)工程的(de)工作时(shí)鐘(zhōng)是(shì)20ns,也(yě)就(jiù)是(shì)10000/20 = 500个(gè)时(shí)鐘(zhōng)輸出(chū)一(yī)个(gè)正(zhèng)弦信(xìn)号(hào),也(yě)就(jiù)是(shì)500个(gè)时(shí)鐘(zhōng)将上(shàng)表(biǎo)的(de)128个(gè)值輸出(chū)一(yī)遍(biàn)。因(yīn)此(cǐ)每个(gè)时(shí)鐘(zhōng)addr增加的(de)值:128/500 = 0.256

    按同(tóng)樣(yàng)的(de)分(fēn)析方(fāng)法,可(kě)以(yǐ)得到(dào)其他(tā)信(xìn)号(hào)頻率的(de)addr增加值,總(zǒng)結如(rú)下(xià)。

    100KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr增加:128/250      = 0.256

    200KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr增加:128/250      = 0.512

    300KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr增加:128/166.6667 = 0.7679

    400KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr增加:128/125      = 1.024

    500KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr增加:128/100      = 1.28  

    600KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr增加:128/83.3333  = 1.5358

    700KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr增加:128/71.4286  = 1.792

    800KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr增加:128/62.5      = 2.048

    由(yóu)于(yú)addr是(shì)表(biǎo)示0~127的(de)整數,而(ér)addr每次(cì)增加的(de)值包(bāo)含小數,而(ér)FPGA是(shì)沒(méi)有(yǒu)小數的(de)。为(wèi)此(cǐ),我(wǒ)们(men)将上(shàng)面(miàn)的(de)小數乘以(yǐ)1024,然後(hòu)取(qǔ)整,就(jiù)變(biàn)成(chéng)了(le)每次(cì)要(yào)增加的(de)整數,結果(guǒ)保存到(dào)addr_tmp中(zhōng)。即:

    100KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr_tmp增加:0.256   *1024 = 262.144 262

    200KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr_tmp增加:0.512   *1024 = 524.288 524

    300KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr_tmp增加:0.7679  *1024 =786.3296 786

    400KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr_tmp增加:1.024   *1024 =1028.576 1029

    500KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr_tmp增加:1.28    *1024 =1310.72  1311

    600KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr_tmp增加:1.5358  *1024 =1572.6592 1573

    700KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr_tmp增加:1.792   *1024 =1835.008 1835

    800KHz的(de)正(zhèng)弦信(xìn)号(hào),每个(gè)时(shí)鐘(zhōng)addr_tmp增加: 2.048  *1024 =2097.152 2097

    而(ér)上(shàng)面(miàn)8種(zhǒng)頻率信(xìn)号(hào),是(shì)由(yóu)撥碼信(xìn)号(hào)key控制的(de)。因(yīn)此(cǐ),可(kě)以(yǐ)写出(chū)addr_tmp的(de)代(dài)碼。

1

2

3

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

    上(shàng)面(miàn)的(de)代(dài)碼中(zhōng),addr_tmp是(shì)小數乘以(yǐ)1024後(hòu)得到(dào)的(de),那(nà)麼(me)最(zuì)終(zhōng)addr_tmp要(yào)除以(yǐ)1024,再賦給(gěi)addr。除以(yǐ)1024,其实就(jiù)是(shì)向(xiàng)右(yòu)移10位。addr_tmp向(xiàng)各(gè)移10位後(hòu),保留7位結果(guǒ)賦給(gěi)addr就(jiù)够了(le)。所(suǒ)以(yǐ)addr_tmp位宽(kuān)为(wèi)17位。


1

assign addr = addr_tmp >>10 ;


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

3.3.1 matlab生(shēng)成(chéng)FIR系(xì)數

     打(dǎ)開(kāi)matlab,在(zài)其命令窗(chuāng)口(kǒu)輸入(rù)fdatool 按下(xià)回(huí)車調出(chū)波(bō)形設計(jì)界面(miàn)。 

     在(zài)波(bō)形設計(jì)界面(miàn)中(zhōng)

     Response Type:案(àn)例要(yào)求濾波(bō)高(gāo)于(yú)500KHz的(de)信(xìn)号(hào),所(suǒ)以(yǐ)選擇lowpass低通(tòng)濾波(bō)器

     Fstop: 截止頻率設为(wèi)600KHz

     Fs采樣(yàng)頻率: 12.5MHz(12500Khz)

图(tú) 526

    其它(tā)選項默認點(diǎn)擊Design Filter

    産生(shēng)系(xì)數後(hòu)點(diǎn)擊file 菜單里(lǐ)的(de)Export 将系(xì)數保存的(de)工作區(qū)

 

图(tú) 527

    點(diǎn)擊export

 

图(tú) 528

    點(diǎn)擊之後(hòu)打(dǎ)開(kāi)工作區(qū)里(lǐ)的(de)Num

 

图(tú) 529

     而(ér)後(hòu)将下(xià)图(tú)第(dì)一(yī)列的(de)數據(jù)複制粘贴到(dào)txt文(wén)件(jiàn)中(zhōng)

 

图(tú) 530

    注意(yì)複制後(hòu)需在(zài)两(liǎng)个(gè)系(xì)數間(jiān)插入(rù)逗(dòu)号(hào)(英文(wén)輸入(rù)狀态下(xià)的(de)的(de)逗(dòu)号(hào))

图(tú) 531

 

3.3.2 新建FPGA工程

 

图(tú) 532

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

 

图(tú) 533

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

 

图(tú) 534 

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

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

    工程名:fir_prj

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

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

 

图(tú) 535

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

 

图(tú) 536

    4.在(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ú) 537

    5.器件(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.3 FPGA生(shēng)成(chéng)FIR IP

 

图(tú) 538

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

 

图(tú) 539

    點(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_book ir_prjmy_fir.vIPvariation file name这(zhè)一(yī)項選擇verilog。點(diǎn)擊OK後(hòu),進(jìn)入(rù)FIR濾波(bō)器設置界面(miàn)。

 

图(tú) 540

    在(zài)Fitter specification界面(miàn)按如(rú)下(xià)設置:

    Filter Type:要(yào)選擇Single Rate,表(biǎo)示只(zhī)采用(yòng)一(yī)種(zhǒng)采樣(yàng)率。

    Clock Rate:因(yīn)为(wèi)我(wǒ)们(men)工程使用(yòng)的(de)是(shì)50MHz时(shí)鐘(zhōng),所(suǒ)以(yǐ)此(cǐ)处要(yào)填写50MHz

    Input Sample Rate (PSPS):这(zhè)个(gè)是(shì)填采樣(yàng)率。和(hé)matlab相匹(pǐ)配,因(yīn)此(cǐ)要(yào)填12.5MHz

    其他(tā)參數默認。

    然後(hòu)點(diǎn)擊coefficients選項卡(kǎ)。

图(tú) 541

    單擊import from file ,在(zài)輸出(chū)的(de)界面(miàn)中(zhōng),找(zhǎo)出(chū)我(wǒ)们(men)用(yòng)MATLAB生(shēng)成(chéng)的(de)系(xì)數文(wén)件(jiàn):my_fir_coe.txt,點(diǎn)擊import導入(rù)。導入(rù)成(chéng)功後(hòu)可(kě)以(yǐ)看(kàn)到(dào)下(xià)图(tú)的(de) frequency response界面(miàn)的(de)波(bō)形發(fà)生(shēng)變(biàn)化(huà)。

    在(zài)Coefficient Bit Width中(zhōng),填写16。表(biǎo)示每个(gè)系(xì)數用(yòng)16比特(tè)量(liàng)化(huà)。

 

图(tú) 543

    如(rú)上(shàng)图(tú),在(zài)Input/Output Options選項卡(kǎ)中(zhōng),做如(rú)下(xià)設置。

    Input Type:選擇Signed Binary,表(biǎo)示輸入(rù)的(de)數據(jù)是(shì)有(yǒu)符号(hào)數(補碼形式)。

    Input Width:輸入(rù)8。表(biǎo)示輸入(rù)的(de)數據(jù)是(shì)8位位宽(kuān)。

    Output Type:選擇Signed Binary,表(biǎo)示輸出(chū)的(de)數據(jù)是(shì)有(yǒu)符号(hào)數(補碼形式)。

    MSB Rounding:選擇Truncation。表(biǎo)示輸出(chū)結果(guǒ)的(de)高(gāo)位要(yào)截斷。

    MSB Bits to Remove:填写3。表(biǎo)示MSB要(yào)截取(qǔ)3个(gè)符号(hào)位。

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

    LSB Bits to Remove:填写19。表(biǎo)示LSB要(yào)截斷低19位。这(zhè)樣(yàng)最(zuì)終(zhōng)輸出(chū)的(de)結果(guǒ)就(jiù)是(shì)8位。

    其他(tā)選項默認,點(diǎn)擊Finish,软(ruǎn)件(jiàn)就(jiù)会(huì)去(qù)生(shēng)成(chéng)FIR IP核。

 

图(tú) 544

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

 

图(tú) 545

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


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

图(tú) 546
    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)。在(zài)FIR設置时(shí),就(jiù)已經(jīng)填写了(le)50MHz,所(suǒ)以(yǐ)此(cǐ)时(shí)連(lián)接50MHz时(shí)鐘(zhōng)。

reset_n

I

1

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

ast_sink_data

I

8

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

ast_sink_valid

I

1

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

ast_sink_error

I

1

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

ast_source_data

O

8

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

ast_source_valid

O

1

FIR濾波(bō)器輸出(chū)有(yǒu)效指示信(xìn)号(hào)。由(yóu)于(yú)輸入(rù)一(yī)直(zhí)有(yǒu)效,那(nà)麼(me)輸出(chū)也(yě)一(yī)直(zhí)有(yǒu)效,此(cǐ)信(xìn)号(hào)可(kě)以(yǐ)忽略不(bù)用(yòng),例化(huà)时(shí)不(bù)連(lián)接。

ast_source_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)接。

    特(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)fir_din,該信(xìn)号(hào)位宽(kuān)为(wèi)8位。 

    无符号(hào)數轉(zhuǎn)成(chéng)有(yǒu)符号(hào)數的(de)方(fāng)法很簡單:fir_din = sin_data - 128。读(dú)者(zhě)有(yǒu)興趣可(kě)以(yǐ)验(yàn)證一(yī)下(xià)。
    生(shēng)成(chéng)FIR IP核後(hòu),我(wǒ)们(men)要(yào)对(duì)其進(jìn)行例化(huà),才行使用(yòng)上(shàng)这(zhè)个(gè)IP核,例化(huà)名起名u_my_firfir的(de)輸出(chū)數據(jù)信(xìn)号(hào)命名为(wèi)fir_dout

1

2

3

4

5

6

7

8

assign fir_din = sin_data - 128;

 

my_fir u_my_fir(

.clk             (clk     ) ,              

.reset_n         (rst_n   ) ,          

.ast_sink_data   (fir_din ) ,    

.ast_sink_valid  (1       ) ,   

.ast_sink_error  (0       ) ,   

.ast_source_data (fir_dout) ,  

.ast_source_valid(        ) ,

.ast_source_error(        )    

);


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

    接下(xià)来(lái)是(shì)設計(jì)信(xìn)号(hào)dac_dadac_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_sleepAD是(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_dbdac_db是(shì)直(zhí)接輸出(chū)濾波(bō)後(hòu)的(de)信(xìn)号(hào)fir_dout。但要(yào)注意(yì)的(de)是(shì)fir_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)fir_dout2,則fir_dout2 = fir_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-fir_dout2)得到(dào)。那(nà)麼(me)可(kě)以(yǐ)写出(chū)dac_db的(de)代(dài)碼。

1

2

3

4

5

6

7

8

assign fir_dout2 = fir_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 - fir_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補充完整。

    addr是(shì)用(yòng)assign設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire。其值最(zuì)大为(wèi)127,一(yī)共(gòng)有(yǒu)7根(gēn)線(xiàn),位宽(kuān)为(wèi)7,故而(ér)代(dài)碼如(rú)下(xià)

1

wire    [6:0]    addr    ;

    addr_tmp是(shì)用(yòng)always設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。如(rú)前(qián)面(miàn)所(suǒ)述,該信(xìn)号(hào)的(de)位宽(kuān)是(shì)17,故而(ér)代(dài)碼如(rú)下(xià)

1

reg   [16:0]    addr_tmp    ;

    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    ;

    fir_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]    fir_din    ;

    fir_dout是(shì)用(yòng)例化(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]    fir_dout    ;

    fir_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]    fir_dout2    ;

    dac_da是(shì)用(yòng)always設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)reg。其位宽(kuān)为(wèi)8dac_sleep是(shì)用(yòng)assign設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire,位宽(kuān)为(wèi)1dac_wra是(shì)用(yòng)assign設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire,位宽(kuān)为(wèi)1dac_clka是(shì)用(yòng)assign設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire,位宽(kuān)为(wèi)1dac_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)8dac_wrb是(shì)用(yòng)assign設計(jì)的(de),因(yīn)此(cǐ)類(lèi)型为(wèi)wire,位宽(kuān)为(wèi)1dac_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ú) 547

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

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

图(tú) 549

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


4.2 綜合

 

图(tú) 550

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

 

图(tú) 551

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

4.3 配置管(guǎn)脚

 

图(tú) 552

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

 

图(tú) 553

    在(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ú) 554

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


4.4 再次(cì)綜合

 

图(tú) 555

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

 

图(tú) 556

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


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

图(tú) 557

    連(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ú) 558

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

 

图(tú) 559

    在(zài)上(shàng)面(miàn)的(de)界面(miàn)中(zhōng),默認会(huì)選中(zhōng)文(wén)件(jiàn)output/fir_prj.sof,如(rú)果(guǒ)沒(méi)有(yǒu)生(shēng)成(chéng)請看(kàn)XXXX

    在(zài)上(shàng)面(miàn)的(de)界面(miàn)中(zhōng),Hardware Setup的(de)旁邊(biān)会(huì)顯示:USB-Blaster。如(rú)果(guǒ)不(bù)是(shì),請看(kàn)XXXX

 

图(tú) 560

    點(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資訊
返回(huí)目录(lù) >> 明(míng)德揚FPGA实验(yàn)手(shǒu)册


上(shàng)一(yī)篇(piān):2.4 PWM呼吸燈(dēng)
下(xià)一(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⁥⁠⁢

⁧⁨⁥⁨