脉冲参数测量仪的设计与实现(3)FPGA峰值检波测幅值

题目要求测量0.1V-10V的信号,跨度太大,小信号直接采集采不准,因为小了容易受干扰,大信号不能直接采集烧ADC,所以要做的是分档位对小信号放大,对大信号衰减。

首先信号经过电压比较器,分为3路信号,分为3路信号的档位幅值自定,合适即可,然后经过不同倍数的放大然后进行采集。取巧的办法是用峰值检波模块,可以直接得到信号的幅值,但是这样做就没有价值了,在这里说一下利用FPGA写一个峰值检波模块

峰值检波模块的思路:

先初始化一个标志寄存器,将AD采集值与此值进行比较,若初值小于此值,则将更大的采集值寄存在初值寄存器中,由此可以检出峰值。

assign peak =  peak_reg;
//找最大值
always@(posedge ad_clk or negedge rst_n)
    if(rst_n == 1'b0)
      peak_reg <= 8'd0;
   // else if(ctrl == 1'b0)
      //peak_reg <= 8'd0;
  //  else if(ad_data > peak_reg && ctrl == 1'b1)
     else if(ad_data > peak_reg)
      peak_reg <= ad_data ;
    else 
      peak_reg <= peak_reg;

找最小值是一样的思想,若初值大于采集值,则将更大的采集值寄存在初值寄存器中,由此可以检出最小值。

找出峰值后将值再穿给DAC输出,会有一个线性关系,在代码里转换好输出给串口或者显示在LCD屏幕上,我做的是FPGA串口通信传给32,在32的LCD屏幕上进行显示。

猜你喜欢

转载自blog.csdn.net/qq_52838784/article/details/122734648