Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: selectio_wiz_5.1 , IDELAYCTRL , Vivado
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
serg_k1
Здравствуйте, помогите разобраться с подключением компонентов.
Мне нужно исследовать 2 канала по (1+16)разрядов данных LVDS DDR и clk под 400МГц для управления DMD . Все LVDS. сейчас хотел бы сделать на selectio_wiz_5.1 . Vivado 2014.4.1 ,плата Artix-701 и для приема использую компонент selectio_wiz_5.1 . он 16-ти разрядный, да и хотелось подвигать немного фронты, а то есть много непонятного.
Я сделал 1компонент на 16разрядов и 1 на 1разряд selectio_wiz и это для каждого канала. Каналы разнес по разным банкам. В каждом Data Delay задал Fixed, с надеждой, что здесь я смогу двигать фронты данных. У каждого компонента получилась своя группа IODELAY_GROUP, но я в каждом компоненте руками изменил и задал одно и то же имя "selectio_wiz_d_serg_A_group" – для А и "selectio_wiz_d_serg_B_group" для В. Надеялся ,что IDELAYCTRL таким образом будет один для банка одного канала и другой – для банка другого.
И еще добавил
Код
(* IODELAY_GROUP = "selectio_wiz_d_serg_A_group" *) IDELAYCTRL dlyctrl_A
(
  .RDY (delay_ready_A),
  .REFCLK (ref_clk_200MHz_A),//refclk_bufg),
  .RST (~locked_dmd_A)//idelayctrl_reset)
);
//-------------------
(* IODELAY_GROUP = "selectio_wiz_d_serg_B_group" *) IDELAYCTRL dlyctrl_B
(
  .RDY (delay_ready_B),
  .REFCLK (ref_clk_200MHz_B),//refclk_bufg),
  .RST (~locked_dmd_B)//idelayctrl_reset)
);


Как сделать это автоматом не знаю. Но ничего это не помогло. В каждом компоненте остался свой IDELAYCTRL . Выдается ошибка

[Drc 23-20] Rule violation (PLIDC-3) IDELAYCTRL DRC Checks - IDELAYCTRL instances 'dlyctrl_B' and 'selectio_wiz_2_B/inst/delayctrl' have same IODELAY_GROUP 'selectio_wiz_d_serg_B_group' but their REFCLK signals are different
[Drc 23-20] Rule violation (PLIDC-3) IDELAYCTRL DRC Checks - IDELAYCTRL instances 'dlyctrl_B' and 'selectio_wiz_2_B/inst/delayctrl' have same IODELAY_GROUP 'selectio_wiz_d_serg_B_group' but their RST signals are different
[Drc 23-20] Rule violation (PLIDC-3) IDELAYCTRL DRC Checks - IDELAYCTRL instances 'dlyctrl_B' and 'selectio_wiz_sctrl_B/inst/delayctrl' have same IODELAY_GROUP 'selectio_wiz_d_serg_B_group' but their REFCLK signals are different
[Drc 23-20] Rule violation (PLIDC-3) IDELAYCTRL DRC Checks - IDELAYCTRL instances 'dlyctrl_B' and 'selectio_wiz_sctrl_B/inst/delayctrl' have same IODELAY_GROUP 'selectio_wiz_d_serg_B_group' but their RST signals are different
[Drc 23-20] Rule violation (PLIDC-4) IDELAYCTRL DRC Checks - Found IODELAY instances with different IODELAY group constraints for same I/O bank 16. The IODELAY instances and its group constrained to this bank are: 'selectio_wiz_2/inst/pins[1].idelaye2_bus : selectio_wiz_2_group' 'selectio_wiz_2/inst/pins[13].idelaye2_bus : selectio_wiz_2_group' 'selectio_wiz_sctrl_A/inst/pins[0].idelaye2_bus : selectio_wiz_d_serg_A_group' 'selectio_wiz_2/inst/pins[14].idelaye2_bus : selectio_wiz_2_group' 'selectio_wiz_2/inst/pins[0].idelaye2_bus : selectio_wiz_2_group'

Посмотрел схему – там все равно остались delayctrl в каждом компоненте ,но при этом RST signals один и тот же приходит . REFCLK signals проходит через свой bufg. т.е. он не может быть один и тот же.
И еще одна ошибка.
[Drc 23-20] Rule violation (PLIDC-1) IDELAYCTRL DRC Checks - IODELAY elements have been found to be associated with IODELAY_GROUP 'selectio_wiz_2_group', but there is no IDELAYCTRL associated with this IODELAY_GROUP.
'selectio_wiz_2_group' – имя группы, полученное при формировании компонента. И я вроде бы везде заменил его на новое 'selectio_wiz_d_serg_A_group'.
Для IDELAYE2 в компоненте сделал
Код
(* BOX_TYPE = "PRIMITIVE" *)
   (* IODELAY_GROUP = "selectio_wiz_d_serg_A_group" *)
   (* SIM_DELAY_D = "0" *)
   IDELAYE2 #(
    .CINVCTRL_SEL("FALSE"),
    …
);


Где не заменил - найти не могу.
Может так нельзя делать?
Что я не так делаю и как решить эту проблему?
dm.pogrebnoy
Код
ref_clk_200MHz_A
ref_clk_200MHz_B


Зачем два разных такта?
serg_k1
Цитата(dm.pogrebnoy @ Feb 25 2016, 18:51) *
Код
ref_clk_200MHz_A
ref_clk_200MHz_B


Зачем два разных такта?

2 независимых канала А и В

да, еще забыл сказать . то . что рекомендуют в №AR64542 по этому поводу я сделал. т.е. в xdc файл добавил

set_property IODELAY_GROUP selectio_wiz_d_serg_A_group [get_cells selectio_wiz_sctrl_A/inst/delayctrl]
set_property IODELAY_GROUP selectio_wiz_d_serg_A_group [get_cells selectio_wiz_2/inst/delayctrl]

set_property IODELAY_GROUP selectio_wiz_d_serg_B_group [get_cells selectio_wiz_sctrl_B/inst/delayctrl]
set_property IODELAY_GROUP selectio_wiz_d_serg_B_group [get_cells selectio_wiz_2_B/inst/delayctrl]

пробовал в конце delayctrl заменял на *delay* как они рекомендуют. результат одинаковый.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.