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

ReedCat спасибо. :)

 

В FIFO данные записываются одним процессом с одной синхронизирующей частотой, а считываются другим процессом с другой синхронизирующей частотой. Причем эти частоты меняются. было бы замечательно если тот процесс который заполнил FIFo поставил флажок "1", а процесс который считывает, считал и убрал флажок в "0". :05: И желательно ПЛИС завести на этих синхронизирующих частотах, на какой нибудь из них. - такая задача.

Уууххх, ещё раз...

 

Асинхронное FIFO в полный рост... Берите примеры реализации и вдумчиво читайте...

 

Учтите, что если там обнаружится непонятный кусок кода, то это не значит, что он ненужный...

"Врубайтесь" до тех пор, пока не поймёте, а зачем он именно там и зачем сделано именно так.

 

Больше ничего посоветовать не могу, на пальцах это не объяснить, разбирайтесь (именно разбирайтесь, а не копируйте!) с примерами... Эта задачка - чуть ли не тест на все возможные грабли, её хорошо давать студентам, чтобы выяснить, понимают ли они что такое FPGA или так "мимо проходили" :)

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


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

Это простой пример. Я пишу чтото вроде асинхронного FIFO, там такая вещь очень пригодилась бы. Да и сигналы выводятся на одну ножку в разное время, один на спаде фронта, другой на подъеме- т.е. вроде конфликта быть не должно.

 

FIFO, двупортовую память и др. Вы коректно, можете не описать, эта тема обсуждалась уже на форуме. Лучше воспользуйтесь для его создания программой CoreGenerator для Xilinx или каким-то визардом если пишете в другом САПРе

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


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

FIFO, двупортовую память и др. Вы коректно не опишете, эта тема обсуждалась уже на форуме.
Это с чего Вы взяли? Невозможно описать разве что память шириной не 2^x, а 2^x+2 (+1) и двухпортовую ROM (да и то в более свежих версиях софта от Xilinx это может быть пофиксено). А все остальное пожалуйста. Я, например, с успехом пользуюсь самописными параметризуемыми (глубина, ширина, тип памяти) модулями синхронного и асинхронного FIFO. И Вам советую...

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


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

Это с чего Вы взяли? Невозможно описать разве что память шириной не 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?

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


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

Про двухпортовую 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.

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


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

Но в FIFO Вам двухпортовая ROM на кой ляд?

 

Я так понимаю, что двухпортовая ROM и является основным элементом, на основе(вокруг) которого все строится :)

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


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

Я так понимаю, что двухпортовая ROM и является основным элементом, на основе(вокруг) которого все строится :)
ROM, RAM... Какая разница?..

С синтезом двухпортовой RAM всё нормально.

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


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

Здраствуйте.

Скажите пожалуста, в PLIS архитектуры CPLD ( Xilinx семейство XC9500).

Данная PLIS выполнена по технологии FLASH, имеет не менее 10 тыс. циклов запись/стирание, возникает вопрос: Переменные в исполняемом модуле записываются/перезаписываются много раз, получается если переменная изменится более 10 тыс раз то PLIS умрет (например если цикл 0..10001)? :05:

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


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

Скажите пожалуста, в 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) для прошики, в которую необходимо записывать "прошивку" из внешней пямяти, после подачи питания на ПЛИС.

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


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

В EDK, для КID на Virtex4, собрал BSP, установил ОС XilKernel, написал простенькое приложение для отправки UDP пакетов. Дело в том, что после компиляции всего этого, вылазит сообщение о том что, Ethernet IP ядро требует лицензию. Все это загружается и работает, но скорость по Ethernet очень маленькая, 20 Кбит/с (ожидаемая не менее 400 Мбит/c, ну хотябы 100 набрать). Может скорость по Ethernet быть ограничена, всвязи с отсутствием лицензии на IP ядро? Может кто сталкивался с подобной ситуацией. :05:

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


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

ПЛИС - это русская аббревиатура (Программируемая Логическая Интегральная Схема - правда, лет 20 незад были "Полузаказные Л.И.С." - но время идет, а аббревиатура не меняется).

Полузаказные обычно назывались БМК (Базовый матричный кристалл).

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


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

В EDK, для КID на Virtex4, собрал BSP, установил ОС XilKernel, написал простенькое приложение для отправки UDP пакетов. Дело в том, что после компиляции всего этого, вылазит сообщение о том что, Ethernet IP ядро требует лицензию. Все это загружается и работает, но скорость по Ethernet очень маленькая, 20 Кбит/с (ожидаемая не менее 400 Мбит/c, ну хотябы 100 набрать). Может скорость по Ethernet быть ограничена, всвязи с отсутствием лицензии на IP ядро? Может кто сталкивался с подобной ситуацией. :05:

 

подскажи подробнее, пожалуйста, как ты генерировал ядро для езернета - тоже интересует данный вопрос, только пишу езернет на Спартане-3Е

 

Спасибо.

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


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

Полузаказные обычно назывались БМК (Базовый матричный кристалл).

Да, есть и БМК, но это несколько другие изделия. Обратитесь к истории (проверьте по тому же Белорусскому Интегралу), в 80-х (т.е. лет 25-30 назад, а не 20 как я указал выше - ошибся: постарел лет на семь и даже не заметил как) были также и ПЛИС (в смысле полузаказных). До недавнего времени (а может и сейчас тоже, но в меньшей степени) среди ПЛИС были hardwire продукты - однократного программирования; вот полузаказнухи и "полузаказывались" на уровне логики, а в БМК (как я знаю) "полузаказывается" на уровне транзисторов, т.е. в БМК можно собирать как цифровые, так и аналоговые узлы, что позволяет делать на БМК очень интересные (эксклюзивные) устройства.

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


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

в БМК можно собирать как цифровые, так и аналоговые узлы, что позволяет делать на БМК очень интересные (эксклюзивные) устройства.

можно-то можно... только жутко дорого. И цена ошибки очень высока...

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


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

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

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

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

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

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

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

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

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

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