к ПЛИС подключена SRAM
нужно организовать запись в SRAM через ПЛИС.
при этом адрес на память выставляет сама ПЛИС.
сделано вот так:
Код
SRAM_D<=Port_D; --линии данных порта ПЛИС соединяем с линиями данных SRAM
SRAM_A<=Address; --линии адреса SRAM соединены со счётчиком ПЛИС
SRAM_CS<=Port_CS; --линия выбора SRAM соединена с линией порта ПЛИС
SRAM_OE<='1'; --чтение не используется
SRAM0_WE<=Port_WE; --линия разрешения записи SRAM соединена с линией порта ПЛИС
process(Port_WE) --увеличение адреса на 1
begin
if falling_edge(Port_WE) then
if Port_CS='0' then
if Address=1000 then
Address<=(others => '0');
else
Address<=Address+1;
end if;
end if;
end if;
end process;
SRAM_A<=Address; --линии адреса SRAM соединены со счётчиком ПЛИС
SRAM_CS<=Port_CS; --линия выбора SRAM соединена с линией порта ПЛИС
SRAM_OE<='1'; --чтение не используется
SRAM0_WE<=Port_WE; --линия разрешения записи SRAM соединена с линией порта ПЛИС
process(Port_WE) --увеличение адреса на 1
begin
if falling_edge(Port_WE) then
if Port_CS='0' then
if Address=1000 then
Address<=(others => '0');
else
Address<=Address+1;
end if;
end if;
end if;
end process;
По времянкам.
Tsetup=20нс
Thold=20нс
Twrite=20нс
Тем не менее, в силу каких-то обстоятельств(возможно когда на линии данных 0xFFFF) ИНОГДА происходит пропуск увеличения адреса - он как бы тот же.
Прошу покритиковать и обсудить код. А также причины, вызвавшие сей эффект