Ich experimentiere gerade ein wenig mit dem Schaltplan Editor von
Lattice herum. Man brauche eine Weile, bis man weiß, wo man hin klicken
muss.
Was ich nicht herausfinden kann: Es muss doch möglich sein, den Eingang
eines Symbols mit einem konstanten Wert zu belegen. Weiß jemand, wie
das geht?
Ich habe mal einen Schaltplan aus einem VHDL-File mit "goto RTL
definition" erzeugt. Dort sieht man am STBY-Eingang die Konstante 1'b0.
Als erstes habe ich mal versucht, dem Eingangsnetzt in einem eigenen
Schaltplan den gleichen Namen zu geben, in der Hoffnung, dass das dann
die gewünschte Konstante ergibt. Resultat: funktioniert so nicht.
Der Diamond Schematic Editor scheint mir extrem unausgereift zu sein.
Wenn ich einen Ausgangspin "male" taucht der manchmal in der Pinliste
auf und manchmal nicht.
Wenn man aus einem eigenen VHDL-File ein Symbol erzeugen will muss man
das erst zum Toplevel machen
File List => imp1 => set Top Level Unit => dann auf das Text Feld
klicken
Dann in "Process" generieren und
dann
Hierarchie => rechte Maustaste "generate schematic symbol"
und dann kann man es im Schaltplan als Symbol verwenden.
Ich sage es mal so: man kann bestimmte Dinge graphisch besser
darstellen.
Wenn das nicht so wäre, gäbe es keine Schaltpläne und man müsste den
Elektrotechnikern empfehlen, endlich auf die Textform umzusteigen. Und
ich habe einen bestimmten Grund, warum ich auch die graphische
Darstellung brauche.
Aber ich muss sagen:
Dieser graphische Editor ist bis jetzt das Schlechteste, was mir in der
Hinsicht untergekommen ist. Er ist extrem umständlich zu bedienen und
hat scheinbar einen Haufen Fehler, die zu unerklärlichem Verhalten
führen.
Für mich ist es da kein Wunder, dass die Leute das Ding in die Ecke
werfen und diese Art der Programmierung für ungeeignet halten.
Weiß jemand, ob die graphischen Editoren bei Altera oder Xilinx besser
sind?
chris schrieb:> Weiß jemand, ob die graphischen Editoren bei Altera oder Xilinx besser> sind?
Die Frage ist, ob sie so gut sind, dass man sie verwenden kann. Einen
Teil der Antwort findest du im verlinkten Thread.
der von Xilinx ist schon ziemlich gut und der von Altera sicher auch.
Das liegt wohl daran, dass man dort per GUI gerne die Busse und SoC-IPs
zusammenknotet. Das ist in VHDL ziemlich lästig, wenn die records für
die Komponenten nicht vorliegen.
Trotzdem würde ich in allen anderen Fällen VHDL bevorzugen.
Ich würde in allen Fällen VHDL bevorzugen.
Lothar M. schrieb:> Die Frage ist, ob sie so gut sind, dass man sie verwenden kann. Einen> Teil der Antwort findest du im verlinkten Thread.
Was dort fehlt, ist der Hinweis auf die nicht vorhandene Fähigkeit,
sinnvoll mit einer Versionsverwaltung (VCS) zusammenzuarbeiten.
Selbst wenn mal alle anderen Macken ausgemerzt sein sollten (sehr
unwahrscheinlich) - das ist nicht hinzubekommen. Und für mich eine
Grundvoraussetzung für irgendeine Art von vernünftiger
Softwareentwicklung.
Moin,
einigermassen brauchbar und wiederverwertbar (!) ist der kactus2-Ansatz.
Aber um von da wieder zur VHDL-Netzliste für sein Lieblingstool zu
gelangen, ist etwas Aufwand nötig.
Ich bin mal noch den Weg gegangen: VHDL->XML->Kicad schematic symbol.
Aber da muss man sich mit XSLT gehörig beschäftigen, das ist eher 'fun
stuff' als früh amortisierend.
Der XSLT-Prozessor macht aus dem 'XHDL' eine Grafik und einen DRC, siehe
auch hier: https://section5.ch/dclib/xhdl/. Die einzelnen Module muss
man dann manuell im Schaltplaneditor verkabeln.
Auch hier ist wieder etwas Aufwand für Netzliste->HDL nötig.
Von allen rein grafischen Ansätzen kann man aber eigentlich in Bezug auf
Nachhaltigkeit&Teamwork nur abraten, sofern nicht irgend ein
'diff'-bares Format zugrunde liegt, was sich vernünftig per
Revisionskontrolle verwalten lässt.
Markus F. schrieb:> Was dort fehlt, ist der Hinweis auf die nicht vorhandene Fähigkeit,> sinnvoll mit einer Versionsverwaltung (VCS) zusammenzuarbeiten.
Ich hoffe, das ist jedem klar.
> sofern nicht irgend ein 'diff'-bares Format zugrunde liegt
Und natürlich fehlt auch der Hinweis, dass (auch wenn das
"Schaltplan-Format" eine les- und versionierbare Textdatei wäre) sich
der interne Aufbau eines Schaltplans mit jeder Version des
Zeichenprogramms unangekündigt ändern oder auch komplett umgestellt
werden kann.
Und spätestens, wenn man ein Design auf zwei Plattformen laufen hat, ist
mit "Vergleichen von Schaltplänen" absolut Schluss.
Klakx
>Das liegt wohl daran, dass man dort per GUI gerne die Busse und SoC-IPs>zusammenknotet.
Gerade mal kurz probiert:
Der Schaltplaneditor in Quartus von Altera scheint tatsächlich deutlich
ausgereifter als der von Lattice Diamond.
chris schrieb:> Der Schaltplaneditor in Quartus von Altera scheint tatsächlich deutlich> ausgereifter als der von Lattice Diamond.
Ja, dann musst du jetzt einfach die Lattice-Pläne mit dem Altera-Tool
zeichnen... ;-)
Lothar M. schrieb:> Und natürlich fehlt auch der Hinweis, dass (auch wenn das> "Schaltplan-Format" eine les- und versionierbare Textdatei wäre) sich> der interne Aufbau eines Schaltplans mit jeder Version des> Zeichenprogramms unangekündigt ändern oder auch komplett umgestellt> werden kann.
Oder das Programm die Entities bei jedem Abspeichern beliebig
umsortiert...dann ist ein diff völlig unbrauchbar, wie bei
EDIF-Netzlisten.
>> Und spätestens, wenn man ein Design auf zwei Plattformen laufen hat, ist> mit "Vergleichen von Schaltplänen" absolut Schluss.
Naja, das könnte man mit etwas Disziplin noch hinkriegen.
Z.B. ein generisches PLL-Modul basteln, was in den Innereien die
arch-spezifischen Sachen verarztet.
Und fürs Top-Level-Design macht der Revisions-Server ein diff-pdf.
Es gäbe schon eine Rechtfertigung für grafische Eingabe, wenn:
- Das Quellformat eine sauber sortierte HDL ist
- man sich ausschliesslich auf standardisierte
Interfaces/pipelines/Busse im Toplevel oder einem Framework beschränkt
Bisher habe ich sowas bei den $-$$ Vendor-Tools nicht wahrgenommen. Qsys
und Derivate machen teils eine heillose Sauerei...
chris schrieb:> Gerade mal kurz probiert:> Der Schaltplaneditor in Quartus von Altera scheint tatsächlich deutlich> ausgereifter als der von Lattice Diamond.
Letztendlich ist aber auch der weit entfernt von perfekt.
Schau' mal in das .bdf-Format rein (ja, das ist ASCII).
Ich betrachte schon das Format als Murks.
Nach meiner Interprätation steht da noch nicht mal drin, dass "A" mit
"B" verbunden ist, sondern die Information ist in der Tatsache
versteckt, dass beide Signale an der selben Bildschirmkoordinate enden.
Das bedeutet 1., dass sich beim Verschieben eines Elementes alles
mögliche ändert, obwohl es noch dieselbe Schaltung ist, und 2., dass je
nach Zoomstufe ein simples "Verzittern" mit der Maus plötzlich Mist
produziert, der noch nicht mal gleich sichtbar wird.
Vielleicht ganz nett, um eben schnell was auszuprobieren (aber das geht
mit VHDL genausoschnell, wenn man einigermassen tippen kann), aber sonst
zu nix zu gebrauchen.
Das Einzige, was ich anfangs tatsächlich per Schematic gemacht habe, war
die Verdrahtung der Module. Daraus wurde dann VHDL erzeugt und das dann
weitergepflegt.
Irgendwann war mir das Gehampel mit dem Schaltplaneditor aber zu blöd
und ich bin komplett auf direkten Quelltext umgestiegen. Und jetzt sind
sogar die Verdrahtungslisten leserlich und übersichtlich (weil nicht
jedes einzelne Signal eines 32 Bit Vektor mitsamt Index in einer eigenen
Zeile aufgeführt wird).
Autor: Markus F. (mfro)
>Nach meiner Interprätation steht da noch nicht mal drin, dass "A" mit>"B" verbunden ist, sondern die Information ist in der Tatsache>versteckt, dass beide Signale an der selben Bildschirmkoordinate enden.
Genau auf die gleiche Weise speichert LtSpice seine Schaltpläne. Über
die Einfachheit des Editors dort kann man sich vielleicht auch streiten,
aber es funktioniert um Welten besser als bei Diamond.
Lothar Miller (lkmiller) (Moderator) Benutzerseite
>Das Einzige, was ich anfangs tatsächlich per Schematic gemacht habe, war>die Verdrahtung der Module. Daraus wurde dann VHDL erzeugt und das dann>weitergepflegt.
Wenn man 10 Elemente in einem Top-Level hat, scheint mir das bis jetzt
der schnellste Weg. Soll man sonst jedesmal die Portlisten kopieren und
in "components" umwandeln, dann noch die port-maps erstellen und beim
Einzelverkabeln keine Fehler machen? Gibt es da irgend einen schnellen
und einfachen Weg mit Textfiles?
Das wäre sicherlich am einfachsten mit einem guten graphischen Editor.
Lustig .. beim Altera-Quartus-Schematic-Editor gibt es die ganze 74xx
Reihe.
Da kann man schön Retrocomputing betreiben.
Ich habe im Anhang mal einen kleines Zählerbeispiel für's
DE-Nano-CycloneIV ( mühselig ) gemalt und es funktioniert.
Leider sind die Wire-Namen immer etwas abgeschnitten und ich habe nicht
raus gekriegt, wie man den Namensbereich etwas größer ziehen kann.
chris schrieb:> Da kann man schön Retrocomputing betreiben.
Ja, so mit lokalen getakteten Takten und ebensolchen lokalen asynchronen
kombinatorischen Resets. So wie man das damals halt auch hingeklatscht
hat.
Allerdings ist ein FPGA da die vollkommen falsche Zielarchitektur....
Das war aber damals auch der Hardwareersparnis geschuldet. Wo heute im
FPGA leicht mal ein FlipFlop für die Synchronisation dazwischen
geschaltet wird, hat man damals versucht zu sparen.
vom Amiga128 Entwickler:
https://www.youtube.com/watch?v=-Zpv6u5vCJ4
( Minute 51 )
chris schrieb:> Lustig .. beim Altera-Quartus-Schematic-Editor gibt es die ganze 74xx> Reihe.> Da kann man schön Retrocomputing betreiben.
Da wird aber nur die Logik, nicht aber das Timing
umgesetzt. Bei vielen Retrogeschichten wird aber
gerade mit dem Timing gespielt, d.h. ohne funktioniert
deine Schaltung total falsch.