реклама на сайте
подробности

 
 
> Не работает отлаженный код, При малейшем изменении проекта
TABKP
сообщение May 19 2011, 13:51
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130



Исходные данные:
- ПЛИС Xilinx Virtex4, среда ISE 12.2
- мини проект состоит из 8-ми больших FIR - фильтров и небольшой программы на vhdl по обработке выходных данных фильтров. Фильтры занимают процентов так 70 ресурсов ПЛИС.
- работоспособность этого мини проекта полностью проверена в моделсиме
- непосредственно при загрузке в ПЛИС этот проект не заработал. При помощи логического анализатора и многократного переписывания кода (код изначально без ошибок - просто разными способами одно и тоже делается) удалось добиться стабильной правильной работы мини проекта.

Суть проблемы:
- при установке моего проекта в более крупный проект - он опять перестает работать
- более того - часть сигналов выведены на контрольные контакты платы и при удалении любого из этих сигналов из проекта с последующей перекомпиляцией - проект снова перестает работать.
- при отладке есть ощущение что ходишь по кругу - исправишь что-то в одном куске коде, перестает правильно работать другой кусок - и так до бесконечности

Подозреваю что все это результат неких "гонок" сигналов, каких-то проблем синхронизации и пр. в результате значительного заполнения ресурсов ПЛИС. Код полностью работоспособен, ибо при уменьшении количества фильтров проект начинает стабильно работать.

Вопросы к форумчанам:
1. Из-за чего возможно такое поведение проекта
2. Возможно ли победить данную проблему путем настроек компилятора
3. Возможно ли сохранить конфигурацию аппаратных средств ПЛИС после единственной работоспособной компиляции проекта и вставить ее уже в более крупный проект.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Shtirlits
сообщение May 26 2011, 20:47
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Важные ключевые слова crossclock и metastability.

На самом деле, кроме множества клоков и возможной метастабильности регистров при пересечении данными их границ, есть не менее популярный момент - reset.
Если он асинхронный, то его обычно не учитывает timing analyzer, предполагается, что первый фронт клока случается через достаточное время после снятия сброса. Аргументированно доказать, что это всегда так способен не каждый разработчик, даже если его явно об этом попросить.
Проблема может проясниться даже на одноклоковой схеме, если исходный сигнал reset пропустить через регистр, а уже потом раздать всем (через глобальную сеть и через что попало будет по разному интересно).
В целом этот регистр не обязателен, но без него нужно не забыть описать reset в констрейнах.

Это была ассоциация на "20-30 раз включения питания". Удачи.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 17:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01373 секунд с 7
ELECTRONIX ©2004-2016