任务名称
2005年_A题:正弦信号发生器
任务要求
难度

一、任务

设计制作一个正弦信号发生器。

二、要求

1、基本要求
(1)正弦波输出频率范围:1kHz~10MHz;
 (2)具有频率设置功能,频率步进:100Hz;
 (3)输出信号频率稳定度:优于 10-4;
 (4)输出电压幅度:在 负载电阻上的电压峰 50Ω -峰值Vopp≥1V;
(5)失真度:用示波器观察时无明显失真。

2、发挥部分
在完成基本要求任务的基础上,增加如下功能:
(1)增加输出电压幅度:在频率范围内50Ω 负载电阻上正弦信号输出电压的峰-峰值Vopp=6V±1V;
(2)产生模拟幅度调制(AM)信号:在 1MHz~10MHz范围内调制度ma可在 10%~100%之间程控调节,步进量 10%,正弦调制信号频率为 1kHz,调制信号自行产生;
(3)产生模拟频率调制(FM)信号:在 100kHz~10MHz 频率范围内产生 10kHz 最大频偏,且最大频偏可分为 5kHz/10kHz 二级程控调节,正弦调制信号频率为1kHz,调制信号自行产生;
(4)产生二进制 PSK、ASK 信号:在 100kHz 固定频率载波进行二进制键控,二进制基带序列码速率固定为 10kbps,二进制基带序列信号自行产生;。

 

评审标准

参考答案

GPT-4o给出的设计方案:


一、设计思路

  1. 信号发生部分

    • 使用AD9850或AD9833等DDS(直接数字合成)芯片产生正弦波、AM信号、FM信号、PSK/ASK信号。
  2. 放大器部分

    • 放大输出信号,确保在50Ω负载上电压峰-峰值Vopp≥1V,最高可达6V±1V。
  3. 控制部分

    • 使用MCU(如STM32)通过SPI接口控制DDS芯片,并生成调制信号。
    • 提供频率、幅度和调制的界面控制和设置。

二、简单论证

使用DDS芯片可以实现频率精确控制,满足频率范围和频率分辨率的要求。通过MCU控制可以灵活调整输出信号的频率、幅度及调制方式,提高了系统的可操作性和功能性。

重要的指标和理论分析

  1. 频率范围和分辨率

    • 输出频率范围:1kHz~10MHz。
    • 频率步进:100Hz。
    • 精度:优于10^-4。
  2. 输出电压幅度

    • 在50Ω负载上,电压峰-峰值Vopp≥1V,最大输出电压Vopp可达6V±1V。
  3. 失真和稳定性

    • 保证输出信号无明显失真,信号稳定性高,长期运行不漂移。

三、电路原理图设计要点

  1. DDS信号发生器电路

    • 使用AD9850/AD9833芯片,提供频率控制信号通过SPI接口传输到DDS芯片。
    • DDS芯片的输出连接到一个可控放大电路,再连接到负载。
  2. 放大器电路

    • 使用运算放大器(如OPA2350)放大信号,提供可调的增益控制,保证输出信号满足负载要求。
  3. 控制电路

    • 使用STM32 MCU,通过SPI接口与DDS芯片通信,实现频率、幅度及调制信号的控制。
    • LCD显示屏用于显示当前设置,按键用于用户输入控制。

四、核心器件设计要点

  1. AD9850/AD9833 DDS芯片

    • 支持多种波形输出;
    • 提供高精度频率控制;
    • 通过SPI接口配置控制寄存器。
  2. OPA2350 运算放大器

    • 提供高精度、低噪声放大;
    • 用于放大DDS芯片输出的信号。
  3. STM32 MCU

    • 控制频率、信号幅度及调制方式;
    • 提供用户接口,通过按键输入和LCD显示。

五、MCU重要功能的C代码和介绍

以下是一个实现基本控制DDS芯片和显示功能的示例代码:

#include "stm32f1xx_hal.h"
#include "ad9850.h"
#include "lcd.h"

// AD9850引脚配置
#define AD9850_DATA_PIN GPIO_PIN_0
#define AD9850_CLK_PIN  GPIO_PIN_1
// LCD引脚和库根据实际情况配置

void AD9850_Init() {
    HAL_GPIO_WritePin(GPIOA, AD9850_DATA_PIN, GPIO_PIN_RESET);
    HAL_GPIO_WritePin(GPIOA, AD9850_CLK_PIN, GPIO_PIN_RESET);
    AD9850_Reset();
}

void setFrequency(uint32_t frequency) {
    AD9850_SetFrequency(frequency);
}

void setAmplitude(uint16_t amplitude) {
    // 控制输出信号的幅度
}

void setup() {
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_LCD_Init();
    AD9850_Init();
    LCD_Clear();
    LCD_DisplayString("Init Complete");
}

int main(void) {
    setup();
    uint32_t frequency = 1000;  // 初始频率1kHz
    while (1) {
        if (button_pressed()) {
            frequency += 100;  // 每次按键增加100Hz
            if (frequency > 10000000) frequency = 1000;  // 不超过10MHz
            setFrequency(frequency);
            char buf[16];
            sprintf(buf, "Freq: %u Hz", frequency);
            LCD_Clear();
            LCD_DisplayString(buf);
        }
        HAL_Delay(100);  // 增加按钮防抖处理
    }
}

这个题目考察的知识点:

  1. 频率合成

    • 使用DDS(直接数字合成)技术,涵盖频率范围1kHz~10MHz,并有100Hz步进。
    • 确保输出信号的频率稳定度优于10^-4。
  2. 信号调制

    • 产生AM、FM、PSK、ASK等调制信号,涵盖1MHz~10MHz频带,满足不同调制需求。
  3. 信号放大

    • 在50Ω负载条件下,输出信号峰-峰值Vopp≥1V,最大可达6V±1V。
    • 确保输出信号的失真度控制在可接受范围内。
  4. 控制与显示

    • 使用MCU实现频率、幅度及调制方式的控制,通过LCD显示屏显示当前操作状态。
    • 实现用户与系统的交互,确保设置参数正确无误。

通过这些知识点的掌握,可以较好地实现正弦信号发生器的基本功能及扩展功能。

硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号