基于FPGA的直接數(shù)字頻率合成技術(shù)設(shè)計
2?。模模釉冢疲校牵林械膶崿F(xiàn)
考慮到本系統(tǒng)的規(guī)模以及以后的擴展需要,該系統(tǒng)中的DDS電路采用VHDL硬件描述語言來實現(xiàn),因為VHDL語言設(shè)計的電路模塊可以方便地移植到不同的FPGA芯片中。由于硬件原因,本系統(tǒng)的最高頻率為100kHz,因此,采用常規(guī)設(shè)計即可滿足要求,但若要應(yīng)用于高速系統(tǒng),還要采用一些提高系統(tǒng)運行速度的措施,如采用流水線技術(shù),即在設(shè)計中把延時較大的組合邏輯塊切割成兩塊大致相等的組合邏輯塊,并在這兩個邏輯塊中插入觸發(fā)器,也可通過多個觸發(fā)器時鐘來提高系統(tǒng)速度,還可以采用ALTREA 公司的FPGA器件所特有的進位鏈來設(shè)計高速電路。
圖2所示為一個具有頻率、相位與幅度調(diào)制的DDS系統(tǒng)的FPGA組成框圖。它的頻率調(diào)制可以在調(diào)諧寄存器與相位累加器之間插入一加法器來實現(xiàn),頻率調(diào)制與相位調(diào)制有相同的分辨率,因此,頻率可以覆蓋整個調(diào)諧頻段。相位調(diào)制器可通過在相位累加器后插入一個加法器來實現(xiàn)。幅度調(diào)制則是在正弦查找表后插入一個乘法器來實現(xiàn)。該系統(tǒng)具有高精度、高穩(wěn)定性等特點。
2.1 ROM查找表的設(shè)計
ROM查找表在整個設(shè)計中是一個比較重要的部分。為了保證波形的平滑,設(shè)計時可將一個周期分為1024個點。但是,點數(shù)太多時,用文本方式輸入可能有很多困難。因此,應(yīng)當(dāng)用C語言描述正弦方程式,最后再將其轉(zhuǎn)化為所需的mif文件。以下是其C語言的源程序:
main()
{int i;float s;
for(i=0;i<1024;i++)
{ s = sin(atan(1)*8*i/1024);
......
2.2 DDS主模塊設(shè)計
DDS主模塊部分可根據(jù)上述原理,采用VHDL來描述,以下是部分源程序:
BEGIN
PROCESS (clk)
BEGIN
IF(clk'event AND clk='1') THEN
\\時鐘上升沿觸發(fā)
freqw<=freqin;
acc<=acc+freqw; \\開始累加
END IF;
END PROCESS;
romaddr<=acc(adder width-1 downto adder width-10); \\累加結(jié)果的高11位作為
查找表的地址位
i_rom:lpm_rom \\調(diào)用ROM查找表
......
評論