mikrocontroller.net

Forum: FPGA, VHDL & Co. warum funktioniert der Code nicht?


Autor: Tobias Plüss (hubertus)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Tag ihr,
ich will mich momentan in VHDL einarbeiten. Ein Altera Cyclone II-Board 
incl. Mikrocontroller ist bereits in Arbeit.
Nun habe ich mich an die ersten VHDL-Experimente gewagt. Ein paar 
popelige Gatter bauen klappt ganz wunderbar, aber sobald Flipflops ins 
Spiel kommen wirds schwieriger. Die simple Frage, die ich nun habe ist 
folgende: Warum funktioniert der Code im Anhang nicht? Wenn ich genau 
das selbe mit gewöhnlichen Gattern mache, klappt es. So aber meckert er 
"std_logic is not declared".
Ich hab das ganze in Altium Designer und Quartus II ausprobiert, 
nirgends hats funktioniert. Wenn ich aber anstatt eines D-FFs z.B. ein 
AND-Gatter baue, ist std_logic plötzlich nicht mehr "not declared". Kann 
mir einer weiterhelfen?

übrigens: zum testen hab ich einen Cyclone II EP2C8T144C8N ausgewählt, 
falls das irgend eine Rolle spielen sollte.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Tobias Plüss (hubertus)

>ich will mich momentan in VHDL einarbeiten. Ein Altera Cyclone II-Board
>incl. Mikrocontroller ist bereits in Arbeit.

Willst du das Board selber bauen? Nicht sehr sinnvoll, weder technisch 
noch ökonomisch. Aber aus Spass an der Freud, meinetwegen.

>popelige Gatter bauen klappt ganz wunderbar, aber sobald Flipflops ins
>Spiel kommen wirds schwieriger. Die simple Frage, die ich nun habe ist

Nicht wirklich ;-)

>folgende: Warum funktioniert der Code im Anhang nicht? Wenn ich genau
>das selbe mit gewöhnlichen Gattern mache, klappt es. So aber meckert er
>"std_logic is not declared".

Fang nicht mit den Unsinn mit stdulogic an (mit u), std_logic ist 
vollkommen ausreichend (ohne u).

Und mehrere Entitys in einer Datei kann auch mal fix Probleme machen. 
Also in eigene Dateien verfrachten, die Software kümmert sich schon um 
die Projektstruktur.

Das mit den Attributen zur Pinzuweisung sollte man lassen, mach das 
besser über die Tools.

MFG
Falk

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Falk,
warum soll ich mein FPGA-Board nicht selber bauen? Ich weiss dass es 
nicht ganz einfach ist und man mindestens 4 Layer braucht. Aber das wäre 
nicht das erste mal... Ausserdem habe ich günstig paar Cyclone II 
bekommen. Ich weiss, die sind nicht hypermodern und alles, aber für den 
Anfang sollte das reichen ;)

> Fang nicht mit den Unsinn mit stdulogic an (mit u), std_logic ist ...

Okay, alles klar. was ist der Unterschied?
Leider hat mir der Altium Designer vorgeschlagen, ich solle besser 
std_ulogic verwenden für den CK. Mit std_logic gings nicht, ebensowenig 
mit bit.

Kann ich die Entities also in verschiedene Dateien splitten, wie in C, 
und danach irgendwie includen? Oder merkt die Software selber, in 
welcher Datei welche Entity ist?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Tobias Plüss (hubertus)

>warum soll ich mein FPGA-Board nicht selber bauen?

Weil du dan u.a. an zwei Fronten kämpfst. Hardware und VHDL.

> Ich weiss dass es
>nicht ganz einfach ist und man mindestens 4 Layer braucht. Aber das wäre

Zwei reichen, wenn es kein BGA ist.

>nicht das erste mal... Ausserdem habe ich günstig paar Cyclone II
>bekommen. Ich weiss, die sind nicht hypermodern und alles, aber für den
>Anfang sollte das reichen ;)

Mehr als genug.

>> Fang nicht mit den Unsinn mit stdulogic an (mit u), std_logic ist ...
>Okay, alles klar. was ist der Unterschied?

Hab ich im Detail nicht im Kopf, praktisch ist er aber unwesentlich.

>Leider hat mir der Altium Designer vorgeschlagen, ich solle besser
>std_ulogic verwenden für den CK. Mit std_logic gings nicht, ebensowenig
>mit bit.

Scheiss tool, die immer schlauer sein wollen. OK, für CLK lassen wir das 
mal gelten, alles andere aber std_logic.

>Kann ich die Entities also in verschiedene Dateien splitten, wie in C,
>und danach irgendwie includen? Oder merkt die Software selber, in
>welcher Datei welche Entity ist?

Merkt die Software selber.

MfG
Falk

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay danke erstmal Falk.
habs gleich getestet. Und tatsächlich scheint es zu funktionieren!
herzlichen Dank auch.
Kannst du mir übrigens noch schnell verraten, wie man ein 8fach-D-FF 
machen kann sodass ich dann ein Byte darin speichern kann?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Tobias Plüss (hubertus)

>Kannst du mir übrigens noch schnell verraten, wie man ein 8fach-D-FF
>machen kann sodass ich dann ein Byte darin speichern kann?

Sollte das nicht einfach zu machen sein, wenn du schon ein 1 Bit DFF 
hast?

signal my_byte: std_logic_vector(7 downto 0);

process(clk)
begin
  if rising_edge(clk) then
    my_byte <= data;
  end if;
end process;

MFg
Falk

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aaaach so macht man das.
Danke Falk, sehr nett.
Ich bastel jetzt noch ein wenig herum, ich will nämlich noch 
Tristate-Triber implementieren (für bidirektionale Pins) und noch ein 
paar andere Sachen.
also dann,
einen schönen Abend wünsche ich allerseits,
Grüsse
  Tobias

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Unterschied zwischen std_logic und std_ulogic besteht darin das 
std_ulogic der Basistyp des gesamten std_logic_1164 ist.
Das u bedeutet dabei unresolved. std_logic ist dagegen resolved. Das 
heißt es gibt eine Funktion die den Wert eines Signals s berechnet wenn 
s von mehreren Quellen getrieben wird.
Das geschieht mittels einer zweidimensionalen Tabelle. Findest Du im 
Quelltext zum Package std_logic_1164.
z.B. 
http://tams-www.informatik.uni-hamburg.de/vhdl/pac...

Der Vorteil bei unresolved-Typen ist, das man Fehler in der Simulation 
(angeblich) leichter findet. Nachteil ist das viele Simulatoren auf 
resolved optimiert sind, aber auf unresolved nicht. Das macht sich durch 
eine höhere Simulationsgeschwindigkeit bemerkbar.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bzgl ulogic hab ich gehört, dass es für sicherheitskritische teile 
gedacht war, wo man nicht über eine fehlerhafte resolution function 
stolpern will. mein chef hat sich in seiner früheren firma ein wenig 
damit beschäftigt und wollte das für teile die hohe anforderungen in der 
mission time haben durchsetzen. das problem laut seinen aussagen ist, 
dass dann code von zulieferern kommt, die alles mit std_logic gemacht 
haben (wie fast jeder vhdl-code den ich bisher gesehen habe) und dann 
muss man für die interfaces erst wieder die datentypen konvertieren, was 
das ganze arbeitsintensiver macht und eine weitere gelegenheit für 
fehler schafft.

insofern eine akademische maßnahme die sich in der realität bei weitem 
nicht durchgesetzt hat.

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.