Forum: FPGA, VHDL & Co. Altera DE2-115 mit Cyclone IV - Hardware verhält sich anders als die Simulation (ModelSim)


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Steffen (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin ganz neu in der FPGA Welt. Wahrscheinlich mache ich einen 
totalen Anfängerfehler, nur hab ich meinen Fehler auch nach einer Woche 
intensiver Suche nicht verstanden. Deswegen schreibe ich grade diesen 
Beitrag (das erste mal, dass ich etwas in ein Forum schreibe - 
aufregend!).


Ich möchte als erstes Projekt einen Morse Decoder bauen, dazu verwende 
ich ein Altera DE2-115 Board. Mein aktueller Stand ist so, dass ich mit 
einem Taster morsen kann und die Buchstaben auf dem LCD erscheinen.


Als nächstes würde ich gerne einen Morse-Trainer programmieren. Das 
funktioniert leider nicht so wie geplant.

Die Idee ist, dass ich nacheinander die Buchstaben des Alphabet morse. 
Durch zwei LED´s (Grün und Rot) wird angezeigt ob meine Eingabe richtig 
oder falsch war. Das Ergebnis muss mit einem Taster quittiert werden 
bevor man die nächste Eingabe macht. Auf dem Bord passiert leider nichts 
davon.

Bei der Simulation in ModelSim ist der Verhalten genau wie geplant. 
Screenshot im Anahng.


Mein Code ist im Anhang, Regel 5: "Längeren Sourcecode nicht im Text 
einfügen, sondern als Dateianhang"

Diesen Eingang muss ich kurz erklären.
Morse_Array    : in std_logic_vector(9 downto 0);
Der ist immer "0000000000" es seiden der Nutzer hat einen Buchstaben 
gemorst, dann wird der Eingang für zwei Takte einer 15 Hz Clock zu dem 
gemorsten Buchstaben. Danach wieder zu "0000000000".



Ich wäre sehr dankbar falls sich jemand die Zeit nimmt mir zu Helfen!


Viele Grüße
Steffen

von Markus F. (mfro)


Bewertung
0 lesenswert
nicht lesenswert
Steffen schrieb:
> Wahrscheinlich mache ich einen
> totalen Anfängerfehler,

Leider nicht nur einen, sondern gleich eine ganze Reihe davon ;)

Ohne Anspruch auf Vollständigkeit:
- Du hast keinen einzigen getakteten Prozess (es reicht nicht, die 
Clock in die Sensitivity-Liste einzutragen, Du mußt sie auch verwenden) 
in deinem Design, alles asynchron. Man kann das zwar auch in einem FPGA 
machen, aber nur, wenn man's kann. Beginne erst mal mit synchronem 
Design.
- Du hast Latches ohne Ende
- Du hast kombinatorische Schleifen

Darüber hinaus dürfte die Synthese Warnungen ohne Ende ausspucken. 
Schau' dir die genau an und versuche, sie zu verstehen (und zu beheben).

von Steffen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Antwort!

Ich habe mir grade ein paar Einträge zu Latches und kombinatorischen 
Schleifen durchgelesen. Ich denke jetzt einigermaßen zu verstehen, wie 
wenig ich über das ganze Thema weiß :)

Ich versuche deine Ratschläge mal umzusetzen und sag dann bescheid ob es 
geklappt hat.


Danke nochmal!

von Mampf F. (mampf) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
versuch mal alles auf das hier umzubauen:
process(clk_50MHz)
begin
  if rising_edge(clk_50MHz) then
    if reset='0' then
      -- reset
    else
      -- hier den rest machen
    end if;
  end if;
end process;

Das kannst du quasi so gut wie immer benutzen außer du hast einen guten 
Grund, wieso du kombinatorische Prozesse bauen willst.

So hast du keinen Ärger mit Latches, Sensitivity-Listen, Resets, 
Simulationen, ...

: Bearbeitet durch User

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.

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