国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

零基礎學FPGA (二十八)頻、相可調,任意波形信號發生器系統設計

發布時間:2015-5-21 16:51    發布者:wp1981
信號發生器這個東西相信大家都知道,關于基于DDS信號發生器的技術文檔網上也多的是,但是我還是想寫一下這部分的教學,因為從我自身的學習來看,這部分內容并不是很難,也很容易實現,代碼也就那幾行。但是,我發現我當時學這部分的時候,從網上找資料,大部分都是基于原理的講解,或者說只是做到仿真這一步,而且原理的講解太過書面化,初學者不怎么好理解。我做了這么一個教程,全方面的做一個這樣一個系統。其中包括信號發生器的原理部分,代碼實現,仿真,按鍵控制頻率、相位變換,包括正弦波、方波、鋸齒波、三角波的產生,以及D/A轉換芯片的操作,直到能夠在示波器上觀察到我們產生的波形,并通過按鍵控制為止。

       這個系統的設計大概花了我三四天的樣子,寫的也是蠻用心的,工程不是很大,但還是有些細節需要注意的,下面我們就一步步的開始做。

一、整體框架

        關于原理部分,書上講的很多,但是總是感覺不盡人意,過于書面化的語言讓人看著很頭疼,下面就讓小墨來給大家解釋,希望給讀者帶來一種眼前一亮的感覺,讓你再回去看書,看代碼的時候覺得得心應手了。

        首先我們應該先明確要做什么,我們要做的是一個頻率,相位可調,任意波形信號發生器,也就是我們常見的正弦波,方波,鋸齒波,三角波等。

        其次,我們需要知道我們需要哪些參數。比如,我們要生成一個正弦波,它的初始頻率是多少,相位是多少,步進頻率、相位是多少,怎么計算這些參數?

        然后我們需要知道如何生成一種波形,怎么樣通過按鍵實現波形與波形之間的轉換,例如我按下一個鍵生成正弦波,再按下一個鍵生成三角波,怎么實現?

        再然后,我們需要把生成的數字信號送入D/A轉換芯片,D/A轉換的接口怎么寫?怎么保證采集的數字信號完全正確?

        最后,我們可以通過示波器觀察我們生成的波形信號,驗證我們的頻率,相位是否符合我們的設計要求

       下面是我簡單的做的一個框架圖



      下面我們先來解釋一下上面這張框架圖。
      首先,我們通過8位按鍵選擇輸出何種波形,這時候wave_select信號被賦予相應的值送給DDS模塊,DDS模塊由wave_select信號,從ROM中選擇合適的地址,地址每變化一次,也就是數據每變化一次,DDS模塊會告知DAC模塊數據發生變化了,讓它注意數據的采集,不要采錯了!同時可以通過按鍵控制模塊調節輸出信號的頻率,相位等,DAC模塊將采集到的數字信號轉化成模擬信號,送到示波器上顯示。注意DAC芯片的采樣頻率,DDS信號的輸出頻率不能大于采集頻率,否則數據就會出錯。

二、DDS信號發生器原理詳解

       關于發生器原理這樣部分有必要好好講講,很多人還是對某系問題不得其解,先來看這張圖



     DDS基本的結構組成,看圖就知道了,包括相位累加器,相位調制器,波形數據表,和DA轉換。我們還可以看到有兩個輸入,即頻率控制字輸入fword 和相位控制字輸入 pword,這兩個輸入就是我們用來控制輸出波形頻率和相位的

     1、相位累加器

           相位累加器的原理,我們先假設頻率控制字fword 為1。相位累加器的原理就是先將fword的值送到相位累加器,然后每來一個時鐘,相位累加器的輸出值,就跟相位累加器的新輸入值相加,之后再送入相位累加器,再來一個時鐘,再跟輸入值相加送進去,如此循環。例如剛開始fword = 1 ,那么第一個時鐘周期相位累加器的輸出就是1,第二個時鐘周期輸出的就是2,第三個時鐘周期輸出的就是3。再例如,我們的頻率控制字fword 剛開始等于2,那么相位累加器輸出的就依次是0,2,4.....也就是說頻率控制字fword 越大,相位累加器的輸出值間隔也就越大,那么我們假設相位累加器的輸出是32位的,如果fword越大,那么頻率控制字記完到2^32 的時間就越短。這樣的話,我們來算一下

      我們使用的是50M的晶振,周期為20ns,假設fword為1,相位累加器的輸出為N位的,那么每20ns,相位累加器加1,要加到2^N,需要20ns x 2^N 時間,這個時間就是輸出一個完整信號的周期,那么我們可以知道,輸出信號的頻率為 Fout = Fclk /2^N,其中,Fclk為我們的晶振頻率,再假如,fword = B 的時候,相位間隔提高 B 倍,因此計滿一個周期的時間縮小了 B 倍,頻率提高的 B 倍。綜上所述,我們得出了輸出信號的頻率計算公式



      有了這個公式,那么,如果我們把2^N看成是一個周期波形的相位,也就是說把一個波形的相位平均分成2^N個,每一個相位對應一個數字信號,將這些數字信號送到DA轉換芯片,轉化成模擬信號,不就是我們的信號發生器了嗎?

     好,這里我們假設N = 32 ,也就是把一個波形的相位分成了2^32個點,但是位數越多當然占用的資源也就越多,不能取那么多,怎么辦呢,我們只取它的高8位即可



即取fre_add[31:24] ,將這8位數送給ROM的地址。很多人不明白了,為什么這樣取8位,這樣取8位不是把一個完整的信號給截斷了嗎?剛開始我也有這么想過,但是仔細算一下才知道自己是多慮了。用計算器算一下知道,2^32 = 4.3x 10^9 左右,而2^24 = 16 x 10^6 左右,前后差了幾個數量級,所以,我們取fre_add[31:24],相當于把一個波形的相位分成了256個點,每個點對應一個數據。

二、ROM

       上一部分說了,我們將一個波形分成了256個點,每個點對應一個數據,那么我們怎么實現呢,這里就要用到我們的只讀存儲器ROM了,我們可以先把波形的數據送到ROM里存起來,然后再從中取,取的地址就是我們的fre_add[31:24]這8位數,由此看來,fword越大,這256個地址取址的間隔就越大,相應的波形頻率也就越大了,當然,我們的ROM不光存儲一個波形,我們可以把ROM設大一點,里面放多種波形,再通過按鍵進行相應的選址,從而輸出各種波形



    說到這里有些人該問了,怎么將數據送到ROM里去呢?這個的話就設計到mif文件的制作,具體怎么做大家還是自己回去補課了,不一一介紹了,但是我這里有一個mif文件生成器,網上也有下載,可以生成各種波形,也可以進行相關參數的修改,注意保存的時候保存成.mif格式的文件即可,調用的時候在IP核 ROM的配置的時候調用就好了,但是要注意位寬。



三 、相位調制器

         相位調制器部分就簡單了,就是相位累加器取好的的8位ROM地址,我們可以通過按鍵進行加加減減,從而控制ROM取址的不同,從而控制波形的相位



四 、參數計算

        由上面的公式我們知道了輸出波形的頻率計算公式,當fword =1的時候我們算一下

輸出頻率 Fout  =  50_000000 / 2^32   = 0.01,就是個大約值了,也就是說,在fword =1的時候,我們的輸出波形的頻率為0.01HZ,假設我們讓波形初始化的時候輸出的是一個100HZ的正弦波,那么,我們應該設定fword = 10000,相位的話可以隨便設置,我們就默認為0相位好了。如果要進行頻率,相位可調,我們只需要讓fword每次加100,就相當于頻率步進為1HZ了,當然,由于我們的地址是8位的,那么,步進的相位就是 360 /256,大概等于1.4度吧。

     還有,既然頻率為100HZ,也就是周期為0.01s,ROM要在0.01s內要輸出256個數,那么每輸出一個數的時間為0.01 /256 大概為 39us的樣子,因此,我們的DAC的采集頻率不能比ROM的輸出頻率小了,否則的話采集到的數據是不準確的

綜上所述,我們總結一下

    輸出頻率: 100HZ
    輸出相位:0
    步進頻率:1HZ
    步進相位:1.4度
    DAC采集時間:小于39us

當然在一般情況下 DAC的采集頻率是遠大于ROM的輸出頻率的,只要信號輸出頻率不是特別快,采集正確還是有保證的。為了保證采集的正確性,我特別加了一個數據變化檢測部分,一但數據發生變化,就告知DAC模塊,做相應處理



     一切準備就緒,我們可以做一下仿真,具體的仿真調試過程不做詳解,還是大家自己動手去做的過程



五、DAC接口電路

       DA芯片我用的是TLC5620這塊芯片,這塊芯片是四路輸出,8位的的數模準換芯片,芯片的操作不是很難,我們還是先來看一下芯片的datasheet



DA芯片有這幾個管腳需要用到,分別是

    dac_clk,用于產生DAC的工作時鐘,說明文檔上說時鐘最大為1M,而我們的晶振為50M因此我們需要做個分頻,我做了個64分頻,當然是為了穩定,如果可以大家也可以試試更高的頻率

   dac_data , 是串行輸入的接口,用來接收數字信號

   dac_load ,將接收來的數字信號開始轉化成模擬信號的使能端,低電平有效,要持續最低250ns

   dac_ldac , dac信號刷新控制端,當dac為低電平的時候一直有模擬信號輸出,否則不再刷新

上面那個時序圖大體解釋一下,就是在load信號是高電平期間,每來一個DAC工作時鐘的下降沿,就將1位數據通過dac_data端口送到DAC芯片內部的移位寄存器中,寄存器是11位的,前兩位為輸出模擬信號的通道號,第三位是用來計算輸出電壓用的一個參數吧,低8位是輸入的數字信號,當移位寄存器存滿之后,給一個load信號,工作時鐘處于不工作狀態,注意,這一點很重要,我當時就是不知道這一點,一直調不好,就是在轉換期間,讓工作時鐘處于非工作狀態,等待250ns之后,將load拉高,進行下一次采集。

關于代碼的分析這里也不做詳細分析了,大家還是自行消化,這里只傳一部分,關于數據的發送部分的代碼



每來一個時鐘,送一位數據給dac_data端口,送滿移位寄存器為止,當移位寄存器計滿的時候,load拉低,同時時鐘停止工作,bit_counter 清零,等待下一次采集。當然當數據發生變化的時候,也就是data_change 信號來的時候,bit_counter 也清零,重新采集,避免采集錯誤

   全部模塊編譯完成之后,我們就可以用示波器來檢測我們的結果了



由示波器的結果我們可以看到,輸出電壓峰值為2.5V,當然這是由芯片決定的,輸出頻率為116HZ,大體符合我們的要求,畢竟我們很多參數做了近似,再通過按鍵進行波形的變換,發現各波形輸出正常,只有方波和鋸齒波,在電壓下降的時候變化有點緩慢,當然這也得考慮我們芯片的因素,畢竟電壓不能變化的那么快,也屬于正常情況



波形顯示正常,下面通過按鍵來調節波形的頻率和相位,可是實現實時顯示的功能,發現頻率,相位都有所改變



     當然,這個工程也有做的不好的地方,例如,再進行相位調節的時候,由于各種波形的地址在ROM里面是挨在一起的,這樣進行相位調節會侵犯其他波形的地址,這一點我當時也考慮過了,短時間內沒有想出更好的辦法,可以用多個ROM,其他的辦法還請大家自己動腦子想一下吧,想出來了可以給我留言,大家一起交流嘛

     好了,這一次主要還是講了一下工程的全過程,沒有仔細講代碼編寫的具體過程,也沒有講仿真時候的操作流程,這些部分還是留給讀者慢慢去摸索,畢竟這也是一個學習的過程,今天就到這里吧,由于小墨手上也有了項目,平時還要上課,更新速度方面應該不是很快!謝謝大家的支持~

    以后小墨同學的文章將在北京至芯科技官方技術論壇同時更新,至芯科技的官方技術論壇也有很多的資料供大家下載,里面也有小墨的專題板塊,希望廣大網友和愛好者的大力支持~
http://www.fpgaw.com/
小墨同學《零基礎學FPGA》學習專版  一個大三學生學習之路的真實記錄
http://www.fpgaw.com/thread-78527-1-1.html
下面是至芯科技官方網站,夏宇聞教授和那里的老師都超好的~有意愿接受FPGA培訓的可以找工作人員咨詢
http://www.zxopen.com/
       以后小墨同學的教程會跟這款開發板配套,想跟小墨同學一起學習,一起進步的的可以考慮一下購買一塊開發板,畢竟學習要舍得投資嘛,下面是開發板淘寶鏈接
http://item.taobao.com/item.htm? ... ;abbucket=13#detail

本文地址:http://www.qingdxww.cn/thread-149643-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 5分鐘詳解定時器/計數器E和波形擴展!
  • 無線充電基礎知識及應用培訓教程2
  • 了解一下Microchip強大的PIC18-Q24 MCU系列
  • PIC18-Q71系列MCU概述
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 男人的天堂久久精品激情a 男人的天堂久久精品激情 男人的天堂久久 | 四虎国产精品永久在线网址 | 韩日一级毛片 | 日韩高清免费观看 | 久久久国产精品四虎 | 天天综合网天天做天天受 | 国产无卡一级毛片aaa | 岛国片免费 | 亚洲国产日韩欧美在线vip1区 | 综合成人 | 国产欧美日韩中文字幕 | 久久精品国产99久久久香蕉 | 久久久久国产成人精品亚洲午夜 | 2021国产精品自拍 | 免费一级大毛片a一观看不卡 | 在线视频一区二区三区三区不卡 | 天天操免费视频 | 中文字幕日本一区久久 | 日韩欧美一区二区在线观看 | 亚洲精品亚洲人成在线观看麻豆 | 亚洲精品国产精品国自产 | 七月丁香色婷婷综合激情 | 国产福利一区二区麻豆 | 9966国产精品视频 | 久久精品久久精品久久精品 | 91热久久免费精品99 | 亚洲理论在线观看 | 亚洲图片在线 | 91中文| 日本成人免费在线视频 | 亚洲b| 六月丁香激情 | 欧美视频免费在线观看 | 青青青草国产线观 | 黄a在线| 一区二区不卡在线观看 | 国产女人久久精品 | 国产精品18久久久久久小说 | 七月婷婷精品视频在线观看 | 亚洲高清在线 | 在线欧美日韩 |