Полная версия этой страницы:
помогите с
skilful
Sep 15 2010, 05:29
Всем привет.
Сделал самый простой 11 битный счетчик в FPGA Advantage. Логика счетчика простая - если он достигает максимального значения (специально указал его равным "11111111111"), то инвертирую состояния выходного пина ПЛИСины.
Синтезирую в Presicion Syntesys. Файл синтеза подкидываю в Quartus 9.0 и делаю разводку.
Далее хочу посмотреть как работает мой счетчик в железке с помощью Signal Tap.
Выбираю тип сигналов Signal Tap: Post Fitting. Квартус немного переименовал название моего счетчика, но найти его можно.
На времянке, выдаваемой Signal Tap, младший 0-ой бит счетчика все время "молчит", старшие же разряды изменяются как надо.
Сначала думал синтезатор "оптимизирует", но в RTL нарисован нормальный счетчик.
Вывел счетчик на пины ПЛИСины и счетчик стал нормально работать (в Signal Tap указал "обстреливать" Pins: all).
Что я не так делаю?
В Signal Tap есть куча типов сигналов аля Post Fitting, Pre-Syntesis и прочее. Что выбирать, чтобы наверняка?
И можно ли избежать переименовывания сигналов квартусом?
DSIoffe
Sep 15 2010, 06:34
Цитата
Квартус немного переименовал название моего счетчика, но найти его можно.
Я думаю, именно в этом дело. Удалось найти не все триггеры счётчика, последний - не тот

У меня такое неоднократно было, боролся выведением сигналов на виртуальные выводы.
skilful
Sep 15 2010, 07:54
как ими пользоваться - этими виртуальными пинами? И что это такое - виртуальные пины?
Главное чтобы еще Синтезатор (в моем случае Presicion Syntesys) не оптимизировал отладочные сигналы
Опишите технологию, пожалуйста
vadimuzzz
Sep 15 2010, 08:18
в Assignment Editore нужным пинам выставить опцию "Virtual Pin" в положение "On"
skilful
Sep 15 2010, 08:30
глюк
DSIoffe
Sep 15 2010, 09:40
Выводим нужный сигнал на вывод.
Щёлкаем по нему правой кнопкой мыши.
Из выпавшего меню выбираем Locate и далее Locate in Assignement Editor. Откроется этот самый Assignement Editor.
Даём двойной щелчок левой кнопкой мыши по пустому полю в столбце Assignement Name рядом с именем вывода. Вылетит здоровенная простыня с именами разных параметров. В самом низу будет Virtual Pin. Выбрать его. А потом щёлкнуть по полю правее (Value) и выбрать On.
Эти виртуальные выводы проходят нетронутыми и непереименованными через весь синтез.
Нам помогала директива компилятора noprune.
(* noprune *) bit [7:0] counter;
Если даже счетчик нигде не задействован, с таким объявлением синтезатор его не выбрасывал, и счетчик был доступен в сигналтапе. В частности, заводили retry counter в канале связи, который внутри проекта не использовался, и наблюдали за количеством ретрайев в окне логического анализатора. Собсно, для подобных целей и предназначена эта директива.
DSIoffe
Sep 15 2010, 12:21
dxp, спасибо большое! Quartus Handbook, раздел Noprune Synthesis Attribute/Preserve Fan-out Free Register Node. Этого знания очень не хватало!
skilful
Sep 16 2010, 04:38
так, если я синтезирую в Presicion Syntesys и соответственно ему подсовываю vhdl файлы, то как бы сделать так чтобы синтезатор не оптимизировал?
Может быть в vhdl есть возможность объявлять сигнал как volatile ?

Или же нужно просто нужные сигналы как порт сделать?
DSIoffe
Sep 16 2010, 07:05
Найдите в Quartus Handbook раздел Noprune Synthesis Attribute/Preserve Fan-out Free Register Node. Там прописан синтаксис для VHDL и двух сортов Verilog. Я смотрел в хэндбуках для версий 9.1 и 10, в обоих есть.
skilful
Sep 16 2010, 07:36
Спасибо, тезка
а для AHDL есть аналог такой дериктивы?
Цитата
Выводим нужный сигнал на вывод.
Щёлкаем по нему правой кнопкой мыши.
Из выпавшего меню выбираем Locate и далее Locate in Assignement Editor. Откроется этот самый Assignement Editor.
Даём двойной щелчок левой кнопкой мыши по пустому полю в столбце Assignement Name рядом с именем вывода. Вылетит здоровенная простыня с именами разных параметров. В самом низу будет Virtual Pin. Выбрать его. А потом щёлкнуть по полю правее (Value) и выбрать On.
Эти виртуальные выводы проходят нетронутыми и непереименованными через весь синтез.
Мне необходимо в сигналтабе смотреть некоторые сигналы. Для удобства я их вывожу на топ-левел как пины. Но в пинпланере не назначаю им никакого номера пина. Можно ли в таком случае сделать их virtual? Что-то не получается. Или это в корне не верный подход?
Пишу на verilog. Может можно при объявлении модуля их сразу как-то обозвать virtual pin?
DSIoffe
Dec 29 2010, 12:20
Не получается сделать вывод виртуальным? А какое-нибудь сообщение об ошибке появляется?
Konst_777
Dec 29 2010, 15:16
Цитата(KoshV @ Dec 29 2010, 17:29)

Мне необходимо в сигналтабе смотреть некоторые сигналы. Для удобства я их вывожу на топ-левел как пины...
У меня скорее вопрос, чем ответ: если использовать графический редактор для создания проекта, то можно на любом уровне вложенности в проект компонента подключить к его выводам SignalTap, используя команду контекстного меню insert->symbol->жмем кнопку "MegaWizard Plug-In Manager..."->жмем кнопку "Next" в диалоговом окне "MegaWizard Plug-In Manager[page 1]"->раскрываем ветку "JTAG-accessible extensions" и выбираем "SignalTap II Logic Analyzer", задаем для него имя и нажимаем кнопку "Next"->дальше конфигурируем SignalTap...
То есть, если использовать мегафункцию SignalTap, то не нужно выводить сигналы на "топ-левел как пины". А вот как, используя MegaWizard Plug-In Manager, подключить мегафункцию SignalTap в проект, написанный на Verilog-е? Кто-нибудь знает, как это сделать?
DSIoffe
Dec 29 2010, 18:50
SignalTap от языка не зависит, он принимает имена сигналов.
На "топ-левел как пины" по-любому не надо, особенно, если не хватает свободных выводов, для этого придуманы виртуальные выводы. А вот без виртуальных выводов не всегда удаётся обойтись, если оптимизатор намухлюет с именами.
А лучше всего, по-моему, пользоваться советом DXP. Правда, я ещё не успел его попробовать
vadimuzzz
Dec 29 2010, 23:58
Цитата(Konst_777 @ Dec 30 2010, 00:16)

То есть, если использовать мегафункцию SignalTap, то не нужно выводить сигналы на "топ-левел как пины". А вот как, используя MegaWizard Plug-In Manager, подключить мегафункцию SignalTap в проект, написанный на Verilog-е? Кто-нибудь знает, как это сделать?
просто зайти в меню Assignments/Settings/SignalTap II Logic Analyzer и поставить галочку Enable SignalTap II Logic Analyzer, никаких мегафункций не надо.
Virtual Pin назначить удалось. Однако в сигналтапе они видны в списке all pins, однако в списке virtual pins их нет. Чё так?
Всем привет!
Поднимаю эту тему снова, так как имею похожую задачу и есть проблема.
Тема такая: нужно посмотреть SignalTap-ом кое-какие сигналы на комбинаторике, которые синтезатор "оптимизировал". Создаю виртуальные ножки так, как рекомендовал
DSIoffe вот здесь и подключаю к ним нужные сигналы.
Но при компиляции Quartus ругается на эти ножки так, как будто они не виртуальные.
Текст ошибки такой:
Код
Error (176205): Can't place 8 pins with 2.5 V I/O standard because Fitter has only 0 such free pins available for general purpose I/O placement
Не пойму - в чём проблема и как её решить?
billidean
Aug 26 2014, 09:02
Можете привести картинки AssignmentEditor'a и PinPlaner'a?
jokolemene
Aug 27 2014, 09:52
Могу. Вот две картинки.
PS: заметил особенность - если к этим виртуальным ножкам прицепить "неоптимизированные" сигналы - всё нормально синтезируется без выдачи подобной ошибки.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.