|
Передача сигнала по оптическому каналу |
|
|
|
Jun 4 2014, 00:02
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 28-05-14
Пользователь №: 81 793

|
Здравствуйте, Уважаемые форумчане, прошу помочь в вопросе: как передать сигнал низкой частоты посредством SFP модуля с детерминированностью по времени и ошибкой в пределах 3-5 нс, ? - при сигнале несущей 100МГц и необходимости выделения чистых (в пределах 2 нс джиттера) 100МГц на приемнике. имеется ПЛИС Cyclone II, MAX II, Cyclone IV, ПО Quartus 7.2 в данное время тестирую все на Cyclone II terasic DE2 - генерирую 100МГц и импульс 10нс, пропускаю их через XOR. - на приемнике задействую PLL Cyclone II, увеличиваю постоянную времени фильтра для увеличения времени реакции PLL, выделяю несущую и сравниваю ее же с входным сигналом, сигнал выделяется, но с дополнительным импульсом, причиной которого видимо является реакция выделенной с PLL несущей частоты на изменение входного сигнала. в правильном направлении ли я двигаюсь? есть ли какие-либо другие варианты решения?
желтым - выход PLL (с задержкой) синим - вход PLL
желтым - результат сравнения выделенного сигнала с входным синим - вход PLL настройки PLL: altpll_component.operation_mode = "NORMAL" altpll_component.LOOP_FILTER_C = 20 altpll_component.m = 10 altpll_component.n = 1 altpll_component.c0_high = 5 altpll_component.c0_low = 5
|
|
|
|
|
Jun 4 2014, 06:56
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 28-05-14
Пользователь №: 81 793

|
Цитата(vadimp61 @ Jun 4 2014, 15:58)  Примените манчестерское кодирование на частоте 100-622Мгц например. Есть еще оптомодули, но не SFP работающие от DC до 5Мбод, но они по скорости не пойдут. предел для cyclone II c6 PLL out Fmax = 500MHz, то бишь выставляю клок на 500 МГц, считываю по каждому фронту состояние входа - > декодирую, получаю точность в пределах 2 нс?, попробую. спасибо за советы
|
|
|
|
|
Jun 4 2014, 08:03
|
Знающий
   
Группа: Участник
Сообщений: 599
Регистрация: 28-08-08
Из: Ростов папа
Пользователь №: 39 872

|
Цитата(L47 @ Jun 4 2014, 15:06)  предел для cyclone II c6 PLL out Fmax = 500MHz, то бишь выставляю клок на 500 МГц, считываю по каждому фронту состояние входа - > декодирую, получаю точность в пределах 2 нс?, попробую. спасибо за советы Закодируйте свой медленный сигнал с помощью манчестерского кода, то есть фронтами 500 Мгц тактовой, то получите точность повторения своего медленного сигнала 1/250000000 то есть 4 нс. На SFP нельзя подавать постоянную составляющую. Тут обсуждали http://electronix.ru/forum/index.php?showtopic=112002
|
|
|
|
|
Jun 4 2014, 10:06
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 28-05-14
Пользователь №: 81 793

|
Цитата(des00 @ Jun 4 2014, 15:31)  поставить что-то вроде ADN2816ACPZ к сожалению нету возможности дополнительно приобретать МС, но спасибо за совет, по аналогии с этой CDR микросхемой ведь можно реализовать на cyclone II? или те параметры фильтра PLL что я установил - уже предел? Цитата(vadimp61 @ Jun 4 2014, 22:13)  Закодируйте свой медленный сигнал с помощью манчестерского кода, то есть фронтами 500 Мгц тактовой, то получите точность повторения своего медленного сигнала 1/250000000 то есть 4 нс. На SFP нельзя подавать постоянную составляющую. Тут обсуждали http://electronix.ru/forum/index.php?showtopic=112002на счет SFP и передачи низкой частоты - на наших модулях мешает лишь внутрикорпусный буферный ОУ фотодиода развязанный внутри емкостями, а светодиод может работать в режиме постоянного тока. вроде как задержки в кодировании сигнала быть не должно : *_*_*_*_*_*_ тактовый ______**____ импульс *_*_*__**_*_ XOR = манчестер задержка может быть при декодировании, и чем выше частота декодера манчестера - тем меньше ошибка, или я в чем то ошибаюсь?
|
|
|
|
|
Jun 4 2014, 10:25
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(L47 @ Jun 4 2014, 21:16)  к сожалению нету возможности дополнительно приобретать МС, но спасибо за совет, по аналогии с этой CDR микросхемой ведь можно реализовать на cyclone II? или те параметры фильтра PLL что я установил - уже предел? ИМХО, если вам нужно Цитата при сигнале несущей 100МГц и необходимости выделения чистых (в пределах 2 нс джиттера) 100МГц на приемнике. получить чистый синус с низким джиттером, то я бы поставил внешний CDR с узкой петлей. Затем положим у вас данные 100 килобит, повторяем каждый бит 1000 раз, получаем 100мегабит. Пропускаем через короткий скремблер, получаем высокочастотное заполнение. И данные передали низкие и CDR помогли (переходов будет много). Делать CDR на альтеровской PLL я бы не стал, не для того создавалась. Как вариант сделать цифровую петлю ФАПЧ, она позволит вам получить "чистый" клок, но без внешнего гуна это будет дрожащий строб валидности данных.
--------------------
|
|
|
|
|
Jun 4 2014, 15:02
|
Знающий
   
Группа: Участник
Сообщений: 599
Регистрация: 28-08-08
Из: Ростов папа
Пользователь №: 39 872

|
Цитата(des00 @ Jun 4 2014, 18:35)  ИМХО, если вам нужно
получить чистый синус с низким джиттером, то я бы поставил внешний CDR с узкой петлей. Затем положим у вас данные 100 килобит, повторяем каждый бит 1000 раз, получаем 100мегабит. Пропускаем через короткий скремблер, получаем высокочастотное заполнение. И данные передали низкие и CDR помогли (переходов будет много).
Делать CDR на альтеровской PLL я бы не стал, не для того создавалась. Как вариант сделать цифровую петлю ФАПЧ, она позволит вам получить "чистый" клок, но без внешнего гуна это будет дрожащий строб валидности данных. Я так понял что ТС надо передавать одиночные TTL импульсы с минимальной задержкой на восстановление, а не чистый синус. Ждем пояснения от ТС.
|
|
|
|
|
Jun 4 2014, 18:23
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 28-05-14
Пользователь №: 81 793

|
Цитата(vadimp61 @ Jun 5 2014, 05:12)  Я так понял что ТС надо передавать одиночные TTL импульсы с минимальной задержкой на восстановление, а не чистый синус. Ждем пояснения от ТС. Да, задачей является - передать одиночный импульс раз в 100мкс (10кГц) и раз в секунду (PPS), - выделить на приемнике помимо сигнальных импульсов - тактовую частоту 100МГц, - обеспечить возможность различия импульсов 10кГц и PPS. - обеспечить детерминированность времени декодирования сигнала.
|
|
|
|
|
Jun 4 2014, 22:22
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(L47 @ Jun 5 2014, 06:33)  Да, задачей является - передать одиночный импульс раз в 100мкс (10кГц) и раз в секунду (PPS), - выделить на приемнике помимо сигнальных импульсов - тактовую частоту 100МГц, - обеспечить возможность различия импульсов 10кГц и PPS. - обеспечить детерминированность времени декодирования сигнала. поток 100 мегабит, пропущенный через мультипликативный скремблер на который подана 1ца, передача 10КГц - импульс с уровнем 0 длительностью 3 такта, 1Гц импульс с уровнем 0 длительностью 7 тактов. На приемнике обратный путь. Селекция по длительности импульса. 1. На постоянке лазер работать будет не долго, держать его постоянно включенным не рекомендуется. Деградирует. Еще не забывайте про стандарты безопасности, там светить после включения, если нет оптики, постоянно нельзя. 2. Высокая частота -> много переходов -> проще сделать CDR. И CDR лучше взять внешний, специализированный под использование с оптическими модулями.
--------------------
|
|
|
|
|
Jun 5 2014, 02:45
|
Знающий
   
Группа: Участник
Сообщений: 599
Регистрация: 28-08-08
Из: Ростов папа
Пользователь №: 39 872

|
Цитата(L47 @ Jun 5 2014, 02:33)  Да, задачей является - передать одиночный импульс раз в 100мкс (10кГц) и раз в секунду (PPS), - выделить на приемнике помимо сигнальных импульсов - тактовую частоту 100МГц, - обеспечить возможность различия импульсов 10кГц и PPS. - обеспечить детерминированность времени декодирования сигнала. Берите оптомодуль от AVAGO, он искажает импульс по длительности не более 4 нс Зачем? может просто сгенерить синхронную принимаемым импульсам?
|
|
|
|
|
Jul 24 2014, 08:58
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 28-05-14
Пользователь №: 81 793

|
Проблема решена на CycloneIV следующим образом: на передатчике:с передатчика отправляется сигнал 100МГц с вырезанным в момент прихода PPS импульсом: assign tx = pps ? 0 : clk_1; время прихода pps относительно фронта clk подтягивается с помощью задержки: lcell delay (.in(clk), .out(clk_1)); на приемнике:генерируются 2 тактовые частоты с помощью ФАПЧ с частотой 400МГц, одна с отклонением на 90 град. введен 1 счетчик по переднему фронту и 2-й счетчик по заднему фронту тактовой частоты 400МГц синхронно сбрасывающийся по приходу фронта принимаемой частоты 100МГц аналогичные счетчики введены для частоты сдвинутой на 90 град. коэфф. счета счетчиков равен трем при срабатывании хотя бы двух из всех четырех счетчиков в приемнике формируется сигнал PPS, в результате получаем джиттер в пределах 1,25нс для интереса также было испытано при генерировании двух тактовых частот по 1 ГГц, результат давал джиттер около 0.5 нс также имеется возможность уменьшить джиттер добавлением частот с меньшим отклонением по углу. остались некоторые вопросы: 1. планируется все таки использовать CDR, каковы на практике CDR встроенные в плис например Cyclone IV GX? имются ли какие -либо подводные камни? какие рабочие частоты? (на сколько я понимаю они оптимизированы под стандарты передачи данных) 2. реализовывал ли кто-либо White-rabbit синхронизацию?, если да то поделитесь пожалуйста ссылкой или соображениями по принципам реализации синхронизации до единиц наносекунд. 3. возможно есть какие-либо недочеты/ошибки в коде, прошу дать знать. приемник: пример с использованием несущей в 24МГц:Код /*Обнаружение PPS и восстановление частоты*/
//Параметр - число тактов от обнаруженного заднего фронта mdi, при превышении значения > parameter n_c = 9; // > обнаружение PPS parameter n_cnt = 16; // > сброс счетчика, чем больше тем шире восстановленный импульс в clk_r parameter n_c_p =8; // > запуск на восстановления импульса, может срабатывать не только в момент прихода PPS, вносит ошибку в восстановленную частоту //при изменении параметра проверить размер счетчика на соответствие
//Обнаружение тактированием от 400МГц_0град
reg [4:0] p = 0; //счетчик переднего фронта reg [4:0] n = 0; //счетчик заднего фронта
always @(posedge clk_ref) //счет передних фронтов, когда mdi = 0 begin if(!mdi) if(p < n_cnt) begin p <= p + 1'b1; end else begin p <= 0; end else p <= 0; end
always @(negedge clk_ref) //счет задних фронтов, когда mdi = 0 begin if(!mdi) if(n < n_cnt) begin n <= n + 1'b1; end else begin n <= 0; end else n <= 0; end /////////////////////////////////////
//Обнаружение тактированием от 400МГц_90град
reg [4:0] p_2 = 0;//счетчик переднего фронта reg [4:0] n_2 = 0;//счетчик заднего фронта
always @(posedge clk_ref_2) //счет передних фронтов, когда mdi = 0 begin if(!mdi) if(p_2 < n_cnt) begin p_2 <= p_2 + 1'b1; end else begin p_2 <= 0; end else p_2 <= 0; end
always @(negedge clk_ref_2) //счет задних фронтов, когда mdi = 0 begin if(!mdi) if(n_2 < n_cnt) begin n_2 <= n_2 + 1'b1; end else begin n_2 <= 0; end else n_2 <= 0; end
//Обнаружение PPS (если хотябы два будут больше чем n_c PPS = 1) assign data = ((p_2 > n_c)&&(n_2 > n_c))||((p > n_c)&&(n > n_c))||((n > n_c)&&(n_2 > n_c))||((p > n_c)&&(n_2 > n_c))||((p > n_c)&&(p_2 > n_c))||((n > n_c)&&(p_2 > n_c)); //Обнаружение вырезаного импульса (если хотябы два будут больше чем n_c_p pulse = 1) assign pulse = ((p_2 > n_c_p)&&(n_2 > n_c_p))||((p > n_c_p)&&(n > n_c_p))||((n > n_c_p)&&(n_2 > n_c_p))||((p > n_c_p)&&(n_2 > n_c_p))||((p > n_c_p)&&(p_2 > n_c_p))||((n > n_c_p)&&(p_2 > n_c_p));
//Восстановление частоты (восстановление срезанного импульса) assign clk_r = pulse? pulse : mdi;
/*-----------------------------*/
|
|
|
|
|
Jul 26 2014, 01:43
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 28-05-14
Пользователь №: 81 793

|
Цитата(DuHast @ Jul 26 2014, 03:09)  В Циклонах стоят не CDR а SecDes работающие на скоростях от 600 Mbps. Ваше решение - внешний CDR. Цитата Receives the serial data stream and feeds the stream to the channel PLL if you configure the channel PLL as a CDR http://www.altera.com/literature/hb/cyclon...e5_handbook.pdf
|
|
|
|
|
Aug 7 2014, 11:57
|
Участник

Группа: Участник
Сообщений: 35
Регистрация: 28-05-14
Пользователь №: 81 793

|
Выявилась проблема в методе, мной выше описанном: генерирую 2 частоты PLL-ом по 400МГц, одна на 90 град смещена, ищу вырезанный импульс (PPS) в несущей частоте 24 МГц, в случае когда вывожу найденный PPS таким способом: Код assign data = (p > n_c) || (n > n_c) || (p_2 > n_c) || (n_2 > n_c); на выводе data появляются помехи, в случае отдельного вывода: Код assign pps_p = p > n_c; assign pps_n = n > n_c; assign pps_p_2 = p_2 > n_c; assign pps_n_2 = n_2 > n_c; - помех нет, выводится PPS в случае использования счетчика на 5: (в выше изложенном использовался счетчик на 4) Код reg [4:0] p = 0; при попытке вывода pps по отдельности - т.е. "pps_p = p > n_c;" - тоже выдает шум вместо сигнала PPS. склоняюсь к тому что связано это с внутренними наводками на счетчик, так ли это?
|
|
|
|
|
Dec 9 2014, 14:15
|
Группа: Новичок
Сообщений: 3
Регистрация: 6-12-14
Пользователь №: 84 009

|
Подскажите, пожайлуста, в чем проблема: на выходе ножки ПЛИС на частоте 125МГц нет меандра, вместо этого появляется синусоподобный сигнал. Частоту формировал на PLL и DCM внутри ПЛИС, потом выводил на ножку. Тактовая частота генератора 100МГц, на плате не меандр. Мне необходимо получить меандр на 125МГц, что я не так делаю?
|
|
|
|
|
Dec 9 2014, 14:24
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(Mindworker @ Dec 9 2014, 16:15)  Подскажите, пожайлуста, в чем проблема: на выходе ножки ПЛИС на частоте 125МГц нет меандра, вместо этого появляется синусоподобный сигнал. Частоту формировал на PLL и DCM внутри ПЛИС, потом выводил на ножку. Тактовая частота генератора 100МГц, на плате не меандр. Мне необходимо получить меандр на 125МГц, что я не так делаю? как подключен осцилограф/анализатор? какой осцилограф/анализатор? полоса, частота дискретизации позволяет?
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Dec 9 2014, 17:38
|
Группа: Новичок
Сообщений: 3
Регистрация: 6-12-14
Пользователь №: 84 009

|
Цитата(Maverick @ Dec 9 2014, 14:24)  как подключен осцилограф/анализатор? какой осцилограф/анализатор? полоса, частота дискретизации позволяет? Осциллограф Tektronix TDS2042C. Полоса = 200МГц, частота дискретизации = 2GS/s. Одна беда он был до этого не заземлен, но потом заземлил и та же картина. Пробники с 10-ми делителями.
|
|
|
|
|
Dec 10 2014, 06:47
|
Группа: Новичок
Сообщений: 3
Регистрация: 6-12-14
Пользователь №: 84 009

|
Все понял, всем спасибо за ответы и комментарии. Пойдем просить новый осциллограф
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|