Bar 0 24 ноября, 2005 Опубликовано 24 ноября, 2005 · Жалоба Есть код на верилоге module (c,en,q) input c, en; output q; reg q; always @(posedge c or posedge q) begin if (q) q=0; else if (en) q=1; end endmodule Если на момент прихода сигнала "с" en=1 вырабатывается скачок на q. Вопрос в следующем, почему при синтезе в synplify получаю ошибку: The logic for q does not match a standard flip-flop, а при синтезе в Quartus и Leonardo синтезируется нормально? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба Есть код на верилоге module (c,en,q) input c, en; output q; reg q; always @(posedge c or posedge q) begin if (q) q=0; else if (en) q=1; end endmodule подумать и посмотреть стандарт на верилог, ИМХО налицо ОХ....Я ошибка удачи :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 64 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба Есть код на верилоге module (c,en,q) input c, en; output q; reg q; always @(posedge c or posedge q) begin if (q) q=0; else if (en) q=1; end endmodule Если на момент прихода сигнала "с" en=1 вырабатывается скачок на q. И какой длительности должен быть скачок? :) Вопрос в следующем, почему при синтезе в synplify получаю ошибку: The logic for q does not match a standard flip-flop, а при синтезе в Quartus и Leonardo синтезируется нормально? Синплифай прав. Насчет Леонардо не скажу, а Квартус может и синтезитует, но вряд ли нормально. На предупреждения посмотрите? Не может быть, чтоб он это молча проглатывал. В Вашем случае, похоже, требуется формирование импульса длительностью один период тактовой частоты. Тогда код должен выглядеть где-то так: module ( input c, input en output reg q ); always @(posedge c) begin if (q) q <= 0; else if (en) q <= 1; end endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bar 0 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба Квартус в резульатате синтеза получает следующую схему: регистр: у него на Д еденица на С - клок на Енабле - ен причем выход регистра направлен на асинхронный сброс регистра. Если бы я делал в схематиксе я бы сделал точно так же. Я понимаю что асинхронные схемы не всегда хорошо, и что длительность импульса видимо будет зависеть от разводки, но тем не менее такая же схема возможна. dxp, нет скачок длительностью в один импульс не интересует, интересует именно синтез такой схемы в synplify. Может дело в каких-то конкретных настройках synplify? Maxplus тоже нормально просинтезировал без вских варнингов, построил временную диаграмму со скачком на q. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба А какой смысл этой схемы что в схематике, что в тексте. Действительно, Quartus это синтезирует. В результате Вы получаете на q пички в интервале en длительностью времени срабатывания триггера по асинхронному clr. Даже если опустить тот факт, что это категорически неприемлемо для программируемой логики, логического смысла в этом тоже нет. Сигнал на выходе q эквивалентен клоку c в интервале en. Молодец этот synplify. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bar 0 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба sazh, поясните пожалуйста почему это неприемлимо для программируемой логики? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 64 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба Квартус в резульатате синтеза получает следующую схему: регистр: у него на Д еденица на С - клок на Енабле - ен причем выход регистра направлен на асинхронный сброс регистра. Если бы я делал в схематиксе я бы сделал точно так же. Я понимаю что асинхронные схемы не всегда хорошо, и что длительность импульса видимо будет зависеть от разводки, но тем не менее такая же схема возможна. dxp, нет скачок длительностью в один импульс не интересует, интересует именно синтез такой схемы в synplify. Может дело в каких-то конкретных настройках synplify? Maxplus тоже нормально просинтезировал без вских варнингов, построил временную диаграмму со скачком на q. Так у Вас тут асинхронщина в полный рост! :) Не, так нельзя делать в ПЛИС. Только синхронный дизайн. sazh, поясните пожалуйста почему это неприемлимо для программируемой логики? хоть не ко мне вопрос, но перекликается. При использовании программируемой логики с таким подходом Вы получите неконтолируемые задержки и длительности. Они будут "плавать" в зависисмости от конкретного значения напряжения питания, текущей температуры, партии микросхем. ПЛИС специально спроектированы для синхронного дизайна. Там для этого есть специальные ресурсы - в частности, отдельные слои для распространения тактовых сигналов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба TO BAR Одним словом не ответить. Имеет смысл читать книги разных авторов. А подход один. Сначало функциональное моделирование. Потом временное. При сравнении должны получить одинаковые времянки (в интервале глобального клока). У Вас при функциональном моделировании на выходе сигнала не будет. Отсюда простая рекомендация. Стремиться к одноклоковой (глобальной) синхронизации, к синхронным схемам. Формировать все сигналы в разах глобального клока (кратными его периоду). В противном случае глубоко изучать рекомендации по использованию того или иного пакета. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bar 0 25 ноября, 2005 Опубликовано 25 ноября, 2005 · Жалоба sazh, dxp, спасибо за разъяснения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться