m Implementación verilog del sistema de control de ganancia adaptativo AGC basado en FPGA, incluido el banco de pruebas

Tabla de contenido

1. Efecto de simulación de algoritmo

2. Los algoritmos implican una visión general del conocimiento teórico

3. Programa central de Verilog

4. Archivo de código de algoritmo completo


1. Efecto de simulación de algoritmo

Los resultados de la simulación Vivado2019.2 son los siguientes:

 Después de acercar, puede ver:

 

2. Los algoritmos implican una visión general del conocimiento teórico

       Digital AGC (Automatic Gain Control) es una tecnología de control automático de ganancia ampliamente utilizada en sistemas de comunicación. Puede ajustar automáticamente la ganancia de la señal recibida para mantener la intensidad de la señal dentro de un rango apropiado, asegurando así la calidad de la señal recibida.

        El AGC digital se usa ampliamente en sistemas de comunicación, como comunicación por radio, comunicación por satélite, sistema de radar, etc. En estas aplicaciones, el AGC digital puede garantizar que la intensidad de la señal recibida esté siempre dentro del rango adecuado, asegurando así la calidad y confiabilidad de la comunicación. Tomando como ejemplo la comunicación por radio, el AGC digital puede permitir que el receptor cambie automáticamente entre señales fuertes y débiles, evitando así la distorsión causada por señales fuertes y el ruido causado por señales débiles. El AGC digital también puede reducir el consumo de energía de la batería y prolongar su vida útil. En la comunicación satelital, el AGC digital puede hacer que el receptor cambie automáticamente entre diferentes direcciones de antena y se ajuste automáticamente de acuerdo con la intensidad de la señal, para garantizar la calidad y confiabilidad de la señal recibida. En el sistema de radar, el AGC digital puede garantizar que la intensidad de la señal de eco recibida por el radar esté siempre dentro de un rango adecuado, lo que garantiza la distancia de detección y la precisión de detección del radar. En una palabra, el AGC digital es una tecnología muy importante, que tiene amplias perspectivas de aplicación y desarrollo en sistemas de comunicación, sistemas de radar y otros campos.

       En este artículo, presentaremos en detalle el principio y los pasos de realización del proceso de trabajo del AGC digital basado en FPGA. El principio básico del AGC digital es que después de que la señal recibida pasa a través del amplificador frontal, la señal se procesa mediante muestreo, conversión ADC, filtrado digital, etc., para obtener el valor de intensidad de la señal y compararlo con el umbral establecido. valor, y luego compare la señal frontal de acuerdo con el resultado de la comparación.La ganancia del amplificador se ajusta automáticamente para mantener la intensidad de la señal dentro de un rango apropiado. En concreto, el proceso de trabajo del AGC digital es el siguiente:

Muestreo: después de que la señal recibida pasa a través del amplificador frontal, se muestrea para obtener una serie de valores muestreados.
Conversión ADC: convierta el valor de muestreo en una señal digital a través de ADC.
Filtrado digital: el filtrado digital se realiza en la señal digital convertida por el ADC para eliminar el ruido de alta frecuencia y la deriva de baja frecuencia.
Operación cuadrada: realice una operación cuadrada en la señal filtrada digitalmente para obtener el valor de potencia de la señal.
Promedio móvil: realice un promedio móvil en la señal al cuadrado para obtener el valor de potencia promedio de la señal.
Comparación: compare el valor de potencia promedio con el umbral establecido para obtener el resultado de la comparación.
Ajuste automático: según el resultado de la comparación, la ganancia del amplificador frontal se ajusta automáticamente para mantener la intensidad de la señal dentro de un rango adecuado.
Lo anterior es el principio básico del AGC digital. A continuación describimos cómo implementar un AGC digital en una FPGA.

3. Programa central de Verilog

..................................................................
//signal 延迟
reg signed[11:0]dly_x[2149:1]; 
always @(posedge i_clk or posedge i_rst)
begin
     if(i_rst)
	  begin
	       for(i=1;i<=2149;i=i+1)
	       dly_x[i]<=12'd0;
	  end
else  begin
           dly_x[1]<=i_x;
	       for(i=2;i<=2149;i=i+1)
	       dly_x[i]<=dly_x[i-1];
      end
end 


//flag 延迟
reg signed[2148:0]dly_flag; 
always @(posedge i_clk or posedge i_rst)
begin
     if(i_rst)
	  begin
	      dly_flag<=2149'd0;
	  end
else  begin
          dly_flag<={dly_flag[2147:0],i_flag};
      end
end 
wire signed[11:0]w_y   = dly_x[2149];
assign o_flag= dly_flag[2048];


//自动增益
wire [19 : 0] gains;
blk_agc blk_agc_u (
  .clka(i_clk),            // input wire clka
  .rsta(i_rst),            // input wire rsta
  .addra(o_egy),          // input wire [8 : 0] addra
  .douta(gains),          // output wire [19 : 0] douta
  .rsta_busy()  // output wire rsta_busy
);


reg signed[19:0]wgains;
always @(posedge i_clk or posedge i_rst)
begin
     if(i_rst)
	  begin
      wgains <= 20'b0;
	  end
else begin
          if(o_flag == 1'b1)
          wgains <= gains;
          else
          wgains <= wgains;
     end
end
endmodule
00_013m

4. Archivo de código de algoritmo completo

V

Supongo que te gusta

Origin blog.csdn.net/hlayumi1234567/article/details/130651500
Recomendado
Clasificación