基于FPGA的信號發生器設計
以FPGA 芯片為載體, 通過QuartusII 的LPM_ROM 模塊和VHDL 語言為核心設計一個多功能信號發生器,根據輸入信號的選擇可以輸出遞增鋸齒波、遞減鋸齒波、三角波、階梯波和方波等5 種信號,通過QuartusII 軟件進行波形仿真、定時分析,仿真正確后,利用實驗板提供的資源,下載到芯片中實現預定功能。
本文引用地址:http://www.104case.com/article/150153.htm信號發生器又稱為波形發生器, 是一種常用的信號源,廣泛應用于電子電路、通信、控制和教學實驗等領域。它是科研及工程實踐中最重要的儀器之一, 以往多用硬件組成,系統結構比較復雜,可維護性和可操作性不佳。隨著計算機技術的發展,信號發生器的設計制作越來越多的是用計算機技術,種類繁多,價格、性能差異很大。用FPGA 或CPLD 來實現,它的優點是可以進行功能仿真,而且FPGA 和CPLD 的片內資源豐富,設計的流程簡單。用FPGA 所構成的系統來產生波形信號,這個系統既能和主機系統相連,用相應的上層軟件展示波形信號, 又方便程序的編寫, 而且還有A/D0809接口可以產生模擬信號的輸出和外面的示波器相連。
1 正弦信號發生器的LPM 定制
正弦信號發生器由計數器或地址發生器(6 位)、正弦信號數據ROM (6 位地址線,8 位數據線, 含有64 個8 位數據, 一個周期)、原理圖頂層設計和8 位D/A ( 實驗中用DAC0832 代替)。
其框圖如圖1 所示。其中信號產生模塊將產生所需的各種信號,這些信號的產生可以有多種方式,如用計數器直接產生信號輸出,或者用計數器產生存儲器的地址,在存儲器中存放信號輸出的數據。信號發生器的控制模塊可以用數據選擇器實現, 用8 選1 數據選擇器實現對5 種信號的選擇。
圖1 信號發生器結構框圖
最后將波形數據送入D/A 轉換器,將數字信號轉換為模擬信號輸出。用示波器測試D/A 轉換器的輸出,可以觀測到5 種信號的輸出。
1.1 定制初始化數據文件
QuartusII 能接受的LPM_ROM 模塊中的初始化數據文件的格式有兩種:。mif 格式文件和。hex 格式文件。實際應用中只要使用其中一種格式的文件即可。下面采用。mif 格式文件,調出產生ROM 數據文件大小的選擇窗。根據64 點8 位正弦數據的情況,可選ROM 的數據數Number 為64,數據寬Word size 取8 位。單擊OK 按鈕,將出現圖2 所示的空的。mif數據表格,表格中的數據格式可通過鼠標右鍵單擊窗口邊緣的地址數據彈出的窗口選擇。
圖2 .mif 數據表格
將波形數據填入mif 文件表中也可以使用QuartusII 以外的編輯器設計MIF 文件,其格式如下:
#include STdio.h>
#include math.h
main()
{int i;float s;
for (i=0;i1024; i++)
{ s = sin(atan(1)*8*i/1024);
printf(%d : %d;n,i,(int)((s+1)*1023/2)); }}
把上述程序編譯成程序后, 可在DOS 命令行下執行命令:
romgen > sin_ rom. mif;
評論