|
знатокам синхронных/асинхронных потоков |
|
|
|
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 - всё работало. Очень удивились.
|
|
|
|
|
Dec 23 2006, 01:53
|

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

|
Цитата(tocha @ Dec 22 2006, 14:56)  На приёмной и передающей стороне ставится Fifo для выравнивания скоростей и передаваётся информацию о скорости на удалённую сторону. Там восстанавливается скорость и в С1. а как информацию о скорости передавали?? в пакете каком то с признаком?? я щак, как выше писал, по указателю фифо на приемной стороне подстраиваюсь правда пока безуспешно. по условию задачи я должен вообще проводом притворится. Цитата(tocha @ Dec 22 2006, 14:56)  Р.С. ГБшники приносили свою аппаратуру со стыком С1 - всё работало. Очень удивились.  крутттаааа гы..
--------------------
однако..
|
|
|
|
|
Dec 23 2006, 13:13
|
Частый гость
 
Группа: Свой
Сообщений: 92
Регистрация: 16-05-05
Из: Kiev
Пользователь №: 5 080

|
Цитата(lutik @ Dec 23 2006, 00:53)  а как информацию о скорости передавали?? в пакете каком то с признаком?? В таймслоте один за одним передаются пакеты (m бит): заголовок, биты С1 (n бит), 1 бит для выравнивания скорости, 1 бит признака наличия бита выравнивания (можно 3 штуки и принимать решение мажоритарно). На входе С1: Пишем в FIFO из С1. По уровню FIFO на входе принимаем решение: передавать или нет дополнительный бит. Скорость передачи С1 в канале 64 кбит/с - ( n/m )*64 кбит/с или ( (n+1)/m )*64 кбит/с На входе в FIFO пишем с v=9600 кбит/с - читаем с V=(n/m)*64 (< 9600), если указатель FIFO идёт вверх - читаем с V=( (n+1)/m )*64 (> 9600), если вниз- читаем с V=( (n)/m )*64 (< 9600). На выходе С1: Пишем в FIFO из ТДМ. Читаем из FIFO и запуливаем в стык С1. Скорость вычитывания из FIFO регулируем джиттером. Если указатель FIFO идёт вверх - увеличиваем скорость вычитки 9600 + x ppm, если вниз- уменьшаем скорость вычитки 9600 - x ppm. П.С. Размер подстройки должен перекрыть возможные отклонения частот и скорости С1 от номиналов.
|
|
|
|
|
Dec 26 2006, 16:09
|
Группа: Новичок
Сообщений: 1
Регистрация: 31-03-05
Пользователь №: 3 825

|
Решал похожую задачу, скорость до 115к. Укладывал в 2 слота ( при мах. скорости). Все остальные Решал похожую задачу, скорость до 115к. Укладывал в 2 слота ( при мах. скорости). Все остальные ложились в один слот. Железка работала в составе изделия Т-130. Сигналы для функционирования - подсветка канала, клок(2м), выдавала Т-130. Задача сводилась в приеме RS-232 (тупо использовал Atmel89, 20 ног, 2 кБайт) выделения байта и укладка в тайм слот. Для этого использовал свой протокол передачи, если не изменяет память принцип следующий. на синхронный поток 64 кБит ложиться асинхронный в тот самый момент времени когда готов байт передачи (т.е даже в середине подсветки слота). Данные передается в формате: старт бит, 8 бит данные, бит парити, стоп бит. Стоп бит использовался двояко: 1 – идут данные, 0 – управление. Управление необходимо для согласования скоростей приема-передачи и сигнала ошибок канала (бит парити). Естественно в один тайм слот вся информация не ложиться для этого использовал программку управления в Atmelе, которая сшивала, разбивала и выделяла информационный байт из слота. Также в памяти Atmelа находился 15 байтный буфер (2 буфера) приема и передачи. В качестве железки сопряжения с Т-130 использовалcя Xilinx на 20К.
|
|
|
|
|
Dec 29 2006, 18:11
|
Местный
  
Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034

|
А куда/откуда и через что идёт(ут) этот(эти) E1? Если цепочка длинная с кучей девайсов в цепи (та же ТФОП), то велика вероятность того, что не все её участки синхронизируются от единого источника частоты на уровне E1. Следовательно в некоторых узлах возможны "проскальзывание кадров E1", что приводит к выпадению или дублированию отдельных байтиков в 64кБит-ном потоке. Т.е. очень желательно чтобы протокол передачи данных по этому 64кБитному потоку был с максимальной избыточностью!
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|