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

 
 
> USB3.1 + FTDI + ПО
Art55555
сообщение Apr 4 2018, 06:31
Сообщение #1


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

Группа: Участник
Сообщений: 184
Регистрация: 7-10-10
Пользователь №: 59 981



Требования к ПО, обеспечивающему работу платы+ USB3.1
Предполагается использование данной микросхемы.
Общая инфа

http://www.ftdichip.com/Products/ICs/FT602.html
ссыль на ютюбе
https://www.youtube.com/watch?time_continue...p;v=y0XTMUNLJp0

дружественное (подходит и для нашего 602) по 6хх серии описание
http://www.ftdichip.com/Products/ICs/FT600.html
Описание функций:
http://www.ftdichip.com/Support/Documents/...ers%20Guide.pdf

Требования будут представлены в несколько размытом виде, так как я не знаю, как работает USB 3.1. Предполагаю, что он работает так же, как и USB 2.0, т.е. инициатором передачи данных от платы может быть только хост.
Общая постановка задачи.
Существуют 2 режима обмена данных с платой АЦП-USB3.1
1. Блочный режим. Компьютер посылает в плату команду и ожидает от нее ответа. Между посылкой команды и ответом никакие команды не посылаются. Если за заданное время ответа не поступает, то возвращается код ошибки. Команда представляет собой блок данных, размером 50 … 65536 байт.
Ответ – блок данных размером до 2^20 + 20 байт.
На каждую команду всегда известно количество получаемых байт (это значение может передаваться в параметрах ф-ии).

2. Потоковый режим. В этом режиме плата генерирует поток данных, компьютер должен его получать с помощью CallBack функции. CallBack функция на стороне приложения должна выполняться максимально быстро. Задачи CallBack функции
- войти в критическую секцию (здесь может быть максимальная задержка)
- проверить переполнение буферов
- переслать блок данных в буфер
-увеличить значение счетчика буфера
- выставить событие о готовности данных (Event)
- выйти из критической секции.

Задач другого потока в приложении, которая работает с этой же критической секцией:
- ждать установки события о готовности данных (Event)
- войти в критическую секцию
- сбросить событие о готовности данных (Event)
- переслать блок готовых данных в другой буфер
- выйти из критической секции.
Как видно, тоже очень быстро, т.е. долгого ожидания входа в критическую секцию в CallBack функции не будет.

Скорость потока данных в потоковом режиме можно оценить так:
Вариант 1. Частота дискретизации 50 МГц, каждое передаваемое слово 8 байт. Итого 400 Мбайт/сек или 3200 Мбит/сек.

или

Вариант 2. Частота дискретизации 50 МГц, каждое передаваемое слово 4 байт. Итого 200 Мбайт/сек или 1600 Мбит/сек.

Для потокового режима должна быть предусмотрена команда “Stop”, которая прекращает непрерывную передачу данных.

Итого, определяется следующий набор команд:
1. Открытие USB платы.
Очевидно, это должно быть несколько команд:
- Получение количества подключенных к компьютеру плат с получением их серийных номеров и версии HardWare. Серийный номер и версия HardWare должны прописываться в EPROM USB контроллера. Для этого должен быть написан отдельный софт, который программирует EPROM контроллера и отдельный софт, который может читать записанную версию серийного номера и версиии HardWare и записывать их в EPROM.
-
2. Открытие нужной платы по серийному номеру.
3. Аппаратный сброс цифровой платы. Очевидно эта команда нужна, она должна выполняться на уровне контроллера USB, может быть путем установки сигнала на отдельной линии.
4. Программирование FPGA из отдельного файла.
5. Передачи-прием данных по I2C, если он имеется у контроллера и не задействован.
6. Передача команды (блока памяти) в плату и ожидание заданного количества байт от нее. В команде передачи задается время Time-out ожидания ответа от платы
7. Запуск потокового режима с указанием количества передаваемых байт в CallBack функции.
8. Останов потокового режима.
9. Закрытие устройства.

Требования к ПО.
Не должно быть никаких бесконечных циклов в потоках. Ожидание событий (прихода команды или ответа от платы – только через Event.
На первом этапе софт необходимо оформить в 32 разрядную DLL.
После отладки, необходимо будет сделать 64 разрядную DLL.

Предложения принимаются в личку. Уточняющие вопросы, пожалуйста, сюда.

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Manfred
сообщение Apr 4 2018, 06:58
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 29-08-07
Из: Красногорск
Пользователь №: 30 128



Ровно 3200 Mbps не получиться - это максимальная пропускная способность паралельного интерфейса микросхемы FTDI - т.е. всегда будут потерянные данные.

В Windows надо принимать по событию, в отдельном потоке и писать в потокозащищенное FIFO в котором уже храняться заранее сформированные буферы под пакеты максимального размера (чтобы не было динамического выделения памяти). Скорость приема будет зависить от железа компьютера.

Если плата FPGA вашего производства, то USB 3.0 очень чувствительно к разводке. Как линий передачи данных так и к питанию микросхемы.

Чтобы не было переполнений буфера можно использовать режим Bulk, тогда если данные компьютером не прочитаны микросхема на плате перестает посылать данные и выставляет сигнал FULL

Насчет программирования ПЛИС, то на этой микросхеме помоему не удастся съэмитировать процесс программирования ПЛИС или даже подать сигнал Reset на ПЛИС - она помоему не содержит процессора, а интерфейсы программирования ПЛИС отличаются от интерфейса FIFO

Сообщение отредактировал Manfred - Apr 4 2018, 09:19
Go to the top of the page
 
+Quote Post
Art55555
сообщение Apr 4 2018, 08:35
Сообщение #3


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

Группа: Участник
Сообщений: 184
Регистрация: 7-10-10
Пользователь №: 59 981



Цитата(Manfred @ Apr 4 2018, 10:58) *
Ровно 3200 Mbps не получиться - это максимальная пропускная способность паралельного интерфейса микросхемы FTDI - т.е. всегда будут потерянные данные.


ок

Цитата(Manfred @ Apr 4 2018, 10:58) *
В Windows надо принимать по событию, в отдельном потоке и писать в потокозащищенное FIFO в котором уже храняться заранее сформированные буферы под пакеты максимального размера (чтобы не было динамического выделения памяти). Скорость приема будет зависить от железа компьютера.


Да, это тоже понятно.

Цитата(Manfred @ Apr 4 2018, 10:58) *
Если плата FPGA вашего производства, то USB 3.0 очень чувствительно к разводке. Как линий передачи данных так и к питанию микросхемы.


USB 3.0 не разводили, DDR2-3 только. Буду благодарен за рекомендации, если что.

Цитата(Manfred @ Apr 4 2018, 10:58) *
Чтобы не было переполнений буфера можно использовать режим Bulk, тогда если данные компьютером не прочитаны микросхема на плате перестает посылать данные

ок

Цитата(Manfred @ Apr 4 2018, 10:58) *
Насчет программирования ПЛИС, то на этой микросхеме помоему не удастся съэмитировать процесс программирования ПЛИС или даже подать сигнал Reset на ПЛИС - она помоему не содержит процессора, а интерфейсы программирования ПЛИС отличаются от интерфейса FIFO

Хорошо, у нас процесс загрузки ПЛИС может осуществляться с флешки, не вопрос.


Go to the top of the page
 
+Quote Post



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

 


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


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