Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: помогите с
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
skilful
Всем привет.

Сделал самый простой 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
Цитата
Квартус немного переименовал название моего счетчика, но найти его можно.

Я думаю, именно в этом дело. Удалось найти не все триггеры счётчика, последний - не тот smile.gif
У меня такое неоднократно было, боролся выведением сигналов на виртуальные выводы.
skilful
как ими пользоваться - этими виртуальными пинами? И что это такое - виртуальные пины?
Главное чтобы еще Синтезатор (в моем случае Presicion Syntesys) не оптимизировал отладочные сигналы

Опишите технологию, пожалуйста smile.gif
vadimuzzz
в Assignment Editore нужным пинам выставить опцию "Virtual Pin" в положение "On"
skilful
глюк
DSIoffe
Выводим нужный сигнал на вывод.
Щёлкаем по нему правой кнопкой мыши.
Из выпавшего меню выбираем Locate и далее Locate in Assignement Editor. Откроется этот самый Assignement Editor.
Даём двойной щелчок левой кнопкой мыши по пустому полю в столбце Assignement Name рядом с именем вывода. Вылетит здоровенная простыня с именами разных параметров. В самом низу будет Virtual Pin. Выбрать его. А потом щёлкнуть по полю правее (Value) и выбрать On.
Эти виртуальные выводы проходят нетронутыми и непереименованными через весь синтез.
dxp
Нам помогала директива компилятора noprune.

(* noprune *) bit [7:0] counter;

Если даже счетчик нигде не задействован, с таким объявлением синтезатор его не выбрасывал, и счетчик был доступен в сигналтапе. В частности, заводили retry counter в канале связи, который внутри проекта не использовался, и наблюдали за количеством ретрайев в окне логического анализатора. Собсно, для подобных целей и предназначена эта директива.
DSIoffe
dxp, спасибо большое! Quartus Handbook, раздел Noprune Synthesis Attribute/Preserve Fan-out Free Register Node. Этого знания очень не хватало!
skilful
так, если я синтезирую в Presicion Syntesys и соответственно ему подсовываю vhdl файлы, то как бы сделать так чтобы синтезатор не оптимизировал?
Может быть в vhdl есть возможность объявлять сигнал как volatile ? smile.gif
Или же нужно просто нужные сигналы как порт сделать?
DSIoffe
Найдите в Quartus Handbook раздел Noprune Synthesis Attribute/Preserve Fan-out Free Register Node. Там прописан синтаксис для VHDL и двух сортов Verilog. Я смотрел в хэндбуках для версий 9.1 и 10, в обоих есть.
skilful
Спасибо, тезка smile.gif
bark
а для AHDL есть аналог такой дериктивы?
KoshV
Цитата
Выводим нужный сигнал на вывод.
Щёлкаем по нему правой кнопкой мыши.
Из выпавшего меню выбираем Locate и далее Locate in Assignement Editor. Откроется этот самый Assignement Editor.
Даём двойной щелчок левой кнопкой мыши по пустому полю в столбце Assignement Name рядом с именем вывода. Вылетит здоровенная простыня с именами разных параметров. В самом низу будет Virtual Pin. Выбрать его. А потом щёлкнуть по полю правее (Value) и выбрать On.
Эти виртуальные выводы проходят нетронутыми и непереименованными через весь синтез.

Мне необходимо в сигналтабе смотреть некоторые сигналы. Для удобства я их вывожу на топ-левел как пины. Но в пинпланере не назначаю им никакого номера пина. Можно ли в таком случае сделать их virtual? Что-то не получается. Или это в корне не верный подход?

Пишу на verilog. Может можно при объявлении модуля их сразу как-то обозвать virtual pin?
DSIoffe
Не получается сделать вывод виртуальным? А какое-нибудь сообщение об ошибке появляется?
Konst_777
Цитата(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
SignalTap от языка не зависит, он принимает имена сигналов.
На "топ-левел как пины" по-любому не надо, особенно, если не хватает свободных выводов, для этого придуманы виртуальные выводы. А вот без виртуальных выводов не всегда удаётся обойтись, если оптимизатор намухлюет с именами.
А лучше всего, по-моему, пользоваться советом DXP. Правда, я ещё не успел его попробовать sm.gif
vadimuzzz
Цитата(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, никаких мегафункций не надо.
KoshV
Virtual Pin назначить удалось. Однако в сигналтапе они видны в списке all pins, однако в списке virtual pins их нет. Чё так?
jok40
Всем привет!

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

Тема такая: нужно посмотреть 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
Можете привести картинки AssignmentEditor'a и PinPlaner'a?
jokolemene
Могу. Вот две картинки.
PS: заметил особенность - если к этим виртуальным ножкам прицепить "неоптимизированные" сигналы - всё нормально синтезируется без выдачи подобной ошибки.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.