Gast
#1395964
Hallo,
habe folgenden Code:
function datain_sat1 (
DPIX : std_logic_vector(3 downto 0);
DATAIN : DATAIN_length)
return std_logic is
variable sat1 : std_logic;
begin
if DPIX = "1111" and DATAIN(0) = '1' then
sat1 := '1';
else
if DATAIN = (conv_integer(DPIX)-1 downto 0 => '1') then
sat1 := '1';
else
sat1 := '0';
end if;
end if;
return sat1;
end datain_sat1;
Der läuft und ist mit ISE synthetisierbar. Synopsys dagegen bricht ab.
Synopsys kann mit dem Ausdruck einer variablen im
(conv_integer(DPIX)-1 downto 0
nichts anfangen.
Wie könnte ich das in einer Schleife schreiben?
Ich habe folgendes angefangen:
function datain_sat1 (
DPIX : std_logic_vector(3 downto 0);
DATAIN : DATAIN_length)
return std_logic is
variable sat1 : std_logic;
begin
if DPIX = 0 then
if DATAIN = (DATAIN'range => '1') then
return '1';
else
return '0';
end if;
else
sat1 := '1';
for i in DATAIN'range loop
if i > DPIX then
if DATAIN(i) = '0' then
sat1 := '0';
end if;
end if;
end loop;
end if;
return sat1;
end datain_sat1;
Aber da erkennt man nicht, ob bei einer DPIX von "1000" alle unteren
bits, also DATAIN = 0x00FF sind, und somit auch in Sättigung sind.
Wäre über Hilfe sehr dankbar.
Volker