Freibier 3 11 ноября, 2021 Опубликовано 11 ноября, 2021 · Жалоба Нужен модуль, чтобы в зависимости от сигнала 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 выглядит так: на блок-схеме подключил так: Всё работает. Но почему я не могу так записать ? : 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex77 4 11 ноября, 2021 Опубликовано 11 ноября, 2021 · Жалоба сию задумано чтоб внутри плисы работало аль с физическими выводами плисы ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 11 ноября, 2021 Опубликовано 11 ноября, 2021 · Жалоба 26 minutes ago, Freibier said: Но почему я не могу так записать ? "output" надо заменить на "inout" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 3 11 ноября, 2021 Опубликовано 11 ноября, 2021 · Жалоба 5 минут назад, Alex77 сказал: сию задумано чтоб внутри плисы работало аль с физическими выводами плисы ? с физическими выводами Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 0 11 ноября, 2021 Опубликовано 11 ноября, 2021 · Жалоба С "inout" будет синтезировать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex77 4 11 ноября, 2021 Опубликовано 11 ноября, 2021 · Жалоба module BIDIR( input DIR, inout A, B ); assign A = DIR ? 1'bZ : B; assign B = !DIR ? 1'bZ : A; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 3 11 ноября, 2021 Опубликовано 11 ноября, 2021 (изменено) · Жалоба 1 час назад, Leka сказал: "output" надо заменить на "inout" Да, с inout всё работает как надо. Всем спасибо! Изменено 11 ноября, 2021 пользователем Freibier Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 3 24 ноября, 2021 Опубликовано 24 ноября, 2021 · Жалоба А как задать констрейны для такого случая? Т.е. когда клока вообще никакого нет. К примеру, хочу чтобы состояние пина 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 это правильно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 25 ноября, 2021 Опубликовано 25 ноября, 2021 · Жалоба 10 hours ago, Freibier said: это правильно? сигнал с пина (физического вывода микросхемы) должен дойти внутрь до логики, связанной с этим пином, потом - внутри ПЛИС - до логики другого пина, и уже из нее выйти наружу ПЛИС - на вых. пин. Я бы сначала глянул в даташит на предмет ого - возможно ли в принципе ввести внутрь ПЛИС за 2,5 нс сигнал... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 3 25 ноября, 2021 Опубликовано 25 ноября, 2021 · Жалоба Я не про конкретное время прохождения сигнала спрашиваю. Меня интересует сам принцип записи констрейна. И надо ли указывать два set_max_delay (для A to B и для B to A), или достаточно одного ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 25 ноября, 2021 Опубликовано 25 ноября, 2021 · Жалоба Я бы писал оба констрейна. Такие констрейны я использовал для указания максимально допустимых задержек внутри ПЛИС - проект работал нормально. Думаю, что и для пинов такое подойдет. После сборки сможете проверить этот путь - какая получилась задержка на самом деле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться