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

Spartan 6 и его внутреннее ФИФО (не дружат) (((

День добрый коллеги. Столкнулся со следующей проблемой при использовании ФИФО 6-го спартана (xc6slx45 - 3fgg676).

 

В спартане использую блоки ФИФО, которые пишутся и читаются на разных частотах. При построении ФИФО визардом применял следующие установки:

1. Indepentend Clocks, Block RAM.

2. First World Fall Through.

 

Частота записи -125, чтения - 118. Проблема заключается в следующем - после того, как заканчиваю запись в ФИФО, выставляю признак окончания записи и начинаю читать данные. Но из ФИФО всегда считывается только 1-ое записанное слово данных. Причем ситуация неустойчивая, зависит от перекомпиляции проекта. Причем проект СИНХРОННЫЙ, все подбито к сеткам (по записи и чтению; асинхронность не признаю в принципе). Я бы может и забил на это дело, перекомпилял бы проект и все.

 

Но вчера понадобилось встроить еще одно ФИФО (для другого интерфейса). При этом частота записи - 20, чтения - 118. И ситуация повторилась вновь, уже на этом ФИФО.

 

Может это быть как-то связано с DCM-модулями спартана (и частота 118 МГц, и 20 МГц формируются с помощью DCM). На самом деле не совсем понятно. Это стандартная практика перевода данных с одной частоты на другую и проблем быть не должно. Более того Virtex-2, Virtex-2 Pro, Virtex-5, Stratix1(2) прекрасно работают. Здесь я что-то не понимаю. Нет у кого каких либо мыслей??

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


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

Может это быть как-то связано с DCM-модулями спартана (и частота 118 МГц, и 20 МГц формируются с помощью DCM). На самом деле не совсем понятно. Это стандартная практика перевода данных с одной частоты на другую и проблем быть не должно. Более того Virtex-2, Virtex-2 Pro, Virtex-5, Stratix1(2) прекрасно работают. Здесь я что-то не понимаю. Нет у кого каких либо мыслей??

Есть мысли: в RAMB(FIFO) в Virtex-6/Spartan-6 что-то (ECC ?) перемудрили, поэтому они работают корректно не во всех возможных режимах, со временем в документации (UG) появились дополнения, описывающие эти проблемы, а в соответствующих Errata появились записи о кривизне. Ряд несуразностей латались программно в ISE/CoreGen'е (поэтому появлялась еще и зависимость от версии среды). Естественно, самые неприятные вещи выползают при независимых тактовых.

Некоторые решения, которые у нас работали в Virtex-5 пришлось несколько переделать, чтобы они заработали в Virtex-6, но т.к. мы с этим долбались более 1.5 лет назад, то уже плохо помнится, где именно и какие были засады - помню только, что сначала они выползли в Errata, а затем и в соответствующие UG'и.

 

P.S. Проверьте, что именно выставил на RAMB CoreGen, и какие есть замечания на эти настройки в UG/Errata. Если Вы пользуетесь старой версией ISE (<12.4), то потребуется её обновить. Также были косяки связанные с игнорированием "ранними" (до 13.2 ? 14.3 ???) версиями ISE некоторых временных путей для RAMB. Timing на RAMB Reset точно до каких-то версий ISE - игнорировался, а какие еще были глюки уже и не упомню.

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


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

Есть мысли: в RAMB(FIFO) в Virtex-6/Spartan-6 что-то (ECC ?) перемудрили, поэтому они работают корректно не во всех возможных режимах, со временем в документации (UG) появились дополнения, описывающие эти проблемы, а в соответствующих Errata появились записи о кривизне. Ряд несуразностей латались программно в ISE/CoreGen'е (поэтому появлялась еще и зависимость от версии среды). Естественно, самые неприятные вещи выползают при независимых тактовых.

Некоторые решения, которые у нас работали в Virtex-5 пришлось несколько переделать, чтобы они заработали в Virtex-6, но т.к. мы с этим долбались более 1.5 лет назад, то уже плохо помнится, где именно и какие были засады - помню только, что сначала они выползли в Errata, а затем и в соответствующие UG'и.

 

P.S. Проверьте, что именно выставил на RAMB CoreGen, и какие есть замечания на эти настройки в UG/Errata. Если Вы пользуетесь старой версией ISE (<12.4), то потребуется её обновить. Также были косяки связанные с игнорированием "ранними" (до 13.2 ? 14.3 ???) версиями ISE некоторых временных путей для RAMB. Timing на RAMB Reset точно до каких-то версий ISE - игнорировался, а какие еще были глюки уже и не упомню.

 

Огромный thanks. А то я уже начал сомневаться. Я сейчас вместо блока ФИФО решил попробовать использовать блоки двухпортового ОЗУ. Конечно придется лепить и следить за двумя счетчиками, но может результат будет другой. Ну и, соответственно, попробую поискать еррату. Да видимо и версию надо обновить. Сижу на 12.3. А эррату искать именно на Spatran 6? Может еще раз "ткнете" куда копать именно.

 

 

И если не сложно, такт сказать вдогонку вопрос. Раньше "сидел" на 9-ке. Потом перешел на 12.3. Вроде как проблем не было до 6-го спартана. Какая версия ISE сейчас с наименьшими замеченными глюками?

 

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


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

Мне в свое время помогло добавить счетчики заполнения ФИФО и по ним смотреть что на самом деле происходит. Правда у меня проект с Microblaze и можно было легко их прочитать. Проблем описываемых Вами ни разу не наблюдал (S6), все проблемы из-за кривой логики. Например read_enable все время был высокий и данные вибрасывались из ФИФО прямо во время записи.

 

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


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

А эррату искать именно на Spatran 6? Может еще раз "ткнете" куда копать именно.

Да, а еще и именно на Ваш Spatran 6. Он же может быть какой-нибудь ES...Spartan-6 Documentation Просмотрите в errata (например en148) раздел Block RAM - может там есть Ваш случай.

 

Также можно порыться в этих мусорниках:

Design Advisory Master Answer Record for Spartan-6 FPGA

Spartan-6 - 12.4 Software Known Issues related to the Spartan-6 FPGA

Spartan-6 - 13.4 Known Issues Related to Spartan-6 FPGA

ISE Design Suite 12 - Known Issues

ISE Design Suite 13 - Known Issues

ISE Design Suite 14 - Known Issues

 

Может быть этот документ немного поможет:

Block Memory Generator v6.3 - Release Notes and Known Issues for ISE Design Suite 13.4

 

И если не сложно, такт сказать вдогонку вопрос. Раньше "сидел" на 9-ке. Потом перешел на 12.3. Вроде как проблем не было до 6-го спартана. Какая версия ISE сейчас с наименьшими замеченными глюками?

Для Virtex-6 мы применяем 12.4, 13.2 и 13.4 - все имеют свои проблемы. 14.1 и 14.2 содержали бооольшие косяки и до выхода 14.3 нами было решено ими не пользоваться.

 

P.S. Virtex-6 всегда был более любибмым продуктом, чем Spartan-6. И, возможно, еще не все глюки официально заявлены для Spartan-6. Для Virtex-6 официально заявлено больше проблем с RAMB: Design Advisory Master Answer Record for Virtex-6 FPGA

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


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

В отличие от virtex в spartan нет аппаратных fifo, и никаких errata быть не может. Если дело в корке, то можно обновить софт, а вообще фифо вещь простая, наверное, у каждого есть любимая реализация фифо на рассыпухе, зачем нужен тормоз в виде логикоре?

 

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


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

зачем нужен тормоз в виде логикоре?

затем что "time to market". У нас например нет любимой реализации, логикоре работает отлично и сразу.

 

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


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

Спасибо откликнувшимся. Вчера вместо одного из ФИФО - того у которого запись на 20 а чтение на 118, использовал двухпортовое ОЗУ (запись по WE, чтение просто по изменению на шине адреса). Несколько раз прошивал ПЛИС все ОК, никаких ошибок не возникало. Единственное отличие - при построении ОЗУ указал когену использовать не BlockRAM, а distributedRAM. Буду теперь играться с первым ФИФО, попробую тоже переделать на двухпортовое ОЗУ. Может компилятор так разведет нормально.

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


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

Хотя 12.3 (вроде) вполне функционален для 6-й серии, может быть, на всякий случай попробовать перейти на ISE 14.3?

 

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


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

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

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

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

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

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

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

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

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

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