Gast
#2078562
Immer wenn ich den unten stehenden Code synthetisieren möchte, bekomme ich die Warnung "Index value(s) does not match array range, simulation mismatch.". Was mache ich falsch?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
|
Anzeige
|
Fehler bei dem Index eines 2dimensionalen Arrays
Gast
#2078562
Immer wenn ich den unten stehenden Code synthetisieren möchte, bekomme ich die Warnung "Index value(s) does not match array range, simulation mismatch.". Was mache ich falsch?
Gast
#2078594
Noch eine kleine Anmerkung.. In der Reihe mit "(to_integer(unsigned(y))+j) = '0' then" habe ich beim Kopieren wohl ein "if" vergessen, welches eigentlich dabei stand. Außerdem ist eine Reihe darunter das "else" verschwunden. Keine Ahnung wie es verschwinden konnte... sensor schrieb: > Was mache ich falsch? Du postest nicht die Typen des Arrays und nicht von x und nicht von y... > wenn ich den unten stehenden Code synthetisieren möchte, bekomme > ich die Warnung "Index value(s) does not match array range, simulation > mismatch." Das bedeutet, dass die Synthese meint, die Hardware könnte u.U. nicht zur Simulation passen. Das passiert gern mal, wenn uneingeschränkte Integer verwendet werden... > In der Reihe mit "(to_integer(unsigned(y))+j) = '0' then" habe > ich beim Kopieren wohl ein "if" vergessen Mich wundert sowieso, warum du einen Integer mit '0' vergleichen willst...
Gast
#2078794
Zweidimenstionale Array indiziert man doch nicht mit ()() sondern mit ( , ) afair D. I. schrieb: > Zweidimenstionale Array indiziert man doch nicht mit ()() sondern mit > ( , ) afair Es sind abhängig von der Typdefinition des Arrays beide Schreibweisen möglich: http://www.lothar-miller.de/s9y/archives/39-Mehrdimensionale-Arrays.html
Gast
#2079032
Hallo, vielen Dank für eure Antworten. Es tut mir sehr leid, dass der Code trotz Ergänzungen immer noch nicht vollständig war. Da ich den Code so übersichtlich wie möglich posten wollte, habe ich eine Reihe von Informationen weggelassen, wodurch diverse notwendige Dinge gefehlt haben. Außerdem habe ich vergessen, die Typen anzugeben. Auch dafür entschuldige ich mich.
screen hat folgenden Datentypen:
"x" und "y" sind vom Typ std_logic_vector. Es tut mir wirklich leid, dass ihr mir auf Grundlage meines Fehlers versucht habt mir zu helfen. Liebe Grüße
Gast
#2079050
>Das bedeutet, dass die Synthese meint, die Hardware könnte u.U. nicht >zur Simulation passen. Das passiert gern mal, wenn uneingeschränkte >Integer verwendet werden.. Darüber habe ich mir auch schon Gedanken gemacht, aber eine Übertragung in eine Variable der "normalen" Typen sollte dieses Problem ja nicht beheben, da es nichts an der "Übergröße" ändern würde. Ich werde, sobald ich wieder Zeit habe, die Werte mal in Variablen eines Subtypes von Integer übertragen und schauen ob die Warnung verschwindet. Vielen Dank nochmal. sensor schrieb: > "x" und "y" sind vom Typ std_logic_vector. Wie breit jeweils?
Gast
#2079072
2-byte, also es ist theoretisch größer als der Index, jedoch werden die Variablen nur mit den passenden Größen verwendet, wie man auch an der Simulation sehen kann. sensor schrieb: > 2-byte, also es ist theoretisch größer als der Index, Und da sagt die Synthese (die die Vektoren intern auf die nötige Breite begrenzt, und ja nicht weiß, ob da in der Simulation mal z.B. x=11 oder y=99 werden kann) dass evtl. die Simulation nicht stimmt. > jedoch werden die Variablen nur mit den passenden Größen verwendet Es sind Signale... ;-)
Gast
#2079834
Vielen Dank für die Erklärung. Leider befürchte ich, dass wegen den
Warnungen die Synthese so langsam ist. Lasse ich den Teil aus, ist sie
um ein vielfaches schneller.
> Es sind Signale... ;-)
In meinem Fall sind "x" und "y" Variablen.
sensor schrieb: >> Es sind Signale... ;-) > In meinem Fall sind "x" und "y" Variablen. ... So kommen wir langsam aber sicher zum Code... > variable x : std_logic_vector(3 downto 0) := (others => '0'); > variable y : std_logic_vector(3 downto 0) := (others => '0'); Warum machst du daraus nicht einfach einen eingeschränkten Integer. Das würde auch den Arrayzugriff besser lesbar machen...
Gast
#2081824
Vielen Dank nochmal. Ja, ich werde es so machen, wie du mir vorgeschlagen hast. Die "x" und "y" braucht man auch noch andersweitig mit größeren Werten, weswegen ich es bis jetzt nicht gemacht habe. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|