Цитата(Delsian @ Mar 9 2005, 16:07)
На шину данных из FPGA в процессор выдается содержимое различных регистров, это всякие регистры состояний, управления и т.п., т.е. во внутреннюю память они не ложатся. Сейчас это сделано через Case, получился такой себе немаленький мультиплексор, просто пожирающий ячейки FPGA. Хотелось бы как-то сэкономить, вот я и прикидываю, как это красивее описать в VHDL?
Мысль крутится в сторону объединения всех выходов через OR, и неиспользуемые запрещать, чтобы 0 был на выходе. Но при этом надо, чтобы регистры управления продолжали выдавать сигналы... И сэкономлю ли я что-то при этом?
Короче, сумбурно получилось, но возможно кто-то меня понял и знает, как это правильно реализовать?
Можно попробовать мультиплексор на tristate логике:
mux_gen : FOR i IN mux_length-1 DOWNTO 0 GENERATE
data_bus <= mux_in(i*8+7 DOWNTO i*8) WHEN sel_bin(i) = '1' ELSE (OTHERS => 'Z');
END GENERATE mux_gen;