任务名称
2016年_E 题:脉冲信号参数测量仪
任务要求
难度

一、任务

设计并制作一个数字显示的周期性矩形脉冲信号参数测量仪,其输入阻抗为 50Ω。同时设计并制作一个标准矩形脉冲信号发生器,作为测试仪的附加功能。

二·、要求

  1. 测量脉冲信号频率𝑓O,频率范围为 10Hz~2MHz,测量误差的绝对值不大于 0.1%。(15 分)
  2. 测量脉冲信号占空比 D,测量范围为 10%~90%,测量误差的绝对值不大于 2%。(15 分)
  3. 测量脉冲信号幅度𝑉𝑚,幅度范围为 0.1~10V,测量误差的绝对值不大于 2%。(15 分)
  4. 测量脉冲信号上升时间𝑡𝑟,测量范围为 50.0~999ns,测量误差的绝对值不大于 5%。(15 分)
  5. 提供一个标准矩形脉冲信号发生器,要求: (30 分)
    • a) 频率𝑓O为 1MHz,误差的绝对值不大于 1%;
    • b) 脉宽𝑡𝑤为 100ns,误差的绝对值不大于 1%;
    • c) 幅度𝑉𝑚为 5±0.1V(负载电阻为 50);
    • d) 上升时间𝑡𝑟不大于 30ns,过冲σ不大于 5%。
  6. 其他。 (10 分)
  7. 设计报告。 (20 分)

三、说明

  1. 脉冲信号参数的定义如图 1 所示。其中,上升时间𝑡𝑟是指输出电压从0.1𝑉𝑚上升到0.9𝑉𝑚所需要的时间;过冲σ是指脉冲峰值电压超过脉冲电压幅度 𝑉𝑚的程度,其定义为:σ = Δ 𝑉 𝑉 m m × 100%。
  2. 被测脉冲信号可采用基于 DDS 的任意波形信号发生器产生的信号。
参考答案

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


一、设计方案

设计一个测量脉冲信号频率、占空比、幅度和上升时间的数字显示测量仪,利用微控制器(MCU)采集脉冲信号数据,并进行处理和显示。此外,设计一个标准矩形脉冲信号发生器,用于测试仪的校准。

二、方案论证

  1. 信号采集模块

    • 采用高精度ADC和比较器采集脉冲信号的频率、占空比、幅度和上升时间。
    • 输入阻抗50Ω,确保信号完整传输。
  2. 数据处理模块

    • 利用MCU(如STM32系列)对采集到的信号进行处理,并计算频率、占空比、幅度、上升时间等参数。
    • MCU将处理结果显示在数码管或LCD屏上。
  3. 信号发生模块

    • 设计一个标准矩形脉冲信号发生器,使用CPLD或FPGA生成,并通过调节电位器设置频率、占空比和幅度参数。

三、理论分析与计算

  1. 频率测量

    • 通过捕获脉冲信号的上升沿,计算时间间隔,从而计算频率。
    • 误差分析:频率误差的主要来源是计时器的精度,使用高精度晶振(如10ppm)以确保误差在0.1%以内。
  2. 占空比测量

    • 通过捕获脉冲信号高电平持续时间和周期时间,计算占空比。
    • 误差分析:占空比的误差来源于计时器的分辨率,使用高分辨率计时器以确保误差小于2%。
  3. 幅度测量

    • 使用高精度ADC捕获脉冲信号的峰值电压,校准后可估算出幅度。
    • 误差分析:ADC的分辨率和非线性是误差来源,高精度ADC有助于误差控制在2%以内。
  4. 上升时间测量

    • 捕获脉冲信号从10%到90%幅度的上升时间。
    • 误差分析:通过高速采样和数字滤波技术,减少噪声影响,确保测量误差在5%以内。

四、重要电路原理图设计要点

  1. 信号调理

    • 输入阻抗匹配电路设计(50Ω)以保护系统,并确保信号不失真。
    • 放大电路采用高输入阻抗运放(如OPA350)。
  2. ADC模块

    • 高精度ADC(16位或更高,如ADS1115)用于采集信号。
    • 参考电压采用高精度基准源(如REF5050)。
  3. 频率计数

    • 使用外部精密频率计数芯片(如ICM7555)或软件实现。

五、核心器件设计要点

  1. STM32 MCU

    • 配置定时器捕捉功能,用于测量频率及占空比。
    • 使用ADC模块测量信号幅度。
    • LCD接口,用于显示测量结果。
  2. ADC

    • 选择高分辨率ADC,如ADS1115,配置其地址和输入通道。
    • 配置采样率和参考电压。
  3. 高精度晶振

    • 作为系统时钟来源,确保计时精度。

六、重要功能的C代码

// STM32 MCU Pulse Measurement Code

#include "stm32f4xx_hal.h"

TIM_HandleTypeDef htim;

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_TIM_IC_Init(void);
static void MX_ADC_Init(void);

int main(void) {
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_TIM_IC_Init();
    MX_ADC_Init();

    HAL_TIM_IC_Start_IT(&htim, TIM_CHANNEL_1);

    while (1) {
        // 主循环:读取和处理采集到的数据
    }
}

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) {
    if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) {
        // Capture frequency and duty cycle with timer
        uint32_t IC_Val1 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1);
        uint32_t IC_Val2 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1);
        uint32_t Difference = IC_Val2 - IC_Val1;
        float frequency = HAL_RCC_GetPCLK1Freq() / Difference;  

        // Process and display frequency and duty cycle
    }
}

static void MX_TIM_IC_Init(void) {
    htim.Instance = TIM2;
    htim.Init.Prescaler = 84-1;
    htim.Init.CounterMode = TIM_COUNTERMODE_UP;
    htim.Init.Period = 0xFFFF;
    HAL_TIM_IC_Init(&htim);

    TIM_IC_InitTypeDef sConfigIC = {0};
    sConfigIC.ICPolarity = TIM_ICPOLARITY_RISING;
    sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
    sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
    sConfigIC.ICFilter = 0;
    HAL_TIM_IC_ConfigChannel(&htim, &sConfigIC, TIM_CHANNEL_1);
}

static void MX_ADC_Init(void) {
    ADC_ChannelConfTypeDef sConfig = {0};
    hadc1.Instance = ADC1;
    hadc1.Init.Resolution = ADC_RESOLUTION_12B;
    HAL_ADC_Init(&hadc1);

    sConfig.Channel = ADC_CHANNEL_0;
    sConfig.Rank = 1;
    sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
    HAL_ADC_ConfigChannel(&hadc1, &sConfig);
}

void SystemClock_Config(void) {
    // 系统时钟配置代码
}

static void MX_GPIO_Init(void) {
    // GPIO初始化代码
}

七、重要功能的Verilog代码

module pwm_generator (
    input clk,        // 输入时钟
    input [7:0] duty, // 占空比设定
    output reg pwm    // PWM信号输出
);
    reg [7:0] counter = 0;

    always @(posedge clk) begin
        counter <= counter + 1;
        if(counter < duty)
            pwm <= 1;
        else
            pwm <= 0;
    end
endmodule

 


这个题目考察的主要知识点:

  1. 脉冲信号测量:涉及脉冲信号的频率、占空比、幅度、上升时间等参数的测量方法与误差分析。
  2. 数据处理与显示:包括信号采集、数据处理、数值显示的电路设计与实现。
  3. 标准信号发生器的设计:设计并实现一个能够产生标准矩形脉冲信号的发生器,用于校准和测试。
  4. 电路设计与实现:包括高精度ADC的选型与应用、电源管理及信号调理等。
  5. MCU或FPGA编程:采用MCU或FPGA实现数据采集与处理算法,编写相应的控制代码。
  6. 系统集成与调试:包括各模块的集成、误差校正及系统性能测试与调试。
 
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号