Hallo in die Runde,
ich versuche schon seit einiger Zeit Xilinx bei der Synthese zu
überreden einen std_logic (kein vector) mit einer Zahl zu
multiplizieren. Ziel ist es, die Zahl abhängig vom Zustand der Leitung
mit 0 oder 1 zu multiplizieren.
Folgendes hab ich probiert:
1 | library IEEE;
|
2 | use IEEE.STD_LOGIC_1164.ALL;
|
3 | use IEEE.NUMERIC_STD.ALL;
|
4 |
|
5 | ...
|
6 | ...
|
7 |
|
8 | process (clk) begin
|
9 | if clk'event and clk='1'then
|
10 | ergebnis <= to_integer(unsigned( datain(20) ))*3;
|
11 | end if;
|
12 | end process;
|
Da aber das Casting zu unsigned nur klappt wenn es ein vector ist, dacht
ich mir, ich hänge noch eine Null davor.
ergebnis <= to_integer(unsigned( '0' & datain(20) ))*3;
Nur dann kommt der folgender Fehler:
ERROR:HDLParsers:3329 - "..." Line ... Expression in type conversion to
unsigned has 4 possible definitions in this scope, for example, SIGNED
and UNSIGNED.
Gibt es in diese Richtung irgendeine Lösung? Wenn nicht, werd ich die
Berechnung wohl in zwei Takte aufteilen müssen und alle Leitungen mit
einem if abfragen :(.
Grüße und ein schönes Wochenende noch
Bolle