Делал интерфейс с Блэкфином на Спартан 3. Использовал синхронный вариант + ARDY. Максимально быструю времянку получить цели не было. Что там на плате было не знаю - ваял удаленно, платы в глаза не видел. Претензий от заказчика не было.
В коде из Вашего крайнего поста не совсем понятно, почему данные защелкиваются по спаду WE (или это инвертированный сигнал AWEn?). Также было бы нелишним занести (if CS='0') then в тело (if falling_edge(WE) then) тогда это будет разрешение записи в регистр, а у Вас в терминах ПЛИС это получается непонятно что (весь код не приведен).
Если асинхронно, я бы делал так
Код
process(AWEn)
begin
if (AWEn'event and AWEn = '1') then
if (CS='0' and A='0' and D(15 downto 12) = "0101") then
Y<=D(7 downto 0);
end if;
...
end if;
end process;
Только при желаемых времянках (Tsetup=1clk, Twrite=1 clk, Thold =0 clk) нужно учитывать ИМХО, что например задержки от пинов CS, A, D(15:12) до триггеров должны быть не более 7,5 + (7,5 - 6) + 0,8 ns. Табличка с параметрами:
Эскизы прикрепленных изображений