Цитата(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 порт и реализуете автомат синхронизации.