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

Как симулировать двунаправленную шину в Modelsim?

Здравствуйте.

Есть двунаправленная шина данных inout [7:0] SD. Как определить SD в тесте в модельсиме. Если SD я определяю как wire или tri, то

при присваивании SD значения, ругается компиляция, если SD определить как reg, то ругается симуляция. Или шину данных при отладке нужно разделить на

input и output?.

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


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

У меня шина I2C объявлена как inout. Никто ни на что не ругается, прекрасно моделируется.

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


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

У меня тоже шина inout в quartus прекрасно синтезируется. А в модельсиме в тестбенче не знаю как с этой шиной работать.

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


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

Есть двунаправленная шина данных inout [7:0] SD. Как определить SD в тесте в модельсиме. Если SD я определяю как wire или tri, то

при присваивании SD значения, ругается компиляция, если SD определить как reg, то ругается симуляция.

wire - никто не должен ругаться.

Вот заготовка-болванка - все грузится успешно.

 

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


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

Спасибо. У меня ругается когда в тестбенче я присваиваю что то шине данных:

 module test;
        bit [9:0] SA;
        wire [7:0] SD;
        ...
    
   mainmodole mod (
               .SA(SA),
               .SD(SD), // здесь SD inout типа
               ...
          );

initial begin
#100 SA = 8'b11001010;
#100 SD = 8'b01011001; // Здесь Модельсим ругается
...
#100 $stop;
end
...

 

Вот что то типа того.

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


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

Aa, понял. Нужно так:

 

inout SD_io;

reg enable;
reg SD_Data;
wire SD_io;

assign SD_io = (enable) ? SD_Data : 1'bz;

 

Все операции проделывайте над SD_Data и enable.

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


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

Вот спасибо. А то и так и сяк пробовал и в инете что то не нашел.

 

Не. Модельсим все равно ругается. Я не понял, это в модуле или в тестбенче так.

reg enable;
reg SD_Data;
wire SD_io;

assign SD_io = (enable) ? SD_Data : 1'bz;

если в модуле, то у меня везде с шиной данных(inout) таким образом. Видимо придется пока разделить на input SD_input и output SD_output. В симуляторе квартуса работает все нормально.

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


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

тогда если хотите, присоединяйте весь нерабочий проект (или часть, но законченную(!) чтобы можно было сразу запустить)

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


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

Все Джеймс, большое спасибо, заработало. Я просто не досмотрел у вас assign в assign SD_io = (enable) ? SD_Data : 1'bz;. Все четко заработало.

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


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

Так что в итоге должно быть в модуле и в тестбенче написано, кто может объяснить?
Как в тестбенче подавать что-то на inout, если modelsim просит тип wire, а ему можно только через assign присваивать, соответственно, если уже присвоил сигнал на IO модуля, то не сможешь присвоить ничего в другом месте?

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


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

17 minutes ago, ater_effigies said:

Так что в итоге должно быть в модуле и в тестбенче написано

Должно быть написано одинаково, только управление Z-буферами инверсное.

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


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

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

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

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

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

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

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

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

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

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