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

 
 
> Передача сигнала по оптическому каналу
L47
сообщение Jun 4 2014, 00:02
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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


Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
L47
сообщение Jul 24 2014, 08:58
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 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;

/*-----------------------------*/
Go to the top of the page
 
+Quote Post
DuHast
сообщение Jul 25 2014, 17:09
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Цитата(L47 @ Jul 24 2014, 12:58) *
остались некоторые вопросы:
1. планируется все таки использовать CDR, каковы на практике CDR встроенные в плис например Cyclone IV GX? имются ли какие -либо подводные камни? какие рабочие частоты? (на сколько я понимаю они оптимизированы под стандарты передачи данных)


В Циклонах стоят не CDR а SecDes работающие на скоростях от 600 Mbps. Ваше решение - внешний CDR.
Go to the top of the page
 
+Quote Post
L47
сообщение Jul 26 2014, 01:43
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 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


Go to the top of the page
 
+Quote Post
DuHast
сообщение Jul 27 2014, 05:12
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Все равно получения в этом CDR частота затем используется с работе SerDes'а и не может быть меньше 600МГц.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- L47   Передача сигнала по оптическому каналу   Jun 4 2014, 00:02
- - des00   поставить что-то вроде ADN2816ACPZ   Jun 4 2014, 01:21
|- - L47   Цитата(des00 @ Jun 4 2014, 15:31) постави...   Jun 4 2014, 10:06
|- - des00   Цитата(L47 @ Jun 4 2014, 21:16) к сожален...   Jun 4 2014, 10:25
|- - vadimp61   Цитата(des00 @ Jun 4 2014, 18:35) ИМХО, е...   Jun 4 2014, 15:02
|- - L47   Цитата(vadimp61 @ Jun 5 2014, 05:12) Я та...   Jun 4 2014, 18:23
|- - des00   Цитата(L47 @ Jun 5 2014, 06:33) Да, задач...   Jun 4 2014, 22:22
|- - vadimp61   Цитата(L47 @ Jun 5 2014, 02:33) Да, задач...   Jun 5 2014, 02:45
- - vadimp61   Примените манчестерское кодирование на частоте 100...   Jun 4 2014, 01:48
|- - L47   Цитата(vadimp61 @ Jun 4 2014, 15:58) Прим...   Jun 4 2014, 06:56
|- - vadimp61   Цитата(L47 @ Jun 4 2014, 15:06) предел дл...   Jun 4 2014, 08:03
- - krux   имхо, задачу можно разделить на две: 1) передача ч...   Jun 5 2014, 05:46
- - L47   Выявилась проблема в методе, мной выше описанном: ...   Aug 7 2014, 11:57
- - Mindworker   Подскажите, пожайлуста, в чем проблема: на выходе ...   Dec 9 2014, 14:15
|- - Maverick   Цитата(Mindworker @ Dec 9 2014, 16:15) По...   Dec 9 2014, 14:24
|- - Mindworker   Цитата(Maverick @ Dec 9 2014, 14:24) как ...   Dec 9 2014, 17:38
|- - Maverick   Цитата(Mindworker @ Dec 9 2014, 19:38) Ос...   Dec 9 2014, 19:07
- - ZASADA   а полоса пробника? а как подключаете пробник, како...   Dec 9 2014, 18:52
- - Alex11   Наверно, TDS2024C? Далее. 200 МГц полосы предполаг...   Dec 10 2014, 00:27
- - Mindworker   Все понял, всем спасибо за ответы и комментарии. П...   Dec 10 2014, 06:47
- - Leka   Цитата(Mindworker @ Dec 10 2014, 10:47) В...   Dec 10 2014, 08:10


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:42
Рейтинг@Mail.ru


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