Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: FPGA - USB 2.0
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Интерфейсы
swayze
Всем добрый вечер!
Я - начинающий разработчик аппаратуры и хотел бы спросить у более опытных коллег такой вопрос:

Имеется задача, решение которой предполагает довольно интенсивный поток данных между компьютером и ПЛИС фирмы Xilinx (конкретно - XC95216). Соответственно, нужно решение, которое обеспечит быструю связь между компьютером и ПЛИС.

Использование USB - естественное решение, как мне кажется.
Вызывает трудности дальнейшая реализация. Какой USB-контроллер и какой интерфейс взаимодействия между ним и ПЛИС выбрать?
UART? ULPI? Повторюсь, определяющее решение здесь - скорость. Хотя, доступность чипов, на которых эти интерфейсы реализованы и их цена также не мало важны smile.gif
А может быть имеет смысл реализовать USB на самом ПЛИС? Насколько я знаю, у Xilinx существуют и такие решения (правда, не известно насколько они до сих пор поддерживаются).

Если у Вас есть опыт в разработке такого рода устройств или просто идеи по этому поводу, пожалуйста, пишите в этот топик! Подтолкните на правильное решение wink.gif

Заранее спасибо!
rezident
Для начала неплохо бы указать величину интенсивности потока данных, его характер и желаемую латентность. А еще лучше полное описание задачи. А то необходимость сопряжения CPLD и USB выглядит как-то замысловато-надуманно.
aaarrr
Контроллеры USB, хорошо подходящие для подключения к ПЛИС, есть у Cypress.
Но только XC95216 - это относительно маленькая CPLD, что Вы на ней делать собираетесь?
swayze
Данная задача ставится для "обкатки" новых, разработанных в институте алгоритмов вычисления элементарных функций. Работа только началась, поэтому описание задачи имеет довольно туманный вид.

На ПЛИС требуется разработать структуру сопроцессора, реализующего мультипликативные алгоритмы вычисления элементарных функций.
Предполагается, что с компьютера будут посылаться данные в виде мультипликативного кода. На ПЛИС будут выполнятся элементарные функции, а результат будет посылаться обратно на компьютер. В конце будет происхотить подсчет производительности.

Выбор современной элементной базы здесь - один из первых этапов.
Из имеющихся на кафедре ПЛИС, XC95216 - самая большая, но возможно будет приобретена более производительная, если эта окажется негодной.

Так что характеристики потока данных пока можно лишь предсказывать. А предсказывать лучше с преувеличением wink.gif
Вполне возможно, что скорость USB High speed 480 Mbps окажется излишней, но пока разговор идет именно о ней.
blackfin
CY7C68013A
CY68013
CY7C68013A
swayze
Цитата(blackfin @ Mar 1 2009, 10:55) *


Спасибо, интересный вариант.

А не подскажите, в чем приемущества 8-и или 16-ти разрядной шины перед ULPI интрефейсом? Или конкретно CY7C68013A перед SMSC USB3300 ?
aaarrr
Цитата(swayze @ Mar 1 2009, 10:35) *
Из имеющихся на кафедре ПЛИС, XC95216 - самая большая, но возможно будет приобретена более производительная, если эта окажется негодной.

Кафедре придется раскошелиться - сопроцессор из CPLD получится неважный smile.gif
В связи с этим вопрос: не лучше ли купить какой-нибудь кит с FPGA и USB на борту?

Цитата(swayze @ Mar 1 2009, 12:39) *
А не подскажите, в чем приемущества 8-и или 16-ти разрядной шины перед ULPI интрефейсом? Или конкретно CY7C68013A перед SMSC USB3300 ?

CY7C68013A - это контроллер функции с PHY, SIE, FIFO и т.д. на борту, USB3300 - это просто PHY без мозгов.
iosifk
Цитата(swayze @ Feb 28 2009, 18:27) *
Всем добрый вечер!
Я - начинающий разработчик аппаратуры и хотел бы спросить у более опытных коллег такой вопрос:

Имеется задача, решение которой предполагает довольно интенсивный поток данных между компьютером и ПЛИС фирмы Xilinx (конкретно - XC95216). Соответственно, нужно решение, которое обеспечит быструю связь между компьютером и ПЛИС.

Для справки. Если что-то случается в тракте с USB, то процесс зависнет и дальше перезапуск только вручную.
А скорости 400Мбит - это не сказка, но чт-то типа этого. В жизни получается, только если кабель короткий и очень качественный. А еще Винда сажает среднюю скорость в десятки раз...
А вот Гигабитгый Ethernet - умеет сам перезапуститься.
А если идет речь о больших потоках данных, то лучше купить стартовый набор для отладки по PCIe. Вот тут действительно можно гонять большие потоки данных.
Panukov_ag
Имелся опыт разработки подобного устройства. Также пользовалась FPGA от Xilinx. Используя IP-ядра реализовали интерфейс FPGA <-> PCI. Пропускной способности для наших задач хватило с лихвой.
Наверняка есть подобные ядра для реализации интерфейса FPGA <-> USB без дополнительных тараканов smile.gif
=AK=
Мы работаем на связке FPGA+CY7C68013A. Даже этот сравнительно простой вариант "поднять" не так уж просто, придется попыхтеть. Зато кайф в том, что все грузится по USB: после подключения фирмварь грузится в CY7C68013A, а потом через CY7C68013A код грузится в FPGA.

А на варианты с реализацией USB в самом FPGA (USB PHY ессно внешний) мы забили, поскольку сочли их нереалистичными - там работы в разы больше.
mikeT
Цитата(=AK= @ May 1 2009, 10:53) *
Мы работаем на связке FPGA+CY7C68013A. Даже этот сравнительно простой вариант "поднять" не так уж просто, придется попыхтеть. Зато кайф в том, что все грузится по USB: после подключения фирмварь грузится в CY7C68013A, а потом через CY7C68013A код грузится в FPGA.


Не могли бы Вы ответить на такие вопросы:
  1. Какой режим загрузки FPGA у вас используется?
  2. Вы напрямую прошивку для FPGA качаете (через USB с помощью FX2LP) или используете какой-то промежуточный буфер - например,память какую-нибудь?

Поясню что я имею в виду (второй вопрос): напрямую - это принял пакет от Хоста и записал его в FPGA (конфигурационная инфа), а другой вариант - сначала скачиваете ВСЮ конфиг инфу в какой-то буфер (в FX2LP ведь не влезет, если FPGA не маленькая), а потом уже из буфера спокойно грузите FPGA
=AK=
Цитата(mikeT @ May 2 2009, 21:05) *
Какой режим загрузки FPGA у вас используется?

Passive serial по терминологии Альтеры. Используем два варианта:
- Когда ставим 56-ногий FX2, в котором нет последовательных портов, то делаем простейший бит-банг через порт. Скорость загрузки получается порядка 700 кбит/сек
- Когда ставим многоножечный проц, то грузим через последовательный порт с бодовой скоростью 4 Мбит/сек. Реальная скорость получается ниже раза в 3, т.е. всего лишь раза в два больше, чем с бит-бангом. Одна из причин задержек состоит в том, что проц на лету меняет порядок следования битов в каждом байте, ведь UART выводит данные младшим битом вперед.

Цитата(mikeT @ May 2 2009, 21:05) *
Вы напрямую прошивку для FPGA качаете (через USB с помощью FX2LP) или используете какой-то промежуточный буфер - например,память какую-нибудь?

Напрямую, через bulk pipe.
mikeT
Цитата(=AK= @ May 3 2009, 07:28) *
Passive serial по терминологии Альтеры.
...
Напрямую, через bulk pipe.


Хочу для полной ясности уточнить: если я правильно понял, то Альтера в любом случае грузится ТОЛЬКО от FX2LP? Никаких загрузочных микрух вы не используете.
=AK=
Цитата(mikeT @ May 7 2009, 01:31) *
Альтера в любом случае грузится ТОЛЬКО от FX2LP? Никаких загрузочных микрух вы не используете.

Совершенно верно. И для загрузки фирмваря в саму FX2LP тоже никаких загрузочных микрух не используем. Все грузится из РС по USB.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.