signed * konstante -> falsche bitbreite

Gast #755556
Lesenswert?
• ▲
▼
Hi!

Also es geht um folgendes beispiel:
signal U : signed( 9 downto 0); --10bit breit
signal V : signed( 4 downto 0); -- 5bit breit
signal W : signed(50 downto 0); --51bit breit
...
W <= (U*V)*2;
---> ERROR: resultierende breite ist 100bit (klar, er macht 50x50bit 
mult intern)

ich hab mir jetzt geholfen indem ich es so umschreibe:
variable UV_tmp : signed(49 downto 0);
..
UV_tmp := U*V; --ist jetzt 5*10 = 50 bit
W <= UV_TMP & '0'; --und jetzt 51 bit


Da ich variablen aber nicht mag und es bloed zu lesen
ist such ich nach ner möglichkeit dem synthesizer zu sagen dass
ich da keine 50x50 mult brauche.

Jemand ne Idee ?
Die zahlen sind nur ein beispiel, konkret geht es zb auch um *1024 oder 
so.
Das muss doch auch anders gehen...

Achja, ist Xilinx Webpack 8.2i

Gruss,
vhdl_noob
Gast #755601
Lesenswert?
• ▲
▼
mist sorry hab beim beispiel aufschreiben murks gebaut, neuer versuch

signal U : signed(24 downto 0); --25bit breit
signal V : signed(24 downto 0); --25bit breit
signal W : signed(50 downto 0); --51bit breit
...
W <= (U*V)*2;
---> ERROR: resultierende breite ist 100bit (klar, er macht 50x50bit
mult intern)

ich hab mir jetzt geholfen indem ich es so umschreibe:
variable UV_tmp : signed(49 downto 0);
..
UV_tmp := U*V; --ist jetzt 25+25 = 50 bit
W <= UV_TMP & '0'; --und jetzt 51 bit

so, hoffe jetzt stimmts...

Der originalcode ist zu kompliziert um ihn zu posten 
(matrizenrechnungen)
Gast #757076
Lesenswert?
• ▲
▼
stimmt das geht ja direkt so .. d'oh...

Naja hat sich eh erledigt mittlerweile, die berechnungen wurden zu gross 
am
ende (>50bit integers).
Nun hab ich es ganz nach float (24bit) umgeschrieben.
Ist zwar nen ganz schönes gemurkse mit dem coregen und per hand 
"verkabeln"
aber dafür läuft es laut PAR jetzt mit bis zu 88MHz und belegt
momentan "nur" 80% des fpgas. Hoffe ich bekomm den rest noch rein g

thnx

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.