Hallo, vielleicht kann mir jemand von euch einen kleinen Tipp geben. Von einem ADC bekomme ich 16 Bit als Zweierkomplement im std_logic_format. Das Ziel ist es diesen Wert auf 32 Bit signed integer zu vergrößern, was noch nicht so schwierig sein mag. Allerdings muss anschließend mit float - Werten skaliert werden um die 32 Bit anzupassen. Das Ergebnis soll wieder auf Std_logic_vector liegen. Hab mir schon die Kommentare zur float Berechnung durchgelesen und das ganze erscheint mir noch etwas mystisch. Da die ganze Sache auf einem Virtex4 laufen soll, ist es ratsam gleich nen PPC oder MicroPlaze für die Berechnung einzubauen? Eigentlich wollte ich nur die DSPs benutzen mithilfe der IP-Cores. Vielleicht hatte schon jemand von euch ein ähnliches Problem. Vielen Dank für eure Hilfe. Stefan
Hallo Stefan, sind die float Werte fix oder variabel? Wenn fix, dann in welchem Bereich? Ähnliche Problemstellung kenne ich von IIR Filtern (24 Bit ADC-Wert mit den Filterkoeffizienten multiplizieren). Gruss Stanko
Ist die Multiplikation mit Floats unbedingt erforderlich, oder könnte das auch ein Fixed-Point-Wert sein? Soll das Ergebnis hinterher als Floating-Point oder Fixed-Point Wert vorliegen? Ansonsten würde ich empfehlen, den 16Bit-Wert direkt in einen Float-Wert zu konvertieren, und dann die Multiplikation mit einem herkömmlichen Float-Multiplizierer durchzuführen (gibt's alles schon fertig). @Stanko: Floating Point IIR Filter im FPGA? Wo gibt's denn sowas? Edit: der PPC hat auch nicht "per se" eine FPU. Eigentlich sehe ich keinen Grund, den PPC nur für diesen Anwendungsfall herzunehmen.
Der Verwendung von Fixed Werten steht nix im Wege, jedoch müssen diese auch signed sein. Der Wertebereich vom ADC Wert sieht wie folgt aus: ADC (AD73360) Eingangswerte signed 2^16 -> d"-32768" x"8000" - d"32767" x"0FFF"8 ADC Input: der ADC schafft 1,141Vp-p -> 17.41µV/LSB Die Eingangsbeschaltung verringert die Spannung von 6,7Vrms auf die genannten 1,141Vp-p. Die 6,7Vrms stehen nun für Spannungen 0-75V, 0-150V oder 0-300V. Das bedeutet, ich brauche 3 Skalierungen die umschaltbar sind und mit meinem Eingangsdatenstrom multipliziert werden müssen. Als Ergebnis soll ein 32-Bit signed Wert mit einem LSB von 10mV rauskommen. Beispiel(unter idealen Bedingungen): 0-75000mV entsprechen einem Faktor von 2,289 = 75000/(2^16/2) 75000mV -> 6,7Vrms = +9,48Vp -> 570,5mVp -> d"32767" -> x"0FFF" -> Umwandlung in (Fixed) -> Multiplikation mit Skalierung (Fixed) -> x"00001D4C" (10mV/LSB) Die 16Bit haben also ein 2.289V/LSB bei 75V. Die anderen Faktoren sind ~4.6 und ~9.16. Nur fehlt mir noch die Idee des genauen Aufbaus bzw. wie man von Std_Logic_Vector zu Fixed kommt.
Hallo, nutze jetzt ein DSP48 mit Fixed-Point zur Multiplikation. Leider hab ich hier ne komische Fehlermeldung beim starten von Chipscope. Und zwar habe ich mir eine Testumgebung für den IPcore Multiplier V10 geschaffen. In der Simulation funktioniert alles einwandfrei. Beim Einbinden von ChipScope kommt es zu Problemen. Hatte schon mal jemand diese Fehlermeldung bzw. kennt jemand eine Lösung? Vielen Dank ChipScope: ERROR:NgdBuild:76 - File "D:/My Xilinx ChipScope: Projects/Multiplier_v10.0/Test_Multiplier_v10.0/multiplier_v10_0.ngc" cannot ChipScope: be merged into block "multiplier_v10_0_test (TYPE="multiplier_v10_0") ChipScope: because one or more pins on the block, including pin "p<31>", were not found ChipScope: in the file. Please make sure that all pins on the instantiated component ChipScope: match pins in the lower-level design block (irrespective of case). If there ChipScope: are bussed pins on this block, make sure that the upper-level and lower-level ChipScope: netlists use the same bus-naming convention. ChipScope: ChipScope: Partition Implementation Status ChipScope: ------------------------------- ChipScope: ChipScope: No Partitions were found in this design. ChipScope: ChipScope: ------------------------------- ChipScope: ChipScope: NGCBUILD Design Results Summary: ChipScope: Number of errors: 1 ChipScope: Number of warnings: 0 ChipScope: ChipScope: ChipScope: One or more errors were found during NGCBUILD. No NGC file will be written. ChipScope: ChipScope: Writing NGCBUILD log file "D:/My Xilinx ChipScope: Projects/Multiplier_v10.0/Test_Multiplier_v10.0/Toplevel_cs.blc"... ERROR:ChipScope: Could not execute NGCBUILD to create D:\My Xilinx Projects\Multiplier_v10.0\Test_Multiplier_v10.0\Toplevel_cs.ngc
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.