FPGA學習(二)——實現AM信號調製與解調

FPGA學習(二)——實現AM信號調製與解調

  1. 使用的軟體是Vivado 2016.4
  2. 實驗室板卡是Nexys Video

一、寫在前面

目前可模擬實現,VIO部分待有時間再補齊。。。。

1.本篇記錄的是如何進行AM信號的調製與解調,

其主要步驟包括:

  1. 分頻器(Frequency divider)的產生
  2. 載波信號(Carrier signal)的產生
  3. 調製信號(Modulated signal)的產生
  4. 含直流分量(DC component)的調製信號
  5. 已調信號(Modulated signal)的產生
  6. 相干解調(Coherent demodulation)
  7. 濾除直流分量(DC component)
  8. 中間還有截位操作

2.關於截位:

在FPGA中,隨著信號處理的層次加深,對信號進行乘、累加、濾波等運算後,可能輸入時僅為8位位寬的信號會擴展成幾十位位寬,位寬越寬,佔用的硬體資源就越多,但位寬超過一定範圍後,位寬的增寬並不會對處理精度帶來顯著的改善,這時就需要對信號進行截位。

3.關於濾波器設計

兩種方法:

一是相干解調時需要低通濾波器;

二是可採用對已調信號取絕對值的方式也需要低通濾波器。

二、對過程的要求:

(1)載波信號頻率範圍:1M-10MHz,解析度0.01MHz;

(2)調製信號為單頻正弦波信號,頻率範圍:1kHz-10kHz,解析度0.01kHz;

(3)調製深度0-1.0,步進0.1,精度優於5%;

(4)調製信號和解調信號位寬為___8___位,其他信號位寬自定義,解調誤差優於1%(可利用MATLAB對數據進行驗證);

三、原理分析

1.調製與解調原理

//已調信號輸出:AM_OUT=DC_signal_out*carrier_out

//含直流分量的調製信號:DC_signal_out=DC_out+12800(8位調製信號的幅值)

//可控的直流分量輸出:DC_out=signal_out*Ma (Ma/100為調製深度)

//載波信號輸出:DDS>>Carrier_DDS>>carrier_out>>頻率控制字c_fcw 16bits,輸出位寬8bits

//無直流分量的調製信號輸出:DDS>>Signal_DDS>>signal_out>>頻率控制字s_fcw 24bits,輸出位寬8bits

2.根據要求設計信號參數

1)載波信號頻率範圍:1M-10MHz,解析度0.01MHz

DDS工作時鐘選擇20MHz,carrier_out:頻率控制字16位,輸出8位,原理見:

子木:FPGA學習(一)——產生頻率可控的正弦波?

zhuanlan.zhihu.com圖標

(2)調製信號為單頻正弦波信號,頻率範圍:1kHz-10kHz,解析度0.01kHz

DDS工作時鐘選擇20MHz,signal_out:頻率控制字為24位,輸出8位

(3)調製深度0-1.0,步進0.1,精度優於5%;

ma定義就不多說了,這裡得到的方法是在已知調製信號輸出位寬的前提下(已調信號幅值絕對值為128)

ma=frac{Ma	imes signal_out}{ 12800}

其中Ma取值為10~100,之間的整十數。

(4)調製信號和解調信號位寬為___8___位,其他信號位寬自定義,解調誤差優於1%(可利用MATLAB對數據進行驗證);

使用截位的方法,使解調信號輸出8位。

四、分頻器(Frequency divider)設計

由於DDS工作時鐘選擇20MHz,將100MHz分為20MHz即可。詳見下面這篇中的分頻器設計部分:

子木:FPGA學習(一)——產生頻率可控的正弦波?

zhuanlan.zhihu.com圖標

五、產生載波信號(Carrier signal)

1.實現方式:DDS IP核

2.變數名:

工作時鐘:clk_20M

載波頻率控制字:c_fcw(carrier_ frequency_control_word)

載波輸出信號:carrier_out

原理見上一篇!

六、產生無直流分量(DC component)調製信號(Modulated signal)

1.實現方式:DDS IP核

2.變數名:

工作時鐘:clk_20M

調製信號頻率控制字:s_fcw(signal_ frequency_control_word)

無直流分量的調製信號輸出:signal_out

原理見上一篇!

七、產生含直流分量的調製信號

1.由Ma控制調製信號,再加上固定的直流分量即可。

Ma 	imes signal_out+12800。

2.實現方式:乘法器 IP核:DC_Mul和加法器IP核:DC_signal_Add

3.變數名:

調製深度控制變數:Ma

Ma控制的調製信號輸出:DC_out

直流分量:12800

含直流分量的調製信號輸出:DC_signal_out

八、輸出已調信號(Modulated signal)

1.載波與含直流分量的調製信號相乘

2.實現方式:乘法器IP核:AM_Mul

3.變數名:

含直流分量的調製信號輸入:DC_signal_out

載波輸入信號:carrier_out

已調信號輸出:AM_out

九、相干解調(或去絕對值法)(Coherent demodulation)

1.相干解調:載波與已調信號相乘

2.實現方式:乘法器IP核:DM_Mul

3.變數名:

已調信號輸入:AM_out

載波輸入信號:carrier_out

解調信號輸出:DM_out

十、濾除高頻分量(High frequency component)

1.FIR低通濾波器:設置階數和輸入輸出信號位寬

2.實現方式:FIR IP核:DM_FIR

3.變數名:

濾波器輸信號:{7d0,DM_out} (由設置輸入信號位寬決定)

濾波器輸出信號:DM_out

十一、濾除直流

待更。。。

十二、模擬波形

下面是單獨ma=1時的輸出,截位還未來得及修改。

十三、所有代碼

待更。。。

1.主程序

2.模擬程序

3.約束文件

推薦閱讀:

TAG:Verilog | 現場可編輯邏輯門陣列FPGA | 電子工程EE |