Uso del divisor de reloj y el multiplexor.

si bien sabemos,  podemos hacer uso de un multiplexor para seleccionar entre varias frecuencias, como ya  se habia mencionado anteriormente en otros modulos, en este caso, simplemente seguimos la explicacion del modulo: multiplexor de frecuencia que nos indica que podemos crear varios divisores de reloj y mandarlos al multiplexor, veamos el ejemplo. Mostrar código Verilog

Código Verilog


module frecuencia_selector(     

  input clk,           

  input [1:0] s,          

  output reg out

);

  reg [27:0] contador0 = 28'd0;

  reg [27:0] contador1 = 28'd0;

  reg [27:0] contador2 = 28'd0;

  reg [27:0] contador3 = 28'd0;

  

  reg frecuencia0 = 0;

  reg frecuencia1 = 0;

  reg frecuencia2 = 0;

  reg frecuencia3 = 0;



  parameter divisor0 = 28'd50_000_000; // 2 Hz

  parameter divisor1 = 28'd25_000_000; // 4Hz

  parameter divisor2 = 28'd12_500_000; //8 Hz

  parameter divisor3 = 28'd6_250_000;  // 16 Hz



  always @(posedge clk) begin

    // Generar frecuencia0

    if (contador0 >= divisor0) begin

      contador0 <= 28'd0;

      frecuencia0 <= ~frecuencia0;

    end else begin

      contador0 <= contador0 + 28'd1;

    end

    // Generar frecuencia1

    if (contador1 >= divisor1) begin

      contador1 <= 28'd0;

      frecuencia1 <= ~frecuencia1;

    end else begin

      contador1 <= contador1 + 28'd1;

    end  

    // Generar frecuencia2

    if (contador2 >= divisor2) begin

      contador2 <= 28'd0;

      frecuencia2 <= ~frecuencia2;

    end else begin

      contador2 <= contador2 + 28'd1;

    end

    // Generar frecuencia3

    if (contador3 >= divisor3) begin

      contador3 <= 28'd0;

      frecuencia3 <= ~frecuencia3;

    end else begin

      contador3 <= contador3 + 28'd1;

    end

  end

  always @(*) begin

    out = (s == 2'b00) ? frecuencia0 : 

          (s == 2'b01) ? frecuencia1 : 

          (s == 2'b10) ? frecuencia2 :

          (s == 2'b11) ? frecuencia3 :

          1'b0;

  end

endmodule
    

esto seria todo espero les haya gustado.