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

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> Ввод данных в компьютер., Бинарный поток.
_pv
сообщение Sep 29 2012, 08:23
Сообщение #46


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(andrew smirnov @ Sep 29 2012, 14:01) *
Да нет, хотелось бы получить значение, близкое к теоретическому максимуму для ft232h.
Да и программно разбирать клоки и данные - не лучшее занятие. После ввода сигнал еще обрабатывать программно.

а что же это за последовательный интерфейс такой на ~300мбит?

если сделать что-то вроде
Код
#define CLK_BIT 0x01
#define DATA_BIT 0x02

int bitCnt = 0;
int b1, b2 = 0;
char data[100500];
while(1){
  b1 = GetByteFromFT232H();
  if ((b1 & (b1 ^ b2)) & CLK_BIT){
    if (b1 & DATA_BIT) data[bitCnt>>3] |= (1 << (bitCnt & 0x07));   // (1 << (7 - (bitCnt & 0x07))) если байт вносят ногами вперед.
    bitCnt++;
  }
  b2 = b1;
}

по сравнению с обработкой данных не сильно много процессорного времени займёт.
хотя по скорости в режиме FT1248 или MPSSE быстрее получится.
FT1248 вроде как spi slave можно заставить работать до 30МГц.
в MPSSE только как мастер.

Цитата
Не подскажете, какую микросхемку можно использовать для преобразования из последовательного кода в параллельный на 8 бит и формировать управляющий сигнал при заполнении регистра.

мелкую cpld
Go to the top of the page
 
+Quote Post
andrew smirnov
сообщение Sep 29 2012, 10:47
Сообщение #47





Группа: Новичок
Сообщений: 8
Регистрация: 28-09-12
Пользователь №: 73 719



Цитата(_pv @ Sep 29 2012, 12:23) *
а что же это за последовательный интерфейс такой на ~300мбит?

если сделать что-то вроде
Код
#define CLK_BIT 0x01
#define DATA_BIT 0x02

int bitCnt = 0;
int b1, b2 = 0;
char data[100500];
while(1){
  b1 = GetByteFromFT232H();
  if ((b1 & (b1 ^ b2)) & CLK_BIT){
    if (b1 & DATA_BIT) data[bitCnt>>3] |= (1 << (bitCnt & 0x07));   // (1 << (7 - (bitCnt & 0x07))) если байт вносят ногами вперед.
    bitCnt++;
  }
  b2 = b1;
}

по сравнению с обработкой данных не сильно много процессорного времени займёт.
хотя по скорости в режиме FT1248 или MPSSE быстрее получится.
FT1248 вроде как spi slave можно заставить работать до 30МГц.
в MPSSE только как мастер.


мелкую cpld

нужно знать частоту следования клоков, как я понял. а это величина не постоянная и заранее не известная. последовательный интерфейс на 300 мбит? есть стандарт спутниковой связи DVB-S2 - там скорость примерно 30МГц*5 (размерность модуляции - АФМ32) - т.е., за вычетом декодера (например 9/10), скорость потока составит порядка 135 МБит/с. Демодулятор выдает в последовательном виде. Перспективный стандарт DVB NS3 обеспечивает скорость передачи до 365 МБит/с. Хотелось бы быть к нему готовым sm.gif. Ну, а пока хватит и заявленных 200 МБит/с, если получится.

а насчет CPLD - я думал, что простой логики должно хватить? или я не прав? вопрос только в скорострельности...

Сообщение отредактировал andrew smirnov - Sep 29 2012, 10:16
Go to the top of the page
 
+Quote Post
_pv
сообщение Sep 29 2012, 17:10
Сообщение #48


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(andrew smirnov @ Sep 29 2012, 17:47) *
нужно знать частоту следования клоков, как я понял. а это величина не постоянная и заранее не известная.

нет, ((b1 & (b1 ^ b2)) & CLK_BIT) выделяет положительный фронт и по нему защёлкивает данные.

Цитата(andrew smirnov @ Sep 29 2012, 17:47) *
Перспективный стандарт DVB NS3 обеспечивает скорость передачи до 365 МБит/с. Хотелось бы быть к нему готовым . Ну, а пока хватит и заявленных 200 МБит/с, если получится.

я к тому что это, скорее всего, не cmos 3.3V на таких скоростях.
и 365Мбит/с с ft232h пожалуй не получится.

Цитата(andrew smirnov @ Sep 29 2012, 17:47) *
а насчет CPLD - я думал, что простой логики должно хватить? или я не прав? вопрос только в скорострельности...

хватит, только понадобится сдвиговый регистр, счётчик на 8, пара триггеров, может инвертор, даже такую простую логику как правило проще в одном корпусе мелкой cpld иметь.
а скорострельности логики какой-нибудь LVC/AUC серии должно хватить.
Go to the top of the page
 
+Quote Post
andrew smirnov
сообщение Oct 5 2012, 07:44
Сообщение #49





Группа: Новичок
Сообщений: 8
Регистрация: 28-09-12
Пользователь №: 73 719



Так, просьба не пинать - схемотехника была когда-то давно в институте. Начнем с начала. Есть желание ввести сигнал (за скоростью пока не гонимся, дальше разберемся) от источника в PC через USB. Сигнал представляет собой данные в последовательном виде, непрерывные. Данные идут в сопровождении тактовой. Итого имеем две линии. Сигнал в линии представляет собой последовательность прямоугольных импульсов. Уровень "0" - где-то в районе 0 Вольт, уровень "1" - где-то 5 Вольт (вроде TTL, если я ничего не путаю). Есть отладочный модуль FTDI - FT2232H mini module (есть еще одноканальный вариант - FT232H). Сигнал и тактовая подаются по кабелю длиной до 5 метров (пока реально используем 1,5 метра). На выходе источника сигнала - прямоугольные импульсы. На выходе кабеля - импульсы теряют свою форму, дробятся. Плюс появляется "двойник" сигнала - что-то похожее на сигнал, сдвинутое по времени. Сделан вывод о необходимости согласования нагрузки на выходе линии - включили между сигнальной жилой и землей сопротивление порядка 50 Ом. Сигнал на выходе кабеля стал похож на исходный. Теперь пытаемся подключить это на вход FT2232H в режиме синхронного FIFO по следующей схеме (почти так, как советовали выше): сигнальные жилы такта и данных - на входы данных первого канал (биты 0 и 1 буфера); сигнал записи берем от встроенного генератора на 60 МГц. Землю от входных линий цепляем на землю платы. Плата по питаю в режиме Bus-powered. Ничего не получается. В схемотехнике не силен, поэтому, если кто-то может ткнуть, где почитать или просто подсказать, как подключить - помогите, пожалуйста.
Go to the top of the page
 
+Quote Post
_pv
сообщение Oct 5 2012, 09:50
Сообщение #50


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(andrew smirnov @ Oct 5 2012, 13:44) *
Начнем с начала
...
Теперь пытаемся подключить это на вход FT2232H в режиме синхронного FIFO по следующей схеме (почти так, как советовали выше): сигнальные жилы такта и данных - на входы данных первого канал (биты 0 и 1 буфера); сигнал записи берем от встроенного генератора на 60 МГц. Ничего не получается.

самого главного - тактовую частоту приходящих данных не сказали.
ft[2]232 не может в усб непрерывно передать поток 60МБайт/с. посмотрите на сигнал TXE#, он показывает когда у ft внутренний буфер закончился.
поделите 60МГц пополам тогда возможно получится, при этом, частота последовательного интерфейса должна быть еще более чем в два раза меньше.
либо попробуйте режим FT1248 - это как раз spi slave. до 30МГц.
а по хорошему надо взять какой-нибудь быстрый сдвиговый регистр, вроде 74[F/AHC][594/595], и из пары 74ххх74 или еще одного сдвигового регистра и пары лог вентилей сделать счётчик на 8 чтобы он на один такт CLKOUT дергал WR по заполнению сдвигового регистра. ну или мелкую cpld.
Go to the top of the page
 
+Quote Post
andrew smirnov
сообщение Oct 5 2012, 10:11
Сообщение #51





Группа: Новичок
Сообщений: 8
Регистрация: 28-09-12
Пользователь №: 73 719



Цитата(_pv @ Oct 5 2012, 13:50) *
самого главного - тактовую частоту приходящих данных не сказали.
ft[2]232 не может в усб непрерывно передать поток 60МБайт/с. посмотрите на сигнал TXE#, он показывает когда у ft внутренний буфер закончился.
поделите 60МГц пополам тогда возможно получится, при этом, частота последовательного интерфейса должна быть еще более чем в два раза меньше.
либо попробуйте режим FT1248 - это как раз spi slave. до 30МГц.
а по хорошему надо взять какой-нибудь быстрый сдвиговый регистр, вроде 74[F/AHC][594/595], и из пары 74ххх74 или еще одного сдвигового регистра и пары лог вентилей сделать счётчик на 8 чтобы он на один такт CLKOUT дергал WR по заполнению сдвигового регистра. ну или мелкую cpld.

за микруху спасибо, поищем. вопрос в другом - правильно ли я подключаю (нужно ли еще где-нибудь что-нибудь навесить, емкость, например, сопротивление) с точки зрения схемотехники, чтобы заработало. а то модуль не всегда определяется системой.
тактовая частота приходящих данных задается на источнике сигнала (аппаратный имитатор). скорость может быть от 32 кбит/с до 10 мбит/с.

есть еще вариант на 40 мбит/с, но пока даже 1 мбит/с не получили. не могу понять, как ее подключать. в даташитах ничего не нашел...

Сообщение отредактировал andrew smirnov - Oct 5 2012, 10:12
Go to the top of the page
 
+Quote Post
_pv
сообщение Oct 5 2012, 10:35
Сообщение #52


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(andrew smirnov @ Oct 5 2012, 16:11) *
вопрос в другом - правильно ли я подключаю (нужно ли еще где-нибудь что-нибудь навесить, емкость, например, сопротивление) с точки зрения схемотехники, чтобы заработало. а то модуль не всегда определяется системой.
тактовая частота приходящих данных задается на источнике сигнала (аппаратный имитатор). скорость может быть от 32 кбит/с до 10 мбит/с.

если это готовый модуль всё что надо там уже есть.
а подключаете неправильно, нельзя в синхронном режиме гнать непрерывно поток 60МБайт/с и уж тем более таким образом:
Цитата
сигнал записи берем от встроенного генератора на 60 МГц


для начала попробуйте в асинхронном режиме фифо, клоки последовательно интерфейса на WR, только с нужной полярностью, данные на D0, до 8 МГц должно работать. каждый бит - один байт.

зы про режим FT1248 наврал, никакой это не spi slave, ему там команды еще надо в поток данных подмешивать.
а режим Fast Serial Interface, хоть и slave и до 50МГц, требует старт/стоповых битов.
то есть чесловеческого режима spi slave у ft232h похоже нету.
Go to the top of the page
 
+Quote Post
andrew smirnov
сообщение Oct 5 2012, 11:56
Сообщение #53





Группа: Новичок
Сообщений: 8
Регистрация: 28-09-12
Пользователь №: 73 719



Цитата(_pv @ Oct 5 2012, 14:35) *
...
клоки последовательно интерфейса на WR, только с нужной полярностью
...

что Вы имеете ввиду под нужной полярностью? 05.gif есть жила и земля (обмотка). Подаю клоки с жилы
Go to the top of the page
 
+Quote Post
_pv
сообщение Oct 5 2012, 13:23
Сообщение #54


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(andrew smirnov @ Oct 5 2012, 17:56) *
что Вы имеете ввиду под нужной полярностью? 05.gif есть жила и земля (обмотка). Подаю клоки с жилы

не электричекую, а в смысле логических уровней.
в асинхронном режиме фифо, данные защелкиваются по отрицательному фронту на WR, то есть по переходу 1 -> 0.
в Вашем последовательном интерфейсе они скорее всего в этот момент как раз изменяются на линии данных. то есть если не инвертировать клоки данные будут захватываться в момент перехода от одного бита к другому, что не есть хорошо.
Go to the top of the page
 
+Quote Post
andrew smirnov
сообщение Oct 6 2012, 07:24
Сообщение #55





Группа: Новичок
Сообщений: 8
Регистрация: 28-09-12
Пользователь №: 73 719



Цитата(_pv @ Oct 5 2012, 17:23) *
не электричекую, а в смысле логических уровней.
в асинхронном режиме фифо, данные защелкиваются по отрицательному фронту на WR, то есть по переходу 1 -> 0.
в Вашем последовательном интерфейсе они скорее всего в этот момент как раз изменяются на линии данных. то есть если не инвертировать клоки данные будут захватываться в момент перехода от одного бита к другому, что не есть хорошо.

а, в этом смысле. да нет, есть возможность инвертировать сигналы тактов и данных. работаем в режиме инверсии тактов. данные - прямые.
Go to the top of the page
 
+Quote Post

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

 


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


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