A proposito del PWM trifase
Posted: 13 Apr 2012, 20:35
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.
Se potete mi potete aiutare per migliorarlo o ottimizzarlo ?
Grazie tante.
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.