www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Empfänger - Sender


Autor: Jürgen Schmidt (rifay)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.

Nachdem ich meinen Baudgen programmiert habe, möchte ich mich dem Sender 
und Empfänger stellen. Ich hab mir diverse Beispiele angeschaut (Lothar 
Miller), die ich leider nicht ganz verstehe. Hat mir jmd Tipps wie ich 
mich am besten einarbeiten kann oder Tutorials/Dokumentationen/Berichte 
zum lesen?

Wie kann ich die drei Programmteile am besten verknüpfen? Auf was muss 
ich achten?


library ieee;
use ieee.std_logic_1164.ALL;

entity bau_gen is
  port (
          reset     : in    STD_LOGIC;
          clock     : in    STD_LOGIC;
          clk_9600  : out   STD_LOGIC
        );
  end bau_gen;

architecture ar_bau_gen of bau_gen is
  signal clk_9600_k:  STD_LOGIC;
  signal cnt:         integer;
Begin
  process(clock)
  begin
    if rising_edge(clock) then
      cnt <= cnt +1;
      clk_9600_k <= '0';
      if cnt = 5207 then
        cnt <= 0;
        clk_9600_k <= '1';
      end if;
    end if;
end process;
end ar_bau_gen;

Danke Gruß

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ali Alile schrieb:
> Ich hab mir diverse Beispiele angeschaut (Lothar Miller), die ich
> leider nicht ganz verstehe.
Übung macht den Meister...
Sieh dir am Anfang mal die "üblichen Verdächtigen" an, das "Hello World" 
der Hardware: ein Lauflicht.
http://www.lothar-miller.de/s9y/archives/61-Lauflicht.html
Dort siehst du auch, wie ein Taktteiler als Komponente in das Lauflicht 
eingebunden wird.

> Wie kann ich die drei Programmteile am besten verknüpfen?
> Auf was muss ich achten?
Dass du den dort oben erzeugten Takt clk9600 nicht als Takt, sonden als 
Enable verwendest. Denn da halten wir es am besten wie der Highlander: 
Es kann nur einen (Takt) geben.

> Hat mir jmd Tipps wie ich mich am besten einarbeiten kann oder
> Tutorials/Dokumentationen/Berichte zum lesen?
Kauf dir ein Buch (oder leih es dir aus):
VHDL-Synthese von Reichhardt&Schwarz...

Zu deinem Code:
      cnt <= cnt +1;
      clk_9600_k <= '0';
      if cnt = 5207 then
Besser wäre: erst abfragen und dann zählen
      clk_9600_k <= '0';
      if cnt < 5207 then
         cnt <= cnt +1;
      else

Die 5207 kannst du auch ausrechnen lassen: 50000000/9600

Dein clk9600 wird noch gar nicht angesteuert. Das hättest du aber in 
einer Simulation gesehen. Das Signal clk_9600_k ist unnötig, und der cnt 
sollte eingeschränkt werden, denn nur so kann die Simulation Denkfehler 
aufdecken:
entity bau_gen is
  port (
          reset     : in    STD_LOGIC;
          clock     : in    STD_LOGIC;
          clk_9600  : out   STD_LOGIC
        );
  end bau_gen;

architecture ar_bau_gen of bau_gen is
  signal cnt:         integer range 0 to 50000000/9600-1;
Begin
  process(clock)
  begin
    if rising_edge(clock) then
      if cnt < 50000000/9600-1 then
        cnt <= cnt +1;
        clk_9600 <= '0';
      else
        cnt <= 0;
        clk_9600 <= '1';
      end if;
    end if;
end process;

end ar_bau_gen;

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.