реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> FPGA - USB 2.0
swayze
сообщение Feb 28 2009, 15:27
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 16-02-09
Пользователь №: 44 973



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

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

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

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

Заранее спасибо!
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 28 2009, 15:34
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Для начала неплохо бы указать величину интенсивности потока данных, его характер и желаемую латентность. А еще лучше полное описание задачи. А то необходимость сопряжения CPLD и USB выглядит как-то замысловато-надуманно.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 28 2009, 15:39
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Контроллеры USB, хорошо подходящие для подключения к ПЛИС, есть у Cypress.
Но только XC95216 - это относительно маленькая CPLD, что Вы на ней делать собираетесь?
Go to the top of the page
 
+Quote Post
swayze
сообщение Mar 1 2009, 07:35
Сообщение #4





Группа: Новичок
Сообщений: 3
Регистрация: 16-02-09
Пользователь №: 44 973



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

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

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

Так что характеристики потока данных пока можно лишь предсказывать. А предсказывать лучше с преувеличением wink.gif
Вполне возможно, что скорость USB High speed 480 Mbps окажется излишней, но пока разговор идет именно о ней.
Go to the top of the page
 
+Quote Post
blackfin
сообщение Mar 1 2009, 07:55
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



CY7C68013A
CY68013
CY7C68013A
Go to the top of the page
 
+Quote Post
swayze
сообщение Mar 1 2009, 09:39
Сообщение #6





Группа: Новичок
Сообщений: 3
Регистрация: 16-02-09
Пользователь №: 44 973



Цитата(blackfin @ Mar 1 2009, 10:55) *


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

А не подскажите, в чем приемущества 8-и или 16-ти разрядной шины перед ULPI интрефейсом? Или конкретно CY7C68013A перед SMSC USB3300 ?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 1 2009, 09:44
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(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 без мозгов.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Mar 2 2009, 06:00
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



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

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

Для справки. Если что-то случается в тракте с USB, то процесс зависнет и дальше перезапуск только вручную.
А скорости 400Мбит - это не сказка, но чт-то типа этого. В жизни получается, только если кабель короткий и очень качественный. А еще Винда сажает среднюю скорость в десятки раз...
А вот Гигабитгый Ethernet - умеет сам перезапуститься.
А если идет речь о больших потоках данных, то лучше купить стартовый набор для отладки по PCIe. Вот тут действительно можно гонять большие потоки данных.


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Panukov_ag
сообщение Mar 11 2009, 04:45
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 1-02-08
Из: Омск
Пользователь №: 34 669



Имелся опыт разработки подобного устройства. Также пользовалась FPGA от Xilinx. Используя IP-ядра реализовали интерфейс FPGA <-> PCI. Пропускной способности для наших задач хватило с лихвой.
Наверняка есть подобные ядра для реализации интерфейса FPGA <-> USB без дополнительных тараканов smile.gif
Go to the top of the page
 
+Quote Post
=AK=
сообщение May 1 2009, 03:53
Сообщение #10


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



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

А на варианты с реализацией USB в самом FPGA (USB PHY ессно внешний) мы забили, поскольку сочли их нереалистичными - там работы в разы больше.
Go to the top of the page
 
+Quote Post
mikeT
сообщение May 2 2009, 11:35
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 6-02-08
Из: Новосибирск
Пользователь №: 34 789



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


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

Поясню что я имею в виду (второй вопрос): напрямую - это принял пакет от Хоста и записал его в FPGA (конфигурационная инфа), а другой вариант - сначала скачиваете ВСЮ конфиг инфу в какой-то буфер (в FX2LP ведь не влезет, если FPGA не маленькая), а потом уже из буфера спокойно грузите FPGA
Go to the top of the page
 
+Quote Post
=AK=
сообщение May 3 2009, 00:28
Сообщение #12


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(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.
Go to the top of the page
 
+Quote Post
mikeT
сообщение May 6 2009, 16:01
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 6-02-08
Из: Новосибирск
Пользователь №: 34 789



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


Хочу для полной ясности уточнить: если я правильно понял, то Альтера в любом случае грузится ТОЛЬКО от FX2LP? Никаких загрузочных микрух вы не используете.
Go to the top of the page
 
+Quote Post
=AK=
сообщение May 6 2009, 23:56
Сообщение #14


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



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

Совершенно верно. И для загрузки фирмваря в саму FX2LP тоже никаких загрузочных микрух не используем. Все грузится из РС по USB.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 07:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01473 секунд с 7
ELECTRONIX ©2004-2016