Page 1 of 1

A proposito del PWM trifase

PostPosted: 13 Apr 2012, 20:35
by cavetto
Scusate,
visto che avevo aperto un topic sulla possibilità di generare un segnale pwm con la fpga per realizzare un controller trifase,
vi volevo sottoporre il listato che avevo creato per generare un segnale pwm a partire di un valore d'ingresso di dutycycle tra 0 e 255.

Code: Select all
Library IEEE;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;

entity pwm_n is
   generic  (s:natural:=8);
         Port ( clk :    in STD_LOGIC;
                          reset :    in STD_LOGIC;
                  w :    in STD_LOGIC_VECTOR (s-1 downto 0);
                  pulse :    out STD_LOGIC);
end pwm_n;

architecture Behavioral of pwm_n is
   signal r_reg :       unsigned(s-1 downto 0);
   signal r_next :               unsigned(s-1 downto 0);
   signal buf_reg :               std_logic;
   signal buf_next :    std_logic;
   constant ref :       std_logic_vector(s-1 downto 0) := (others => '1');
begin
   
-- registri e gestione del buffer di output
process(clk, reset)
begin
   if(reset='0') then
      r_reg <= (others => '0');
      buf_reg <= '0';
   elsif rising_edge(clk) then
      r_reg <= r_next;
      buf_reg <= buf_next;
           end if;
end process;

   r_next <= r_reg + 1; -- next-state
   buf_next <= '1' when ((r_reg < unsigned(w)) or (w=ref)) else '0';
   pulse <= buf_reg;
   
end Behavioral;


Se potete mi potete aiutare per migliorarlo o ottimizzarlo ?
Grazie tante.