低通FIR將基帶信號(hào)的旁瓣濾去,保留基帶信號(hào)的主瓣?;鶐盘?hào)之所以是基帶信號(hào),正是因?yàn)樗幵诹阒蓄l附近。實(shí)際上,信號(hào)之所以在高頻甚至射頻的原因主要有:
1.接收天線的長度與電磁波的波長存在正比例關(guān)系,所以波長越小,接收天線也可以做的越小。電磁波波長與頻率存在反比例關(guān)系,所以需要將基帶信號(hào)上變頻至高頻部分,方便天線接收。
2.方便擴(kuò)展信號(hào)帶寬,提高頻帶利用率。
本文將通過DDS IP核輸出的正弦波,與基帶信號(hào)混頻上變頻至高頻部分,將涉及一點(diǎn)數(shù)字信號(hào)處理內(nèi)容。
首先,簡單寫一下上變頻的數(shù)學(xué)理論基礎(chǔ),
基帶信號(hào)乘以一個(gè)正弦波,頻域卷積,頻譜上會(huì)將基帶信號(hào)的頻譜搬移到正弦波的頻率。
所以,我們需要做的就是生成一個(gè)所需的正弦波,并與基帶信號(hào)相乘。這個(gè)過程就需要使用到Xilinx的DDS IP核以及DSP IP核。
在Vivado中IP Catalog中找到DDS IP核,
DDS IP核設(shè)置
系統(tǒng)時(shí)鐘選擇50MHz,通選數(shù)量選擇1,其他的可以保持默認(rèn)。注意Configuration Option,這里選擇Phase Generator and SIN COS LUT,這個(gè)模式會(huì)根據(jù)GUI設(shè)置自動(dòng)產(chǎn)生所需要的頻率的正弦波;而另一種模式SIN COS LUT ONLY,會(huì)根據(jù)輸入的相位信息phase_data輸出對(duì)應(yīng)的正弦波值,相位信息需要不斷地自加獲取輸出的正弦波值。兩種模式各有利弊,第一種模式設(shè)置更方便,第二種模式不需要固定輸入時(shí)鐘,可以改變參數(shù)獲取不同的頻率的正弦波。
第一種模式下,dds實(shí)例化,只需要取m_axis_data_tdata的數(shù)據(jù)即可,輸出的波形按照GUI設(shè)置的要求。
dds_compiler_0 dds_inst (
.aclk(clk_50m), // input wire aclk
.m_axis_data_tvalid(), // output wire m_axis_data_tvalid
.m_axis_data_tdata(cos_o), // output wire [15 : 0] m_axis_data_tdata 13 - 2
.m_axis_phase_tvalid(), // output wire m_axis_phase_tvalid
.m_axis_phase_tdata() // output wire [31 : 0] m_axis_phase_tdata
);
第二種模式下,dds實(shí)例化,需要不斷地自加相位數(shù)據(jù),DDS會(huì)根據(jù)相位數(shù)據(jù)輸出對(duì)應(yīng)的正弦波值。這更像ROM表,相位數(shù)據(jù)為ROM地址,根據(jù)ROM地址輸出相應(yīng)地址的數(shù)據(jù)。
always @ (posedge clk or posedge rst)beginif (rst)
phase_data <= 16'd0;
else
phase_data <= phase_data + fre_word;end
dds_compiler_0 dds_i (
.aclk(clk), // input wire aclk
.aclken(1'b1), // input wire aclken
.s_axis_phase_tvalid(1'b1), // input wire s_axis_phase_tvalid
.s_axis_phase_tdata(phase_data), // input wire [15 : 0] s_axis_phase_tdata
.m_axis_data_tvalid(), // output wire m_axis_data_tvalid
.m_axis_data_tdata(t_data) // output wire [31 : 0] m_axis_data_tdata);
其實(shí)DDS的原理正是ROM表存儲(chǔ),相位數(shù)據(jù)就是地址信息,根據(jù)地址信息查找表,輸出對(duì)應(yīng)數(shù)據(jù),FPGA擅長的正是查表。第一種模式固定了相位數(shù)據(jù)和相位差,簡化了操作但固定了使用時(shí)的輸出頻率;第二種模式開放了相位數(shù)據(jù)接口,輸出的頻率更加多變。
根據(jù)公式可知,
上面示例中的fre_word計(jì)算來源于這個(gè)公式。
DDS IP核設(shè)置
Output Selection可以選擇輸出的波形是Sine,Cosine,Sine and Cosine。注意選擇Sine and Cosine時(shí)輸出的信號(hào)寬度是Sine,Cosine的兩倍,需要使用截位的方法將信號(hào)的前半段與后半段分開。高半段為Sine,低半段為Cosine。
DDS IP核設(shè)置
這個(gè)部分根據(jù)需要的頻率進(jìn)行設(shè)置。
DDS IP核設(shè)置
可以看到預(yù)想10M,但由于精度的問題,實(shí)際輸出的頻率是9.9999MHz,非常接近了。
接下來就是DSP IP核的使用,在Vivado中IP Catalog中找到DDS IP核。
DSP IP核
使用最簡單的乘法功能,其他通道不選擇。
DSP IP核
設(shè)定A,B的位數(shù)以及輸出數(shù)據(jù)的位寬之后就完成了DSP IP核的設(shè)置。
xbip_dsp48_macro_0 dsp_product_inst (
.CLK(clk_50m), // input wire CLK
.A(fir_out[19:8]), // input wire [11 : 0] A
.B(cos_o[13:2]), // input wire [11 : 0] B
.P(out_data) // output wire [23 : 0] P
);
為了平衡性能與面積,所以A,B設(shè)置的12位輸入,分別對(duì)FIR和DDS的正弦波進(jìn)行了截位
由此,就完成了基帶信號(hào)的上變頻操作;但是,這樣的上變頻會(huì)帶來雙邊帶問題,占用了2倍的基帶信號(hào)帶寬。為了解決這個(gè)問題,又可以引入IQ調(diào)制。IQ調(diào)制如何操作以及它的原理等待后續(xù)的文章梳理。
最后,上板測(cè)試可以看到如下圖所示。
實(shí)測(cè)圖
duc_data是搬移到高頻之后的信號(hào),最后可以對(duì)duc_data進(jìn)行截位操作,以適應(yīng)實(shí)際中DAC的位數(shù)限制。
-
正弦波
+關(guān)注
關(guān)注
11文章
655瀏覽量
56684 -
DDS
+關(guān)注
關(guān)注
22文章
672瀏覽量
154478 -
信號(hào)處理器
+關(guān)注
關(guān)注
1文章
258瀏覽量
25777 -
電磁波
+關(guān)注
關(guān)注
21文章
1484瀏覽量
54690 -
FIR濾波
+關(guān)注
關(guān)注
0文章
6瀏覽量
9967
發(fā)布評(píng)論請(qǐng)先 登錄
基于數(shù)字上變頻器的中頻調(diào)制器

AD9789基帶數(shù)字上變頻頻率為什么能到Fdac/16?
在DAC3482中,采用片內(nèi)混頻器實(shí)現(xiàn)上變頻功能需要保證兩路輸入信號(hào)的正交性嗎?
有關(guān)AD9361的上變頻
AD9789基帶數(shù)字上變頻頻率為什么能到Fdac/16
多天線多載波數(shù)字上下變頻的FPGA實(shí)現(xiàn)方法有哪些?
PXI 5610實(shí)現(xiàn)上變頻信號(hào)發(fā)送
AD9739上變頻功能實(shí)現(xiàn)原理是什么?
基于QDUC的雷達(dá)上變頻電路的設(shè)計(jì)
通信系統(tǒng)中數(shù)字上變頻技術(shù)的研究與設(shè)計(jì)

基于FPGA的高效靈活數(shù)字上變頻實(shí)現(xiàn)設(shè)計(jì)

正交DDS信號(hào)至800至2500MHz頻段的單邊帶上變頻

評(píng)論