Zeratul 0 April 15, 2009 Posted April 15, 2009 · Report post Доброе время суток у меня такой вопрос Ко мне приходит поток 2Мб/с причем он идет постоянно может идти сутки в принципе сам прием не сложен нарезал по тактовой на куски забил в фифо и вперед!! Вопрос состоит в седеющем из за нестабильности генераторов на приемной и передающих платах погодных условий и космического ветра)) Может произойти перекос фаз и за сутки накопится неслабая ошибка! Поэтому я хотел бы захватывать фазу сигнала каждый предний фронт я придумал два пути в общем то это 1 путь просто в немного разных исполнениях 1-ый вариант Есть 2а автомата 1 следит за фазой и обнуляет в торой по переднему фронту сигнала 2-ой Считает до середины импульса и забирает сигнал затем еще столько же и сбрасывается в 0 2-ойвариант Есть 2а автомата 1 следит за фазой и обнуляет в торой в по переднему фронту сигнала 2-ой выделяет тактовую из сигнала После чего по тактовой забираем по заднему фронту информацию. Задумка то хороша!!Но исполнение!!Вот вариант №2 Process (Signal, CLK) Variable st : integer range 0 to 31; begin If signal’event and signal = ‘1’ then St := 0; End if; If ( CLK’event and CLK = ‘1’ ) then --Сдесь делаем тактовую Case st is When 0 => CLK_dcm = ‘1’;st++; When 15 =>CLK_dcm = ‘0’;st++; When 31 =>st:=0; When others =>st++; End case; End if; End process; Так вот Xilinx Пишет что эта конструкция с st не синтезабельна из за отсутствия возможности синхронизации!! ВОПРОС как поймать фазу!!Сделать привязку к фазе!!Вообще я за вариант с тактовой по-моему так проще!!Кто сталкивался подскажите!!ЖДУ!! Quote Share this post Link to post Share on other sites More sharing options...
Builder 0 April 15, 2009 Posted April 15, 2009 · Report post Вопрос состоит в седеющем из за нестабильности генераторов на приемной и передающих платах погодных условий и космического ветра)) Может произойти перекос фаз и за сутки накопится неслабая ошибка! Поэтому я хотел бы захватывать фазу сигнала каждый предний фронт я придумал два пути в общем то это 1 путь просто в немного разных исполнениях Не совсем понял в чём нужнапридумывать что-то новое, с ходу видится 2 стандартных варианта: 1) как в обычном UART; 2) с испльзованием цифрового ФАПЧ; Чем они не устраивают? Покапайте поиском оба подхода. Для того что-б решить что лучше, мало информации: как информация кодирутся, какие опорные частоты есть и т.п. Quote Share this post Link to post Share on other sites More sharing options...
wolfman 0 April 15, 2009 Posted April 15, 2009 · Report post а в каком виде данные то идут? У меня есть устройство, которое принимает/передает Е1 в HDB3, вытаскиваю тактовую из потока и отдаю дальше на маппер, сбоев не было как в синхронном режиме так и в асинхронном. Если у вас похожая задача могу выложить исходник, но он на AHDL и на выходе у него NRZ. Quote Share this post Link to post Share on other sites More sharing options...
Zeratul 0 April 15, 2009 Posted April 15, 2009 · Report post Да там все просто идет непрерывный поток 2 Мб/с надо его правильно принять и отослать накомп по изернету. а исходники посмотрел бы, выложите либо сюда либо на мыло [email protected] если не сложно Информация никак не кодируется тоесть: лог 1 = 1, лог 0 = 0 вот и все просто главное не сбиться И кстати гже можно почитать про pll по русски ну или хотябы полезное что нить по английски!! А что за захват частоты в обычном уарте??Там же протоколсвой есть стартоывй стоповый зачем там это ФАПЧ в смысле??!??? Quote Share this post Link to post Share on other sites More sharing options...
des00 16 April 16, 2009 Posted April 16, 2009 · Report post Да там все просто идет непрерывный поток 2 Мб/с надо его правильно принять и отослать накомп по изернету. Информация никак не кодируется тоесть: лог 1 = 1, лог 0 = 0 вот и все просто главное не сбиться хмм, ну какой то протокол у вас должен же быть. Как-то же вы должны были синхронизовать потоки. есть много вариантов. асинхронный UART самый простой, за счет расширения полосы вы получаете возможность привязки данных по фазе по старт-стоп битам. Есть варианты с канальным кодированием, есть с цифровой петлей ФАПЧ и т.д. Выбор конкретного варианта зависит от требований к реализации. Quote Share this post Link to post Share on other sites More sharing options...
_sda 0 April 16, 2009 Posted April 16, 2009 · Report post Ещё посмотрите в сторону эластичного буфера,он как раз применяется в подобных ситуациях(при плезиохронной связи). Quote Share this post Link to post Share on other sites More sharing options...
Builder 0 April 16, 2009 Posted April 16, 2009 · Report post Информация никак не кодируется тоесть: лог 1 = 1, лог 0 = 0 вот и все просто главное не сбиться Так не пойдёт, по крайней мере для DPLL (для UART можно и так), т.к. будет сбиваться чифровая ФАПЧ. Как вариант, кодирование 8b/10b, что-бы небыло много последовательных нулей или единиц, или ещё Манчестерский код. И кстати гже можно почитать про pll по русски ну или хотябы полезное что нить по английски!! А что за захват частоты в обычном уарте??Там же протоколсвой есть стартоывй стоповый зачем там это ФАПЧ в смысле??!??? В общем, курите поиск и описания, Вам нужно подковаться сначала, что-б вопросы были предметными. Вот для затравки ссылки, которые когда-то собирал: Chip News #9 2002 Характеристики цифровой системы автоподстройки частоты. стр 16 - 19 Chip News #1 2003 Аппаратная реализация двоичной полностью цифровой системы автоподстройки частоты. стр 40 - 42 Hisao Yamamoto, Shinsaku Mori Performance of a binary Quantized All Digital Phased-Locked Loop with a New Class of Sequantial Filter IEEE Trans. on Communications Vol. COM-26, No.1, January 1978 pp.35-45 Приведены схема и анализ полностью цифровой ФАПЧ, рекомендую. Это не помню что, но гляньте: 2)74HC4046 datasheet (Philips, Texas Instr. etc) 3)http://gtmkorea.co.kr/DATABOOK/PDF/AN8017.PDF Стр. 7 (138): http://www.e-insite.net/ednmag/archives/19...8/pdfs/24di.pdf http://www.e-insite.net/ednmag/archives/19...997/13di_05.htm Quote Share this post Link to post Share on other sites More sharing options...
Zeratul 0 April 16, 2009 Posted April 16, 2009 (edited) · Report post хмм, ну какой то протокол у вас должен же быть. Как-то же вы должны были синхронизовать потоки. есть много вариантов. асинхронный UART самый простой, за счет расширения полосы вы получаете возможность привязки данных по фазе по старт-стоп битам. Есть варианты с канальным кодированием, есть с цифровой петлей ФАПЧ и т.д. Выбор конкретного варианта зависит от требований к реализации. Так дело все и в том что поток синхронизировать по переднему фронту больше не за что зацепиться!! Так не пойдёт, по крайней мере для DPLL (для UART можно и так), т.к. будет сбиваться чифровая ФАПЧ. Как вариант, кодирование 8b/10b, что-бы небыло много последовательных нулей или единиц, или ещё Манчестерский код. В общем, курите поиск и описания, Вам нужно подковаться сначала, что-б вопросы были предметными. Вот для затравки ссылки, которые когда-то собирал: Chip News #9 2002 Характеристики цифровой системы автоподстройки частоты. стр 16 - 19 Chip News #1 2003 Аппаратная реализация двоичной полностью цифровой системы автоподстройки частоты. стр 40 - 42 Hisao Yamamoto, Shinsaku Mori Performance of a binary Quantized All Digital Phased-Locked Loop with a New Class of Sequantial Filter IEEE Trans. on Communications Vol. COM-26, No.1, January 1978 pp.35-45 Приведены схема и анализ полностью цифровой ФАПЧ, рекомендую. Это не помню что, но гляньте: 2)74HC4046 datasheet (Philips, Texas Instr. etc) 3)http://gtmkorea.co.kr/DATABOOK/PDF/AN8017.PDF Стр. 7 (138): http://www.e-insite.net/ednmag/archives/19...8/pdfs/24di.pdf http://www.e-insite.net/ednmag/archives/19...997/13di_05.htm 8b/10b??? Edited April 16, 2009 by Serg` Quote Share this post Link to post Share on other sites More sharing options...
Builder 0 April 16, 2009 Posted April 16, 2009 · Report post Так дело все и в том что поток синхронизировать по переднему фронту больше не за что зацепиться!! 8b/10b??? И??? Что не понятно? Если кратко: UART, фронт используется для старта синхронизации, в процессе приёма коррекция часов не происходит. Поэтому приём длинных сообщений невозможен из-за рассинхронизации: при приеме каждого байта синхронизация ловится заново. ФАПЧ - используются внутренние часы с автоподстройкой, для автоподстройки используется информация от тех-же фронтов. Синхронизация отслеживается постоянно. Поэтому, для тго, что-б часы не рассинхронизировались, фроныты нужны более менее постоянно. Много последовательных нулей или единиц могут привести к рассинхронизации и сбою. Для того что-б этого не происходило, используют специальные приёмы кодирования, например 8b/10b. Вы лучше прочитайте ссылки на материалы, котрые я привёл, описание UART, после чего думаю отпадут многие вопросы... Quote Share this post Link to post Share on other sites More sharing options...
des00 16 April 16, 2009 Posted April 16, 2009 · Report post если есть доступ к источнику и хороший кабель то самое простое перевести все HDB3 и резать на тактовой в 4-8 раз выше. Синхронизация отслеживается постоянно. Поэтому, для тго, что-б часы не рассинхронизировались, фроныты нужны более менее постоянно. Много последовательных нулей или единиц могут привести к рассинхронизации и сбою. пройтись скремблером 7 кой самосинхронным, нарезать на тактовой в 4-8 раз выше и собрать сигнал(в доках у хилых такое есть) %). Quote Share this post Link to post Share on other sites More sharing options...
Builder 0 April 16, 2009 Posted April 16, 2009 · Report post если есть доступ к источнику и хороший кабель то самое простое перевести все HDB3 и резать на тактовой в 4-8 раз выше. Только HDB3 - это 3 уровня, а не 2, и насколько помню, кодирование HDB3 решает ту-де проблему что и 8b/10b, только чуть по другому (http://www.ci.ru/inform16_99/p_05_bil.htm). А так да, тоже вариант. Сам не использовал, но кажись у связистов используется HDB3. пройтись скремблером 7 кой самосинхронным, нарезать на тактовой в 4-8 раз выше и собрать сигнал(в доках у хилых такое есть) %). Не использовал, ткните носом, где почитать для общего развития, если не трудно. Quote Share this post Link to post Share on other sites More sharing options...
Zeratul 0 April 16, 2009 Posted April 16, 2009 (edited) · Report post если есть доступ к источнику и хороший кабель то самое простое перевести все HDB3 и резать на тактовой в 4-8 раз выше. пройтись скремблером 7 кой самосинхронным, нарезать на тактовой в 4-8 раз выше и собрать сигнал(в доках у хилых такое есть) %). HDB3??? Что значит пройтись скремблером 7 кой самосинхронным в каких доках??Есть ссылка или хотяб что нить чтоб облегчило поиск!!?? http://www.ci.ru/inform16_99/p_05_bil.htm) Почитал по ссылке стало немного понятнее!!тока не нашел там 8б/10б!! Прочитав статью я понял что код ко мне приходит в NRZ! Кстати еще Насколько я понял чтоб правильно перекодировать куданибудь из NRZ нужно сначала зацепитьсяза фазу а уж потом алгоритм свой пускать! Если так то какойсмысл перекодировать!?? Если поймав фазу я смогу спокойно принять NRZ сигнал!?? Для меня главное подстраиваться каждый передний фронт под фазу входного сигнала!!Подстраевать свой клок под него!! Edited April 16, 2009 by Serg` Quote Share this post Link to post Share on other sites More sharing options...
des00 16 April 17, 2009 Posted April 17, 2009 · Report post HDB3??? http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%...0%BE%D0%B2#HDB3 один из видов кодирования данных, обладающих свойством самосинхронизации, но за счет расширения полосы сигнала + есть еще пара вкусностей. Что значит пройтись скремблером 7 кой самосинхронным в каких доках??Есть ссылка или хотяб что нить чтоб облегчило поиск!!?? кодирование 4/5, 8/10 и т.д. несет цель увеличить количество переходов в сигнале, для облегчения работы системы синхронизации. но имеет недостаток в виде расширения полосы(для передачи того же объема информации нужна тактовая выше). если расширение полосы не возможно то как вариант обработать данные аддитивным скремблером в приемнике и передатчике. http://en.wikipedia.org/wiki/Scrambler но в случае возникновения битовой ошибки у вас будет размножение ошибок. Кстати еще Насколько я понял чтоб правильно перекодировать куданибудь из NRZ нужно сначала зацепитьсяза фазу а уж потом алгоритм свой пускать! Надо закодировать сигнал на передающей стороне!!! кодирование на приемной смысла не имеет. Почему я вас и спрашивал : есть ли у вас доступ к передатчику или нет, если доступа нет, то все вышеизложенное не имеет смысла. Quote Share this post Link to post Share on other sites More sharing options...
Zeratul 0 April 17, 2009 Posted April 17, 2009 · Report post Надо закодировать сигнал на передающей стороне!!! кодирование на приемной смысла не имеет. Почему я вас и спрашивал : есть ли у вас доступ к передатчику или нет, если доступа нет, то все вышеизложенное не имеет смысла. К передатчику доступа не имею!! Но вроди кое что придумал!! Сейчас потестирую! Потом выложу ВД если все получится!! Спасиби за содействие и информащию!! Quote Share this post Link to post Share on other sites More sharing options...