INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Problem mit Look up Table



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

11.02.2010, 10:55
Beitrag #1

Massa-Newbie Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Feb 2008

2010
2008
kA

73553
Deutschland
Problem mit Look up Table
Hallo

Eingesetzte Karte: 7831R
LabVIEW 2009

Ich versuche gerade eine Look-Up Tabe 1d mit einem Sinus zu füllen. Die Automatische Füllfunktion erlaubt nur einen Sinus mit einer Amplitude über den kompletten Wertebereich. D.H. bei I8 -+ 128 Digits. Ich benötige aber einen Sinus über 100 Werte und einer Amplitude von 80 Digits. Also dachte ich mir die 100 Werte kann ich selbst eingeben. Denkste... Wenn ich die Tabelle per Hand mit Werten füllen will zeigt er mir die Werte erstens nicht an und zweitens wird nur der letzte eingegebene Wert gesetzt, alle Anderen Werte gehen auf 0. Sehen kann ich das nur in dem Diagramm, das mir beim Eingeben angezeigt wird. Die Wertetabelle an sich ist leer.
Ist das ein Bug?
Kann ich die LUT noch anders Füllen?

Gruß Massa
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.02.2010, 15:56
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Problem mit Look up Table
Hi Massa,

hört sich an, als wenn du ohne shift register arbeitest oder ohne auto-indexing.

Für eine genauere Analyse könntest du ja einfach mal dein VI anhängen. Hier geht's ja schließlich um LV-Programmierung und nicht um Glaskugel-Lesen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.02.2010, 16:02
Beitrag #3

chrissyPu Offline
LVF-Stammgast
***


Beiträge: 467
Registriert seit: Jun 2006

2014 PDS
2006
DE_EN

64283
Deutschland
Problem mit Look up Table
Hi,

was geht ist ein Memory-Bereich auf dem FPGA reservieren und den programmatisch über nen FiFo zu beschreiben. Hat den Vorteil, das man echt flexibel ist. Das mach ich auch so. Das mit dem manuellen Beschreiben der LUT probier ich gleich mal aus, dann weiß man, ob es von lv8.6 auf lv2009 einen bug gab...Wink

ch
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.01.2012, 12:05
Beitrag #4

cRio Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Nov 2011

2011
-
EN


Deutschland
RE: Problem mit Look up Table
Hallo chrissyPu, deine vorgeschlagene Vorgehensweise hört sich recht interessant an. Hättest du vielleicht ein kleines BeispielVI, wie du das genau anstellst?
Du verwendest also keine LUT sondern einen MemoryBlock mit "starrer" Größe?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.01.2012, 14:08
Beitrag #5

chrissyPu Offline
LVF-Stammgast
***


Beiträge: 467
Registriert seit: Jun 2006

2014 PDS
2006
DE_EN

64283
Deutschland
RE: Problem mit Look up Table
Puh, das ist schon eine Weile her... Anbei mal zwei Screenshots, ich hab keine Test-VIs mehr gerade, die das ganze einfacher hätten und das ganze ist sonst eher unübersichtlich...

Zuerst muss man den Memoryblock mit starrer Größe definieren, dann noch einen Fifo, um ihn zu beschreiben. Das setz ich jetzt mal voraus... Dann:

Schreiben ist glaube ich leicht erklärt:
   
Der N-Anschluss ist mit der Länge des Datenblocks belegt, man muss vor dem Schreiben in den FIFO kontrollieren, ob der Datenblock nicht größer als der vorher reservierte Speicherbereich ist. Ist aber ja eigentlich kein Problem, weil man die Sachen vorher weiß.

Lesen etwas aufwändiger:
   
Die Ausgabe ist in einer zweistufigen Pipeline, um die Durchlaufzeit gering zu halten. Man kauft sich eine Latenz von einem Schleifendurchlauf ein, dafür ist die Ausgabe genau so schnell wie der DA-Wandler es kann, da die Berechnung vorher deutlich kürzer als die DA-Wandlung ist. Da in der Schleife noch ein paar andere Sachen passieren, ist das dazugehörige Schieberegister außerhalb. Nicht verwirren lassen.
Ich skaliere meine Memoryausgabe auch nochmal im Nachhinein, das sind die Multiplikation und das Shiften im rechten Teil des BD.
Um jetzt mehrmals den Speicherbereich auszugeben, setze ich das ganze in eine For-Schleife, die als Durchlaufanzahl das Produkt aus Speichertiefe und Anzahl der Ausgaben bekommt. Vor die Adressierung des Speichers setze ich jetzt eine Logische Und-Verknüpfung des Durchlaufzählers i mit der Zahl (N_Sp - 1), wobei N_Sp für die Anzahl der Werte im Speicher steht. Damit werden alle Bits die größer sind als die Speichertiefe ausgeblendet und der Speicher wird periodisch ausgegeben. Hielt ich damals für berechnungstechnisch am effektivsten, weiß nicht, ob es da mittlerweile bessere Sachen gibt.

Ach ja, die Sequenz braucht man hier wahrscheinlich nicht... Müsste der Compiler aber ausbügeln... Wink

Viel Erfolg,

ch
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.01.2012, 15:38
Beitrag #6

cRio Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Nov 2011

2011
-
EN


Deutschland
RE: Problem mit Look up Table
Danke Vielmals!
Jetzt hab ich selber immer an einer Lösung getüfftelt und nicht mehr nachgesehen, dass du schon lange was reingestellt hast :-)
Sieht ähnlich aus, hab mir aber nicht soviele Gedanken bezüglich der Geschwindigkeit gemacht.
Für alle:


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.01.2012, 15:57
Beitrag #7

cRio Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Nov 2011

2011
-
EN


Deutschland
RE: Problem mit Look up Table
Noch was:
Wenn ich in meinem Projekt den Memory-Block anlege, kann ich ihn implementieren als: 1)Block Memory & 2) als LookUpTable.
Bei beiden habe ich aber die selben Möglichkeiten, ich kann bei beiden die Größe wählen, den Datentyp festlegen, mit Werten im vorraus initialisieren etc.
Wozu die Auswahl? Wann wählt man was?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.01.2012, 13:02 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2012 13:03 von eb.)
Beitrag #8

eb Offline
LVF-Lernwilliger
***


Beiträge: 292
Registriert seit: Mar 2008

2014
2008
EN

12xxx
Deutschland
RE: Problem mit Look up Table
Hallo cRio

Ich könnte das jetzt ganz genau ausführen, aber ein Klick auf "Help" im Auswahldialog ist wohl der bessere Weg!
Ansonsten könnte ich böse sein und sagen: rtfm, aber das tue ich nicht.

Dennoch hier die Kurzform:
Memory als:
- Block Memory, für größere "Datenhappen", aber min. 1 Takt Lese-Verzug; "RAM"
- Look-Up-Table, für wenig Daten, wenn lesen im selben Takt geschehen soll; "Logik"
- DRAM, nicht auf allen FPGA-Boards verfügbar; "RAM"

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Look-Up Table 1D Express VI cRio 5 7.748 08.11.2011 11:14
Letzter Beitrag: cRio

Gehe zu: