Перейти к содержанию
    

Ребят я новичок в FPGA программировании. Немного не понимаю как происходит процесс проектирования устройств. Допустим я написал кусок на VHDL. Моделирую схему в Aldec'e. Моделирование проходит успешно. Отлаживаю на железе, проект падает при работе на высокой частоте(на низкой работает нормально). Приходится выводить контрольные точки схемы на логический анализатор и разбираться в чем причина.

 

Как вы проектируете, отлаживаете схемы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отлаживаю на железе, проект падает при работе на высокой частоте(на низкой работает нормально).

Я в квартусе сразу моделирую на частоте железа! И в устройсве все работает даже на большей частоте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

C каким ПЛИСом работаете?

Схема синхронная?

 

Обычно в средах проектирования после компиляции выдается отчет с "частотными" характеристиками полученной прошивки.

Еще можно указывать, что синтезировать прошивку надо с учетом ограничений (см. Timing-Driven Synthesis).

Еще можно анализатору задавать характеристики быстродействия и после компиляции будут выводится сообщения одовлетворены они или нет.

Я не встречал, что если анализ прошел успешно, то в железе не работает (разве только когда используются preliminary библиотеки).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отлаживаю на железе

зря. смотрите отчеты по таймингам (критические пути и пр.), а моделируйте в Aldec. ошибку все равно исправлять в коде.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Схемы синхронные, работаю с Virtex4FX. Вообще проект занимает половину кристалла. К нему дописываю дополнительный компонент, моделирую его в Aldec'e, потом вставляю в EDK. Такая методика вобщем. Где в aldec'е можно задать ограничение на частоту?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Схемы синхронные, работаю с Virtex4FX. Вообще проект занимает половину кристалла. К нему дописываю дополнительный компонент, моделирую его в Aldec'e, потом вставляю в EDK. Такая методика вобщем. Где в aldec'е можно задать ограничение на частоту?

Именно про EDK не скажу (работаю с голым ISE), но методика, в общем, одна и та же.

Есть *.ucf файл, он содержит User Constraint'ы (различные ограничения, наложенные на проект, в т.ч. и на частоту для clock'ов). Данные в этом файле можно править как руками, так и рядом программ: Constarint Editor (преимущественно для временных ограничений), PACE/Plan Ahead (для ограничений на размещение, например расположение ножек) и пр.

Описание User Constraint’ов находятся в файле cgd.pdf.

 

Вам необходимо задать частоту всех входных clock'ов ПЛИС. Если Вы получаете при помощи DLL/PLL дочерние clock'и, то ISE сама рассчитает их параметры из заданных входных частот через параметры DLL/PLL.

 

При Place&Route ISE старается выполнить все ограничения, если что-то не может быть выполнено возникают соответствующие предупреждения. Временной отчёт (*.twx) обычно просматривается при помощи Timing Analiser.

 

Также, в файле xst.pdf можно найти описание synthesis constarint'ов, используемых при синтезе языкового описания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Именно про EDK не скажу (работаю с голым ISE), но методика, в общем, одна и та же.

Есть *.ucf файл, он содержит User Constraint'ы (различные ограничения, наложенные на проект, в т.ч. и на частоту для clock'ов). Данные в этом файле можно править как руками, так и рядом программ: Constarint Editor (преимущественно для временных ограничений), PACE/Plan Ahead (для ограничений на размещение, например расположение ножек) и пр.

Описание User Constraint’ов находятся в файле cgd.pdf.

 

Вам необходимо задать частоту всех входных clock'ов ПЛИС. Если Вы получаете при помощи DLL/PLL дочерние clock'и, то ISE сама рассчитает их параметры из заданных входных частот через параметры DLL/PLL.

 

При Place&Route ISE старается выполнить все ограничения, если что-то не может быть выполнено возникают соответствующие предупреждения. Временной отчёт (*.twx) обычно просматривается при помощи Timing Analiser.

 

Также, в файле xst.pdf можно найти описание synthesis constarint'ов, используемых при синтезе языкового описания.

 

То есть констрейны надо писать только на входные частоты? Например у мя в ПЛИС входят 5 частот: 2 для тактирования MGT блока, 2 для тактирования EMAC'а и 5 частота подается на clock generator. А на дочерние от clock generator'а не надо писать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а Вы клоки на специальные входы ПЛИС задаете или куда придется???

Частоты жестко поданы на спец входы. Не я же плату проектировал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть констрейны надо писать только на входные частоты?

Да, именно частоты (или периоды) необходимо задать только у входных clock'ов (лучше назначать на связь, относящуюся к положительной половинке входной ножки). И стараться ни в коем случае не задавать их на внутренние линии.

 

Например у мя в ПЛИС входят 5 частот: 2 для тактирования MGT блока, 2 для тактирования EMAC'а и 5 частота подается на clock generator. А на дочерние от clock generator'а не надо писать?

Да в этом случае Вам необходимо описать 5 разных constraint для входных частот (я так понял clock generator - это нечто (PLL/DLL и пр.) внутри ПЛИС).

 

Однако, коли частот пять, то должны появиться и cross clock domain переходы - вот для этих переходов понадобится еще наложить некоторое количество дополнительных constraint - по одному на каждый переход на каждое направление перехода.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за совет!

 

Clock Generator это действительно PLL и DCM блоки. Насчет входных частот сомнений нет.

 

То есть нужно 2 констрейна на каждый cross clock domain переход?

 

Вообще, как я понимаю после задания констрейнов, timing analyzer будет выдавать ошибку если проект не проходит по частоте? Среда сама может какнить соптимизировать проект чтобы проект прошел по частоте или он тупо выкинет ошибку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть нужно 2 констрейна на каждый cross clock domain переход?

Максимум - 2, но ведь не всегда надо переходить в обе стороны, иногда используются и односторонние переходы - всё зависит от конкретной схемотехники.

 

Вообще, как я понимаю после задания констрейнов, timing analyzer будет выдавать ошибку если проект не проходит по частоте? Среда сама может какнить соптимизировать проект чтобы проект прошел по частоте или он тупо выкинет ошибку?

Если быть более точным, то timing analyzer в ISE c 9.1 по 11.5 (в остальных не помню) выдаёт только warning: some constraints are not met. При компиляции среда как-то раскладывает элементы и пытается это развести, затем оценивает, с какими constraints проблемы и старается итерационно эти проблемы устранить.

 

В параметрах генерации Post-P&R Static Timing Report есть поле Report Unconstrained Paths, впишите туда 250 - и увидите 250 путей не имеющих constraint'ов. Так Вы увидите, на что именно Вы забыли наложить ограничения; далеко не на всё, что там указано, имеет смысл накладывать ограничения... но ознакомиться с этим списком просто необходимо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ценную информацию, буду рад если подскажите где еще можно почитать что-нибудь по этой теме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще вопрос. Что такое Chipscope и в каких случаях им надо пользоваться?

Его придумали чтобы не надо было

выводить контрольные точки схемы на логический анализатор

Как пользоваться - см. оригинальную документацию или гугл.

На русском есть немного здесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...