|
Spartan 6 и его внутреннее ФИФО (не дружат) ((( |
|
|
|
Nov 30 2012, 05:37
|
Местный
  
Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249

|
День добрый коллеги. Столкнулся со следующей проблемой при использовании ФИФО 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) прекрасно работают. Здесь я что-то не понимаю. Нет у кого каких либо мыслей??
|
|
|
|
|
 |
Ответов
(1 - 8)
|
Nov 30 2012, 10:28
|
Злополезный
   
Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188

|
Цитата(ovs_pavel @ Nov 30 2012, 09:37)  Может это быть как-то связано с 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 - игнорировался, а какие еще были глюки уже и не упомню.
|
|
|
|
|
Nov 30 2012, 10:51
|
Местный
  
Группа: Свой
Сообщений: 275
Регистрация: 19-05-06
Пользователь №: 17 249

|
Цитата(Boris_TS @ Nov 30 2012, 13:28)  Есть мысли: в 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 сейчас с наименьшими замеченными глюками?
|
|
|
|
|
Nov 30 2012, 20:52
|
Местный
  
Группа: Свой
Сообщений: 203
Регистрация: 12-11-10
Из: Poland
Пользователь №: 60 842

|
Цитата(dmitry-tomsk @ Nov 30 2012, 21:24)  зачем нужен тормоз в виде логикоре? затем что "time to market". У нас например нет любимой реализации, логикоре работает отлично и сразу.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|