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

 
 
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
count_enable
сообщение Nov 7 2015, 16:27
Сообщение #16


Местный
***

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



Цитата(iosifk @ Nov 7 2015, 15:32) *
Вообще то не все так просто. Кроме передачи байтов есть еще слово "протокол передачи данных". И либо передача символьными кодами 2 посылки на байт, простейший автомат для сборки-разборки протокола,
либо передача-прием с байт-стаффингом. Но тогда со стороны ПК тоже понадобится самодельный софт...

Я бы рекомендовал не Уарт, а SPI бит на 16 или более. Там сразу можно передавать пакет..
SPI на 100% потребует самописного софта, а уарт можно отладить любым терминалом. Я так понял ТС требует самого минимума: передать поток байт в плис, и прочитать поток байт из плис. Лично мне удобнее всего было бы уартом, тем более что преобразователей под рукой полный ящик. Но конечно эту задачу можно решить десятком способов, и все правильные.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Nov 7 2015, 19:10
Сообщение #17


Гуру
******

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



Цитата(count_enable @ Nov 7 2015, 19:27) *
SPI на 100% потребует самописного софта, а уарт можно отладить любым терминалом. Я так понял ТС требует самого минимума: передать поток байт в плис, и прочитать поток байт из плис. Лично мне удобнее всего было бы уартом, тем более что преобразователей под рукой полный ящик. Но конечно эту задачу можно решить десятком способов, и все правильные.

Вы не поняли. USB-SPI со стороны ПК так же видится как УАРТ. Так что тут проблем нет.
Проблемы в том, что передавать надо не "байты", а "данные". Так вот, данные бывают "от кого", "кому" и "сколько"... Потому и говорю о протоколе передачи данных, который "сидит" над UART или SPI... И если УАРТ это только 8 бит, то в SPI можно разместить кадр данных... И не надо делать байт-стаффинг...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Maverick
сообщение Nov 7 2015, 19:13
Сообщение #18


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



повторюсь...
можно с opencores попробовать
во вложении...
Прикрепленные файлы
Прикрепленный файл  ft2232hcore_latest.tar.gz ( 17.32 килобайт ) Кол-во скачиваний: 22
 


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
count_enable
сообщение Nov 7 2015, 21:26
Сообщение #19


Местный
***

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



Цитата
Вы не поняли. USB-SPI со стороны ПК так же видится как УАРТ.
Да, я незнаком с такими переходниками. А если я отправлю один байт, то ведомый получит 0xXX 0x00 или же конвертер будет ждать два байта?
Go to the top of the page
 
+Quote Post
iosifk
сообщение Nov 7 2015, 21:43
Сообщение #20


Гуру
******

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



Цитата(count_enable @ Nov 8 2015, 00:26) *
Да, я незнаком с такими переходниками. А если я отправлю один байт, то ведомый получит 0xXX 0x00 или же конвертер будет ждать два байта?

Есть альтернатива:
1. Делать разборку протокола а ПЛИС, наворачивая автоматы, стаффинг и пр. Но при этом переходник - простейший, например FT2232 - байт в байт...
2. Весь протокол переложить в переходник. Например любой стартовый набор на микроконтроллер с USB-COM. В нем на Си написать поддлержку протокола по USB-COM. Все стаффинги, CRC, перезапросы и пр. А от микроконтроллера - по SPI в ПЛИС. На 16 битов можно положить кадр: КОП, адрес, данные. При этом в ПЛИС будет минимальные затраты на обработку протокола. Для меня все равно где делать, но мне кажется, что проще на Си, чем в ПЛИС... А что касается софта, то для Wake исходники и примеры выложены...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение Nov 10 2015, 11:45
Сообщение #21


Дима
*****

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



Цитата(alevnew @ Nov 7 2015, 09:05) *
В синхронном, на мой взгляд, недостаток (хотя и условный), то тактовая задается самой микрухой и появляется на выходе только после инициализации на стороне ПК.
Из-за собственного клока придется делать в ПЛИС буферный двухклоковый FIFO.

По-моему, это достоинство: халявные 60 МГц для тактирования той же ПЛИС sm.gif Я вообще обошёлся без микросхемы генератора. Если мало - можно подключить ФАПЧ.


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


Знающий
****

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



Цитата(DSIoffe @ Nov 10 2015, 14:45) *
По-моему, это достоинство: халявные 60 МГц для тактирования той же ПЛИС sm.gif Я вообще обошёлся без микросхемы генератора. Если мало - можно подключить ФАПЧ.

Эта халява работает только в режиме синхронного FIFO. Если бы вывод генератора не отключался - было бы намного интереснее.
Насколько могу судить, стабильностью генератор не отличается.
Go to the top of the page
 
+Quote Post

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

 


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


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