sazh 3 25 октября, 2016 Опубликовано 25 октября, 2016 · Жалоба Хм, вроде казалось все просто, но выскочила глупая проблема... Документация вроде говорит, что явно указанная lcell не должна автоматически убираться Quartus'ом. Соответственно, я добавил в код (VHDL) нужный мне lcell, однако при компиляции было сказано, что он Synthesized away... Ладно, решил просто отключить такую оптимизацию для всего проекта в целом. Для начала, очередной раз обнаружил, что 16-ый Quartus изменился в отношении интерфейса - соответствующие настройки нашлись не в Settings/Analysis & Syntesis, а в Settings/Compiler settings. Но это ладно - главное, что там уже стоит Removes redundant logic cells - Off ! Что дальше с этим делать - ума не приложу :( [update] - реально какая-то фигня... Попробовал слегка по другому - сделал просто сигнал и добавил к нему атрибуты: attribute keep : boolean; attribute keep of Delay12 : signal is true; Сама Altera такой пример приводит, а оно почему-то все равно Synthesized away... По схеме у Вас RS триггер нарисован. И используется явно в противоречии с таблицей истинности. Примитив dff еще никто не отменял. Поставьте 9 Квартус. Его будет достаточно под такое творчество. Если нужно реализовать на задержках из строба короткий импульс, окунуться так сказать в прошлое, такое вот предлагали. lcell_xor.v Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 26 октября, 2016 Опубликовано 26 октября, 2016 · Жалоба Потому что у вас формируется два сигнала из одного. Да вроде делаю в точности так, как увидел во многих практически идентичных примерах... Поставьте 9 Квартус. В чем именно поведение старого Quartus'а в данном отношении будет отличаться ? Я специально смотрел документацию именно к новому, и там вроде ничего не изменилось... В любом случае, нужная мне серия FPGA поддерживается только в относительно новых версиях. А вообще сейчас уже даже интересно не просто решение конкретной задачи (можно извернуться и другими способами), а хочется понять, почему оно работает не так, как написано ??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 26 октября, 2016 Опубликовано 26 октября, 2016 · Жалоба Я 16-й (Prime) Quartus поставил, потыкался в него. Не понравилось, удалил. Вернулся к 13.1-му. Как по мне, самый удобный и красивый, несмотря на номер. :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 26 октября, 2016 Опубликовано 26 октября, 2016 · Жалоба Я 16-й (Prime) Quartus поставил, потыкался в него. Не понравилось, удалил. Вернулся к 13.1-му. Как по мне, самый удобный и красивый, несмотря на номер. :rolleyes: RTL просмотрщик там ужас. То-ли я не разобрался где эта хитрая галочка, то ли её действительно нет. Но когда он один файл описания раскидывает на несколько страниц, да ещё и все регистры раскидывает по одному, а не группирует, отпадает всякое желание его включать (RTL просмоторщик). А иногда полезно глянуть что там насинтезировал Quartus..... Вот в 15 Quartus'е всё нормально с этим А вот так показывает 13 Quartus..... Все описание разбил на страницы: Да ещё и элементы, которые образуют единую группу он "разбил". В итоге получаются огромные RTL модели которые сложно просматривать: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 26 октября, 2016 Опубликовано 26 октября, 2016 · Жалоба Да вроде делаю в точности так, как увидел во многих практически идентичных примерах... Смысл в том, чтобы добавить ненужный сигнал, который не позволит Квартусу упростить схему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 27 октября, 2016 Опубликовано 27 октября, 2016 · Жалоба Смысл в том, чтобы добавить ненужный сигнал, который не позволит Квартусу упростить схему. Я понимаю, что вопрос к Altera, а не к Вам :), но ведь у них написано: An LCELL buffer always consumes one logic cell. It is not removed from a project during logic synthesis. Так какого фига она убирается ??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 27 октября, 2016 Опубликовано 27 октября, 2016 · Жалоба Убирается, если никак не участвует в выходных сигналах с ПЛИС. Если ничего выдавать не надо, то и делать незачем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 27 октября, 2016 Опубликовано 27 октября, 2016 · Жалоба Убирается, если никак не участвует в выходных сигналах с ПЛИС. Если ничего выдавать не надо, то и делать незачем. Что-то не понимаю... Напрямую, естественно, не выдает, но в конце концов сигнал, в котором, в т.ч., принимала участие задержка на этой lcell, выходит наружу. Похоже, я не понимаю тут что-то совсем принципиальное :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maksimp 0 28 октября, 2016 Опубликовано 28 октября, 2016 · Жалоба Settings/Analysis & Syntesis/More Analysis там галки Removes redundant LCELL и Registers в положение Off Подозреваю что это не то. Нужно поставить Ignore LCELL Buffers в положение off, наверное это в том же меню. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 28 октября, 2016 Опубликовано 28 октября, 2016 · Жалоба Подозреваю что это не то. Нужно поставить Ignore LCELL Buffers в положение off, наверное это в том же меню. Эта опция по умолчанию в OFF, и у меня она так и оставлена... Итак, посыпаю голову пеплом и прошу прощения у всех за то, что компасировал мозги... При внимательном изучении относящегося к проблеме куска дизайна был обнаружен утерянный not (довольно далеко от непосредственно ячейки задержки), который действительно приводил к тому, что кусочек схемы, где используется задержка, все время генерил 0 !!! Как назло, этот 0 не приводил к полной остановке остальных частей схемы, поэтому Quartus больше никаких подозрительных сообщений не выводил (типа того, что пин застрял в одном положении). Блин - не нужно было программировать в 12 ночи после бокала вина :) После исправления lcell остается на месте, все вроде выглядит так, как и требовалось... Еще раз спасибо всем откликнувшимся ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 30 октября, 2016 Опубликовано 30 октября, 2016 · Жалоба Я понимаю, что вопрос к Altera, а не к Вам :), но ведь у них написано: An LCELL buffer always consumes one logic cell. It is not removed from a project during logic synthesis. Так какого фига она убирается ??? Да кто ж его знает. Вот у меня был случай: делаешь кольцевой генератор (несколько lcell и инвертор) - выбрасывает. Но если вместо инвертора поставить nand2 - то все в порядке. Я пришел к выводу что схема должна иметь смысл - т.е. таблицу истинности с разными значениями, иначе всё это выбрасывается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DuHast 0 30 октября, 2016 Опубликовано 30 октября, 2016 · Жалоба Если бы у меня была лишняя PLL, я бы так и сделал - даже не спрашивая :) У Вас их вообще нет, или нет лишних? Сомневаюсь, что Вы задействуете все выходы во всех PLL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 3 ноября, 2016 Опубликовано 3 ноября, 2016 · Жалоба Да кто ж его знает. Собственно говоря, я уже раньше написал, в чем у меня была ошибка. А вообще костыль даже работает :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться