Woher kann das kommen? Wenn ich für i_digit die möglcihen 0,1,2,3
einsetze ist doch alles in Ordnung. Und wenn ich mal oslv_NIBBLE <=
islv_DATA(3 downto 0) hinschreibe gibt es den Fehler nicht. Der Fehler
behauptet ich würde dem 4 bit Vektor nibble einen 16 bit Vektor zuweisen
wollen.
Aber rechne ich für i_digit die Zuweiseung aus:
0: (3 downto 0)
1: (7 downto 4)
2: (11 downto 8)
3: (15 downto 12)
Was mache ich denn da schon wieder falsch. :-(
Der Syntax ist eigentlich ok, der Synthesizer akzeptiert
aber keine dynamische Indizierung, die muss immer statisch
sein. Dagegen müsste es in der Simulation klappen.
hi,
Ich habe Xilinx ise 14.7. tschuldigung, vergessen zu sagen. D.h. es
sollte eigentlich funktionieren? Ich bin nicht am Rechner, poste morgen
mal die ganze entity, vielleicht ist das ja ein kollateralschaden und
ich hab noch einen anderen Bock? Habe noch einige Stunden weiter
probiert und jetzt erst mal in Frust aufgegeben...
Link gelesen, wird probiert. Bin optimistisch das ist ja genau mein
Problem.
Super Homepage hast du (ist doch deine?) wenn man das Thema findet super
reduziert.
Ich glaube bei vhdl macht sich ein Maschinenkunde bezahlt, man castet ja
anscheinend eine Menge.
Christian F schrieb:> Link gelesen, wird probiert. Bin optimistisch das ist ja genau mein> Problem.
Sehe ich auch so. Und wie gesagt: die Fehlermeldung im exakten
Wortlaut sagt oft mehr als man denkt...
> Super Homepage hast du (ist doch deine?)
Ja, danke. Das sollte ursprünglich mal ein Nachschlagewerk für mich
selbst sein...
> wenn man das Thema findet
Auf der HP ist nur ein kleiner Teil der vielen großen und kleinen VHDL
Projekten und VHDL Dreizeilern auf meinem Rechner. Und ich finde so
einen Codeschnipsel meist nur deshalb, weil ich weiß, dass es ihn
gibt... :-/
> Ich glaube bei vhdl macht sich ein Maschinenkunde bezahlt
Zuerst muss man sich im Klaren Wein, dass VHDL keine Programmiersprache
ist (denn sonst hieße sie ja VHPL).
Man braucht also zerst mal eine Vorstellung, ein Bild von der Hardware,
die man mit der HardwarebeschreibungsspracheVHDLbeschreibt.
> man castet ja anscheinend eine Menge.VHDL hat eine strenge Typverwaltung und es wird nichts implizit bzw.
"automatisch" umgewandelt. Bei C kann man ja sogar einen Float einem
Chat zuweisen ohne irgendetwas umzuwandeln. Das geht in VHDL nicht, man
muss jedesmal extra hinschreiben, wie irgenwas umgewandelt werden soll.
Aber soooo arg viel muss man sich da auch nicht merken. Man nimmt
einfach die numeric_std und prägt sich dieses Bild ein:
http://www.lothar-miller.de/s9y/categories/16-Numeric_Std
Kurzen guten Morgen,
die Fehlermeldung im exakten Wortlaut lautet:
"WARNING:Xst:1610 - "E:/Documents/Nexys2/nexys2_disp/nexys2_disp.vhd"
line 246: Width mismatch. <oslv_nibble> has a width of 4 bits but
assigned expression is 16-bit wide."
Ist mir überhaupt nicht logisch, wieso die Indizierung angeblich 16 bit
breit sind.
Vielleicht sieht jemand das Problem. Ich habe den Schnipsel von Lothar
übernommen und die selbe Warning bekommen.
Ich würde auch einfach die 4 Stellen auf dem Board fix einbauen, aber
irgendwie wird das Problem bestimmt sowiso früher oder später
zurückkommen und ich sollte das verstehen und hinbekommen.
Bis zum Bitfile alles gut, nur die Warnung in Zeile 42 solltest Du
beachten.
Für welchen Chip willst Du das ganze Synthetisieren?
Je nach Chip verwendet die ISE ggf. andere Synthesizer.
Duke
Aber hochinteressant ist, dass mein design keine Probleme macht, wenn
ich auf Spartan 6 umschalte. Guter Tip! Bloß ich habe ja einen S3E. :-(
Da kann ich dann so gar nichts ändern, richtig?
Super! Vielen Dank. Gut dass ich so blöd gefragt habe.
Ich nehme an die Warnung: "WARNING:Xst:3152 - You have chosen to run a
version of XST which is not the default solution for the specified
device family." ist geflissentlich zu ignorieren, sie ist anscheinend
eine Folge des o.g. switches.
Lässt sich diese Einstellung dauerhaft aktivieren oder muss das dann bei
jedem Projekt zu Fuß gemacht werden?
du koenntest auch mal versuchen, den Index vorher in einer Variablen
zu berechnen und dann die Signalzuweisung (die Indizierung) mit dieser
Variablen machen. Ich meine ich hatte mit GHDL auch mal so ein
Problem...
Christian F schrieb:> Ich nehme an die Warnung: "WARNING:Xst:3152 - You have chosen to run a> version of XST which is not the default solution for the specified> device family." ist geflissentlich zu ignorieren
Ja, Xilinx will sich da offenbar in alle Richtungen absichern...
> Lässt sich diese Einstellung dauerhaft aktivieren oder muss das dann bei> jedem Projekt zu Fuß gemacht werden?
Nein und Ja.
Duke Scarring schrieb:> Elaborating entity <digits_mux> (architecture <Behavioral>) with> generics from library <work>.> WARNING:HDLCompiler:92 - "bitslices.vhd" Line 42: i should be on the> sensitivity list of the process
Das bedeutet einfach und pauschal: "Simulation falsch! Simulation psst
nicht zur Hardware!"
Denn hier wäre ausnahmsweise mal eine Variable das richtige Instrument,
weil i ja nur ein lokaler Wert ist, der nur in dem einen Prozess
verwendet wird.
Und zudem werden in diesem einen Prozess zuviel Dinge verknüpft, die
eigentlich nichts miteinander zu tun haben...
berndl schrieb:> du koenntest auch mal versuchen, den Index vorher in einer Variablen zu> berechnen und dann die Signalzuweisung (die Indizierung) mit dieser> Variablen machen.
Ich würde das ohne diesen kombinierten kombinatorischen Prozess und den
Umweg über i machen: