с фифошкой никогда плотно не работал, но на скорую руку набросал логику фунциклирования - как себе это представляю. в принципе осталось только порты прописать и разобраться с фифо и ее подключить.
зы
переменные в капсе - ин/аут порты, строчные - внутренние переменные
ззы
отцы-профессионалы, поправьте меня если что - сам то я начинающий лошарик

CODE
process (CLK_SPI)
rgs:std_logic_vector(31 downto 0);
ct:std_logic_vector(4 downto 0);
begin
if CLK_SPI'event and CLK_SPI='1' then
if CS_SPI='1' then rgs(31 downto 0)<=rgs(30 downto 0)&IN_SPI after 100 ps;
else rgs<=rgs after 100 ps;
end if;
if CS_SPI='1' then ct<=ct+1 after 100 ps;
else ct<=ct after 100 ps;
end if;
end if;
end process;
data_ready_spi<= '1' when ct="11111" else
'0';
process (CLK_FIFO)
data_ready_fifo, data_ready_fifo_d:std_logic;
begin
if CLK_FIFO'event and CLK_FIFO='1' then
data_ready_fifo<=data_ready_spi after 100 ps;
data_ready_fifo_d<=data_ready_fifo after 100 ps;
if RESET='1' then WREN_FIFO<='0' after 100 ps;
elsif data_ready_fifo='1' and data_ready_fifo_d='0' then WREN_FIFO<='1' after 100 ps;
else WREN_FIFO<=WREN_FIFO after 100 ps;
end if;
DATA_FIFO<=rgs after 100 ps;
end if;
end process;
тут же первый косячок - надо следить за тем чтобы данные всегда были по 32 бита - иначе собьется насчет в счетчике, из-за того что он привязан к синхре SPI, а она появляется уже после того как выставится CS_SPI. в общем стоит вопрос обнуления счетчика
Сообщение отредактировал GAYVER - Apr 6 2015, 07:50
Эскизы прикрепленных изображений