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

 
 
> FT2232H: FIFO Sync 245 mode, полная скорость не работает, Из обещанных даташитов 40МБайт/с, только куски на скорости 8МБайт/с
PrSt
сообщение Nov 24 2015, 19:00
Сообщение #1


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



Всем привет, есть вопрос, не могу победить.

Хочу сделать захват аналоговых данных, очень высокоскоростной.
из ADC[DSP] в -> FTDI -> PC

Использую FT2232H: FIFO Sync 245 mode, полная скорость не работает.
Из обещанных даташитов 40МБайт/с, только куски на скорости 8МБайт/с.
А точнее:
Есть DSP TMS320F28027, на ней я реализовал АЦП который выдает данные в цикле для FTDI FT2232H.
И как мне кажется тут у меня нет вопросов. За исключением того, нужно ли строго отвечать сигналом WR или я могу его его постоянно держать как 0. На практике не видит ни какой разницы...

Суть глюка описываю ниже.

То есть на стороне DSP, проводится вся инициализация, согласно временной диаграмме в даташите (page 27)
тоже описано в "FTDI App Note 130".
Назначаю пины, и жду когда TXE==0. Как только он 0 то выставляю WR=0 и начинаю по циклу измерять встроенным на стороне DSP АЦП и выставлять данные на 8 битный "параллельный порт".
На сколько я понял с документации, а точнее обратное там не написано нигде. То как я понял, до тех пор пока от меня исходит WR=0, FTDI забирает данные. Но она также может в любой момент поднять свой TXE в 1. Я это наблюдаю на осциллографе, что она когда ей вздумается, без всякой детерминированности прерывает на какое то время TXE в 1, и потом опять в 0.
Вот тут начинается второй интересный момент, а точнее второй вопрос.
вот так примерно выглядит форма TXE
---_--_--_--_--_-------------_----_-_------_---------------------------_--_--_------_--_---------
вот тут все что лог."1" это по сути пропуск в измеряемом аналоговом стриме. то есть - бордак полный.
как я понимаю то TXE должен быть либо постоянно 0, на протяжении запрошенного количества байт на считывание
----__________________________________________________________________------
либо вот такой.
----____-____-____-____-____-____-____-____-____-____-____-____-____-____-------

Как я понимаю, это уже все вопросы должны быть к программе что на стороне PC.
На стороне PC я частично базировался на коде, http://dangerousprototypes.com/forum/viewt...f=19&t=1495. А точнее, инициализацию сделал точно как у них и скопипастил их функции по приему данных в цикле с сохранением в файл.
Пробовал переделать, аллочить отдельно память и писать в неё и по завершению всей процедуры писать на HDD. Разницы вообще не заметил. Глюк все также проявляется.

Если верить той дискуссии, они забирают данные достаточно близко к скорости 40МБайт/с (естественно если верить написанному).
И код я уже жаде ихний подставлял, думая что проблема в моем коде. Всё тоже самое.

Особенность, захват данных в начале идёт без пропусков, и потом начинаются данные пропускаться.
Выглядит как будто FTDI сперва данные помещала в пустой буффр полного размера, и потом только в его 1/4 часть. Если отслеживать в программе сигнал, то визуально это так.

Проверяю просто
Подаю на АЦП синус и смотрю его потом в программе на компе. Он с вырезанными кусками от пропусков.
Потом делаю подобие ЛЧМ и тоже самое проверяю. Вижу ту же самую картину с пропусками.

Подскажите - как мне это победить, хочу чтоб данные отдавались ровно и детерминировано.
Тоесть, чтоб я запросил к примеру 50МБайт и их все забрал, а не не-детерминированными кусочками.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex11
сообщение Nov 25 2015, 13:37
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



40 МБ/с близко к теоретическому пределу для шины, скорее всего на сплошном потоке Вы их не получите. Я с этой FTDI не работал, так что не знаю, сколько она отдает на самом деле. Из общих соображений по работе с FTDI - запрашивайте из PC ввод кусками максимального размера.
Go to the top of the page
 
+Quote Post
ivanoffer
сообщение Nov 25 2015, 19:33
Сообщение #3


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

Группа: Участник
Сообщений: 120
Регистрация: 21-07-11
Пользователь №: 66 348



Цитата(Alex11 @ Nov 25 2015, 16:37) *
40 МБ/с близко к теоретическому пределу для шины, скорее всего на сплошном потоке Вы их не получите.


Получали среднее значение 43МБ/c на объеме 4ГБ. При этом наблюдали кратковременные провалы до 12МБ/c.
Скорость сильно зависит от архитектуры системы (моста PCIe2USB), загрузки шины и ЦП. На не очень удачных
мат.платах получали среднее значение 21МБ/с с провалами до 8МБ/c, иногда до 2МБ/c. При требуемом нам потоке
не менее 20МБ/c пришлось ставить сглаживающий буфер на внешнем ОЗУ 2МБ.

Go to the top of the page
 
+Quote Post



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

 


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


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