evgenz 0 29 мая, 2014 Опубликовано 29 мая, 2014 · Жалоба Сейчас увидел строку if (HCLK'event and HCLK = '0') then if WR='0' AND CSTx(0)='0' AND CS2Tx(0)='1' then WR_ENx(0) <='1'; и понял, что ввел Вас в заблуждение. Вы формируете сигнал ena по переходу из 1 в 0 сигнала WRn. Тогда с записью у Вас должно быть все нормально. WR='0' в условии наверно лишнее Что касается чтения, наверно нет надобности его стробировать клоком, чистое мультиплексирование по адресу process (X50) begin if rising_edge(X50) then if (AD(19 DOWNTO 18) = "00") then DATA_OUT<=DATA_OUT0; end if; по поводу записи я так сделал чтобы по отрицательному фронту выставлялся WR_EN, а сама запись в регистр (т.е. данные снимаются с шину) когда WR_EN<=1 по поводу чтения было вот так DATA_OUT<=DATA_OUT0 WHEN AD(19 DOWNTO 18)="00" ELSE DATA_OUT1 WHEN AD(19 DOWNTO 18)="01" ELSE X"0000000" & "00" & INTR1 & INTR0; как вы предлагаете я тоже делал к сожалению это ситуацию не очень сильно улучшило, как глючит 7-ой бит так и продолжает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться