Warum ist der Ausgang immer auf 1

Gast #638462
Lesenswert?
• ▲
▼
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;
Gast #638465
Lesenswert?
• ▲
▼
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?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.