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

Модуль BIDIR

Нужен модуль, чтобы в зависимости от сигнала DIR линия транслировалась с A на B или наоборот.

Вот так записал :

module BIDIR
(
input DIR, inA, inB,
output A, B 
);
assign  A =  DIR ? 1'bZ : inB;
assign  B = !DIR ? 1'bZ : inA;
endmodule

в RTL выглядит так:

1.thumb.jpg.6357f80424303582bde7484b40df1c37.jpg

на блок-схеме подключил так:

2.thumb.jpg.a3cc8670a598aeaebd2c4ca86bc12efd.jpg

Всё работает.

Но почему я не могу так записать ? :

module BIDIR
(
input DIR,
output A, B 
);
assign  A =  DIR ? 1'bZ : B;
assign  B = !DIR ? 1'bZ : A;
endmodule

на такое квартус ругается :

Error (13072): The tri-state buffer "BIDIR:inst_BIDIR|B" directly or indirectly feeds itself.
 

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


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

сию задумано чтоб внутри плисы работало аль с физическими выводами плисы ?

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


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

5 минут назад, Alex77 сказал:

сию задумано чтоб внутри плисы работало аль с физическими выводами плисы ?

с физическими выводами

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


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

1 час назад, Leka сказал:

"output" надо заменить на "inout"

Да, с inout всё работает как надо.

Всем спасибо!

Изменено пользователем Freibier

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


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

А как задать констрейны для такого случая?

Т.е. когда клока вообще никакого нет.

К примеру, хочу чтобы состояние пина A появлялось на пине В и наоборот не более чем через 5 нс.

Вот так записал :

set_max_delay -from [get_ports {A}] -to [get_ports {B}] 5.0

set_max_delay -from [get_ports {B}] -to [get_ports {A}] 5.0

это правильно?

 

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


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

10 hours ago, Freibier said:

это правильно?

сигнал с пина (физического вывода микросхемы) должен дойти внутрь до логики, связанной с этим пином, потом - внутри ПЛИС - до логики другого пина, и уже из нее выйти наружу ПЛИС - на вых. пин.

Я бы сначала глянул в даташит на предмет ого - возможно ли в принципе ввести внутрь ПЛИС за 2,5 нс сигнал...

 

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


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

Я не про конкретное время прохождения сигнала спрашиваю.

Меня интересует сам принцип записи констрейна.

И надо ли указывать два set_max_delay (для A to B и для B to A), или достаточно одного ?

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


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

Я бы писал оба констрейна.
Такие констрейны я использовал для указания максимально допустимых задержек внутри ПЛИС - проект работал нормально. 

Думаю, что и для пинов такое подойдет. После сборки сможете проверить этот путь - какая получилась задержка на самом деле.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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