ovs_pavel 0 30 ноября, 2012 Опубликовано 30 ноября, 2012 · Жалоба День добрый коллеги. Столкнулся со следующей проблемой при использовании ФИФО 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) прекрасно работают. Здесь я что-то не понимаю. Нет у кого каких либо мыслей?? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 30 ноября, 2012 Опубликовано 30 ноября, 2012 · Жалоба Может это быть как-то связано с 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 - игнорировался, а какие еще были глюки уже и не упомню. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ovs_pavel 0 30 ноября, 2012 Опубликовано 30 ноября, 2012 · Жалоба Есть мысли: в 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 сейчас с наименьшими замеченными глюками? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 30 ноября, 2012 Опубликовано 30 ноября, 2012 · Жалоба Мне в свое время помогло добавить счетчики заполнения ФИФО и по ним смотреть что на самом деле происходит. Правда у меня проект с Microblaze и можно было легко их прочитать. Проблем описываемых Вами ни разу не наблюдал (S6), все проблемы из-за кривой логики. Например read_enable все время был высокий и данные вибрасывались из ФИФО прямо во время записи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 30 ноября, 2012 Опубликовано 30 ноября, 2012 · Жалоба А эррату искать именно на 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dmitry-tomsk 0 30 ноября, 2012 Опубликовано 30 ноября, 2012 · Жалоба В отличие от virtex в spartan нет аппаратных fifo, и никаких errata быть не может. Если дело в корке, то можно обновить софт, а вообще фифо вещь простая, наверное, у каждого есть любимая реализация фифо на рассыпухе, зачем нужен тормоз в виде логикоре? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 30 ноября, 2012 Опубликовано 30 ноября, 2012 · Жалоба зачем нужен тормоз в виде логикоре? затем что "time to market". У нас например нет любимой реализации, логикоре работает отлично и сразу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ovs_pavel 0 1 декабря, 2012 Опубликовано 1 декабря, 2012 · Жалоба Спасибо откликнувшимся. Вчера вместо одного из ФИФО - того у которого запись на 20 а чтение на 118, использовал двухпортовое ОЗУ (запись по WE, чтение просто по изменению на шине адреса). Несколько раз прошивал ПЛИС все ОК, никаких ошибок не возникало. Единственное отличие - при построении ОЗУ указал когену использовать не BlockRAM, а distributedRAM. Буду теперь играться с первым ФИФО, попробую тоже переделать на двухпортовое ОЗУ. Может компилятор так разведет нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flood 13 1 декабря, 2012 Опубликовано 1 декабря, 2012 · Жалоба Хотя 12.3 (вроде) вполне функционален для 6-й серии, может быть, на всякий случай попробовать перейти на ISE 14.3? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться