www.mikrocontroller.net

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


Autor: Kurz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Erklärbär (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es mit dem PWM-Core?

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

Autor: Kurz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Erklärbär (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kest (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kurz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-) )

Autor: Kest (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kurz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was oft genannt wird ist "Hamburg VHDL Archive". Einfach mit Google 
suchen.

Viel Spaß beim Stöbern! :-)

Kest

Autor: high_speed (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: H0chl (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Beitrag #2767312 wurde von einem Moderator gelöscht.
Beitrag #2767398 wurde von einem Moderator gelöscht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.