Hallo
Ich möchte gerne mit VHDL eine Matrix erstellen um Werten in einem BUS
Positionen zu zuteilen. Die Matrix muss 1400 Werte in X Richtung und 600
Werte in Y Richtung aufnehmen.
a(1,1)..........a(1,1400)
. .
. .
. .
. .
a(600,1)........a(600,1400)
Ich habe in meinem VHDL Buch leider nix gefunden.
Jerry P. schrieb:> Ich möchte gerne mit VHDL eine Matrix erstellen um Werten in einem BUS> Positionen zu zuteilen.
Was wird in der Matrix gespeichert? Bits, Bytes, Worte...?
Was du suchst heißt Array:
http://www.lothar-miller.de/s9y/categories/32-Arrays> Die Matrix muss 1400 Werte in X Richtung und 600> Werte in Y Richtung aufnehmen.
Das wären also 840000 Werte. Wenn das Bytes sind, dann brauchst du also
einen Speicher mit 6,72 MBit. Da brauchst du dann schon ein größeres
FPGA:
http://www.xilinx.com/products/devices.htm> Ich habe in meinem VHDL Buch leider nix gefunden.
Welches hast du? Falsch gesucht?
> a(1,1)
In der Hardware-Welt (und auch bei den Softies) wird sehr gern bei (0,0)
begonnen zu zählen...
Lothar Miller schrieb:> Was wird in der Matrix gespeichert? Bits, Bytes, Worte...?
Je Position 1 Byte.
Lothar Miller schrieb:> 6,72 MBit.
nur wenn ich alle Werte / Positionen nutze. Ich möchte aber immer nur
einige bestimmte Werte ändern. Oder muss ich den Speicherbereich
trotzdem komplett bereitstellen?
Lothar Miller schrieb:> Welches hast du? Falsch gesucht?VHDL Synthese
Jerry P. schrieb:> nur wenn ich alle Werte / Positionen nutze. Ich möchte aber immer nur> einige bestimmte Werte ändern. Oder muss ich den Speicherbereich> trotzdem komplett bereitstellen?
Wenn man sagen kann wieviele Werte maximal geändert werden, kann man
Koordinatenkompression verwenden. Ist zwar eine Technik aus der
Softwarewelt, sollte sich aber mit etwas Aufwand auch in Hardware
übersetzen lassen
@ D. I. (grotesque)
Wenn ich mal kurz neugierig fragen darf, weil ich zu sprälich besetzten
Matrizen auch was suche:
> ... kann man Koordinatenkompression verwenden.
Kannst Du da vielleicht mal einen Link mit einer guten Darstellung
posten?
Ich finde zwar bei Google was unter "Koordinatenkompression ", aber das
bezieht sich auf Grafiken und scheint vorauszusetzen, das immer
wenigstens ein unmittelbarer Nachbarpunkt besetzt ist.
Kalump schrieb:>> ... kann man Koordinatenkompression verwenden.>> Kannst Du da vielleicht mal einen Link mit einer guten Darstellung> posten?
Leider habe ich selbst keinen Link in Google gefunden der das gut
beschreibt.
Aber das prinzipielle Vorgehen, wenn man die maximale Anzahl an Werten
kennt, ist einfach die dimensionen von [1...x] auf [1....|Anzahl Werte|]
zu mappen und sich das mapping zu merken. Am besten sortiert man die
Werte vorher noch, dann kann man darauf auch komfortabel rechnen. Wenns
nur um das Mapping geht, muss man das aber nicht.
Es gab da mal ne Aufgabe dazu:
http://2008.nwerc.eu/problems/nwerc08-problemset.pdf
Aufgabe F
http://2008.nwerc.eu/problems/nwerc08-solutions.pdfhttp://2008.nwerc.eu/problems/nwerc08-solutions.tar.gz
Hier findest du 3 Beispielimplementierungen dieses Verfahrens in
C++/Java
Eine andere Möglichkeit wenn sich die Anzahl der zu verändernden Daten
nicht ändert wäre noch mittels CRS (Compressed Row Storage) zu
speichern. CRS funktioniert zwar auch einfügen und entfernen, aber das
wüsste ich nicht wie man das mal eben in Hardware gießt, ändert sich die
Zahl nicht ist es nahezu trivial das in Hardware abzubilden. Das ist die
Wahl bei dünn besetzten Matrizen, aber man kann das natürlich
zweckentfremden wenn man nur auf bestimmte Werte Zugriff haben will
Ich habe nochmal darüber nachgedacht:
Also in OPs Fall würde ich die CRS-Methode einsetzen. Es lässt sich
sogar inklusive Werte einfügen / löschen implementieren (wenn man das
braucht). Und zwar kann man das mithilfe verketteter Listen auf BRAM
lösen, wenn einfügen und löschen gebraucht wird, in dem man sich immer
ein Tupel fester Größe aus Wert und Adresse des nächsten Tupels
speichert. Ansonsten kann man einfach die Zugriffstabelle hinterlegen.
Eine eigene Frage?
Dieser Thread ist über 15 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.