ViKo 1 2 августа, 2016 Опубликовано 2 августа, 2016 · Жалоба А SerDes не подойдет? На картинке из сообщения 7 показаны две тактовых частоты. Вот ту, что медленнее, нельзя ли приспособить? Все данные идут каждый по своему каналу. Не занимался serdes-ами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 2 августа, 2016 Опубликовано 2 августа, 2016 · Жалоба Прием данных от АЦП HMCAD1511 выполняется на SERDES, которые в разных семействах имеют разное быстродействие. Например Cyclone5 указано оно равно 875 Mbps и значит не подходит для приема данных этого АЦП. Однако есть более быстродействующие FPGA например Arria Stratix. Хороший application note XAPP585 на эту тему. ArriaV SerDes приемник быстродействие 1050-1250 Mbps взависимости от скорости FPGA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 2 августа, 2016 Опубликовано 2 августа, 2016 · Жалоба Прием данных от АЦП 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 2 августа, 2016 Опубликовано 2 августа, 2016 · Жалоба FCLK и надо использовать, подавая ее на PLL, где потом частота повышается до 125 Mhz (FCLK) x 8bit = 1000 Mbps. Надежный прием данных от АЦП еще предполагает, что надо еще делать 2 калибровки по включению питания: одна- подстройка битклока в центр битданных, меняя задержку. Другая выравнивание получениых данных по кадру (frame Clk). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 2 августа, 2016 Опубликовано 2 августа, 2016 · Жалоба Ясно, что у Алтеры имеется документация по этому вопросу. Например AN236 AN236 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 2 августа, 2016 Опубликовано 2 августа, 2016 · Жалоба #******************************************************************************* ## 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 претензий нет. `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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 3 августа, 2016 Опубликовано 3 августа, 2016 · Жалоба FCLK и надо использовать, подавая ее на PLL, где потом частота повышается до 125 Mhz (FCLK) x 8bit = 1000 Mbps. Надежный прием данных от АЦП еще предполагает, что надо еще делать 2 калибровки по включению питания: одна- подстройка битклока в центр битданных, меняя задержку. Другая выравнивание полученных данных по кадру (frame Clk). А вот эти выравнивания, делаются ли в рабочем режиме, или уже как повезет? Что-то не видно возможностей в Cyclone V. Задействовал FCLK. В ModelSim принимаю данные с пока не определенным сдвигом. Посланное не соответствует принятому. Буду двигать фазу в мегафункции. Надо еще удостовериться, что имитируемые от АЦП такты и данные соответствуют временным характеристикам. А еще данные складируются задом наперед. Первый принятый бит идет в старший. А у АЦП наоборот, первым выдается младший. Надо биты реверсировать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 3 августа, 2016 Опубликовано 3 августа, 2016 · Жалоба Есть еще связанная тема-трассировка линий данных и клока АЦП. Как она сделана на ППМ? Рекомендуется- LVDS линии данных и клоков идущих к FPGA выравнять по длине. Тогда FCLK и линии данных имеют одинаковые задержки и линия FCLK также служит как эталонная при выравнивании границ кадра и для калибровок. В этом случае эти операции можно делать и в рабочем режиме. Если линии не выравнены, то АЦП надо переводить в тестовый режим (режим калибровки) для генерации тестового паттерна. И по принимаемому FPGA паттерну для каждой линии данных делать подстройку. Cyclone5 не сможет принять 1 GSPS данные от HMCAD1511 . У Алтеры есть документация, обьясняющая принцип построения SERDES мегафункций ALTLVDS_RX AN202, AN236. Здесь надо разобраться как битклок ставится в центр битовых данных и потом- операция битслип. Serdes принимает данные в SDR или DDR режиме и тд. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 3 августа, 2016 Опубликовано 3 августа, 2016 · Жалоба Cyclone5 не сможет принять 1 GSPS данные от HMCAD1511 . В Моделсиме принимает. :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 3 августа, 2016 Опубликовано 3 августа, 2016 · Жалоба SERDES в каком режиме принимает данные SDR или DDR? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 3 августа, 2016 Опубликовано 3 августа, 2016 · Жалоба Есть еще связанная тема-трассировка линий данных и клока АЦП. Как она сделана на ППМ? Рекомендуется- LVDS линии данных и клоков идущих к FPGA выравнять по длине. ППМ - это печатная плата? Выровняю сам (всё сам...). Конечно. SERDES в каком режиме принимает данные SDR или DDR? Хороший вопрос. Задал в мегафункции ALTRVDS_RX битрейт 1000 МГц, коэффициент десериализации 8, частоту входную 125 МГц. Что там Квартус нашаманил, мне не ведомо. С битслипом не разобрался. Откуда его взять? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 3 августа, 2016 Опубликовано 3 августа, 2016 · Жалоба Хороший вопрос. Задал в мегафункции ALTRVDS_RX битрейт 1000 МГц, коэффициент десериализации 8, частоту входную 125 МГц. Что там Квартус нашаманил, мне не ведомо. А в чем проблема посмотреть? В том же timequest можно посмотреть путь от пина до конкретного регистра по задержкам с соответствующим названием (кстати, задержки можно и вручную забить на входе - iodelay, хотя не знаю - есть ли они на циклоне, на стратиксе3/4 были). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 3 августа, 2016 Опубликовано 3 августа, 2016 · Жалоба ППМ- плата печатного монтажа. Битслип- операция выравнивания принимаемых данных по границе фреймклока допустим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 3 августа, 2016 Опубликовано 3 августа, 2016 · Жалоба А в чем проблема посмотреть? В том же timequest можно посмотреть путь от пина до конкретного регистра по задержкам с соответствующим названием. В Pin Planner называется DIFFIO_RX В Resource Property Editor в свойствах: DDIO Mode - none Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 3 августа, 2016 Опубликовано 3 августа, 2016 · Жалоба В Pin Planner называется DIFFIO_RX В Resource Property Editor в свойствах: DDIO Mode - none Значит, скорее всего используется как обычный регистр. А Так проще всего было залезть в chipplaner, найти пин и от него линию до реального регистра со всеми внутренностями. А вообще SERDES на самом быстром циклон5 гарантированно работает на скорости 875 (j=8), что ниже заявленной Вами - https://www.altera.com/content/dam/altera-w...-v/cv_51002.pdf с49 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться