VHDL - ruzne vysledky pro (predpokladane) stejnou konstrukci (Xilinx)...
Marek Sembol
hwm.land na gmail.com
Úterý Únor 1 19:00:16 CET 2011
Prosim o pomoc s nasledujicim problemem. Doufam ze fragment meho kodu
bude stacit:) Mam (v ramci jednoho procesu) konstrukci:
case state_reg is
when "0000" =>
if (trigfiltered_reg(0) = '1') then
state_next <= regset(0)(nextStateRange'range);
end if;
when "0001" =>
if (trigfiltered_reg(1) = '1') then
state_next <= regset(1)(nextStateRange'range);
end if;
-- a tak dale a tak dale az po
when "1111" =>
if (trigfiltered_reg(15) = '1') then
state_next <= regset(15)(nextStateRange'range);
end if;
when others => null;
end case;
Vysledek je funkcni, pise mi to max. hodiny 240MHz.
Myslel jsem, ze konstrukce:
if (trigfiltered_reg(CONV_INTEGER(state_reg)) = '1') then
state_next <= regset(CONV_INTEGER(state_reg))(nextStateRange'range);
end if;
bude shodna. Problem je, ze to nageneruje zcela jinak a vysledkem je
max. takt 212MHz
A ted moje otazky:
1) proc?
2) jak to vyresit aniz bych musel rucne psat vsechny ty vetve? (duvod:
chci tu cast obecneji a pocet vetvi (4/8/16/32) ridit pomoci genericu.
Dik za kazdou radu,
Marek
Další informace o konferenci Hw-list