基於FPGA的正弦信號發生器設計

前言

用FPGA做正弦信號發生器是我上大學期間在實驗室裏做的,主要用的ROM-IP和DA數模轉化芯片,將數字信號轉爲模擬信號後,通過示波器進行顯示。

      我記得當時用FPGA做了正弦、三角波、方波信號,然後通過DA輸出在示波器上顯示信號........現在回想起來,自己感覺挺有意思的,當時學習時確實花費了不少時間去搞它。

      好多同學通過關注《FPGA的故事》公衆號,諮詢我是不是可以講一下正弦信號發生器的設計?

     爲了感謝大家對《FPGA的故事》公衆號的關注,我把一些上學期間做的小實驗慢慢分享給大家,希望對大家學習FPGA有幫助!

     希望大家繼續關注《FPGA的故事》,你們的支持就是我最大的動力!

應用知識儲備說明

用FPGA做正弦信號發生器,從專業學科角度來說它屬於通信行業了。在通信行業裏,信號的處理肯定要用到兩種信號類型:模擬信號和數字信號(這個概念大家可以自己上網查一下,這裏不詳細介紹)。這兩種信號之間如何進行轉化呢,就要用到AD芯片和DA芯片。

我想大家都知道AD和DA這兩個名詞吧,我們現在就用正弦信號發生器做個說明吧。

我把上大學期間做個實驗給大家講一下,如上圖所展示的一樣。當時我是通過信號發生器產生一定頻率的正弦信號,然後再通過AD芯片(模擬轉數字)將信號發生器輸出的模擬信號轉爲數字信號;再將轉化後的數字信號通過FPGA進行採集,把採集到的數據傳遞給DA芯片(數字轉模擬),最後通過示波器觀察信號是不是正弦波。

今天我們要做的實驗,由於沒有真實額信號源發生器,以及AD、DA和示波器;只能通過在FPGA中模擬正弦波的數字信號來搞了,然後通過仿真軟件進行測試。

程序設計

我們這裏要用到FPGA的ROM-IP來做實驗,原理就是把正弦信號波形的數據存儲到ROM中,然後從裏面讀出來就行了,如下圖所示。

注意:由於大家使用的FPGA芯片不同(alter 或者Xilinx),生成的ROM操作流程也不同,這裏不再介紹。

     我們使用波形軟件生成自己想要的波形參數,然後把生成的數據轉換爲coe文件,如下圖所示。

這些準備後,我們調用一個ROM-IP將參數導入,就可以寫代碼控制ROM了。(此時,感覺自己又回到了大學時代,心情激動.......)

  •                                                                          top程序接口

名稱

方向

位寬

說明

clk

Input

1

工作時鐘

reset

Input

1

復位信號(active high)

data

Output

8

波形數據

代碼:

測試文件:

仿真結果:如下圖所示,對data_out通過鼠標右鍵選擇爲模擬信號,數據信號就會變成正弦波形模式。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章