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

FPGA - USB 2.0

Всем добрый вечер!

Я - начинающий разработчик аппаратуры и хотел бы спросить у более опытных коллег такой вопрос:

 

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

 

Использование USB - естественное решение, как мне кажется.

Вызывает трудности дальнейшая реализация. Какой USB-контроллер и какой интерфейс взаимодействия между ним и ПЛИС выбрать?

UART? ULPI? Повторюсь, определяющее решение здесь - скорость. Хотя, доступность чипов, на которых эти интерфейсы реализованы и их цена также не мало важны :)

А может быть имеет смысл реализовать USB на самом ПЛИС? Насколько я знаю, у Xilinx существуют и такие решения (правда, не известно насколько они до сих пор поддерживаются).

 

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

 

Заранее спасибо!

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


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

Для начала неплохо бы указать величину интенсивности потока данных, его характер и желаемую латентность. А еще лучше полное описание задачи. А то необходимость сопряжения CPLD и USB выглядит как-то замысловато-надуманно.

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


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

Контроллеры USB, хорошо подходящие для подключения к ПЛИС, есть у Cypress.

Но только XC95216 - это относительно маленькая CPLD, что Вы на ней делать собираетесь?

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


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

Данная задача ставится для "обкатки" новых, разработанных в институте алгоритмов вычисления элементарных функций. Работа только началась, поэтому описание задачи имеет довольно туманный вид.

 

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

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

 

Выбор современной элементной базы здесь - один из первых этапов.

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

 

Так что характеристики потока данных пока можно лишь предсказывать. А предсказывать лучше с преувеличением ;)

Вполне возможно, что скорость USB High speed 480 Mbps окажется излишней, но пока разговор идет именно о ней.

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


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

 

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

 

А не подскажите, в чем приемущества 8-и или 16-ти разрядной шины перед ULPI интрефейсом? Или конкретно CY7C68013A перед SMSC USB3300 ?

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


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

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

Кафедре придется раскошелиться - сопроцессор из CPLD получится неважный :)

В связи с этим вопрос: не лучше ли купить какой-нибудь кит с FPGA и USB на борту?

 

А не подскажите, в чем приемущества 8-и или 16-ти разрядной шины перед ULPI интрефейсом? Или конкретно CY7C68013A перед SMSC USB3300 ?

CY7C68013A - это контроллер функции с PHY, SIE, FIFO и т.д. на борту, USB3300 - это просто PHY без мозгов.

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


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

Всем добрый вечер!

Я - начинающий разработчик аппаратуры и хотел бы спросить у более опытных коллег такой вопрос:

 

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

Для справки. Если что-то случается в тракте с USB, то процесс зависнет и дальше перезапуск только вручную.

А скорости 400Мбит - это не сказка, но чт-то типа этого. В жизни получается, только если кабель короткий и очень качественный. А еще Винда сажает среднюю скорость в десятки раз...

А вот Гигабитгый Ethernet - умеет сам перезапуститься.

А если идет речь о больших потоках данных, то лучше купить стартовый набор для отладки по PCIe. Вот тут действительно можно гонять большие потоки данных.

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


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

Имелся опыт разработки подобного устройства. Также пользовалась FPGA от Xilinx. Используя IP-ядра реализовали интерфейс FPGA <-> PCI. Пропускной способности для наших задач хватило с лихвой.

Наверняка есть подобные ядра для реализации интерфейса FPGA <-> USB без дополнительных тараканов :)

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


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

Мы работаем на связке FPGA+CY7C68013A. Даже этот сравнительно простой вариант "поднять" не так уж просто, придется попыхтеть. Зато кайф в том, что все грузится по USB: после подключения фирмварь грузится в CY7C68013A, а потом через CY7C68013A код грузится в FPGA.

 

А на варианты с реализацией USB в самом FPGA (USB PHY ессно внешний) мы забили, поскольку сочли их нереалистичными - там работы в разы больше.

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


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

Мы работаем на связке FPGA+CY7C68013A. Даже этот сравнительно простой вариант "поднять" не так уж просто, придется попыхтеть. Зато кайф в том, что все грузится по USB: после подключения фирмварь грузится в CY7C68013A, а потом через CY7C68013A код грузится в FPGA.

 

Не могли бы Вы ответить на такие вопросы:

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

Поясню что я имею в виду (второй вопрос): напрямую - это принял пакет от Хоста и записал его в FPGA (конфигурационная инфа), а другой вариант - сначала скачиваете ВСЮ конфиг инфу в какой-то буфер (в FX2LP ведь не влезет, если FPGA не маленькая), а потом уже из буфера спокойно грузите FPGA

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


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

Какой режим загрузки FPGA у вас используется?

Passive serial по терминологии Альтеры. Используем два варианта:

- Когда ставим 56-ногий FX2, в котором нет последовательных портов, то делаем простейший бит-банг через порт. Скорость загрузки получается порядка 700 кбит/сек

- Когда ставим многоножечный проц, то грузим через последовательный порт с бодовой скоростью 4 Мбит/сек. Реальная скорость получается ниже раза в 3, т.е. всего лишь раза в два больше, чем с бит-бангом. Одна из причин задержек состоит в том, что проц на лету меняет порядок следования битов в каждом байте, ведь UART выводит данные младшим битом вперед.

 

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

Напрямую, через bulk pipe.

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


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

Passive serial по терминологии Альтеры.

...

Напрямую, через bulk pipe.

 

Хочу для полной ясности уточнить: если я правильно понял, то Альтера в любом случае грузится ТОЛЬКО от FX2LP? Никаких загрузочных микрух вы не используете.

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


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

Альтера в любом случае грузится ТОЛЬКО от FX2LP? Никаких загрузочных микрух вы не используете.

Совершенно верно. И для загрузки фирмваря в саму FX2LP тоже никаких загрузочных микрух не используем. Все грузится из РС по USB.

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


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

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

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

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

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

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

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

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

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

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