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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Передать по USB c ПЛИС на ПК
enzaime
сообщение Nov 2 2015, 11:10
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 22-08-14
Пользователь №: 82 609



Здравствуйте, такая проблема хочется организовать передачу данных от пк в плис и наоборот с минимальными усилиями, т.е. желательно готвое и простое решение ( может микросхема, которая выполняет эту задачу или что-то такое) Как я это представляю: к плис припаивается микросхема, кодирующая/декодирующая данные по usb (даже не принципиален usb протокол, чтобы по кабелю передавалось) протоколу, на пк ставится драйвер от производителя микросхемы, далее ,например, на с++ подключение библиотеки и использование функций, например по такому алгоритму:
1.подключить библиотеку
2. открыть порт передачи
3. передать массив
4. дождаться окончания передачи
5. принять ответ
6. закрыть порт

а на плис что-то вроде этого:

тактовый сигнал
количетсво слов (31 до 0) (бит)
шина данных(31 до 0) (бит)

по положительному фронту тактового сигнала сохранить в ram память c шины данных, пока не передадутся все слова

опытные люди подскажите есть ли такое или я губу раскатал?
гуглил: первый результат http://jorisvr.nl/usb/ , но мне показалось это каким-то сложным и кустарным что ли.
плис 5ceba7f23c8n http://www.digikey.com/product-detail/en/5...3C8N-ND/3879489
интересует именно для fpga а не hps (я видел что в hps реализованы протоколы передачи, но чтобы использовать hps это нужно как-то очень хитро что-то делать как мне кажется, в общем я пока думаю, что на fpga будет проще)
вот как-то так
Go to the top of the page
 
+Quote Post
Vascom
сообщение Nov 2 2015, 11:14
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 2-08-07
Из: Москва
Пользователь №: 29 534



В ПЛИС удобно использовать UART, и внешнюю микросхему для преобразования сигнала в USB, например на FT232R.
Go to the top of the page
 
+Quote Post
enzaime
сообщение Nov 2 2015, 12:09
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 22-08-14
Пользователь №: 82 609



В плис прошивка соответствующая uart контроллеру, а выходной сигнал от плис преобразуется микросхемой в usb? http://www.ftdichip.com/Products/ICs/FT232R.htm
Со строны пк, похоже всё так как я себе и представлял, но непонятно что за код внутри плис, может есть какой-то стандартный пример или что-то такое? Может это какая-то функция предоставляемая фирмой Altera в программе Quartus II? И в чём удобство? Простота кода? Меньше самому в чём-то заморачиваться?
Go to the top of the page
 
+Quote Post
count_enable
сообщение Nov 2 2015, 12:32
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Здесь имхо, де-факто стандартом стало семейстов cy7. Оно позволяет легко сделать 16-бит параллельное FIFO со стороны плисины, видел несколько плат с так реализованным интерфейсом. Весьма быстро и сравнительно просто.
Go to the top of the page
 
+Quote Post
enzaime
сообщение Nov 2 2015, 13:27
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 22-08-14
Пользователь №: 82 609



Т.е. для передачи данных в плис должна быть фифо и ещё что-то?
Мне пока неясно даже в общих чертах структура проекта в плис, пока я понимаю что это что-то такое:
1. Если пришёл сигнал начала передачи, то ко 2
2. Сохранить в фифо, то что приходит пока не пришёл сигнал конца передачи иначе в 3
3. Закончить передачу в 1
Может ли кто-то указать, где я наврал и неправильно понял?
Go to the top of the page
 
+Quote Post
count_enable
сообщение Nov 2 2015, 14:31
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



При помощи микросхем CY7 - CY8 легко реализовать интерфейс "8/16-bit parallel FIFO <-> USB". FPGA должна предоставлять приёмник и передатчик совместимые со стандартом CY7. Так как подобные FIFO относительно несложные и позволяют сделать быстрый (полные 480 Мбит) интерфейс, эти микросхемы стали весьма популярными у плисоводов. Видел неоднократно их в работе. В FT тоже есть аналогичные микросхемы, но с ними не работал, ничего сказать не могу

Сначала определитесь со скоростью какая нужна. Если 9600 бод, то конечно смысла нет городить фифо. Для средних скоростей порядка 1-10 МБод думаю самым простым будет SPI. VHDL SPI-slave это десяток строчек. На FT232FH и подобных можно сделать битбэнг SPI-мастер. Если нужно быстрее - тогда фифо.
Go to the top of the page
 
+Quote Post
Александр77
сообщение Nov 2 2015, 14:49
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



Среди семейства FT, кроме 232, есть FT245 с параллельным портом (достоинство в том, что не надо делать uart). Есть еще FT2232H, буквально комбайн - можно использовать и как 232, и как 245, а также есть режим синхронного FIFO, используя который можно достичь скорости ~ 10 МБ/с.
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение Nov 2 2015, 15:17
Сообщение #8


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



Я бы тоже предложил FT2232H, для начала в составе вот такой платки: ftp://ftp.efo.ru/pub/ftdichip/Documents/D...i_Module_16.pdf , очень удобно. Намного проще Cypress. Или вот такую штуку: ftp://ftp.efo.ru/pub/ftdichip/Documents/D...Morph-IC-II.pdf , но это я не пробовал. У меня есть готовые тексты на VHDL и Delphi, если Вам не лень разбираться - пишите, вышлю.


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
Александр77
сообщение Nov 2 2015, 16:43
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



Морфик уже история, циклон 2 не поддерживается новым софтом.
Плата хоть и аппетитная, но обладает на мой взгляд недостатком, нет конфигурационного пзу, как следствие перед применением приходится ее грузить.
Go to the top of the page
 
+Quote Post
enzaime
сообщение Nov 5 2015, 16:43
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 22-08-14
Пользователь №: 82 609



Цитата
Сначала определитесь со скоростью какая нужна. Если 9600 бод, то конечно смысла нет городить фифо. Для средних скоростей порядка 1-10 МБод думаю самым простым будет SPI. VHDL SPI-slave это десяток строчек. На FT232FH и подобных можно сделать битбэнг SPI-мастер. Если нужно быстрее - тогда фифо.


Предположим скорость 9600 бод. Тогда в плис должен быть SPI-slave. Что-то вроде этого: https://sites.google.com/site/vanyambausesl...-interfejsa-spi
и используя микросхему FT232FH, заставив её работать в режиме SPI-мастер, можно передавать данные от пк в плис. Я правильно понял?
Go to the top of the page
 
+Quote Post
alevnew
сообщение Nov 7 2015, 06:05
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 90
Регистрация: 17-05-07
Пользователь №: 27 775



Цитата(Александр77 @ Nov 2 2015, 19:49) *
Среди семейства FT, кроме 232, есть FT245 с параллельным портом (достоинство в том, что не надо делать uart). Есть еще FT2232H, буквально комбайн - можно использовать и как 232, и как 245, а также есть режим синхронного FIFO, используя который можно достичь скорости ~ 10 МБ/с.

Я пробовал, в режиме асинхронного FIFO - достигается 9 МБайт/сек.
Синхронный не пробовал, но там обещают вроде до 30 МБайт/сек.
А вообще да, я тоже рекомендую FT2232H. Асинхронный режим неплох.
В синхронном, на мой взгляд, недостаток (хотя и условный), то тактовая задается самой микрухой и появляется на выходе только после инициализации на стороне ПК.
Из-за собственного клока придется делать в ПЛИС буферный двухклоковый FIFO.
P.S. Достоинство FT2232H - бесплатный драйвер от производителя. Для CY7Cxxx придется изголяться с подписыванием драйверов.

Сообщение отредактировал alevnew - Nov 7 2015, 06:07
Go to the top of the page
 
+Quote Post
count_enable
сообщение Nov 7 2015, 12:28
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Цитата
Предположим скорость 9600 бод.
На такой скорости самым разумным будет UART. В плис или самописная, или готовая корка (их тысячи, уарт довольно простой). Со стороны ПК любой USB-UART преобразователь. Хоть новомодный китайский CH340, хоть старомодный китайский PL2303, хоть любой FT232. Самое приятное в том что интерфейс видится как обычный ком-порт, и с ним легко работать в любом языке программирования. Проще вообще некуда. Стабильная скорость до 1 Мбод.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Nov 7 2015, 12:32
Сообщение #13


Гуру
******

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



Цитата(count_enable @ Nov 7 2015, 15:28) *
На такой скорости самым разумным будет UART. В плис или самописная, или готовая корка (их тысячи, уарт довольно простой). Со стороны ПК любой USB-UART преобразователь. .....
Проще вообще некуда. Стабильная скорость до 1 Мбод.

Вообще то не все так просто. Кроме передачи байтов есть еще слово "протокол передачи данных". И либо передача символьными кодами 2 посылки на байт, простейший автомат для сборки-разборки протокола,
либо передача-прием с байт-стаффингом. Но тогда со стороны ПК тоже понадобится самодельный софт...

Я бы рекомендовал не Уарт, а SPI бит на 16 или более. Там сразу можно передавать пакет..


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Александр77
сообщение Nov 7 2015, 12:34
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



Цитата(alevnew @ Nov 7 2015, 09:05) *
Я пробовал, в режиме асинхронного FIFO - достигается 9 МБайт/сек.
Синхронный не пробовал, но там обещают вроде до 30 МБайт/сек.

Мои коллеги, переходили рубеж в 10-12 МБайт/с, но с платой биглбона.
От меня требовалась передача примерно 8,5МБайт/с.
Выше скорость в синхронном режиме я не пробовал.
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Nov 7 2015, 13:35
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 155
Регистрация: 26-04-12
Пользователь №: 71 584



Цитата(enzaime @ Nov 2 2015, 14:10) *
Здравствуйте, такая проблема хочется организовать передачу данных от пк в плис и наоборот с минимальными усилиями, т.е. желательно готвое и простое решение ( может микросхема, которая выполняет эту задачу или что-то такое) Как я это представляю: к плис припаивается микросхема, кодирующая/декодирующая данные по usb (даже не принципиален usb протокол, чтобы по кабелю передавалось) протоколу, на пк ставится драйвер от производителя микросхемы, далее ,например, на с++ подключение библиотеки и использование функций, например по такому алгоритму:
1.подключить библиотеку
2. открыть порт передачи
3. передать массив
4. дождаться окончания передачи
5. принять ответ
6. закрыть порт

а на плис что-то вроде этого:

тактовый сигнал
количетсво слов (31 до 0) (бит)
шина данных(31 до 0) (бит)

по положительному фронту тактового сигнала сохранить в ram память c шины данных, пока не передадутся все слова

опытные люди подскажите есть ли такое или я губу раскатал?
гуглил: первый результат http://jorisvr.nl/usb/ , но мне показалось это каким-то сложным и кустарным что ли.
плис 5ceba7f23c8n http://www.digikey.com/product-detail/en/5...3C8N-ND/3879489
интересует именно для fpga а не hps (я видел что в hps реализованы протоколы передачи, но чтобы использовать hps это нужно как-то очень хитро что-то делать как мне кажется, в общем я пока думаю, что на fpga будет проще)
вот как-то так


Используй FT2232H в режиме HostEmulation. Это вроде проде процессорной шины. Очень удобно и легко, примеров куча. Короче я с первого раза сделал схему, развел плату FT2232h+xc144 от ксилинкс, создал проект плис, написал прогу. Все готово. Обмен работает. За подробностями обращаяся ежели чего.
Go to the top of the page
 
+Quote Post

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

 


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


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