Cambiare duty cycle con contatore

di il
3 risposte

Cambiare duty cycle con contatore

Salve, devo generare un' onda quadra a 10kHz in vhdl tramite un divisore di frequenza a partire da un clock a 50MHz. Questo è quanto ho fatto:

    LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_unsigned.all;

ENTITY ondaq IS
    PORT(RST_N : IN std_logic;
         CLK    : IN  std_logic;
         clk_new    : OUT std_logic
         );
END ondaq;

ARCHITECTURE bhv OF ondaq IS
SIGNAL i_q    : std_logic_vector(12 downto 0);

BEGIN

clk_new <= i_q(11);

cnt: PROCESS(CLK,RST_N)

     BEGIN
      IF RST_N = '0' THEN
       i_q <= (OTHERS => '0');
     
     ELSIF rising_edge(clk) THEN
       if (i_q = 5000) then
       i_q <= (OTHERS => '0');
       else
       i_q <= i_q + 1;
       end if;
     END IF;    
    END PROCESS;    
END bhv;

sapreste dirmi come modificare il duty cycle di questa nuova forma d'onda al 20%, 40% e 60% senza variarne la frequenza?

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte