ReedCat 0 5 августа, 2008 Опубликовано 5 августа, 2008 · Жалоба ReedCat спасибо. :) В FIFO данные записываются одним процессом с одной синхронизирующей частотой, а считываются другим процессом с другой синхронизирующей частотой. Причем эти частоты меняются. было бы замечательно если тот процесс который заполнил FIFo поставил флажок "1", а процесс который считывает, считал и убрал флажок в "0". :05: И желательно ПЛИС завести на этих синхронизирующих частотах, на какой нибудь из них. - такая задача. Уууххх, ещё раз... Асинхронное FIFO в полный рост... Берите примеры реализации и вдумчиво читайте... Учтите, что если там обнаружится непонятный кусок кода, то это не значит, что он ненужный... "Врубайтесь" до тех пор, пока не поймёте, а зачем он именно там и зачем сделано именно так. Больше ничего посоветовать не могу, на пальцах это не объяснить, разбирайтесь (именно разбирайтесь, а не копируйте!) с примерами... Эта задачка - чуть ли не тест на все возможные грабли, её хорошо давать студентам, чтобы выяснить, понимают ли они что такое FPGA или так "мимо проходили" :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 6 августа, 2008 Опубликовано 6 августа, 2008 · Жалоба Это простой пример. Я пишу чтото вроде асинхронного FIFO, там такая вещь очень пригодилась бы. Да и сигналы выводятся на одну ножку в разное время, один на спаде фронта, другой на подъеме- т.е. вроде конфликта быть не должно. FIFO, двупортовую память и др. Вы коректно, можете не описать, эта тема обсуждалась уже на форуме. Лучше воспользуйтесь для его создания программой CoreGenerator для Xilinx или каким-то визардом если пишете в другом САПРе Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 6 августа, 2008 Опубликовано 6 августа, 2008 · Жалоба FIFO, двупортовую память и др. Вы коректно не опишете, эта тема обсуждалась уже на форуме.Это с чего Вы взяли? Невозможно описать разве что память шириной не 2^x, а 2^x+2 (+1) и двухпортовую ROM (да и то в более свежих версиях софта от Xilinx это может быть пофиксено). А все остальное пожалуйста. Я, например, с успехом пользуюсь самописными параметризуемыми (глубина, ширина, тип памяти) модулями синхронного и асинхронного FIFO. И Вам советую... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 6 августа, 2008 Опубликовано 6 августа, 2008 · Жалоба Это с чего Вы взяли? Невозможно описать разве что память шириной не 2^x, а 2^x+2 (+1) и двухпортовую ROM (да и то в более свежих версиях софта от Xilinx это может быть пофиксено). А все остальное пожалуйста. Я, например, с успехом пользуюсь самописными параметризуемыми (глубина, ширина, тип памяти) модулями синхронного и асинхронного FIFO. И Вам советую... Может быть, я погорячился. Но смущает это: http://electronix.ru/forum/index.php?showt...8&hl=Memory http://electronix.ru/forum/index.php?showt...675&hl=FIFO Кстати когда-то я пытался, сделать FIFO ручками с помощью рекомендаций Xilinx, но так и не получилось и где-то я читал (не помню) на форуме и мне старшие товарищи порекомендовали использовать все таки готовое! Может поделитесь опытом http://electronix.ru/forum/index.php?showtopic=5242&hl=# У Xilinx'а есть несколько xapp'ов, посвященных реализации синхронных (один клок на чтение и на запись) и асинхронных (разные клоки) FIFO на блочной и распределенной памяти, смотрите на их сайте (там есть и исходники для разных вариантов). Флаги лучше применять регистровые - положительно скажется на частоте. Кстати, исходники там довольно корявые (если их творчески переработать с использованием generate и констант в разрядности шин - они получаются более компактными и их легче модифицировать для разных задач). К сожалению с глубиной (особенно для асинхронных FIFO) все не так просто, поскольку для генерации флагов там применяются счетчики Грея. как это "переработали с использованием generate и констант в разрядности шин" на языке VHDL? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 6 августа, 2008 Опубликовано 6 августа, 2008 · Жалоба Смущает это: http://electronix.ru/forum/index.php?showt...8&hl=Memory Про двухпортовую ROM я писал, что есть проблемы у синтезатора Xilinx, однако другие-то справляются (Synplify например) - значит рано или поздно и XST начнет корректно работать (особенно если Xilinx'у на мозги подавить). Но в FIFO Вам двухпортовая ROM на кой ляд? Кстати когда-то я пытался, сделать FIFO ручками с помощью рекомендаций Xilinx, но так и не получилось и где-то я читал (не помню) на форуме и мне старшие товарищи порекомендовали использовать все таки готовое! Может поделитесь опытом.Да там собственно исходники есть и они вполне корректно работают - применял раньше, до того как параметризовал. Вот ссылки: http://www.xilinx.com/bvdocs/appnotes/xapp258.zip http://www.xilinx.com/bvdocs/appnotes/xapp691.zip (это новое, тут по идее уже параметризованное должно быть, не смотрел) как это "переработали с использованием generate и констант в разрядности шин" на языке VHDL? Вот секция generic: generic ( USE_RAM_SYLE : STRING := "distributed"; -- Возможные значения: "distributed", "block" USE_REG_OUT : STRING := "yes"; -- Возможные значения: "yes", "no" ADDR_WIDTH : INTEGER := 4; -- Ширина адресной шины DATA_WIDTH : INTEGER := 8 -- Ширина шины данных ); При вставке примитивов использовал generate. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 6 августа, 2008 Опубликовано 6 августа, 2008 · Жалоба Но в FIFO Вам двухпортовая ROM на кой ляд? Я так понимаю, что двухпортовая ROM и является основным элементом, на основе(вокруг) которого все строится :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 6 августа, 2008 Опубликовано 6 августа, 2008 · Жалоба Я так понимаю, что двухпортовая ROM и является основным элементом, на основе(вокруг) которого все строится :) ROM, RAM... Какая разница?.. С синтезом двухпортовой RAM всё нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nuts 0 12 августа, 2008 Опубликовано 12 августа, 2008 · Жалоба Здраствуйте. Скажите пожалуста, в PLIS архитектуры CPLD ( Xilinx семейство XC9500). Данная PLIS выполнена по технологии FLASH, имеет не менее 10 тыс. циклов запись/стирание, возникает вопрос: Переменные в исполняемом модуле записываются/перезаписываются много раз, получается если переменная изменится более 10 тыс раз то PLIS умрет (например если цикл 0..10001)? :05: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 12 августа, 2008 Опубликовано 12 августа, 2008 · Жалоба Скажите пожалуста, в PLIS архитектуры CPLD ( Xilinx семейство XC9500). Данная PLIS выполнена по технологии FLASH, имеет не менее 10 тыс. циклов запись/стирание, возникает вопрос: Переменные в исполняемом модуле записываются/перезаписываются много раз, получается если переменная изменится более 10 тыс раз то PLIS умрет (например если цикл 0..10001)? :05: Нет, конечно. Во Flash памяти хранятся не переменные а "прошивка" (конфигурационная последовательность, которая является "программой" ПЛИС). А переменные храняться в триггерах - т.е. в элементарных ячейках статической памяти. Т.е. XC9500 имеет 10 тыс циклов перепрограммирования (смены прошивки), а в процессе работы ПЛИС переменные могут менять свои значения сколь угодно много раз. ПЛИС - это русская аббревиатура (Программируемая Логическая Интегральная Схема - правда, лет 20 незад были "Полузаказные Л.И.С." - но время идет, а аббревиатура не меняется). ПЛИС не может быть выполнена по технологии FLASH, просто у CPLD есть nonvolatile memory, сделанная на базе Flash памяти. А вот FPGA (за исключением Actal и Spartan-3AN) имеют только volatile memory (Static RAM) для прошики, в которую необходимо записывать "прошивку" из внешней пямяти, после подачи питания на ПЛИС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nuts 0 13 августа, 2008 Опубликовано 13 августа, 2008 · Жалоба Спасибо :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nuts 0 13 августа, 2008 Опубликовано 13 августа, 2008 · Жалоба В EDK, для КID на Virtex4, собрал BSP, установил ОС XilKernel, написал простенькое приложение для отправки UDP пакетов. Дело в том, что после компиляции всего этого, вылазит сообщение о том что, Ethernet IP ядро требует лицензию. Все это загружается и работает, но скорость по Ethernet очень маленькая, 20 Кбит/с (ожидаемая не менее 400 Мбит/c, ну хотябы 100 набрать). Может скорость по Ethernet быть ограничена, всвязи с отсутствием лицензии на IP ядро? Может кто сталкивался с подобной ситуацией. :05: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 13 августа, 2008 Опубликовано 13 августа, 2008 · Жалоба ПЛИС - это русская аббревиатура (Программируемая Логическая Интегральная Схема - правда, лет 20 незад были "Полузаказные Л.И.С." - но время идет, а аббревиатура не меняется). Полузаказные обычно назывались БМК (Базовый матричный кристалл). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timonnn 0 14 августа, 2008 Опубликовано 14 августа, 2008 · Жалоба В EDK, для КID на Virtex4, собрал BSP, установил ОС XilKernel, написал простенькое приложение для отправки UDP пакетов. Дело в том, что после компиляции всего этого, вылазит сообщение о том что, Ethernet IP ядро требует лицензию. Все это загружается и работает, но скорость по Ethernet очень маленькая, 20 Кбит/с (ожидаемая не менее 400 Мбит/c, ну хотябы 100 набрать). Может скорость по Ethernet быть ограничена, всвязи с отсутствием лицензии на IP ядро? Может кто сталкивался с подобной ситуацией. :05: подскажи подробнее, пожалуйста, как ты генерировал ядро для езернета - тоже интересует данный вопрос, только пишу езернет на Спартане-3Е Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beby 8 14 августа, 2008 Опубликовано 14 августа, 2008 · Жалоба Полузаказные обычно назывались БМК (Базовый матричный кристалл). Да, есть и БМК, но это несколько другие изделия. Обратитесь к истории (проверьте по тому же Белорусскому Интегралу), в 80-х (т.е. лет 25-30 назад, а не 20 как я указал выше - ошибся: постарел лет на семь и даже не заметил как) были также и ПЛИС (в смысле полузаказных). До недавнего времени (а может и сейчас тоже, но в меньшей степени) среди ПЛИС были hardwire продукты - однократного программирования; вот полузаказнухи и "полузаказывались" на уровне логики, а в БМК (как я знаю) "полузаказывается" на уровне транзисторов, т.е. в БМК можно собирать как цифровые, так и аналоговые узлы, что позволяет делать на БМК очень интересные (эксклюзивные) устройства. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 23 14 августа, 2008 Опубликовано 14 августа, 2008 · Жалоба в БМК можно собирать как цифровые, так и аналоговые узлы, что позволяет делать на БМК очень интересные (эксклюзивные) устройства. можно-то можно... только жутко дорого. И цена ошибки очень высока... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться