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

Quartus SignalTap

При синтезе одного и того же кода в Quartus'е с разными наборами сигналов для наблюдения в сигналтапе реализуемое устройство ведет себя по-разному. С чем бы это могло быть связано? :glare:

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


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

Все правильно-квартус скорее всего оптимизирует. А оптимизирует из-за того, что какой то сигнал он посчитал ненужным. А когда ты этот сигнал включаешь в сигналтап-он его убрать не может

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


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

Однако логика работы схемы не должна ведь меняться в зависимости от того есть сигнал в списке сигналтапа или нет (а она меняется :( ). К тому же в сигналтап я добавляю сигналы после первого синтеза, то есть только те сигналы, которые не выкинуты за счет оптимизации.

 

Я использую Quartus 5.0. Может, стоит попробовать использовать какую-нибудь версию поновее?

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


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

Наблюдал некоторую нестабильность работы в точках синхронизации двух клоковых доменов.

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

Вылечилось введением синхронизации сигналов, как и должно было быть изначально.

Вдобавок, для забора данных в сигналтап приводил их все к клоку, на котором он работает.

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


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

Однако логика работы схемы не должна ведь меняться в зависимости от того есть сигнал в списке сигналтапа или нет (а она меняется :( ). К тому же в сигналтап я добавляю сигналы после первого синтеза, то есть только те сигналы, которые не выкинуты за счет оптимизации.

А что видно в timing report? Требования по частоте для проекта с задействованным Signal Tap выполняются?

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


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

Однако логика работы схемы не должна ведь меняться в зависимости от того есть сигнал в списке сигналтапа или нет (а она меняется :( ). К тому же в сигналтап я добавляю сигналы после первого синтеза, то есть только те сигналы, которые не выкинуты за счет оптимизации.

А что видно в timing report? Требования по частоте для проекта с задействованным Signal Tap выполняются?

 

Требования по частоте с SignalTap'ом выполняются. Хотя, может, требования не совсем корректны. контроллер работает с двумя шинами: PCI (33MHz) и USB(48MHz), требования по частоте: Default required fmax 60MHz, синтезируется где-то на 70MHz

 

Вдобавок, для забора данных в сигналтап приводил их все к клоку, на котором он работает.

 

В моем случае не получится все сигналтаповские сигналы привести к одному клоку, т.к. в сигналтапе смотрю сигналы с разных шин, частоты которых непропорциональны.

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


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

1. Сталкивался с различием в работе проекта при использовании Signal Tap и без него (чем-то похоже на Вашу ситуацию). Оправдал это тем что те ячейки, которые добавляет SignalTap в проект чего-то нехорошее делали с временными задержками. Более подробно копаться в проблеме не было времени. Правда частоты у меня повыше были - 133 МГц.

 

2. Раскройте поподробнее, в чем там различия проявляются. Какая чатота захвата сигналов SignalTap'а?

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


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

2. Раскройте поподробнее, в чем там различия проявляются. Какая чатота захвата сигналов SignalTap'а?

 

Частота захвата равна частоте шины USB, то есть 48MHz. А различия в работе заключаются в том, что один и тот же запрос на шине USB с сигналтапом не проходит, а без сигналтапа проходит. То есть с сигналтапом в ответ на запрос устройство постоянно отвечает NACK, а в версии без сигналтапа выдает запрашиваемые данные.

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


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

Частота захвата равна частоте шины USB, то есть 48MHz. А различия в работе заключаются в том, что один и тот же запрос на шине USB с сигналтапом не проходит, а без сигналтапа проходит. То есть с сигналтапом в ответ на запрос устройство постоянно отвечает NACK, а в версии без сигналтапа выдает запрашиваемые данные

 

У вас получились 2 асинхронных относительно друг друга процесса, и чтобы их соединить, надо пропустить через 2 триггера, а остальное у вас просто различие в разводке Альтерой.

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


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

У вас получились 2 асинхронных относительно друг друга процесса, и чтобы их соединить, надо пропустить через 2 триггера, а остальное у вас просто различие в разводке Альтерой.

 

Понятно, что нужно два триггера. Все управляющие сигналы проходят через два триггера, а данные пишутся в FIFO

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


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

У вас получились 2 асинхронных относительно друг друга процесса, и чтобы их соединить, надо пропустить через 2 триггера, а остальное у вас просто различие в разводке Альтерой.


Понятно, что нужно два триггера. Все управляющие сигналы проходят через два триггера, а данные пишутся в FIFO

Значит у вас что то на пределе, у меня тоже получалось при работе с памятью на разных платах по разному работало. Советую прогнать адвизором и сделать по нему все установки, мне помогало.

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


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

При синтезе одного и того же кода в Quartus'е с разными наборами сигналов для наблюдения в сигналтапе реализуемое устройство ведет себя по-разному. С чем бы это могло быть связано? :glare:

 

 

Бывает такое иногда. Стоит внимательно изучить входы/выходы на предмет отсутствия «висящих». У меня к примеру один раз такое было на ethernet-е, когда на неподключённой лапе ПЛИС-а обнаружилась неизвестно откуда взявшаяся помеха, которая умудрялась наводиться на вход. При прошивке с сигнал-тапом помеха пропадала и всё работало… Помогло соответственно прямое указание '0' на эту лапку, заработало идеально.

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


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

У нас был случай (правда на устаревшем ныне APEX20KE) что проект нормально работал на 120-150МГц без использования SignalTap, а при его добавлении частота в 100МГц уже давала непонятные результаты (даже помехами это сложно было назвать). Собственно это вполне логично объясняется тем, что под SignalTap необходимо выделять ресурсы ПЛИС. И увеличивая количество сигналов и глубину просмотра, увеличиваем требуемое количество ресурсов.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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