|
|
  |
Принять LVDS от HMCAD1511 |
|
|
|
Aug 2 2016, 10:06
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Алга @ Aug 2 2016, 12:06)  Прием данных от АЦП HMCAD1511 выполняется на SERDES, которые в разных семействах имеют разное быстродействие. Например Cyclone5 указано оно равно 875 Mbps и значит не подходит для приема данных этого АЦП. Однако есть более быстродействующие FPGA например Arria Stratix. Хороший application note XAPP585 на эту тему.
ArriaV SerDes приемник быстродействие 1050-1250 Mbps взависимости от скорости FPGA. Для Cyclone V попробовал сделать мегафункцию ALT_LVDS_RX, задал частоту данных 1000 Mbps, частоту входного такта 500 MHz (LCLK из HMCAD1511), и замечаний от Визарда не получил. Посмотрю в ModelSim. Не понимаю, а FCLK никак не использовать? Жалко. В той таблице, где написано 875 Mbps, указано, что это для коэффициента J = 4 to 10. А когда J = 1, 2 то используются DDR регистры и дается примечание 66: The maximum ideal data rate is the SERDES factor (J) × PLL max output frequency (fout), provided you can close the design timing and the signal integrity simulation is clean. You can estimate the achievable maximum data rate by performing link timing closure analysis. You must consider the board skew margin, transmitter delay margin, and receiver sampling margin to determine the maximum data rate supported.
|
|
|
|
|
Aug 2 2016, 13:25
|
Частый гость
 
Группа: Свой
Сообщений: 116
Регистрация: 29-12-04
Пользователь №: 1 739

|
Ясно, что у Алтеры имеется документация по этому вопросу. Например AN236 AN236
|
|
|
|
|
Aug 2 2016, 13:39
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
CODE #******************************************************************************* ## SDC file "HighSpeed.sdc" ## author ViKo # Формат времени # set_time_format -unit ns -decimal_places 3 # Входные такты # create_clock -name ClkIn -period 500MHz -waveform {0 1} {Clk} # Сигнал дискретизации # # Определить такты с ФАПЧ # derive_pll_clocks -create_base_clocks # Определить нестабильность тактов # derive_clock_uncertainty # Задержка входных данных # set_input_delay -clock ClkIn 0.55 [get_ports {DP[*]A DP[*]B}] # Задержка выходных данных # # set_output_delay -clock ClkOut -2 [get_ports {D*}] set_output_delay -clock ClkOut -min 0 [get_ports {D*}] set_output_delay -clock ClkOut -max 0 [get_ports {D*}] # Не проверять путь # # set_false_path -from ClkOut -to [get_ports {D*}] # set_multicycle_path -from ClkOut -to D* -start 2 # set_multicycle_path -from ClkOut -to D* -hold 0
TimeQuest выдает Unconstrained Output Ports: 33 Надо как-то ClkOut вывести из PLL. Для GX по временам у TimeQuest претензий нет. CODE `define VERSION1 // `define WID 8
module HighSpeed ( (* altera_attribute = "-name io_standard lvds; -name pad_to_input_register_delay 0", useioff = 1 *) input bit Clk, (* altera_attribute = "-name io_standard lvds; -name pad_to_input_register_delay 0", useioff = 1 *) input bit ClkIn, (* altera_attribute = "-name io_standard lvds; -name pad_to_input_register_delay 0", useioff = 1 *) input bit DP1A, DP1B, DP2A, DP2B, DP3A, DP3B, DP4A, DP4B, (* altera_attribute = "-name io_standard \"2.5 V\"" *) output bit [31 : 0] D, (* altera_attribute = "-name io_standard \"2.5 V\"" *) output bit ClkOut );
`ifdef VERSION1
AltLvdsRx_mf AltLvdsRx ( .rx_in ({ DP4B, DP4A, DP3B, DP3A, DP2B, DP2A, DP1B, DP1A }), .rx_inclock (ClkIn), .rx_out (D), .rx_outclock (ClkOut) );
`endif
`ifdef VERSION2
AltLvdsRx1_mf Rx ( .rx_in (DP1A), .rx_inclock (ClkIn), .rx_out (D), .rx_outclock (ClkOut) );
`endif
endmodule : HighSpeed
|
|
|
|
|
Aug 3 2016, 10:53
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Алга @ Aug 2 2016, 14:13)  FCLK и надо использовать, подавая ее на PLL, где потом частота повышается до 125 Mhz (FCLK) x 8bit = 1000 Mbps.
Надежный прием данных от АЦП еще предполагает, что надо еще делать 2 калибровки по включению питания: одна- подстройка битклока в центр битданных, меняя задержку. Другая выравнивание полученных данных по кадру (frame Clk). А вот эти выравнивания, делаются ли в рабочем режиме, или уже как повезет? Что-то не видно возможностей в Cyclone V. Задействовал FCLK. В ModelSim принимаю данные с пока не определенным сдвигом. Посланное не соответствует принятому. Буду двигать фазу в мегафункции. Надо еще удостовериться, что имитируемые от АЦП такты и данные соответствуют временным характеристикам. А еще данные складируются задом наперед. Первый принятый бит идет в старший. А у АЦП наоборот, первым выдается младший. Надо биты реверсировать.
|
|
|
|
|
Aug 3 2016, 12:05
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Алга @ Aug 3 2016, 14:53)  Есть еще связанная тема-трассировка линий данных и клока АЦП. Как она сделана на ППМ? Рекомендуется- LVDS линии данных и клоков идущих к FPGA выравнять по длине. ППМ - это печатная плата? Выровняю сам (всё сам...). Конечно. Цитата(Алга @ Aug 3 2016, 15:02)  SERDES в каком режиме принимает данные SDR или DDR? Хороший вопрос. Задал в мегафункции ALTRVDS_RX битрейт 1000 МГц, коэффициент десериализации 8, частоту входную 125 МГц. Что там Квартус нашаманил, мне не ведомо. С битслипом не разобрался. Откуда его взять?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|