Почитайте мой предыдущий пост - я его немного поправил. Если устройство на которое пойдут 24 бита не предполагает управления потоком (например, не м.б. занято), то FIFO не нужно ИМХО. Тут же самый обычный конвейер - каждые 3 такта (только со сдвижкой на 1 такт) будете получать на выходе слово.
В общем, как-то так (сбросы если где-то нужны - сами добавьте, и порядок байт в слове проверьте)
Код
process (CLK)
begin
if (CLK'event and CLK = '1') then
if (IN_WE = '1') then
RA <= IN;
RB <= RA;
RC <= RB;
CNT <= CNT + 1;
end if;
OUT_WE <= CNT(1) and not CNT(0);
end if;
end process;
process (CLK)
begin
if (CLK'event and CLK = '1') then
if (OUT_WE = '1') then
R_OUT <= RA & RB & RC;
end if;
end if;
end process;
CLK_OUT <= not OUT_WE;