Datum: 08.05.2008 14:30
Hallo @ all Ich benutze einen Spartan 3 XC3S400. Ich habe in einem Block Ram ein Histogramm erzeugt. Dies bedeutet wenn in Speicherzelle 500 ein Wert 50 steht, dann ist der Wert 500 50 mal vorgekommen. Jetzt möchte ich von 7 Speicherzellen den Mittelwert erzeugen. Hierzu benötige ich 7 Multiplikationen. Da die Speicherzelle 500 den Wert 500 widerspiegelt und in dieser Speicherzelle der Wert 50 steht muss ich 50*500 rechnen. Das ganze für die Speicherzelle 500 bis 506 Wie multipliziere ich mit einem FPGA? Als Eingänge habe ich std_logic_vectoren
Datum: 08.05.2008 14:35
Schleife, die die RAM-Zellen abtackert und eine Zeile, die multipliziert : tempergebnis <= std_logic_vector (unsigned (vectora) * unsigned (vectorb) + 128); -- addiere 0.5 ergebnis <= tempergebnis (XXX downto 8); -- runden auf das 8. Bit "tempergebnis" ausserhalb des getakteten Prozesses, dann rechnet er in einer Stufe. Das geht meist bis 100 MHz gut.
Datum: 08.05.2008 14:38
"tempergebnis" natürlich mindestens so gross, wie die Summe der Vektoren ergeben kann. Und kümmere Dich nicht um Optimierungen, die Synthese nimmt am Ende aller Rechungen nur die Bits, die absolut gebraucht werden. Die nicht benötigten werden abgeschnitten und der Multiplizierer passend weggekürzt. (Meist besteht er aus mehreren 9x9-Multiplieren).
Datum: 08.05.2008 15:34
Meine beiden Eingänge sind 9 Bit groß. Demnach muss das Ergebnisregister 18 Bit groß sein. Was ich nicht verstehe ist warum du da 128 auf das Ergebnis addierst und dann durch 128 teilst?
Datum: 08.05.2008 16:16
Er addiert 128 und teilt durch 256. Das ist nichts anderes als runden: Runden auf ganze Zahlen kann man, indem man erst 0,5 addiert und dann den Teil hinter dem Komma abschneidet.
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos verwenden, Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [vhdl]VHDL-Code[/vhdl]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel


