⁩⁣⁩⁨ ⁩⁤⁢⁢⁢⁥⁩ ⁥⁣⁦⁡ ⁣⁤⁨ ⁡⁨⁠⁤⁠ ⁦⁧⁡⁤⁣⁡⁡⁨⁤ 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)章(zhāng)】波(bō)形相位頻率可(kě)調DDS設計(jì)

發(fà)布(bù)时(shí)間(jiān):2021-06-24   作者(zhě):admin 浏覽量(liàng):
  本(běn)文(wén)为(wèi)明(míng)德揚原創及(jí)录(lù)用(yòng)文(wén)章(zhāng),轉(zhuǎn)载請注明(míng)出(chū)处

1.1 總(zǒng)體(tǐ)設計(jì)

      1.1.1 概述

     学習了(le)明(míng)德揚至(zhì)簡設計(jì)法和(hé)明(míng)德揚設計(jì)規範,本(běn)人(rén)設計(jì)了(le)一(yī)个(gè)基于(yú)FPGA的(de)可(kě)調頻調相而(ér)且可(kě)以(yǐ)輸出(chū)不(bù)同(tóng)波(bō)形的(de)DDS信(xìn)号(hào)發(fà)生(shēng)器。該信(xìn)号(hào)發(fà)生(shēng)器实現(xiàn)了(le)通(tòng)过(guò)按鍵控制輸出(chū)不(bù)同(tóng)類(lèi)型的(de)波(bō)形,并可(kě)以(yǐ)通(tòng)过(guò)按鍵改變(biàn)波(bō)形頻率和(hé)初始相位。将此(cǐ)設計(jì)與(yǔ)明(míng)德揚的(de)波(bō)形采集設計(jì)相結合,可(kě)以(yǐ)实現(xiàn)示波(bō)器功能(néng),并且還(huán)可(kě)拓展(zhǎn)实現(xiàn)波(bō)形頻率計(jì)算、峰(fēng)峰(fēng)值計(jì)算、頻谱分(fēn)析等功能(néng),有(yǒu)很大的(de)設計(jì)空間(jiān)。同(tóng)时(shí)本(běn)設計(jì)以(yǐ)及(jí)其擴展(zhǎn)功能(néng)在(zài)現(xiàn)实生(shēng)活中(zhōng)也(yě)具有(yǒu)比較廣泛的(de)應(yìng)用(yòng)。在(zài)本(běn)案(àn)例的(de)設計(jì)过(guò)程中(zhōng),包(bāo)含了(le)按鍵定(dìng)義和(hé)消抖、計(jì)數器、ROMIP的(de)應(yìng)用(yòng)等技術(shù)。經(jīng)过(guò)逐步改進(jìn)、調試等一(yī)系(xì)列操作之後(hòu),完成(chéng)了(le)此(cǐ)設計(jì),下(xià)面(miàn)将完整的(de)設計(jì)記(jì)录(lù)與(yǔ)大家(jiā)分(fēn)享。

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

      此(cǐ)設計(jì)可(kě)以(yǐ)通(tòng)过(guò)按鍵進(jìn)行波(bō)形類(lèi)型的(de)切(qiè)換,并且波(bō)形的(de)頻率還(huán)可(kě)以(yǐ)進(jìn)行改變(biàn),具體(tǐ)需求如(rú)下(xià):

1)按鍵1按下(xià)时(shí)可(kě)以(yǐ)改變(biàn)波(bō)形的(de)類(lèi)型,实現(xiàn)波(bō)形的(de)切(qiè)換,順序为(wèi)正(zhèng)弦波(bō)、鋸齒波(bō)、三(sān)角(jiǎo)波(bō);
2)按鍵2按下(xià)时(shí)可(kě)以(yǐ)改變(biàn)波(bō)形的(de)頻率,每按下(xià)一(yī)次(cì),頻率增大2倍,达(dá)到(dào)一(yī)定(dìng)值後(hòu)跳回(huí)初始頻率值,以(yǐ)此(cǐ)循环(huán);
3)按鍵3按下(xià)时(shí)可(kě)以(yǐ)改變(biàn)波(bō)形的(de)初始相位,每按下(xià)一(yī)次(cì),初始相位加30,达(dá)到(dào)一(yī)定(dìng)值後(hòu)跳回(huí)初始相位值,以(yǐ)此(cǐ)循环(huán)。

      1.1.3 系(xì)統結構框图(tú)

   系(xì)統結構框图(tú)如(rú)下(xià)所(suǒ)示:

      1.1.4 模块(kuài)功能(néng)
  • 按鍵模块(kuài)实現(xiàn)功能(néng)
  • 将外(wài)来(lái)异(yì)步信(xìn)号(hào)打(dǎ)两(liǎng)拍处理,将异(yì)步信(xìn)号(hào)同(tóng)步化(huà);
实現(xiàn)20ms按鍵消抖功能(néng),并輸出(chū)有(yǒu)效按鍵信(xìn)号(hào)。

  • DDS模块(kuài)实現(xiàn)功能(néng)
  • 通(tòng)过(guò)有(yǒu)效按鍵信(xìn)号(hào)实現(xiàn)切(qiè)換波(bō)形類(lèi)型、改變(biàn)波(bō)形頻率、調整波(bō)形初始相位;
從ROM中(zhōng)读(dú)取(qǔ)波(bō)形數據(jù)并輸出(chū)按鍵控制下(xià)的(de)波(bō)形數據(jù)。

    1.1.5 信(xìn)号(hào)定(dìng)義
  • 頂层模块(kuài)mdy_DDS.v
信(xìn)号(hào)
定(dìng)義
clk
系(xì)統时(shí)鐘(zhōng)
rst_n
低電(diàn)平複位信(xìn)号(hào)
key_in
按鍵輸入(rù)
dadata
波(bō)形數據(jù)


  • 按鍵模块(kuài)key_delay.v

信(xìn)号(hào)
定(dìng)義
clk
系(xì)統时(shí)鐘(zhōng)
rst_n
低電(diàn)平複位信(xìn)号(hào)
key_in
按鍵輸入(rù)
key_done
有(yǒu)效按鍵

  • DDS模块(kuài)DDS.v
信(xìn)号(hào)
定(dìng)義
clk
系(xì)統时(shí)鐘(zhōng)
rst_n
低電(diàn)平複位信(xìn)号(hào)
key_done
有(yǒu)效按鍵
dadata
波(bō)形數據(jù)
i
頻率控制字(zì)
phase
相位控制字(zì)

      1.1.6 工作原理



          在(zài)系(xì)統整體(tǐ)結構中(zhōng),通(tòng)过(guò)按鍵控制輸出(chū)波(bō)形類(lèi)型,并通(tòng)过(guò)按鍵改變(biàn)波(bō)形頻率控制字(zì)和(hé)初始相位控制字(zì),得到(dào)ROM的(de)读(dú)地(dì)址。ROM为(wèi)只(zhī)读(dú)存儲器,只(zhī)要(yào)給(gěi)它(tā)一(yī)个(gè)地(dì)址,就(jiù)能(néng)读(dú)出(chū)該地(dì)址中(zhōng)相應(yìng)的(de)數據(jù),從已經(jīng)初始化(huà)好(hǎo)的(de)ROM读(dú)取(qǔ)相應(yìng)的(de)波(bō)形數據(jù)。

     DDS的(de)原理如(rú)下(xià)图(tú),累加器每次(cì)累加一(yī)个(gè)頻率控制字(zì),調节(jié)頻率控制字(zì)的(de)數值,可(kě)以(yǐ)改變(biàn)累加器的(de)累加速度(dù),進(jìn)而(ér)可(kě)以(yǐ)調节(jié)從ROM查找(zhǎo)表(biǎo)中(zhōng)读(dú)取(qǔ)波(bō)形數據(jù)的(de)速度(dù)。即頻率控制字(zì)越大,頻率越高(gāo)。相位控制字(zì)可(kě)以(yǐ)用(yòng)来(lái)調节(jié)初始相位,即ROM地(dì)址自(zì)加的(de)初始值。

   1.2 按鍵電(diàn)路(lù)


       1.2.1 按鍵電(diàn)路(lù)









     独立式按鍵工作原理如(rú)上(shàng)图(tú)所(suǒ)示,4条(tiáo)輸入(rù)線(xiàn)接到(dào)FPGA的(de)IO口(kǒu)上(shàng),當按鍵K1按下(xià)时(shí),VCC通(tòng)过(guò)電(diàn)阻R1再通(tòng)过(guò)按鍵K1最(zuì)終(zhōng)進(jìn)入(rù)GND形成(chéng)一(yī)条(tiáo)通(tòng)路(lù),这(zhè)条(tiáo)線(xiàn)路(lù)的(de)全(quán)部(bù)電(diàn)壓都加在(zài)R1上(shàng),則引脚P14是(shì)低電(diàn)平。當松開(kāi)按鍵後(hòu),線(xiàn)路(lù)斷開(kāi),就(jiù)不(bù)会(huì)有(yǒu)電(diàn)流通(tòng)过(guò),P14和(hé)VCC就(jiù)應(yìng)該是(shì)等電(diàn)位,为(wèi)高(gāo)電(diàn)平。我(wǒ)们(men)可(kě)以(yǐ)通(tòng)过(guò)P14这(zhè)个(gè)IO口(kǒu)的(de)高(gāo)低電(diàn)平狀态来(lái)判斷是(shì)否有(yǒu)按鍵按下(xià)。其它(tā)按鍵原理與(yǔ)K1一(yī)致(zhì)。

     從图(tú)中(zhōng)可(kě)以(yǐ)看(kàn)出(chū),如(rú)果(guǒ)我(wǒ)们(men)按下(xià)按鍵,那(nà)麼(me)按鍵就(jiù)会(huì)接通(tòng)并連(lián)接到(dào)低電(diàn)平GND,如(rú)果(guǒ)我(wǒ)们(men)沒(méi)有(yǒu)按下(xià),那(nà)麼(me)按鍵就(jiù)会(huì)斷開(kāi)并接到(dào)VCC,因(yīn)此(cǐ)按鍵为(wèi)低電(diàn)平有(yǒu)效。通(tòng)常的(de)按鍵所(suǒ)用(yòng)開(kāi)關(guān)为(wèi)機(jī)械弹性(xìng)開(kāi)關(guān),當機(jī)械觸點(diǎn)斷開(kāi)或(huò)者(zhě)閉合时(shí),由(yóu)于(yú)機(jī)械觸點(diǎn)的(de)弹性(xìng)作用(yòng),一(yī)个(gè)按鍵開(kāi)關(guān)在(zài)閉合时(shí)不(bù)会(huì)马上(shàng)稳定(dìng)地(dì)接通(tòng),在(zài)斷開(kāi)时(shí)也(yě)不(bù)会(huì)一(yī)下(xià)子斷開(kāi)。因(yīn)而(ér)機(jī)械式按鍵在(zài)閉合及(jí)斷開(kāi)的(de)瞬間(jiān)均伴随有(yǒu)一(yī)連(lián)串的(de)抖動(dòng),如(rú)果(guǒ)不(bù)進(jìn)行处理,会(huì)使系(xì)統識别到(dào)抖動(dòng)信(xìn)号(hào)而(ér)進(jìn)行不(bù)必要(yào)的(de)反(fǎn)應(yìng),導致(zhì)模块(kuài)功能(néng)不(bù)正(zhèng)常,为(wèi)了(le)避免这(zhè)種(zhǒng)現(xiàn)象(xiàng)的(de)産生(shēng),需要(yào)進(jìn)行按鍵消抖的(de)操作。

     1.2.2 按鍵消抖
      
      按鍵消抖主(zhǔ)要(yào)分(fēn)为(wèi)硬(yìng)件(jiàn)消抖和(hé)软(ruǎn)件(jiàn)消抖。两(liǎng)个(gè)“與(yǔ)非(fēi)”門(mén)構成(chéng)一(yī)个(gè)RS觸發(fà)器为(wèi)常用(yòng)的(de)硬(yìng)件(jiàn)消抖。软(ruǎn)件(jiàn)方(fāng)法消抖,即檢测出(chū)鍵閉合後(hòu)執行一(yī)个(gè)延时(shí)程序,抖動(dòng)时(shí)間(jiān)的(de)长短(duǎn)由(yóu)按鍵的(de)機(jī)械特(tè)性(xìng)決定(dìng),一(yī)般为(wèi)5ms~20ms,讓前(qián)沿抖動(dòng)消失後(hòu)再一(yī)次(cì)檢测鍵的(de)狀态,如(rú)果(guǒ)仍保持(chí)閉合狀态電(diàn)平,則确認按下(xià)按鍵操作有(yǒu)效。當檢测到(dào)按鍵釋放(fàng)後(hòu),也(yě)要(yào)給(gěi)5ms~20ms的(de)延时(shí),待後(hòu)沿抖動(dòng)消失後(hòu)才能(néng)轉(zhuǎn)入(rù)該鍵的(de)处理程序。經(jīng)过(guò)按鍵消抖的(de)行人(rén)优先(xiān)按鍵,判斷按鍵有(yǒu)效後(hòu),按鍵信(xìn)号(hào)傳遞給(gěi)控制系(xì)統,控制系(xì)統再進(jìn)入(rù)相應(yìng)的(de)处理程序。如(rú)還(huán)不(bù)明(míng)白之处,見(jiàn)实验(yàn)的(de)PDF。







图(tú)5.1.2按鍵消抖示意(yì)图(tú)

      1.2.3 按鍵消抖代(dài)碼实現(xiàn)

      
      使用(yòng)明(míng)德揚的(de)計(jì)數器模板,可(kě)以(yǐ)很快(kuài)速很熟練地(dì)写出(chū)按鍵消抖模块(kuài)。

      每20ms掃描一(yī)次(cì)按鍵輸入(rù)key_in,可(kě)以(yǐ)达(dá)到(dào)消抖的(de)目的(de),再用(yòng)寄存器緩存一(yī)下(xià),按鍵为(wèi)低電(diàn)平有(yǒu)效;所(suǒ)以(yǐ)檢测當檢测到(dào)按鍵有(yǒu)下(xià)降沿變(biàn)化(huà)时(shí),代(dài)表(biǎo)該按鍵被(bèi)按下(xià),按鍵有(yǒu)效,輸出(chū)1。

代(dài)碼如(rú)下(xià):

  



   1.3 DDS模块(kuài)設計(jì)



           1.3.1 控制波(bō)形類(lèi)型

      消抖过(guò)後(hòu)的(de)按鍵輸入(rù)到(dào)本(běn)模块(kuài),同(tóng)樣(yàng)使用(yòng)明(míng)德揚至(zhì)簡設計(jì)法和(hé)計(jì)數器模板,可(kě)以(yǐ)秒(miǎo)速写出(chū)控制波(bō)形類(lèi)型的(de)代(dài)碼。按鍵1每按下(xià)一(yī)次(cì),即key_done[0]有(yǒu)效时(shí),wave_cnt加1,加到(dào)3时(shí)歸0,否則保持(chí)不(bù)變(biàn)。wave_cnt为(wèi)0时(shí)輸出(chū)正(zhèng)弦波(bō),1时(shí)輸出(chū)三(sān)角(jiǎo)波(bō),2时(shí)輸出(chū)鋸齒波(bō),默認时(shí)輸出(chū)正(zhèng)弦波(bō);至(zhì)簡設計(jì)法和(hé)計(jì)數器模板有(yǒu)多(duō)好(hǎo)用(yòng),越用(yòng)越絕精妙。

完整代(dài)碼如(rú)下(xià):

     
     1.3.2 改變(biàn)波(bō)形頻率
      
      話(huà)不(bù)多(duō)说(shuō),反(fǎn)手(shǒu)又是(shì)一(yī)个(gè)明(míng)德揚計(jì)數模板。按鍵2每按下(xià)一(yī)次(cì),即key_done[1]有(yǒu)效时(shí),i乘以(yǐ)2,加到(dào)64时(shí)歸0,否則保持(chí)不(bù)變(biàn)。这(zhè)里(lǐ)通(tòng)过(guò)i可(kě)以(yǐ)改變(biàn)頻率的(de)原理是(shì)ROM中(zhōng)512个(gè)數據(jù)为(wèi)一(yī)个(gè)周期(qī),i等于(yú)1的(de)話(huà),采集一(yī)个(gè)周期(qī)需要(yào)512次(cì),clk/512即为(wèi)頻率,i为(wèi)2时(shí),只(zhī)需要(yào)采集256次(cì)即完成(chéng)一(yī)个(gè)周期(qī),頻率为(wèi)clk/256。

      當然也(yě)可(kě)以(yǐ)直(zhí)接通(tòng)过(guò)分(fēn)頻改變(biàn)clk,從而(ér)达(dá)到(dào)改變(biàn)頻率的(de)效果(guǒ)。

      完整代(dài)碼如(rú)下(xià):


     1.3.3 改變(biàn)波(bō)形相位

      依旧(jiù)是(shì)百(bǎi)用(yòng)不(bù)厭的(de)計(jì)數器模板,按鍵3每按下(xià)一(yī)次(cì),即key_done[2]有(yǒu)效时(shí),初始相位加30,加到(dào)360时(shí)歸0,否則保持(chí)不(bù)變(biàn)。达(dá)到(dào)改變(biàn)相位的(de)目的(de)。

      因(yīn)此(cǐ),通(tòng)过(guò)至(zhì)簡設計(jì)法、計(jì)數器模板,可(kě)以(yǐ)輕(qīng)松达(dá)到(dào)設計(jì)目标(biāo)。

完整代(dài)碼如(rú)下(xià):


     1.3.4 mif文(wén)件(jiàn)的(de)生(shēng)成(chéng)

      程序中(zhōng)我(wǒ)们(men)会(huì)用(yòng)到(dào)一(yī)个(gè)ROM用(yòng)于(yú)存儲512个(gè)8位的(de)波(bō)形數據(jù),首先(xiān)我(wǒ)们(men)需要(yào)準備ROM的(de)初始化(huà)文(wén)件(jiàn)(mif文(wén)件(jiàn))。以(yǐ)下(xià)为(wèi)生(shēng)成(chéng)正(zhèng)弦波(bō)數據(jù)mif文(wén)件(jiàn)的(de)方(fāng)法:首先(xiān)打(dǎ)開(kāi)Guagle_wave工具,選擇菜單"查看(kàn)"->”全(quán)局(jú)參數設置”,設置參數如(rú)下(xià):



       調用(yòng)ROMIP核,并将mif導入(rù)ROM,其他(tā)波(bō)形同(tóng)理。


     1.4 在(zài)線(xiàn)邏輯分(fēn)析儀查看(kàn)波(bō)形數據(jù)


  • 不(bù)同(tóng)頻率正(zhèng)弦波(bō):




  • 三(sān)角(jiǎo)波(bō)


  • 鋸齒波(bō)


      观看(kàn)上(shàng)面(miàn)的(de)現(xiàn)象(xiàng),可(kě)以(yǐ)發(fà)現(xiàn),各(gè)項功能(néng)正(zhèng)常,可(kě)以(yǐ)通(tòng)过(guò)按鍵改變(biàn)波(bō)形類(lèi)型、頻率、相位,成(chéng)功完成(chéng)設計(jì)目标(biāo)。

      在(zài)这(zhè)个(gè)設計(jì)案(àn)例中(zhōng),至(zhì)簡設計(jì)法和(hé)明(míng)德揚計(jì)數器模板發(fà)揮了(le)至(zhì)關(guān)重(zhòng)要(yào)的(de)作用(yòng),使我(wǒ)能(néng)够快(kuài)速準确完成(chéng)設計(jì)。本(běn)設計(jì)拓展(zhǎn)加上(shàng)ADDA采集和(hé)VGA顯示,可(kě)以(yǐ)实現(xiàn)基于(yú)FPGA的(de)示波(bō)器設計(jì),之前(qián)明(míng)德揚論壇已經(jīng)發(fà)布(bù)了(le)波(bō)形采集并VGA顯示的(de)案(àn)例,希望有(yǒu)興趣的(de)同(tóng)学可(kě)以(yǐ)運用(yòng)至(zhì)簡設計(jì)法和(hé)明(míng)德揚模板嘗試一(yī)下(xià)拓展(zhǎn)設計(jì)哦。

感(gǎn)興趣的(de)朋友也(yě)可(kě)以(yǐ)訪問(wèn)明(míng)德揚論壇(http://www.fpgabbs.cn/)進(jìn)行FPGA相關(guān)工程設計(jì)学習,也(yě)欢迎大家(jiā)在(zài)評論與(yǔ)我(wǒ)進(jì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⁥⁠⁢

⁧⁨⁥⁨