Forum: FPGA, VHDL & Co. VHDL mit Quartus II Web Edition und MAX II Board von Altera


von Kurz (Gast)


Lesenswert?

Hallo

Ich möchte eine PWM mit Phasenverschiebung machen (ansteuerung einer 
Vollbrücke) dazu möchte ich in VHLD das einstrechende Programm 
schreiben.

Das Problem ist, dass ich ein Anfänger auf dem Gebiet bin.

Kann mir jemand Tipps für gute Literaur geben?

von Erklärbär (Gast)


Lesenswert?

Wie wäre es mit dem PWM-Core?

Oder zwei klitzekleinen Zählern?
"d.c" = Z1 : Z2 wobei  Z1+Z2 = Periode.

von Kurz (Gast)


Lesenswert?

Ja es klingt nicht schlecht. Ich bin gerade dabei mich in VHDL 
einzuarbeiten. Weiß noch nicht genau was sich einfacher realisieren 
lässt.

Was meinst du mit PWM-Core?

von Erklärbär (Gast)


Lesenswert?

Xilinx hat doch einen PWM-Generator als Core im -> "Coregen", oder 
täusche ich micht da? (Irgendwo hatte ich den gesehen).

Was Du machen musst ist aber eigentich nur dies :

Anhand der Sollvorgabe das PWM-Verhältnis errechnen und dann zwei 
Zählerwerte setzen, die abgearbeitet werden.

von Kest (Gast)


Lesenswert?

PWM ist nichts anderes, als ein Zähler. Etwas sowas:


signal cnt : integer range 0 to 64;
signal PWM : std_logic;


if rising_edge(clk) then
  if cnt<64 then
     cnt <= cnt + 1;
  else
     cnt <= 0;
  end if;

  if cnt < 16 then
    PWM <= '1';
  else
    PWM <= '0';
  end if;
end if;


p.s.: die Zahlen wurden willkürlich gewählt

Kest

von Kurz (Gast)


Lesenswert?

danke für den Code

ich brauche allerdings eine Variable (2 Taster für das erhöhen bzw. 
herabsetzen der Variable ) um meine PWM "steuerbar" zu machen.

Hast du eine ahnung wie ich eine schleife ablaufen lassen kann, die mir 
meine variable abhängig vom Eingang verändert und dann das PWM ausführt?

das ganze in einer Schleife bis ich einen weiteren Taster fürs Anhalten 
betätige.

Wenn du Ideeen hast bin ich dir sehr dankbar dafür.

(In C wäre die Aufgabe kein Problem aber in VHDL bin ich ein blutiger 
Anfänger deswegen die Fragerei :-) )

von Kest (Gast)


Lesenswert?

Okay, etwas ausführlicher


library bla bla bla
  use ...

entity pwm_entity is
  port (
    clk    : in  std_logic;
    Taste1 : in  std_logic;
    Taste2 : in  std_logic;
    pwm    : out std_logic);

end pwm_entity;

architecture arch of pwm_entity is

  constant cMAX_PWM       : integefr := 64;
  constant cMAX_PWM_RANGE : integefr := 32;

  signal cnt       : integer range 0 to cMAX_PWM;
  signal pwm_range : integer range 0 to cMAX_PWM_RANGE;
  signal PWM       : std_logic;

begin

  process(clk)
  begin
    if clk = '1' and clk'event then

      -- PWM Counter
      if cnt < cMAX_PWM then
        cnt <= cnt + 1;
      else
        cnt <= 0;
      end if;

      -- PWM ausgeben
      if cnt < pwm_range then
        PWM <= '1';
      else
        PWM <= '0';
      end if;

      -- Tasten abfragen / Tastverhältnis verändern
      if Taste1 = '1' and pwm_range < cMAX_PWM_RANGE then
        pwm_range <= pwm_range + 1;
      elsif Taste2 = '1' and pwm_range > 0 then
        pwm_range <= pwm_range - 1;
      end if;

    end if;
  end process;


ich übernehme keine Garantie, dass alles richtig ist. Aber so, oder so 
ähnlich funktioniert es

Kest

von Kurz (Gast)


Lesenswert?

Super Danke Dir.

Ich arbeite mich gerade durch die Schleifen in einem VHDL Buch und werde 
gleich anfangen den Code von dir zu "überprüfen".

Kannst du mir ein VHDL Buch oder andere Quelle für Einsteiger empfehlen

von Kest (Gast)


Lesenswert?

Was oft genannt wird ist "Hamburg VHDL Archive". Einfach mit Google 
suchen.

Viel Spaß beim Stöbern! :-)

Kest

von high_speed (Gast)


Lesenswert?


von H0chl (Gast)


Angehängte Dateien:

Lesenswert?

Nachtrag zum PWM Core von offizieller Seite

Hatte mir damals die Bücher für die Systemrealisierung(en) mit dem 
SOPC-Builder von Altera bestellt. Dort war unter anderem ein einfaches 
PWM beispiel angeführt, was aber mittlerweile nicht mehr zum download 
auf <www.altera.com/literature/quartus2/lit-qts-sopc.jsp> angeboten 
wird.

Ich stelle es jedem interessierten Neuling hier mal rein, der sich noch 
dafür interessieren dürfte. Ich fand es als lehrreiches Beispiel um mit 
dem SOPC Builder erste eigene Komponenten 'zusammenzubasteln'. Der 
Originalcode ist aber in Verilog, sollte aber leicht auf VHDL 
modifiziert werden können..

liebe grüsse

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
Noch kein Account? Hier anmelden.