www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Anfängerfrage zu ISE


Autor: Otto Richter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo da draußen,

fange gerade an, XILINXe mit ISE9.1 zu programmieren. Ich zeichne ein 
schematic aber das Fenster "process", wo ich üblicherweise die weiteren 
Schritte durchführe sagt mir "No flow available". Ich muss ja erst 
einmal einen Code aus dem schematic erzeugen, aber ich weiß nicht wie. 
Kann mir jemand helfen ?

Danke im voraus

Otto

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tu Dir einen Gefallen: Lerne VHDL oder Verilog und benutze nicht den 
Schaltplan/schematic-Editor. Das Ding ist so kaputt, da ist der Frust 
vorprogrammiert.

Rick

Autor: Otto Richter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Rick,

ich habe mein Teil jetzt am Laufen, warum weiß ich eigentlich auch nicht 
so genau.

Mit der These "Finger weg von schematic" hast Du sicher recht, weil 
bereits ein einfaches Design sehr schnell unübersichtlich wird, aber 
VHDL/VERILOG ist ein Thema für sich, aber da muss ich wohl durch mit 
meinen 58 Jahren Lebenserfahrung.

Vielen Dank für Deinen Beitrag,

Otto

Autor: hackklotz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das Ding ist so kaputt, da ist der Frust
>vorprogrammiert.

Eigentlich nicht. Einfache Sache lassen sich damit problemlos machen und 
es geht auf jeden Fall schneller, als mal eben VHDL zu lernen.

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jein. Ich wollte schematic nehmen um in einem Projekt etwas den 
Überblick zu behalten. Aber:

(1) Es ist sehr umständlich (fast unmöglich) wenn man generics verwenden 
will, um z.B. variable Busbreiten zu definieren.

(2) Wenn Signale hinzukommen/wegfallen, muss jedes mal ein neues Symbol 
erstellt und verkabelt werden.

(3) Symbole zu verschieben scheitert meistens an einem zu vollen Blatt 
(kann Signale nicht routen).

(4) Wenn man eng beieinander liegende Signale/Symbole selektieren will, 
geht das nicht.

(5) Ausführlich kommentieren geht auch nicht.

(6) Und bidirektionale Signale in Busse ein- und auszukoppeln habe ich 
auch nicht hinbekommen.

Sicher, für einfache Sachen mag es reichen, aber wer weiß schon auf 
Anhieb was mit einem FD4RE anzufangen.

Da mag ich lieber die folgende Beschreibung:
architecture bhv of data_register is
begin
process 
begin
  wait until rising_edge(clk); -- steht immer da, da alles synchron

  if (ce = '1') then
     Q <= D;
  end if;

  if (reset = '1') then -- reset hat Prioritaet
     Q <= (others => '0');
  end if;

end process;
end bhv; 

Rick

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das spuckt der Editor aus? Das ist ja abartig!

pumpkin

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@pumpkin:

Du hast da was missverstanden: Das gebe ich in den Editor ein.

Rick

Autor: Johnsn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Beschreibung ist aber auch nicht das, was man als sauber bezeichnet:

process (clk, reset)
begin

  if (reset = '0') then       -- HIER hat reset priorität (asynchron)
    Q <= (others => '0');
  elsif (clk'event and clk = '1') then
    if (ce = '1') then
      Q <= D;
    end if;
  end if;

end process;


Oder ist es mit Absicht nicht schön programmiert, weil es nur eine 
Verhaltensbeschreibung sein soll (bhv)?

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das "wait until rising_edge(clk)" entspricht "if rising(edge_clk) then". 
Die Schreibweise hat aber den Nachteil dass man keinen asynchronen Reset 
bauen kann, und wirklich sauber finde ich das auch nicht die 
Reset-Priorität dadurch zu realisieren, dass man den Reset einfach ans 
Prozessende hin hängt.

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok. Prinzipiell alles richtig, was ihr schreibt.
Aber 1) entfällt ein Schachtel-if mit dem wait until rising_edge(clk) 
und 2) lest selbst, was dir Profis zum asynchronen Reset schreiben:
http://www.xilinx.com/xlnx/xweb/xil_tx_display.jsp...

Rick

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim Thema (a)synchroner Reset gibts aber auch unter Experten geteilte 
Meinungen. Sehr interessant sind da zB. die Paper von Cliff Cummings von 
Sunburst Design:
http://www.sunburst-design.com/papers/CummingsSNUG...
http://www.sunburst-design.com/papers/CummingsSNUG...

Qunintessenz ist dabei, dass der Zeitpunkt, an dem der Reset wieder 
gelöst wird der kritische Punkt ist...

Auf http://www.sunburst-design.com/papers/ gibts auch noch weitere 
interessante Paper, zB auch zu asynchronen Fifos und Cross-Clock-Domain 
Designs. Sehr empfehlenswert.

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@T.M.

Danke für die Hinweise/ Dokumentationen. Letztendlich, wird - wie auch 
hier[1] - aus einem asynchronen Reset ein synchroner Reset gemacht.

Was für den Anfänger nun übersichtlicher ist, ich weiß es auch nicht. 
Ich finde nur die vielen if/else/endif (reset, rising_edge) schwerer zu 
lesen.

Rick


[1] 
http://www.xilinx.com/xlnx/xweb/xil_tx_display.jsp...

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rick
Das Lösen des Resets wird synchron gemacht, das Aktivieren bleibt 
asynchron. Die Vorschläge von Xilinx sind halt auf FPGAs zugeschnitten, 
da ist (a)synchroner Reset oft auch eine Frage des Ressourcenverbrauchs.

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.