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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren