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

Сбои в ПЛИС при большом количестве 1

В процессе работы над одним проектом выявилась следующая проблема:

произвожу ввод данных из LINK-канала ADSP2106x, ПЛИС - ACEX1K50, питание - в

норме. Ввод производится в блок ECB с использованием Альтеровской мегафункции altdpram в синхронном режиме. Пробовал разные варианты управления - завешивал WE на постоянное разрешение, давал один длинный импульс на пачку записываемых данных, давал пачку коротких импульсов с импульсом синхронизации записи в середине. При вводе набора данных с большим количеством единиц происходит пропуск комбинации FF, вместо нее запоминается предыдущее число ( получается два одинаковых числа ). Как можно победить сбои?

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


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

Сталкивался с чемто подобным, :(

Какая рабочая частота?

Частота поступления четверок бит - 40 МГц, они защелкиваются в промежуточных

D-триггерах, один раз за четыре прихода ( 10 МГц ) - генерируем импульс клока для записи в память. Длительность клока - примерно 8 нс.

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


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

Скорее всего проблемы с синхронизацией.

1. Подзадержать clk до относительно данных ( на несколько наносекунд).

2. сделать дополнительное защелкивание данных во входных буферах ( IOB)

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


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

Скорее всего проблемы с синхронизацией.

1. Подзадержать clk до относительно данных ( на несколько наносекунд).

2. сделать дополнительное защелкивание данных во входных буферах ( IOB)

А причем здесь все единицы? Ведь именно когда их большой поток ( т.е. нибблы ( это четыре разряда данных ) идут в виде F с прослойками 1 нолика в одном из разрядов ) и возникает эффект дублирования именно ниббла с ноликом вместо ниббла F ). При этом количество принятых нибблов - правильное.

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


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

А причем здесь все единицы? Ведь именно когда их большой поток ( т.е. нибблы ( это четыре разряда данных )  идут в виде F с  прослойками 1 нолика в одном из разрядов )  и возникает эффект дублирования именно ниббла с ноликом вместо ниббла F ). При этом количество принятых нибблов - правильное.

В поставленном вопросе обратный эффект не наблюдается, т.е. когда большой поток нулей и есть прослойка 1 единицы, то она не дублируется.( этот случай не упомянут). Значит в системе имеет место некая несимметричность на шине данных, т.е. время перехода 1->0 не равно времени перехода 0->1. Фронт (или срез) clk ( по которому происходит защелкивание инфы) получается то раньше то позже смены состояния шины данных (а это и есть несинхронность ), в результате чего и появляется ошибка. Поэтому:

1. Подзадержать clk до относительно данных ( на несколько наносекунд).

2. сделать дополнительное защелкивание данных во входных буферах ( IOB)

3. Проинвертировать clk.

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


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

Надеюсь, путь земли между DSP и FPGA короткий и широкий? И еще проверьте, все ли в порядке с контактом у ножек земли рядом с портом.

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


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

Земля и питание разведены в отдельных слоях, питание - 3,3 В, чистое.

Источник питания нагружен на 3 А при номинале 5А.

Строб двигал - толку нет. Как указать, чтобы триггера размещались

в блоках IO?

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


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

Как указать, чтобы триггера размещались

в блоках IO?

Назначьте опции Fast Input Registers или Fast Output Registers для нужных входов или выходов соответственно через Assignment Editor.

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


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

“Ввод производится в блок ECB с использованием Альтеровской мегафункции altdpram в синхронном режиме. Частота поступления четверок бит - 40 МГц, они защелкиваются в промежуточных

D-триггерах, один раз за четыре прихода ( 10 МГц ) - генерируем импульс клока для записи в память. Длительность клока - примерно 8 нс. Строб двигал - толку нет. Как указать, чтобы триггера размещались в блоках IO?”

 

Судя по этим строчкам в проекте надо копать. Использовать altsyncram, altdpram используется для обратной совместимости со старыми проектами (причина конечно не в этом). Как Вам удалось 8 нс получить? Значит работа на задержках. Несинхронность. Многоклоковая синхронизация. Посмотрите рапорт временного анализатора. Неужели ничего в красном цвете нет по временам установки и удержания сигналов управления и данных. И размещения регистров в блоках I/O ничего не даст. Что Вам +- 3 нс при наличии строба сопровождения. Что мешает работать на частоте 40 мгц с периодом 25 нс. Ацех это потянет.

 

A logic option that implements an output register in an I/O cell that has a fast, direct connection to an I/O pin. Turning on the Fast Output Register option can help maximize I/O timing performance, for example, by permitting fast clock-to-output times. Turning this option off for a particular signal prevents the Fitter from implementing the signal automatically in an I/O cell.

This option is ignored if it is applied to anything other than a register or an output or bidirectional pin fed by a register. This option can be set in the Assignment Editor (Assignments menu). This option is available for ACEX 1K, APEX 20K, APEX 20KC, APEX 20KE, APEX II, Cyclone, Cyclone II, Excalibur, FLEX 10K, FLEX 10KA, FLEX 10KE, HardCopy Stratix, MAX II, Mercury, Stratix, Stratix GX, and Stratix II devices

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


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

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

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

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

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

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

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

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

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

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