Datum:
Angehängte Dateien:Hallo Leute, ich versuche in der Schematic eines VHDL-Projektes in ISE WEBpack einen konstanten Wert auf den Eingang meiner 7-Segemnt-Anzeige zu lesen (bcddecoder). Müsste eigentlich enorm einfach sein, könnte man meinen, aber ich habe es weder hinbekommen noch im Internet nützliche Informationen dazu gefunden. Constant aus der Symbol-Rubrik General kann man hier nicht nutzen. Vermutlich weil es ein STD_LOGIC_VECTOR sein müsste. Nun dachte ich mir, selbst ist der Mann, und ich bastel mir ein Modul, welches einen konstanten vier-Bit-Vector ausgibt und den man über generic parametrisieren kann. Das funktioniert zwar, aber auf dem Display meines Nexys2 sehe ich nur 4 Nullen, weil die Parametrisierung wohl nicht klappt. Auch da sucht man ne Weile bis man was im Internet nützliches findet. Die Weile dauert aber noch an, denn gefunden habe ich ja noch nichts! :D (Bin aber noch optimistisch.) Hat da jemand mal n Link? Habe mal ein Bild von der Einstellung gemacht und in den Anhang gepackt. Wahrscheinlich wird das so nicht gemacht. Aber selbsterklärend ist das Interface auch nicht gerade. Hier mal mein const4Bits.vhd:
entity const4Bits is Generic ( constValue : STD_LOGIC_VECTOR (3 downto 0)); Port ( BitVector : out STD_LOGIC_VECTOR (3 downto 0)); end const4Bits; architecture Behavioral of const4Bits is begin BitVector <= constValue; end Behavioral; |
Hat jemand eine Ahnung wie man einen konstanten Wert auf den Eingang legen kann? Ich dachte, das wäre sehr trivial. Aber nichts in VHDL und ISE WEBpack ist trivial habe ich den Eindruck. ;) Danke Fabian.
Datum:
Was mir gerade einfällt, ginge das mit dem UCF-File zu lösen?
Datum:
Gut! Zum Thema generic habe ich jetzt nun alles gelesen, was auch nur im Ansatz informativ aussah. Es schein wohl wirklich so zu sein, dass man das nicht macht. Warum auch immer. Ansonsten kann ich mir nicht erklären, warum das nirgends erklärt wird. Selbst im Xilinx-Forum wird weder danach gefragt noch wird es erklärt. Also, wie man es macht, wenn VHDL-Module in andere VHDL-Module als Components eingebunden werden und man deren Generics dann zuweisen will (über Generic_Map und INIT), wird erklärt. Möchte man dieses Modul aber in eine Schematic einbinden, so scheint das nicht zu gehen. Das einzige, das ich finden könnte war in einem c't-Lab-Artikel http://www.heise.de/ct/artikel/Spielende-Synthese-... in dem ein Projekt (Bunte Bilder) erklärt wurde in dem es heißt: /Wenn Sie die FPGA-Sourcen (wie immer vollständig auf www.ct-lab.de) genauer untersuchen, werden Sie feststellen, dass das SPI gegenüber dem des Frequenzzählers auf das Nötigste zusammengestrichen wurde. Der Video-Sync-Generator „fbas_sync“ ist dagegen beispielhaft und kann (über Konstanten im zugehörigen VDHL-Code, siehe Kommentare dort) in weiten Grenzen parametriert werden./ Praktischerweise gibt es weder einen Link zu den Sources des Projektes noch ist dieses direkt benamt. Wühlt man aber in den Sources von c't-Lab, so sieht folgendes Projekt sehr danach aus: http://www.heise.de/ct/projekte/machmit/ctlab/brow... . Leider werden eben in dessen Datei sync.vhd von der wohl die Rede war, keine Generics verwendet. So dass ich mir dort auch keine Ideen holen konnte. __ Ich komme leider wieder zu dem Schluss: Wer bauen will nutzt Mikrocontroller, wer frickeln will nutzt FPGAs. Das mit der Parametrisierung wäre wohl zu praktisch gewesen. :( Wer mich eines besseren belehren kann, dem wäre ich sehr dankbar. Gruß Fabian
Datum:
Also das geht glaube ich beim ISE Webpack wie folgt: 1. du hast ein Generic-Teil in deiner Entity... z.B.:
Generic ( period : integer range 0 to 65535 := 400); |
2. du hast ein Symbol erzeugt und eine Instanz davon in einer Schematic eingebunden 3. Rechtsklick -> Object Properties -> New 4. gib den Namen des Attributs ein (in diesem Fall "period") 5. gib den gewünschten Wert an (z.B. 17) 6. gib den Typen an (in diesem Fall Integer) 7. ok -> ok leider gibt es dadurch eine Warnmeldung bei der Synthetisierung... das missfällt mir noch an der Lösung Gruß Kay
Datum:
Fabian Hoemcke schrieb: > ich versuche in der Schematic eines VHDL-Projektes Das passt soweiso nicht zusammen. Mach das bischen Verdrahtung doch von Hand. Meine VHDL-Projekte enthalten prinzipiell keine Schematic. Fabian Hoemcke schrieb: > Hat jemand eine Ahnung wie man einen konstanten Wert auf den Eingang > legen kann? Ich nehme deinen VHDL-Code und erhalte die Meldung:
ERROR:Xst:2434 - "C:/.../dfgsfdg.vhd" line 5: Generic <constValue> has not been given a value. |
Also eine Zeile geändert, dann hab ich schon mal einen Defaultwert:
Generic ( constValue : STD_LOGIC_VECTOR (3 downto 0)) := "1010"); |
Das wäre jetzt ausreichend, wenn das schon der Top-Level wäre. Sonst kommt jetzt der nächste Schritt: dieses Modul mit dem Generic als Komponente verwenden...
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity const4Bits is Generic ( constValue : STD_LOGIC_VECTOR (3 downto 0) := "1010"); Port ( BitVector : out STD_LOGIC_VECTOR (3 downto 0)); end const4Bits; architecture Behavioral of const4Bits is begin BitVector <= constValue; end Behavioral; library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity out4Bits is Port ( outVector : out STD_LOGIC_VECTOR (3 downto 0)); end out4Bits; architecture Behavioral of out4Bits is component const4Bits is Generic ( constValue : STD_LOGIC_VECTOR (3 downto 0)); Port ( BitVector : out STD_LOGIC_VECTOR (3 downto 0)); end component; signal BV : STD_LOGIC_VECTOR (3 downto 0); begin c4b : const4Bits generic map (constValue => "1100") port map (BitVector => BV); outVector <= BV; end Behavioral; |
Und der RTL-Plan zeigt: der Defaultwert von "1010" wird durch "1100" überschreiben und ausgegeben. Mein Tipp des Tages: VERGISS diese Schaltplanmimik schnellstmöglich wieder, du wirst ihr nicht eine Sekunde nachweinen. Garantiert. In den (mindestens) drei Stunden, in denen du da rumgebastelt hast, kannst du mit VHDL auch große Modelle manuell verdrahten....
Datum:
Fabian Hoemcke schrieb: > ich versuche in der Schematic eines VHDL-Projektes in ISE WEBpack einen > konstanten Wert auf den Eingang meiner 7-Segemnt-Anzeige zu lesen > (bcddecoder). > > Müsste eigentlich enorm einfach sein, könnte man meinen, aber ich habe > es weder hinbekommen noch im Internet nützliche Informationen dazu > gefunden. Das liegt daran, das niemand ernsthaft die Xilinx-Schematic verwendet. Und das es niemand verwendet, wird da auch von Xilinx nix dran gemacht und Du findest auch nichts im Netz dazu. Ich habe es damals(tm) auch mit Schematic versucht. Es ist (und bleibt) frustrierend. Inzwischen bin ich mit VHDL sehr zufrieden. Duke
Datum:
Lothar Miller schrieb: > Fabian Hoemcke schrieb: >> ich versuche in der Schematic eines VHDL-Projektes > Das passt soweiso nicht zusammen. Mach das bischen Verdrahtung doch von > Hand. Meine VHDL-Projekte enthalten prinzipiell keine Schematic. Ja, im aktuellen Fall ist es noch recht einfach, wollte für diesen Fall nicht auch gleich ein riesen Projekt reinstellen. Aber im c't-Link sieht man ja, wie groß Projekte sein können. Ich glaube Du kennst das ja, ich kenne auch deine Webseite. Danke für's Beispiel. Duke Scarring schrieb: > Fabian Hoemcke schrieb: >> ich versuche in der Schematic eines VHDL-Projektes in ISE WEBpack einen >> konstanten Wert auf den Eingang meiner 7-Segemnt-Anzeige zu lesen >> (bcddecoder). >> >> Müsste eigentlich enorm einfach sein, könnte man meinen, aber ich habe >> es weder hinbekommen noch im Internet nützliche Informationen dazu >> gefunden. > Das liegt daran, das niemand ernsthaft die Xilinx-Schematic verwendet. > Und das es niemand verwendet, wird da auch von Xilinx nix dran gemacht > und Du findest auch nichts im Netz dazu. > > Ich habe es damals(tm) auch mit Schematic versucht. Es ist (und bleibt) > frustrierend. Inzwischen bin ich mit VHDL sehr zufrieden. > > Duke Es ist irgendwie schon schade. Das ist als hätte man ein Auto in der Garage, aber man läuft immer, weil das Auto kaputt ist. Egal wie viel man zu tragen hat. Das Dogma alles in VHDL zu schreiben, kommt ja nur daher, weil der Schematic-Editor im ISE WEBpeck buggy ist. Nicht weil die Idee oder das Prinzip damit zu programmieren schlecht ist. Das finde ich schade. Da kann ich verstehen weshalb es bei Sigasi (VHDL-Plugin für Eclipse) keinen Schematiceditor gibt. Kay schrieb: > Also das geht glaube ich beim ISE Webpack wie folgt: > 1. du hast ein Generic-Teil in deiner Entity... z.B.:Generic ( period : integer range 0 to 65535 := 400);2. du hast ein Symbol erzeugt und eine Instanz davon in einer Schematic > eingebunden > 3. Rechtsklick -> Object Properties -> New > 4. gib den Namen des Attributs ein (in diesem Fall "period") > 5. gib den gewünschten Wert an (z.B. 17) > 6. gib den Typen an (in diesem Fall Integer) > 7. ok -> ok > > leider gibt es dadurch eine Warnmeldung bei der Synthetisierung... das > missfällt mir noch an der Lösung > > Gruß Kay Danke. Leider arbeiten wir mit STD_LOGIC_VECTOR. Das kann man als Datentyp nicht auswählen. Wenn man BIT-Vectoren nutzt, sehe ich trotz verschiedener Werte immer das gleiche auf allen Display. Ich werde mal versuchen, auf Integer zu setzen diese zu konvertieren. Danke Leute!
Datum:
Fabian Hoemcke schrieb: > Das Dogma alles in VHDL zu schreiben, kommt ja nur daher, weil der > Schematic-Editor im ISE WEBpeck buggy ist. Nein, es kommt daher, dass nur solche "reinen" VHDL-Projekte wirklich portierbar sind. VHDL ist auch nach 20 Jahren noch VHDL. Ob dein Schematic-Editor nach 20 Jahren noch das alte Zeug öffnen kann, ist aber sehr fraglich. Und ein Schematic-Editor eines anderen Herstellers kann damit sowieso nichts anfangen...
Datum:
Fabian Hoemcke schrieb: > Das Dogma alles in VHDL zu schreiben, kommt ja nur daher, weil der > Schematic-Editor im ISE WEBpeck buggy ist. Nee, wie schon gesgat, hauptsächlich wegen der Portierbarkeit. Was ich aber viel wichtiger finde: Es ist einfacher wartbar. Bei einem Schematic Design artet jede Änderung in wildes Schieben von Leitungen aus. Ein anderer ganz wesentlicher Punkt ist die Möglichkeit der Versionierung mit Standard-Tools wie SVN, Git oder CVS. Das geht bei Schematic nur extrem mühselig, weil es binäre Files sind. Ein VHDL/Verilog ist überall lesbar und lässt sich vernünftig in ein Versionskontrollsystem einpflegen. Fabian Hoemcke schrieb: > Nicht weil die Idee oder das > Prinzip damit zu programmieren schlecht ist Schlecht nicht, aber schlicht nicht passend und nicht zeitgemäß für einen FPGA. Mit einem Schematic Design zwingst du den Synthesizer in eine Struktur, der ist aber drauf ausgelegt, ein Verhalten beschrieben zu bekommen. Die Struktur kann der in 99,5% der Fälle selbst viel effizienter und besser an den Ziel-FPGA angepasst herstellen. Ich hab hier ein Design zunächst 1:1 von Schematic in VHDL übersetzt. Selbst ohne Optimierungen wurde es 40% schneller.
Datum:
zum Thema Portierung: Xilinx ISE Webpack erstellt mit Hilfe der Schematic lediglich die Strukturelle Beschreibung (liegt in gleichnamiger .vhf Datei) und diese kann portiert werden solang man nur eigene Module verwendet. Ich persönlich finde Schematics & State Diagramms an sich ein gutes Mittel um ein Projekt übersichtlich darzustellen und schnell begreifbar zu machen. Dass die Schematic in ISE ein Krampf ist.. ok, das kann man wirklich nicht bestreiten.
Datum:
Danke! Kaum macht man es richtig, geht es! ^^ Habe es so gemacht, wie Ihr es gesagt habt. Die Generics in der VHDL-Datei eingefügt, bei Object-Properties (dann NEW) den Attributnamen und den Wert sowie Typ angegeben. [Für die, die später das gleiche Problem haben wie ich.] Schade ist nur, dass man nicht gleich den Attributnamen aus der Liste auswählen kann. Schlimmer aber ist, dass man als Typ nicht STD_LOGIC_VECTOR angeben kann. So muss man BIT-VECTOR nehmen und den Wert im Modul konvertieren. Was unnötig scheint. Wenn das Top-Modul ein VHDL-File wäre und man das ganze über generic map regeln würde, wie oben zu sehen, geht das ja auch. _____________________________________ Lothar Miller schrieb: > Nein, es kommt daher, dass nur solche "reinen" VHDL-Projekte wirklich > portierbar sind. Das ist natürlich ein Punkt! Das hat Sinn. Christian R. schrieb: > Es ist einfacher wartbar. Bei einem Schematic > Design artet jede Änderung in wildes Schieben von Leitungen aus. Ein > anderer ganz wesentlicher Punkt ist die Möglichkeit der Versionierung Den Punkt mit der Versionierung lasse ich gelten. Den Punkt mit der Wartbarkeit nur zum Teil. Ähnlich wie ein gut gemachter Schaltplan hat man den Vorteil der Übersicht. Hat man so viele Komponenten wie ich hier: Beitrag "kruder Fehler bei FPGA-Programmierung (ISE WEBpack-Schematic)" (als nur eines von vielen Beispielen). Würde ich all die Module als Components einbinden, müsste ich ausführlich kommentieren um die selbe Übersichtlichkeit zu gewährleisten. Aber ja, muss man etwas ändern, braucht es schon viel Glück, dies mit wenig Aufwand machen zu können. _____________________________________ Mal noch eine andere Sache zum Thema Schematic. Gibt es eine Möglichkeit, das Feld einer Schematic in die man die Symbole zieht zu vergrößern? Klar könnte man Teile der Schematic in Untermodule kapseln. Aber das wiederum schadet, wie ich finde die Übersichtlichkeit. Zumal wenn alle Teile im Grunde die gleiche Funktion haben. WO sich das also einfach nicht anbietet. Hat da mal jemand noch einen Tipp? Danke Fabian
Datum:
Angehängte Dateien:Habe es raus gefunden. Unter den Object-Properties des Hintergrundes kann man es einstellen. Damit wären auch hier alle Punkte geklärt. Danke euch viel Mals! Fabian [Close]
Datum:
Fabian Hoemcke schrieb: > Ähnlich wie ein gut gemachter Schaltplan hat > man den Vorteil der Übersicht. Naja, ich weiß ja nicht. Gerade dein Beispiel ist meiner Meinung nach ziemlich unübersichtlich. Irgendwo mitten im Blatt Ausgänge, haufen Strippen....ich weiß ja nicht. Sicher, es ist Hardware, was man beschreibt, aber eine strukturierte, textuelle Sprache ist da schon sinnvoller. Aber auch du wirst bei einem größeren Projekt, oder wenn du professionell damit arbeiten musst, auch eine texturelle HDL umsteigen.
Datum:
Christian R. schrieb: > Gerade dein Beispiel ist meiner Meinung nach > ziemlich unübersichtlich. Ja, das ist richtig. Deshalb suchte ich ja nach einem Weg für mehr Platz. Christian R. schrieb: > Aber auch du wirst bei einem größeren Projekt, oder wenn du > professionell damit arbeiten musst, auch eine texturelle HDL umsteigen. Das glaube ich auch. Vorerst aber arbeite ich nicht alleine an dem Projekt. Und um mit meinen Kollegen weiter daran arbeiten zu können bleibe ich erstmal noch dabei.



