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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> LVDS преобразователь, Проектирование приемника LVDS в Циклоне
EpLeon
сообщение Mar 2 2016, 05:32
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 10-07-12
Пользователь №: 72 683



Добрый день.

Подскажите, пожалуйста. Задача заключается в следующем: есть 10-битный АЦП AD9212 - он посылает данные в формате LVDS с частотой 400Mbps или 40МГц на событие. Необходимо рсшифровать эти данные в Циклоне - EP4CE55F23C6. Пробую использовать встроенную мегафункцию altlvds_rx со следующими параметрами:
SUBDESIGN LVDS_In
(
rx_in[0..0] : INPUT;
rx_inclock : INPUT = GND;
rx_locked : OUTPUT;
rx_out[9..0] : OUTPUT;
rx_outclock : OUTPUT;
)
VARIABLE
altlvds_rx_component : altlvds_rx WITH (
COMMON_RX_TX_PLL = "ON",
DESERIALIZATION_FACTOR = 10,
IMPLEMENT_IN_LES = "ON",
INCLOCK_DATA_ALIGNMENT = "UNUSED",
INCLOCK_PERIOD = 25000,
INCLOCK_PHASE_SHIFT = 0,
INPUT_DATA_RATE = 400,
INTENDED_DEVICE_FAMILY = "Cyclone IV E",
LPM_HINT = "CBX_MODULE_PREFIX=LVDS_In",
LPM_TYPE = "altlvds_rx",
NUMBER_OF_CHANNELS = 1,
PLL_SELF_RESET_ON_LOSS_LOCK = "OFF",
PORT_RX_CHANNEL_DATA_ALIGN = "PORT_UNUSED",
PORT_RX_DATA_ALIGN = "PORT_UNUSED",
REGISTERED_DATA_ALIGN_INPUT = "OFF",
REGISTERED_OUTPUT = "ON",
USE_EXTERNAL_PLL = "OFF"
);
BEGIN

rx_locked = altlvds_rx_component.rx_locked;
rx_out[9..0] = altlvds_rx_component.rx_out[9..0];
rx_outclock = altlvds_rx_component.rx_outclock;
altlvds_rx_component.rx_inclock = rx_inclock;
altlvds_rx_component.rx_in[0..0] = rx_in[0..0];
END;

Пишу на языке AHDL в силу пока незнания остальных. Данные, которые потом вывожу на ножки циклона в виде параллельного кода как-то не соответствуют сигналу. Подскажите, все ли правильно в настройка функции. Клок на функцию использую тот же, что и в самой альтере для других вещей через pll функцию. Сама же частота задается извне генератором 40МГц.
Go to the top of the page
 
+Quote Post
iiv
сообщение Mar 2 2016, 08:42
Сообщение #2


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(EpLeon @ Mar 2 2016, 10:32) *
rx_inclock : INPUT = GND;

это же клок фрейма (FCO+,FCO-), который в Вашем случае в 10 раз медленнее клока данных. Вам также надо прописать правильные частоты, на который Вы будете работать, чтобы altlvds сделало на своей PLL такт для данных, оно у Вас есть, и вроде правильное (DESERIALIZATION_FACTOR = 10, INPUT_DATA_RATE = 400).

Кстати, в этом случае, клок данных (DCO+, DCO-) получается не нужен и это очень странно. Вот в этом последнем утверждении сам сомневаюсь, очень надеюсь, что кто-то поправит, если я ошибаюсь.
Go to the top of the page
 
+Quote Post
doom13
сообщение Mar 2 2016, 12:50
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(iiv @ Mar 2 2016, 11:42) *
это же клок фрейма (FCO+,FCO-), который в Вашем случае в 10 раз медленнее клока данных.
Кстати, в этом случае, клок данных (DCO+, DCO-) получается не нужен и это очень странно. Вот в этом последнем утверждении сам сомневаюсь, очень надеюсь, что кто-то поправит, если я ошибаюсь.

На порт rx_inclock может подаваться как frame clock, так и data clock, просто необходимо задать правильные параметры для ядра.
Go to the top of the page
 
+Quote Post
doom13
сообщение Mar 2 2016, 14:38
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(EpLeon @ Mar 2 2016, 08:32) *
Добрый день.

Подскажите, пожалуйста. Задача заключается в следующем: есть 10-битный АЦП AD9212 - он посылает данные в формате LVDS с частотой 400Mbps или 40МГц на событие. Необходимо рсшифровать эти данные в Циклоне - EP4CE55F23C6. Пробую использовать встроенную мегафункцию altlvds_rx со следующими параметрами:

Пишу на языке AHDL в силу пока незнания остальных. Данные, которые потом вывожу на ножки циклона в виде параллельного кода как-то не соответствуют сигналу. Подскажите, все ли правильно в настройка функции. Клок на функцию использую тот же, что и в самой альтере для других вещей через pll функцию. Сама же частота задается извне генератором 40МГц.


Параметры ядра у Вас заданы неправильно. Скорость потока данных 400 Mbit/s, а тактовая 200 MHz (40MHz * 5 = 200 MHz) - приёмник должен принимать DDR поток данных.

INCLOCK_PERIOD = 5000
Go to the top of the page
 
+Quote Post
EpLeon
сообщение Mar 2 2016, 14:40
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 10-07-12
Пользователь №: 72 683



Цитата(doom13 @ Mar 2 2016, 20:28) *
Параметры ядра у Вас заданы неправильно. Скорость потока данных 400 Mbit/s, а тактовая 200 MHz (40MHz * 5 = 200 MHz) - приёмник должен принимать DDR поток данных.

Немного не понял по поводу тактовой скорости. Почему она должна быть 200МГц, а не 40? У меня частота АЦП 40МГц = 25нс, за эти 25нс он передает 10 бит данных. То есть 400Мб/с. Может быть тогда уж 800МГц? Но не 200... он же будет два бита схлопывать, как один...
Go to the top of the page
 
+Quote Post
doom13
сообщение Mar 2 2016, 15:06
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(EpLeon @ Mar 2 2016, 17:40) *
Немного не понял по поводу тактовой скорости. Почему она должна быть 200МГц, а не 40? У меня частота АЦП 40МГц = 25нс, за эти 25нс он передает 10 бит данных. То есть 400Мб/с. Может быть тогда уж 800МГц? Но не 200... он же будет два бита схлопывать, как один...

Да, ступил, если frame clock подаёте на ногу ядра, то всё правильно.

PS:
Имел ввиду, что для тактирования ядра используется data clock, а он в Вашем случае 200 MHz, работает по двум фронтам (см. доку).

Цитата(EpLeon @ Mar 2 2016, 08:32) *
Клок на функцию использую тот же, что и в самой альтере для других вещей через pll функцию. Сама же частота задается извне генератором 40МГц.

Что это означает? Ядро ALTLVDS_RX должно тактироваться "клоком" от АЦП (fclk или dclk).
Go to the top of the page
 
+Quote Post
doom13
сообщение Mar 2 2016, 16:12
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Ещё разберитесь с
Цитата
PORT_RX_CHANNEL_DATA_ALIGN = "PORT_UNUSED",
PORT_RX_DATA_ALIGN = "PORT_UNUSED",
REGISTERED_DATA_ALIGN_INPUT = "OFF",
, вероятно, последовательные данные принимаются со сдвигом на N-бит. Тут необходим автомат который будет находить границы принимаемого слова.
Go to the top of the page
 
+Quote Post
EpLeon
сообщение Mar 2 2016, 23:48
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 10-07-12
Пользователь №: 72 683



Цитата(doom13 @ Mar 2 2016, 22:12) *
Ещё разберитесь с
, вероятно, последовательные данные принимаются со сдвигом на N-бит. Тут необходим автомат который будет находить границы принимаемого слова.

Но из АЦП не выходит каких либо служебных сигналов - только данные и есть еще две пары ножек с тактовыми частотами FCO и DCO.
Кроме того, если я правильно понимаю, то у меня функция циклона тактируется сама - внешний клок у нее отключен USE_EXTERNAL_PLL = "OFF".
Go to the top of the page
 
+Quote Post
EpLeon
сообщение Mar 3 2016, 05:52
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 10-07-12
Пользователь №: 72 683



Цитата(doom13 @ Mar 2 2016, 21:06) *
Да, ступил, если frame clock подаёте на ногу ядра, то всё правильно.

PS:
Имел ввиду, что для тактирования ядра используется data clock, а он в Вашем случае 200 MHz, работает по двум фронтам (см. доку).


Что это означает? Ядро ALTLVDS_RX должно тактироваться "клоком" от АЦП (fclk или dclk).


То есть я правильно понимаю, что мне нужно взять с АЦП FCO и DCO и по ним тактировать данные с АЦП? Первым тактировать посылки, а вторым сами биты в посылке? Но когда я пытаюсь создать в мегофункции внешний клок, то Квартус ругается, что максимальная частота для внешнего тактирования 760МГц, так как ему нужна в данном случае удвоенная частота прихода бит.
Go to the top of the page
 
+Quote Post
doom13
сообщение Mar 3 2016, 06:40
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(EpLeon @ Mar 3 2016, 02:48) *
Но из АЦП не выходит каких либо служебных сигналов - только данные и есть еще две пары ножек с тактовыми частотами FCO и DCO.

Есть ещё SPI, который позволяет переключить АЦП в режим синхронизации, когда на выход выдаётся test pattern. Он используется для определения правильных границ принимаемого слова (совместно с align портом ядра).

Цитата(EpLeon @ Mar 3 2016, 02:48) *
Кроме того, если я правильно понимаю, то у меня функция циклона тактируется сама - внешний клок у нее отключен USE_EXTERNAL_PLL = "OFF".

ALTLVDS_RX должна тактироваться от FCO или DCO (лучше DCO). USE_EXTERNAL_PLL = "OFF" - означает, что ядро ALTLVDS_RX будет использовать PLL внутри, который сгенерирует все необходимые для работы ядра клоки. Можно включить опцию "ON" (внешний PLL), чтобы была возможность использовать данный PLL для тактирования других модулей.

Цитата(EpLeon @ Mar 3 2016, 08:52) *
То есть я правильно понимаю, что мне нужно взять с АЦП FCO и DCO и по ним тактировать данные с АЦП? Первым тактировать посылки, а вторым сами биты в посылке? Но когда я пытаюсь создать в мегофункции внешний клок, то Квартус ругается, что максимальная частота для внешнего тактирования 760МГц, так как ему нужна в данном случае удвоенная частота прихода бит.

На rx_inclock подаёте DCO, ядро настраиваете следующим образом (для приёма одного канала АЦП):
CODE

ALTLVDS_RX_component.buffer_implementation = "RAM",
ALTLVDS_RX_component.cds_mode = "UNUSED",
ALTLVDS_RX_component.common_rx_tx_pll = "OFF",
ALTLVDS_RX_component.data_align_rollover = 4,
ALTLVDS_RX_component.data_rate = "400.0 Mbps",
ALTLVDS_RX_component.deserialization_factor = 10,
ALTLVDS_RX_component.dpa_initial_phase_value = 0,
ALTLVDS_RX_component.dpll_lock_count = 0,
ALTLVDS_RX_component.dpll_lock_window = 0,
ALTLVDS_RX_component.enable_clock_pin_mode = "UNUSED",
ALTLVDS_RX_component.enable_dpa_align_to_rising_edge_only = "OFF",
ALTLVDS_RX_component.enable_dpa_calibration = "ON",
ALTLVDS_RX_component.enable_dpa_fifo = "UNUSED",
ALTLVDS_RX_component.enable_dpa_initial_phase_selection = "OFF",
ALTLVDS_RX_component.enable_dpa_mode = "OFF",
ALTLVDS_RX_component.enable_dpa_pll_calibration = "OFF",
ALTLVDS_RX_component.enable_soft_cdr_mode = "OFF",
ALTLVDS_RX_component.implement_in_les = "OFF",
ALTLVDS_RX_component.inclock_boost = 0,
ALTLVDS_RX_component.inclock_data_alignment = "EDGE_ALIGNED",
ALTLVDS_RX_component.inclock_period = 5000,
ALTLVDS_RX_component.inclock_phase_shift = 0,
ALTLVDS_RX_component.input_data_rate = 400,
ALTLVDS_RX_component.intended_device_family = "Cyclone V",
ALTLVDS_RX_component.lose_lock_on_one_change = "UNUSED",
ALTLVDS_RX_component.lpm_hint = "CBX_MODULE_PREFIX=ghh",
ALTLVDS_RX_component.lpm_type = "altlvds_rx",
ALTLVDS_RX_component.number_of_channels = 1,
ALTLVDS_RX_component.outclock_resource = "Dual-Regional clock",
ALTLVDS_RX_component.pll_operation_mode = "NORMAL",
ALTLVDS_RX_component.pll_self_reset_on_loss_lock = "UNUSED",
ALTLVDS_RX_component.port_rx_channel_data_align = "PORT_UNUSED",
ALTLVDS_RX_component.port_rx_data_align = "PORT_UNUSED",
ALTLVDS_RX_component.refclk_frequency = "200.000000 MHz",
ALTLVDS_RX_component.registered_data_align_input = "UNUSED",
ALTLVDS_RX_component.registered_output = "ON",
ALTLVDS_RX_component.reset_fifo_at_first_lock = "UNUSED",
ALTLVDS_RX_component.rx_align_data_reg = "RISING_EDGE",
ALTLVDS_RX_component.sim_dpa_is_negative_ppm_drift = "OFF",
ALTLVDS_RX_component.sim_dpa_net_ppm_variation = 0,
ALTLVDS_RX_component.sim_dpa_output_clock_phase_shift = 0,
ALTLVDS_RX_component.use_coreclock_input = "OFF",
ALTLVDS_RX_component.use_dpll_rawperror = "OFF",
ALTLVDS_RX_component.use_external_pll = "OFF",
ALTLVDS_RX_component.use_no_phase_shift = "ON",
ALTLVDS_RX_component.x_on_bitslip = "ON",
ALTLVDS_RX_component.clk_src_is_pll = "off";


PS:
Если принять правильные данные не удаётся - добавляете rx_channel_data_align порт и реализуете автомат синхронизации.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
iiv
сообщение Mar 3 2016, 07:55
Сообщение #11


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(doom13 @ Mar 3 2016, 11:40) *
ALTLVDS_RX должна тактироваться от FCO или DCO (лучше DCO).

скажите, пожалуйста, можно ли тактировать АЦПшку от DCO, но использовать FCO для распознания начала фрейма, и, если да, то как? Иначе как-то не логично получается, нога есть, а пользы от нее нет.
Go to the top of the page
 
+Quote Post
EpLeon
сообщение Mar 3 2016, 08:09
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 10-07-12
Пользователь №: 72 683



Цитата(doom13 @ Mar 3 2016, 12:40) *
Есть ещё SPI, который позволяет переключить АЦП в режим синхронизации, когда на выход выдаётся test pattern. Он используется для определения правильных границ принимаемого слова (совместно с align портом ядра).


ALTLVDS_RX должна тактироваться от FCO или DCO (лучше DCO). USE_EXTERNAL_PLL = "OFF" - означает, что ядро ALTLVDS_RX будет использовать PLL внутри, который сгенерирует все необходимые для работы ядра клоки. Можно включить опцию "ON" (внешний PLL), чтобы была возможность использовать данный PLL для тактирования других модулей.


На rx_inclock подаёте DCO, ядро настраиваете следующим образом (для приёма одного канала АЦП):
CODE

ALTLVDS_RX_component.buffer_implementation = "RAM",
ALTLVDS_RX_component.cds_mode = "UNUSED",
ALTLVDS_RX_component.common_rx_tx_pll = "OFF",
ALTLVDS_RX_component.data_align_rollover = 4,
ALTLVDS_RX_component.data_rate = "400.0 Mbps",
ALTLVDS_RX_component.deserialization_factor = 10,
ALTLVDS_RX_component.dpa_initial_phase_value = 0,
ALTLVDS_RX_component.dpll_lock_count = 0,
ALTLVDS_RX_component.dpll_lock_window = 0,
ALTLVDS_RX_component.enable_clock_pin_mode = "UNUSED",
ALTLVDS_RX_component.enable_dpa_align_to_rising_edge_only = "OFF",
ALTLVDS_RX_component.enable_dpa_calibration = "ON",
ALTLVDS_RX_component.enable_dpa_fifo = "UNUSED",
ALTLVDS_RX_component.enable_dpa_initial_phase_selection = "OFF",
ALTLVDS_RX_component.enable_dpa_mode = "OFF",
ALTLVDS_RX_component.enable_dpa_pll_calibration = "OFF",
ALTLVDS_RX_component.enable_soft_cdr_mode = "OFF",
ALTLVDS_RX_component.implement_in_les = "OFF",
ALTLVDS_RX_component.inclock_boost = 0,
ALTLVDS_RX_component.inclock_data_alignment = "EDGE_ALIGNED",
ALTLVDS_RX_component.inclock_period = 5000,
ALTLVDS_RX_component.inclock_phase_shift = 0,
ALTLVDS_RX_component.input_data_rate = 400,
ALTLVDS_RX_component.intended_device_family = "Cyclone V",
ALTLVDS_RX_component.lose_lock_on_one_change = "UNUSED",
ALTLVDS_RX_component.lpm_hint = "CBX_MODULE_PREFIX=ghh",
ALTLVDS_RX_component.lpm_type = "altlvds_rx",
ALTLVDS_RX_component.number_of_channels = 1,
ALTLVDS_RX_component.outclock_resource = "Dual-Regional clock",
ALTLVDS_RX_component.pll_operation_mode = "NORMAL",
ALTLVDS_RX_component.pll_self_reset_on_loss_lock = "UNUSED",
ALTLVDS_RX_component.port_rx_channel_data_align = "PORT_UNUSED",
ALTLVDS_RX_component.port_rx_data_align = "PORT_UNUSED",
ALTLVDS_RX_component.refclk_frequency = "200.000000 MHz",
ALTLVDS_RX_component.registered_data_align_input = "UNUSED",
ALTLVDS_RX_component.registered_output = "ON",
ALTLVDS_RX_component.reset_fifo_at_first_lock = "UNUSED",
ALTLVDS_RX_component.rx_align_data_reg = "RISING_EDGE",
ALTLVDS_RX_component.sim_dpa_is_negative_ppm_drift = "OFF",
ALTLVDS_RX_component.sim_dpa_net_ppm_variation = 0,
ALTLVDS_RX_component.sim_dpa_output_clock_phase_shift = 0,
ALTLVDS_RX_component.use_coreclock_input = "OFF",
ALTLVDS_RX_component.use_dpll_rawperror = "OFF",
ALTLVDS_RX_component.use_external_pll = "OFF",
ALTLVDS_RX_component.use_no_phase_shift = "ON",
ALTLVDS_RX_component.x_on_bitslip = "ON",
ALTLVDS_RX_component.clk_src_is_pll = "off";


PS:
Если принять правильные данные не удаётся - добавляете rx_channel_data_align порт и реализуете автомат синхронизации.


Так и не понял почему у вас стоит 200МГц... хотя на DCO именно она и выходит - проверил щупом. При этом частоты внутри циклона и АЦП синхрованы, поэтому не очень понятно зачем использовать FCO? Кроме того вопрос можно ли обойтись без FCO и DCO? Просто АЦП и циклон находятся на разных платах и возможности их соединить еще одним кабельком очевидной нет( И таких платок с АЦП у меня две и они обе соединяются с циклоном.

И еще. У меня установлен квартус 9.1 в нем мегофункция приемника немного попроще. И пишу я на AHDL. Вверху топика я привел параметры мегофункции, которые у меня сейчас установлены.

Сообщение отредактировал EpLeon - Mar 3 2016, 08:27
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
doom13
сообщение Mar 3 2016, 10:03
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(iiv @ Mar 3 2016, 10:55) *
скажите, пожалуйста, можно ли тактировать АЦПшку от DCO, но использовать FCO для распознания начала фрейма, и, если да, то как? Иначе как-то не логично получается, нога есть, а пользы от нее нет.

Тактовая частота АЦП и FCO равны (в МГц). Для тактирования приёмника можно использовать как FCO, так и DCO (одну из них, лучше DCO), ядро ALTLVDS_RX поставит внутри PLL и само сгенерирует необходимые клоки, или можно задать вручную при использовании внешнего PLL. Правильный приём фрейма осуществляется синхронизацией АЦП и приёмника (используется порт rx_data_align).

Цитата(EpLeon @ Mar 3 2016, 11:09) *
Так и не понял почему у вас стоит 200МГц... хотя на DCO именно она и выходит - проверил щупом. При этом частоты внутри циклона и АЦП синхрованы, поэтому не очень понятно зачем использовать FCO? Кроме того вопрос можно ли обойтись без FCO и DCO? Просто АЦП и циклон находятся на разных платах и возможности их соединить еще одним кабельком очевидной нет( И таких платок с АЦП у меня две и они обе соединяются с циклоном.

FCO - соответствует началу фрейма, Ваш синхронный клок будет сдвинут по фазе. Можно попробовать обойтись без FCO/DCO (так не делали), но без автомата, который ищет границы фрейма НЕТ (для этого случая Ваши настройки ядра верны).
Go to the top of the page
 
+Quote Post
iiv
сообщение Mar 3 2016, 10:18
Сообщение #14


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(doom13 @ Mar 3 2016, 15:03) *
Тактовая частота АЦП и FCO равны (в МГц). Для тактирования приёмника можно использовать как FCO, так и DCO (одну из них, лучше DCO), ядро ALTLVDS_RX поставит внутри PLL и само сгенерирует необходимые клоки, или можно задать вручную при использовании внешнего PLL. Правильный приём фрейма осуществляется синхронизацией АЦП и приёмника (используется порт rx_data_align).

то есть, скажите, пожалуйста, правильно ли я понимаю, что надо DCO завести на rx_inclock, а FCO завести на rx_data_align?
Go to the top of the page
 
+Quote Post
doom13
сообщение Mar 3 2016, 10:29
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(iiv @ Mar 3 2016, 13:18) *
то есть, скажите, пожалуйста, правильно ли я понимаю, что надо DCO завести на rx_inclock, а FCO завести на rx_data_align?

Это "стёб"?

Это правильно:
Цитата(iiv @ Mar 3 2016, 13:18) *
то есть, скажите, пожалуйста, правильно ли я понимаю, что надо DCO завести на rx_inclock...


Это нет:
Цитата(iiv @ Mar 3 2016, 13:18) *
а FCO завести на rx_data_align?

Каждый такт на rx_data_align сдвигает последовательность бит в выходных данных на 1 бит (т.о. сравниваем с ADC test pattern и ищем правильные границы фрейма).
Go to the top of the page
 
+Quote Post

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

 


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


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