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

 
 
> 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
 
Start new topic
Ответов
doom13
сообщение Mar 2 2016, 16:12
Сообщение #2


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

Группа: Свой
Сообщений: 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
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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
doom13
сообщение Mar 3 2016, 06:40
Сообщение #4


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

Группа: Свой
Сообщений: 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

Сообщений в этой теме
- EpLeon   LVDS преобразователь   Mar 2 2016, 05:32
- - iiv   Цитата(EpLeon @ Mar 2 2016, 10:32) rx_inc...   Mar 2 2016, 08:42
|- - doom13   Цитата(iiv @ Mar 2 2016, 11:42) это же кл...   Mar 2 2016, 12:50
- - doom13   Цитата(EpLeon @ Mar 2 2016, 08:32) Добрый...   Mar 2 2016, 14:38
|- - EpLeon   Цитата(doom13 @ Mar 2 2016, 20:28) Параме...   Mar 2 2016, 14:40
|- - doom13   Цитата(EpLeon @ Mar 2 2016, 17:40) Немног...   Mar 2 2016, 15:06
|- - EpLeon   Цитата(doom13 @ Mar 2 2016, 21:06) Да, ст...   Mar 3 2016, 05:52
- - iiv   Цитата(doom13 @ Mar 3 2016, 11:40) ALTLVD...   Mar 3 2016, 07:55
|- - doom13   Цитата(iiv @ Mar 3 2016, 10:55) скажите, ...   Mar 3 2016, 10:03
|- - iiv   Цитата(doom13 @ Mar 3 2016, 15:03) Тактов...   Mar 3 2016, 10:18
||- - doom13   Цитата(iiv @ Mar 3 2016, 13:18) то есть, ...   Mar 3 2016, 10:29
|- - EpLeon   Цитата(doom13 @ Mar 3 2016, 16:03) Тактов...   Mar 3 2016, 12:00
|- - doom13   Цитата(EpLeon @ Mar 3 2016, 15:00) Спасиб...   Mar 3 2016, 12:46
|- - EpLeon   Цитата(doom13 @ Mar 3 2016, 18:46) Всё ск...   Mar 3 2016, 13:12
|- - doom13   Цитата(EpLeon @ Mar 3 2016, 16:12) То ест...   Mar 3 2016, 13:39
|- - EpLeon   Цитата(doom13 @ Mar 3 2016, 19:39) Это ид...   Mar 3 2016, 14:30
||- - doom13   Цитата(EpLeon @ Mar 3 2016, 17:30) Извини...   Mar 3 2016, 14:45
|- - EpLeon   Цитата(doom13 @ Mar 3 2016, 19:39) Это ид...   Mar 3 2016, 22:53
|- - doom13   Цитата(EpLeon @ Mar 4 2016, 01:53) То ест...   Mar 4 2016, 06:32
|- - EpLeon   Цитата(doom13 @ Mar 4 2016, 12:32) Да. М...   Mar 4 2016, 15:51
|- - doom13   Цитата(EpLeon @ Mar 4 2016, 18:51) Сдвиг ...   Mar 4 2016, 21:51
|- - EpLeon   Цитата(doom13 @ Mar 5 2016, 03:51) Импуль...   Mar 4 2016, 23:14
|- - doom13   Цитата(EpLeon @ Mar 5 2016, 02:14) И еще,...   Mar 5 2016, 07:11
|- - EpLeon   Цитата(doom13 @ Mar 5 2016, 13:11) Из док...   Mar 5 2016, 09:21
|- - _Anatoliy   Цитата(EpLeon @ Mar 5 2016, 12:21) Честно...   Mar 5 2016, 09:26
|- - EpLeon   Цитата(_Anatoliy @ Mar 5 2016, 15:26) На ...   Mar 5 2016, 09:58
|- - _Anatoliy   Цитата(EpLeon @ Mar 5 2016, 12:58) Имеетс...   Mar 5 2016, 10:25
|- - EpLeon   Цитата(_Anatoliy @ Mar 5 2016, 16:25) Вам...   Mar 5 2016, 11:16
|- - _Anatoliy   Цитата(EpLeon @ Mar 5 2016, 14:16) Насчё...   Mar 5 2016, 11:40
||- - EpLeon   Цитата(_Anatoliy @ Mar 5 2016, 17:40) Нас...   Mar 5 2016, 13:43
||- - _Anatoliy   Цитата(EpLeon @ Mar 5 2016, 16:43) То ест...   Mar 6 2016, 07:22
||- - EpLeon   Цитата(_Anatoliy @ Mar 6 2016, 13:22) Ни ...   Mar 6 2016, 09:24
||- - _Anatoliy   Цитата(EpLeon @ Mar 6 2016, 12:24) Так н...   Mar 6 2016, 11:20
||- - EpLeon   Цитата(_Anatoliy @ Mar 6 2016, 17:20) Так...   Mar 6 2016, 11:57
||- - _Anatoliy   Цитата(EpLeon @ Mar 6 2016, 14:57) То ест...   Mar 6 2016, 12:13
||- - EpLeon   Цитата(_Anatoliy @ Mar 6 2016, 18:13) При...   Mar 6 2016, 12:16
|- - doom13   Цитата(EpLeon @ Mar 5 2016, 14:16) Извини...   Mar 5 2016, 14:18
- - EpLeon   Цитата(doom13 @ Mar 3 2016, 12:40) Есть е...   Mar 3 2016, 08:09


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

 


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


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