Перейти к содержанию
    

Двунаправленная 32-х битная шина данных

Сейчас увидел строку 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-ой бит так и продолжает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...