|
Передать по USB c ПЛИС на ПК |
|
|
|
Nov 2 2015, 11:10
|
Частый гость
 
Группа: Участник
Сообщений: 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 будет проще) вот как-то так
|
|
|
|
|
Nov 2 2015, 12:09
|
Частый гость
 
Группа: Участник
Сообщений: 83
Регистрация: 22-08-14
Пользователь №: 82 609

|
В плис прошивка соответствующая uart контроллеру, а выходной сигнал от плис преобразуется микросхемой в usb? http://www.ftdichip.com/Products/ICs/FT232R.htmСо строны пк, похоже всё так как я себе и представлял, но непонятно что за код внутри плис, может есть какой-то стандартный пример или что-то такое? Может это какая-то функция предоставляемая фирмой Altera в программе Quartus II? И в чём удобство? Простота кода? Меньше самому в чём-то заморачиваться?
|
|
|
|
|
Nov 5 2015, 16:43
|
Частый гость
 
Группа: Участник
Сообщений: 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-мастер, можно передавать данные от пк в плис. Я правильно понял?
|
|
|
|
|
Nov 7 2015, 06:05
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Nov 7 2015, 12:28
|
Местный
  
Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384

|
Цитата Предположим скорость 9600 бод. На такой скорости самым разумным будет UART. В плис или самописная, или готовая корка (их тысячи, уарт довольно простой). Со стороны ПК любой USB-UART преобразователь. Хоть новомодный китайский CH340, хоть старомодный китайский PL2303, хоть любой FT232. Самое приятное в том что интерфейс видится как обычный ком-порт, и с ним легко работать в любом языке программирования. Проще вообще некуда. Стабильная скорость до 1 Мбод.
|
|
|
|
|
Nov 7 2015, 12:32
|
Гуру
     
Группа: Модераторы
Сообщений: 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
|
|
|
|
|
Nov 7 2015, 12:34
|
Знающий
   
Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111

|
Цитата(alevnew @ Nov 7 2015, 09:05)  Я пробовал, в режиме асинхронного FIFO - достигается 9 МБайт/сек. Синхронный не пробовал, но там обещают вроде до 30 МБайт/сек. Мои коллеги, переходили рубеж в 10-12 МБайт/с, но с платой биглбона. От меня требовалась передача примерно 8,5МБайт/с. Выше скорость в синхронном режиме я не пробовал.
|
|
|
|
|
Nov 7 2015, 13:35
|
Частый гость
 
Группа: Участник
Сообщений: 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 от ксилинкс, создал проект плис, написал прогу. Все готово. Обмен работает. За подробностями обращаяся ежели чего.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|