library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity pwm1 is
Port (
Oszilator : in bit; Plus_Taster : in std_ulogic;
Minus_Taster : in std_ulogic;
Channel_1 : out std_ulogic;
Channel_2 : out std_ulogic;
Red_Frequenz_LED : out std_ulogic);
end pwm1;
architecture behavior of pwm1 is
constant PWM_Frequenz : integer := 660;
constant PWM_Phase_MAX : integer := 330;
signal count_Red_Frequenz : unsigned(0 to 24) :=
"0000000000000000000000000";
signal count : integer range 0 to PWM_Frequenz;
signal PWM_Phase : integer range 0 to PWM_Phase_MAX := 0;
signal Signal_Channel_1 : std_ulogic;
signal Signal_Channel_2 : std_ulogic;
signal Red_Frequenz : std_ulogic;
begin
process (Oszilator)
begin
if Oszilator='1' and Oszilator'event
then
count_Red_Frequenz <= count_Red_Frequenz + 1;
end if;
Red_Frequenz_LED <= count_Red_Frequenz(0);
end process;
process (PWM_Phase)
begin
if count_Red_Frequenz(0) = '1' and Plus_Taster = '1'
then
if PWM_Phase < PWM_Phase_MAX
then
PWM_Phase <= PWM_Phase + 1;
end if;
end if;
if count_Red_Frequenz(0) = '1' and Minus_Taster = '1'
then
if PWM_Phase > 0
then
PWM_Phase <= PWM_Phase - 1;
end if;
end if;
end process;
process (count)
begin
if count < PWM_Frequenz
then
count <= count + 1;
else
count <= 1;
end if;
end process;
process (Signal_Channel_1)
begin
if count < (PWM_Frequenz/2)
then
Signal_Channel_1 <= '1';
else
Signal_Channel_1 <= '0';
end if;
end process;
channel_1 <= signal_channel_1;
end behavior;
Das Ganze soll ein Phase-Shift-PWM werden. Und ist noch nicht fertig. Ich wollte die Funktion von Channel_1 am Oszi testen und habe bemerkt dass der immer auf 1 ist. Weiß jemand was ich falsch gemacht habe?
Ich habe den Fehler nun dcoh noch gefunden: Ich habe vergessen die schleifen an den Oszilator (Clock) zu koppeln, deswegen konnte gar nichts gezählt werden. Trotzdem Danke
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.