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