|
|
  |
FT2232 + PGA + Delphi |
|
|
|
Dec 20 2007, 20:55
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 23-08-06
Из: Kiev
Пользователь №: 19 759

|
Приветствую всех.
Помогите, плз, определится со скоростью обмена данными через FT2232 в связки с ПЛИСиной. Есть устройство с альтерой. Его нужно подключить к компу с Delphi-программистом. Выбор пока пал на FT2232С, так как в нём есть параллельный интерфейс, который хорошо стыкуется с альтерой (и можно без проблем приобрести). Надо обеспечить перекачку данных с устройства в комп на максимально возможной скорости. Возник такой вопрос - какая получится скорость перекачки если использовать параллельный интерфейс и прогу, на основе D2XXUnit.pas? Может ли кто поделится фрагментом кода на Делфи, где идёт чтение массивов данных при максимально допустимой скорости обмена.
И ещё, может есть примеры работы через параллельный интерфейс FT2232 кроме тех, что на их сайте.
--------------------
Александр
|
|
|
|
|
Dec 21 2007, 21:48
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 23-08-06
Из: Kiev
Пользователь №: 19 759

|
Цитата(-Al- @ Dec 21 2007, 22:54)  Не более 1МБ/сек. Если нужно больше, посмотрите в сторону CY7C68013A от Cypress. Спасибо за ответ. Уточните пожалуйста 1 Мегабайт/сек или 1 Мегабит/сек ? Если FT2232L обеспечит 1 Мегабайт/сек, то мне этой скорости вполне хватит. Остаётся открытым вопрос о примерах на делфи, которые бы обеспечили такой поток.
--------------------
Александр
|
|
|
|
|
Dec 21 2007, 23:05
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 23-08-06
Из: Kiev
Пользователь №: 19 759

|
Цитата(-Al- @ Dec 22 2007, 02:18)  1 Мегабайт/сек. В реальном времени без дополнительного буфера поток ~300кБайт/сек, если надо больше - понадобится дополнительный внешний буфер в несколько килобайт. Примеры были у FTDI, там ничего экстраординарного нет, скорости не те... 300кбайт/с это минимально необходимая мне скорость. Боюсь что всё будет на пределе, что может привести к глюкам. Буду пробовать FIFO режим, хотя, просмотревши примеры с сайта FTDI, с ходу не совсем понятно как программа на компе будет знать, что устройство опустошило TX буфер, что б передавать следующую порцию данных.
--------------------
Александр
|
|
|
|
|
Dec 24 2007, 19:48
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 23-08-06
Из: Kiev
Пользователь №: 19 759

|
Цитата(-Al- @ Dec 22 2007, 02:18)  1 Мегабайт/сек. В реальном времени без дополнительного буфера поток ~300кБайт/сек, если надо больше - понадобится дополнительный внешний буфер в несколько килобайт. В описание на FT2232L написано про 1 Мегабайт/сек и про дополнительные буфера ни слова нет. Устройство может выдовать и больше чем 1 Мбайт/с, не вопрос. Тогда зачем дополнительный буфер и есть ли примеры реализации потоков больших 300кБ/с?
--------------------
Александр
|
|
|
|
|
Dec 24 2007, 20:02
|

Местный
  
Группа: Свой
Сообщений: 330
Регистрация: 10-06-05
Из: Россия, Москва
Пользователь №: 5 894

|
Цитата(Александр К @ Dec 24 2007, 22:48)  В описание на FT2232L написано про 1 Мегабайт/сек и про дополнительные буфера ни слова нет. Устройство может выдовать и больше чем 1 Мбайт/с, не вопрос. Тогда зачем дополнительный буфер и есть ли примеры реализации потоков больших 300кБ/с? В реальном времени, т.е. равномерно поступающие данные, на скорости 1МБ/сек не выдаст из-за задержек (миллисекунды) на шине USB, т.к. во время таких пауз складывать данные будет некуда вследствие маленького внутреннего буфера контроллера. На такой скорости, буфера контроллера хватит на 0.3мс, а задержка может выскочить на 1мс и данные в течение оставшихся 0.7мс будут утеряны, вот и получается, что 300кб/сек максимум для передачи потока. А в среднем, действительно, 1МБ/сек получается, т.к. потом догоняет. На эти грабли многие наступают
|
|
|
|
|
Dec 24 2007, 20:39
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 23-08-06
Из: Kiev
Пользователь №: 19 759

|
Цитата(-Al- @ Dec 25 2007, 00:02)  В реальном времени, т.е. равномерно поступающие данные, на скорости 1МБ/сек не выдаст из-за задержек (миллисекунды) на шине USB, т.к. во время таких пауз складывать данные будет некуда вследствие маленького внутреннего буфера контроллера. На такой скорости, буфера контроллера хватит на 0.3мс, а задержка может выскочить на 1мс и данные в течение оставшихся 0.7мс будут утеряны, вот и получается, что 300кб/сек максимум для передачи потока. А в среднем, действительно, 1МБ/сек получается, т.к. потом догоняет. На эти грабли многие наступают ;) Спасибо за разъяснение. Теперь стало проясняться. Потеря данных у меня исключена, тут задача сохранить всё в целосности при передачи, посему изохронный режим не рассматриваю. Получится что процессор за 0.3мс забъёт приёмный буффер (384 байта) и потом будет ждать его опустошения. И поток получится не больше 384байт в 1мс, т.е. 384000 байт/с. Это на передачу. А на приём буфер вообще 128 байт. Тогда поток на запись в процессор будет не более 128000 байт/с. что для задачи маловато будет  . Может средний поток в 1МБ/с выходит, когда используют оба канала и на приём и на передачу, хотя следуя этим расчётам выходит 896000 байт/с. Или как тут правильно проводить калькуляцию?
--------------------
Александр
|
|
|
|
|
Dec 24 2007, 22:14
|
Участник

Группа: Новичок
Сообщений: 26
Регистрация: 23-08-06
Из: Kiev
Пользователь №: 19 759

|
Цитата(sK0T @ Dec 25 2007, 01:57)  Про дельфи ничего не скажу, однажды делал железку, которая состояла из PIC18F4550 и самописного драйвера во FreeBSD. Скорость обмена была что-то около полумегабайта в секунду. Думаю какой-нибудь вариант libUSB и под паскакаль есть, так что может быть в эту сторону покопать? На PIC18F4550 уже задача выресовалась. Будет интелектуальным мостом RS485 - PC. Тут больших скоростей не нужно. А вот загонять поток с 250кГцового АЦП уже будет напряжно ИМХО. Паралельно копаю в направлении к CY7C68001. FIFO интерфейс очень удобный, почти то что нужно и саму микруху программить не нужно . Может у кого-то есть на дельфе примеры работы с CY7C68001, подкиньте, пожалуйста
--------------------
Александр
|
|
|
|
|
Dec 25 2007, 06:49
|

Местный
  
Группа: Свой
Сообщений: 330
Регистрация: 10-06-05
Из: Россия, Москва
Пользователь №: 5 894

|
Цитата(Александр К @ Dec 25 2007, 01:14)  На PIC18F4550 уже задача выресовалась. Будет интелектуальным мостом RS485 - PC. Тут больших скоростей не нужно. А вот загонять поток с 250кГцового АЦП уже будет напряжно ИМХО. Паралельно копаю в направлении к CY7C68001. FIFO интерфейс очень удобный, почти то что нужно и саму микруху программить не нужно . Может у кого-то есть на дельфе примеры работы с CY7C68001, подкиньте, пожалуйста  Насчет ненужно программить, это Вы зря, её программить как раз нужно, и делать придется это внешнему железу. Берите лучше Cy7C68013A, он и жрет меньше (раза в 3) и функций у него больше (из-за встроенного 51) и программить в итоге легче  Есть GPIF, так что интерфейс обмена можно любой реализовать  По поводу дельфи ничего сказать не могу, т.к. всю жизнь пользую исключительно C/C++, библиотеки и примеры для Cypress'овских контроллеров есть только под C.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|