【FPGA作业】第五章 单音信号对载波信号进行双边带幅度调制

双边带幅度调制实现

五 单音信号对载波信号进行双边带幅度调制

5.1 实验内容

  • 合成一个双边带AM调制信号,载波频率1MHz,调制信号1KHz,采样率50MHz
  • 使用Modelsim仿真,观察波形,使用Matlab观察频谱
  • 使用Signaltap抓取电路输出波形,使用Matlab观察频谱
    方案描述
  • 使用两个DDS,一个DDS为1MHz,另一个为1KHz,直接相乘
  • ROM表由Matlab生成,10bit地址,10bit量化
  • 相位累加器32bit

5.2 原理

(1)DDS原理

这里写图片描述

(2)双边带调幅原理

时域表达式
这里写图片描述
这里写图片描述
图5. 1 DSB时域图像
频域表达式
这里写图片描述
图5. 2 DSB频域图像

5.3 双边带幅度调制Verilog实现

5.3.1 DDS模块实现

(1)dds_core.v
完成ROM地址改变的功能

`timescale 1ns/1ns
module dds_core_sin(
    CLK,    //clock
    RST,    //button reset, high level reset
//  FWEN,   //button frequency word update enable, high level enable
    FWIN,   //input frequency word
    CLKOUT, //output clock
    SINOUT, //sine signal output, 2's complement format
    AccCNT
);

input CLK;
input RST;
//input FWEN;
input[31:0] FWIN;
output CLKOUT;
output[9:0]SINOUT;
output[31:0]AccCNT;

parameter FW_WL=32; // frequency word 32bit
parameter RA_WL=10; // rom address input length
parameter RD_WL=10; // rom data output length

//reg   [FW_WL-1 : 0] fwin_R;   // frequency word 
reg [FW_WL-1 : 0] acc_R;    // acc register record frequency + acc
reg [RA_WL-1 : 0] addr_R;   // addr_R related to rom input 
reg [RD_WL-1 : 0] sinout_R; // sinout_R is the register of rom output
wire [RD_WL-1 : 0] romout_W;// related to rom output

always @ (posedge CLK ) begin
    if(!RST) 
    begin // all registers clear out
//      fwin_R <= 0;
        acc_R <= 0;
        addr_R <= 0;
        sinout_R <= 0;
    end
    else begin
        // fwin_R update
//      if(FWEN) fwin_R <= #5 FWIN;
//      else fwin_R <= #5 fwin_R;
//      fwin_R <= FWIN;
        // acc_R update
//      acc_R <= fwin_R + acc_R;
        acc_R <= FWIN +acc_R;
        // addr_R update, the acc_R high RA_WL is rom address
        addr_R <= acc_R[FW_WL-1 : FW_WL-1 - (RA_WL-1)];

        // sinout_R update
        sinout_R <= romout_W;

    end
end
sine_rom_10bit u_s
### LabVIEW实现音基带信号幅度调制与解调 LabVIEW 是一种图形化编程语言,广泛应用于测试测量、数据采集和信号处理等领域。对于音基带信号幅度调制(AM)与解调,可以通过以下方法实现。 #### 1. 幅度调制(AM)原理 幅度调制是一种将信息信号加载到载波信号上的技术。在音基带信号的情况下,假设基带信号为 \( m(t) \),载波信号为 \( c(t) = A_c \cos(2\pi f_c t) \),则 AM 调制后的信号可以表示为: \[ s(t) = (A_c + k \cdot m(t)) \cos(2\pi f_c t) \] 其中,\( k \) 是调制指数[^1]。 #### 2. 实现幅度调制的步骤 在 LabVIEW 中,可以通过以下方式实现 AM 调制: - **生成基带信号**:使用 LabVIEW 的波形生成函数生成音基带信号 \( m(t) \)。 - **生成载波信号**:使用正弦波生成函数生成载波信号 \( c(t) \)。 - **计算调制信号**:通过公式 \( s(t) = (A_c + k \cdot m(t)) \cos(2\pi f_c t) \) 计算调制后的信号。 以下是 LabVIEW 中实现 AM 调制的代码示例: ```labview // 基带信号生成 m(t) = sin(2 * pi * f_m * t) // 载波信号生成 c(t) = A_c * cos(2 * pi * f_c * t) // 调制信号计算 s(t) = (A_c + k * m(t)) * cos(2 * pi * f_c * t) ``` #### 3. 幅度解调原理 幅度解调是将调制信号还原为原始基带信号的过程。通常采用包络检波或同步解调的方法。对于同步解调,其公式为: \[ m'(t) = s(t) \cdot \cos(2\pi f_c t) \] 随后通过低通滤波器提取基带信号[^2]。 #### 4. 实现幅度解调的步骤 在 LabVIEW 中,可以通过以下方式实现 AM 解调: - **乘法器**:将调制信号 \( s(t) \) 与本地载波信号 \( \cos(2\pi f_c t) \) 相乘。 - **低通滤波器**:通过低通滤波器去除高频分量,提取基带信号 \( m'(t) \)。 以下是 LabVIEW 中实现 AM 解调的代码示例: ```labview // 同步解调 m'(t) = s(t) * cos(2 * pi * f_c * t) // 低通滤波 m'(t) = LPF(m'(t)) ``` #### 5. 示例程序结构 在 LabVIEW 中,可以构建如下模块化的程序结构: 1. **信号生成模块**:生成基带信号载波信号。 2. **调制模块**:根据 AM 公式计算调制信号。 3. **解调模块**:实现同步解调和低通滤波。 4. **显示模块**:通过波形图显示原始信号调制信号和解调信号。 #### 6. 注意事项 - 确保载波频率 \( f_c \) 远高于基带信号频率 \( f_m \)[^3]。 - 在同步解调中,本地载波信号必须与发送端的载波信号同频同相。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值