|
знатокам синхронных/асинхронных потоков |
|
|
|
Dec 20 2006, 17:06
|

Частый гость
 
Группа: Свой
Сообщений: 128
Регистрация: 30-06-04
Из: Odessa
Пользователь №: 216

|
доброго дня уважаемым. есть задача такая, нужно передать асинхронный поток 9600 через 64-х килобитный тракт. выглядет это так: на одной стороне нужно засемплировать, ну скажкм uart, вложить семплы в один из таймслотов E1 а на другой стороне востановить. нарвался на такие препротивнейшие грабли - если выполнять прямое семплирование, т.е. просто выдергивать из асинхронного потока по 8-мь бит и передавать через Е1, то концевая аппаратура не может подстроится под частоту передачи (ну или вернее я не могу ее подстроить) в результате наблюдается стойкое проскальзывание синхры.. а поток шифрованый.. со всеми вытекающими  ( кто как решает такую задачу, подскажите плз. ЗЫ: сам я вижу решение - мерять счетчиком частоту импульсов с одной стороны и гнать это все на другую сторону.. тока чемороя много. може кто знает проще решение
--------------------
однако..
|
|
|
|
|
Dec 20 2006, 18:46
|
Частый гость
 
Группа: Свой
Сообщений: 160
Регистрация: 23-12-04
Из: Уфа
Пользователь №: 1 631

|
Цитата(lutik @ Dec 20 2006, 19:06)  есть задача такая, нужно передать асинхронный поток 9600 через 64-х килобитный тракт. выглядет это так: на одной стороне нужно засемплировать, ну скажкм uart, вложить семплы в один из таймслотов E1 а на другой стороне востановить. Так поток содержит стартстопные посылки (как в UART) или это непрерывный поток бит ??? Если старт-стопный метод передачи, то можно принимать по одному байту, передавать на другую сторону в каком нибудь простеньком протоколе (позволяющем отличать наличие значимых байт данных), а на другой стороне отдавать в формате стартстопной посылки на скорости 9600+1e-4 (т.е. на максимально допустимой). При этом выравнивание скоростей происходит за счет растяжки стоповых битов. Если же речь идет о непрерывном потоке бит на заданной скорости, то информация о скорости входного потока должна в каком либо виде передавать на другую сторону, и использоваться для формирования выходного сигнала. При этом возникает вопрос - какие у Вас заданы максимально допустимые дрожания выходного сигнала ? Методов передачи существует множество, но наиболее простые (наложение, SIP) дают значительные дрожания, поэтому если требования по дрожаниям строгие (<15 % от тактового интервала) приходиться на выходе ставить ФАПЧ (обычно цифровую ДАПФ) для подавления дрожаний, это уже посложнее будет. Цитата(lutik @ Dec 20 2006, 19:06)  сам я вижу решение - мерять счетчиком частоту импульсов с одной стороны и гнать это все на другую сторону.. тока чемороя много. При строгих требованиях к дрожаниям просто не получается.
|
|
|
|
|
Dec 20 2006, 20:56
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Oldring @ Dec 20 2006, 19:00)  Человек, очевидно, просто не знает как передавать признак отсутствия байта. Для начала, начните с начала  Кроме 9600 UART имеем 2 входых потока 2Mbit и два выходных потока 2Mbit. Частоты и фазы в общем случае отличаются. Ну джиттер, слипы само собой имеют место быть. Задача синхронизироваься и держать цикловую (и сверхцикловую?) синхронизацию, выделить в потоках указанный таймслот вынуть-вставить битики. Ну а уж как пустые биты/фреймы передавать уже дело если и не десятое, то уж не первое. Если организуется битовый поток, то волшебное слово называется HDLC протокол, если сможете байтовый организовать, то SLIP протокол.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 20 2006, 21:07
|

Частый гость
 
Группа: Свой
Сообщений: 128
Регистрация: 30-06-04
Из: Odessa
Пользователь №: 216

|
Цитата Попробуйте для начала условия в которых задача решена должна быть описать. Иначе не понятно совсем  описывается задача примерно так: есть асинхронный поток С1-ФЛ-БИ генерируемый устройством, которое нельзя не то что в схеме увидеть а даже на приборную его панель нельзя взглянуть. есть плата в составе пиз!"№;тенного монстра коммутатора Е1. на плате есть пару микрух которые физику на С1 обеспечивают и альтера. на альтеру заходит Е1 2.048Мбит в один из таймслотов которого мне нужно положить сампленые отсчеты. с другой стороны их (отсчеты) нужно извлечь и в С1 запихать. Цитата Почитайте, например, о классической железке FALC56 там как-раз джентельменский набор для УСПЕШНОГО решения подобных задач в РАЗНООБРАЗНЫХ условиях - Фреймер, HDLC контроллер нету фалка ентого. и ваще мля.. плату эту в ТЗ в последний момент запхнули насильно.. ее разрабатывали неделю и стоко же я с ней вожусь. сырое все, начиная с физики. а госы уже идут.. мля и до меня скоро дойдут извиняюсь за мат.. но других слов нет Цитата В каких-то очень частных случаях можно и какую-нибудь приблуду изобретать. случай, я бы сказал, исключительно частный ЗЫ: одна из функций этой платы (уже слава богу реализованых) - передача по Е1 телеграфных каналов (50-75 бод)  ))))))))))))))) Цитата(Oldring @ Dec 20 2006, 19:00)  Человек, очевидно, просто не знает как передавать признак отсутствия байта. не знаю. с телефонией недавно работаю Цитата(zltigo @ Dec 20 2006, 21:56)  Для начала, начните с начала  Кроме 9600 UART имеем 2 входых потока 2Mbit и два выходных потока 2Mbit. Частоты и фазы в общем случае отличаются. Ну джиттер, слипы само собой имеют место быть. Задача синхронизироваься и держать цикловую (и сверхцикловую?) синхронизацию, выделить в потоках указанный таймслот вынуть-вставить битики. но не на столько стобы совсем уж  ) .. сделано это давно Цитата(zltigo @ Dec 20 2006, 21:56)  Ну а уж как пустые биты/фреймы передавать уже дело если и не десятое, то уж не первое. эт кому как. не сильно я се представляю как это делается и с какой стороны глюков ждать
--------------------
однако..
|
|
|
|
|
Dec 20 2006, 23:13
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Oldring @ Dec 20 2006, 20:13)  Интересно, откуда такое начало про 2 входных потока и 2 выходных? А как Вы собираетесь физически подключаться? Параллельно  Или предполагаете, что на железку приходит 2Mbit и терминиируется в 9600? Слишком шикарно, для реальных систем. Цитата значит у него есть железяка, которая берет байтики с локальной шины или какого-то внутреннего линка и засовывает их в E1, обеспечивая всю необходимую синхрнизацию. Похоже именно этого у него и нет - была-бы и вопроса не было. Есть похоже есть какая-то "радиолюбительская" конструкция сделанная по первому наитию. Цитата А слово HDLC я вообще-то тоже знаю - только зачем человека пугать? А чего пугать-то - возьмет фреймер и будет HDLC контроллер "в подарок". Цитата(lutik @ Dec 20 2006, 20:07)  есть плата в составе пиз!"№;тенного монстра коммутатора Е1. на плате есть пару микрух которые физику на С1 обеспечивают и альтера. на альтеру заходит Е1 2.048Мбит в один из таймслотов которого мне нужно положить сампленые отсчеты. Если думаете, что словосочетание "пару микрух" объяснило с чем имеем дело, то Вы ошибаетесь  . Одно понятно, что "заходит" скорее всего не E1, а что-то типа TDM - прием+передача+клок+фреймселест. Да?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Dec 20 2006, 23:20
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(zltigo @ Dec 20 2006, 23:13)  А как Вы собираетесь физически подключаться? Параллельно  Или предполагаете, что на железку приходит 2Mbit и терминиируется в 9600? Слишком шикарно, для реальных систем. ... А чего пугать-то - возьмет фреймер и будет HDLC контроллер "в подарок". Насколько я понял его последнее объяснение - непосредственно с E1 он не работает. И вообще, он вроде бы с самого начала писал про один слот E1, а не про E1. Про то как он в него будет что-то запихивать - он ничего не писал. А использовать штатный HDLC контроллер фреймера ради 9600 - тоже слишком жирно. Скорее всего он и так используется, но для других целей.
--------------------
Пишите в личку.
|
|
|
|
|
Dec 21 2006, 00:07
|

Частый гость
 
Группа: Свой
Сообщений: 128
Регистрация: 30-06-04
Из: Odessa
Пользователь №: 216

|
Цитата(zltigo @ Dec 21 2006, 00:27)  Цитата(Oldring @ Dec 20 2006, 22:20)  И вообще, он вроде бы с самого начала писал про один слот E1, а не про E1.
Короче - пока имеем в качестве описания "пару микрух", "Altera" и "E1", причем "E1" скорее всего имеет косвенное отношение к делу. вобщем Е1 действительно имеет косвенное отношение к делу. ко мне на плату приходит локальный линк который потом мапится в групповой Е1. тут дело именно в синхре. щас решил всетаки на приемной стороне фифо водрузить и по перемещению его указателя замедлять или ускорять передатчик. класически, как я понимаю. а дрожание, вроде, той аппаратуре пофигу
--------------------
однако..
|
|
|
|
|
Dec 21 2006, 09:37
|
Участник

Группа: Новичок
Сообщений: 19
Регистрация: 11-05-06
Пользователь №: 16 983

|
Прочитайте книгу "Синхронизация в телекоммуникационных системах" С.М. Сухмана, А.В. Бернова, Б.В. Шевкопляса. http://www.zelax.ru/support/libraryВ частности, главу 4 - Проскальзывания синхронизации
|
|
|
|
|
Dec 22 2006, 10:12
|
Местный
  
Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377

|
Не знаю, подойдет ли это Вам, но у нас эта проблема была решена в "железе", именно для 9600 в 64кбит. Цепочка схем такая: RS-232, Mega128, преобразователь 8 параллельных бит в ST-BUS (последовательный поток) на MT8920, фреймер МТ9075, тракт ИКМ, ну а потом все тоже, только в обратном порядке. Основная задача всего изделия - это ИКМ30, а RS-232 как дополнительная функция для дистанционного мониторинга по RS-232. Суть такова. На двух Mega128 к основному был добавлен еще такой алгоритм для обработки потоков от RS232 (благо соотношение скоростей 9600 и 64кбит это позволяло). Поступившие в Mega128 входные 8 бит делились на две тетрады, каждая из которых помечалась-слаживалась с 4-битным признаком первой и второй тетрады, затем они, как два байта, последовательно вставлялись в поток в соседние фреймы. Когда информации нет, то во фрейм передавался байт с признаком об ее отсутствии. Противоположная Mega128, опрашивает выделенный тайм-слот из фрейма, все это разворачивает, выделяет байт и сразу передает его в RS-232. Вот и все. То есть синхронизировать ничего не потребовалось. Таким же образом передавали и на скорости 19200. Все это работает уже почти три года в составе ИКМ30. Если у Вас иное схемное обрамление, то, возможно, придется применить CPLD. Удачи.
к Partisan спасибо за ссылку на книгу и на zelax.
Сообщение отредактировал Волощенко - Dec 22 2006, 10:36
|
|
|
|
|
Dec 22 2006, 13:56
|
Частый гость
 
Группа: Свой
Сообщений: 92
Регистрация: 16-05-05
Из: Kiev
Пользователь №: 5 080

|
Делал так. На приёмной и передающей стороне ставится Fifo для выравнивания скоростей и передаваётся информацию о скорости на удалённую сторону. Там восстанавливается скорость и в С1. Р.С. ГБшники приносили свою аппаратуру со стыком С1 - всё работало. Очень удивились.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|