Перейти к содержанию
    

Элементы задержки в DLL от Xilinx

Мучает любопытство : что есть физически элементы задержки в DLL Xilinx ? В документации Xilinx ни слова о их структуре не говорит (или плохо искал :) )

Каждый отдельный элемент постоянной или переменной величины?

 

Расмотрим эти элементы задержки в DCM. В документации рисуют Delay1 , Delay2 .. Delay N . Чему равно это N?

Почему дискрет сдвига фазы равен 1/256 (1,4 градуса) ? Получается N=255 ? Тогда почему она постоянная для разных частот ? Каждый элемент задержки переменной величины ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мучает любопытство : что есть физически элементы задержки в DLL Xilinx ? В документации Xilinx ни слова о их структуре не говорит (или плохо искал :) )

Каждый отдельный элемент постоянной или переменной величины?

 

Расмотрим эти элементы задержки в DCM. В документации рисуют Delay1 , Delay2 .. Delay N . Чему равно это N?

Почему дискрет сдвига фазы равен 1/256 (1,4 градуса) ? Получается N=255 ? Тогда почему она постоянная для разных частот ? Каждый элемент задержки переменной величины ?

 

В документе на DCM имелись ввиду буферы с нормированной задержкой, выстроенные в цепочку. выход каждого буфера заводится ну мультиплексор, таким образом можно выбирать нужную задержку. Во четвертом виртексе, например, задержка меняется с шагом минимум 5 ps в быстром режиме. Элемент задержки, о котором вы говорили (DelayN) состоит как раз из таких буферов. Т.е. сама линия задержки состоит из кучи маленьких подстраиваемых задержекю. Это стандартная схема, задержка от частоты не зависит, а вот сдвиг фазы как раз зависит от частоты, т.е. зависит от того какой у вас входной сигнал.

 

Посмотрите DS302 у Xilinx на странице 41 характеристики Fine Phase Shifting и Delay Lines, думаю тогда все поймете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В документе на DCM имелись ввиду буферы с нормированной задержкой, выстроенные в цепочку. выход каждого буфера заводится ну мультиплексор, таким образом можно выбирать нужную задержку. Во четвертом виртексе, например, задержка меняется с шагом минимум 5 ps в быстром режиме. Элемент задержки, о котором вы говорили (DelayN) состоит как раз из таких буферов. Т.е. сама линия задержки состоит из кучи маленьких подстраиваемых задержекю. Это стандартная схема, задержка от частоты не зависит, а вот сдвиг фазы как раз зависит от частоты, т.е. зависит от того какой у вас входной сигнал.

 

Посмотрите DS302 у Xilinx на странице 41 характеристики Fine Phase Shifting и Delay Lines, думаю тогда все поймете.

 

Вопрос - возможно ли использовать самому такую структуру задержки? Напрямую пытался выстраивать, давно еще, последовательность из буферов, из инверторов, из лутов.... Задержка фиксированная получается для любой длины последовательности, этот гад ИСЕ все оптимизирует) Как корректно реализовать? До сих пор приходится делать, если требуется задержка для подстройки, на быстродействующих сдвиговых регистрах с тактированием)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

DLL или DCM это так называемые hard core, добраться к ним можно через примитивы, и использовать только те настройки, которые у них есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

DLL или DCM это так называемые hard core, добраться к ним можно через примитивы, и использовать только те настройки, которые у них есть.

 

Я не о DCM спрашивал, а о том, как корректно сделать задержку не на базе сдвиговых регистров.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можете использовать

кварцевые, ртутные, коаксиальные, полупроводниковые ЛЗ

 

всё это отдельные, внешние устройства. внутри ПЛИС Зайлинкс доступных пользователю элементов с нормированной (например, в диапазоне рабочих температур) задержкой нет.

 

Вероятно, имело бы смысл переработать Ваш модуль с тем, чтобы потребности в элементах задержки не возникало.

 

Успехов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну так и делайте на синхронных регистрах или счетчиках, если вам нужны асинхронные элементы задержки то таких примитивов нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В документе на DCM имелись ввиду буферы с нормированной задержкой, выстроенные в цепочку. выход каждого буфера заводится ну мультиплексор, таким образом можно выбирать нужную задержку.

Я думаю, такая схема вполне рабочая, если используется самой Xilinx. Я спрашиваю, как ее корректно реализовать.

 

 

Ну так и делайте на синхронных регистрах или счетчиках, если вам нужны асинхронные элементы задержки то таких примитивов нет.

То, что нет готовых примитивов, я, вообще говоря, в курсе. Но очевидно, сделать как-то аналогично Xilinx возможно. Видимо, придется почитать исходники CoreLib.

 

можете использовать

кварцевые, ртутные, коаксиальные, полупроводниковые ЛЗ

 

всё это отдельные, внешние устройства. внутри ПЛИС Зайлинкс доступных пользователю элементов с нормированной (например, в диапазоне рабочих температур) задержкой нет.

 

Вероятно, имело бы смысл переработать Ваш модуль с тем, чтобы потребности в элементах задержки не возникало.

 

К сожалению, переработать модуль таким образом нет возможности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я думаю, такая схема вполне рабочая, если используется самой Xilinx. Я спрашиваю, как ее корректно реализовать.

То, что нет готовых примитивов, я, вообще говоря, в курсе. Но очевидно, сделать как-то аналогично Xilinx возможно. Видимо, придется почитать исходники CoreLib.

К сожалению, переработать модуль таким образом нет возможности.

 

 

Есть регулируемая задержка в каждом IO - IDELAY в Virtex 4 и IDELAY,ODELAY в Virtex 5.

Каждый tap 75 ps. Всего 64 taps

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть регулируемая задержка в каждом IO - IDELAY в Virtex 4 и IDELAY,ODELAY в Virtex 5.

Каждый tap 75 ps. Всего 64 taps

 

Да, верно. Но эти задержки, как следует из названия и даташита, применяются только к входным пинам, как написано в официальном документе: "для выравнивания потоков данных на входе ПЛИС" (вольный перевод :) ). Меня же интересуют задержки внутри, в глубине самой ПЛИС.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, верно. Но эти задержки, как следует из названия и даташита, применяются только к входным пинам, как написано в официальном документе: "для выравнивания потоков данных на входе ПЛИС" (вольный перевод :) ). Меня же интересуют задержки внутри, в глубине самой ПЛИС.

Ну заведите сигнал на неиспользуемый пин и с него же снимите.

Я думаю можно даже Bonded IO block использовать. То есть IO block у которого и вовсе нет наружнего пина. Хотя в V4,V5 не знаю точно можно ли их задействовать. В V2 можно было, но там нет IDELAY.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну заведите сигнал на неиспользуемый пин и с него же снимите.

Я думаю можно даже Bonded IO block использовать. То есть IO block у которого и вовсе нет наружнего пина. Хотя в V4,V5 не знаю точно можно ли их задействовать. В V2 можно было, но там нет IDELAY.

 

Спасибо, обязательно попробую как вариант!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос - возможно ли использовать самому такую структуру задержки? Напрямую пытался выстраивать, давно еще, последовательность из буферов, из инверторов, из лутов.... Задержка фиксированная получается для любой длины последовательности, этот гад ИСЕ все оптимизирует) Как корректно реализовать? До сих пор приходится делать, если требуется задержка для подстройки, на быстродействующих сдвиговых регистрах с тактированием)

 

В принципе можно делать задержку и на буферах. Для того что бы ISE не оптимизировал структуру необходимо применить специальный атрибут в VHDL описнии элемента задержки. (noopt)

 

Вот код, использующий две LUT в режиме буфера (хотя это и безразлично, потому что величина задержки не меняется от типа функиции в LUT) для задержки. Каждая LUT дает 0,17 нс задержки. Можно их выстроить в цепочку и для уверенности еще прибить гвоздями (атрибут rloc). ИМХО время задржки великовато, подходит для сигналов 250-300 Мгц и меньше.

 

library ieee;
use ieee.std_logic_1164.all;

library unisim;
use unisim.vcomponents.all;

entity delay is
    port( 
        i     : in  std_logic;
        o    : out std_logic
    );
end delay;


architecture delay of delay is

attribute noopt : boolean;
attribute noopt of xlut0    : label is TRUE;
attribute noopt of xlut1    : label is TRUE;

attribute rloc: string;
attribute rloc of xlut0        : label is "X0Y0";
attribute rloc of xlut1        : label is "X0Y0";

component LUT1
-- synthesis translate_off
generic (
INIT : bit_vector := X"2");
-- synthesis translate_on
port (    
        O : out STD_ULOGIC;
        I0 : in STD_ULOGIC);
end component;

attribute INIT : string;
attribute INIT of xlut0 : label is "2";
attribute INIT of xlut1 : label is "2";

signal s0, s1    : std_logic;

begin
    
xlut0: LUT1
-- synthesis translate_off
generic map(
INIT => x"2" ) -- режим буфера
-- synthesis translate_on
port map (O => s0, I0 => i);

xlut1: LUT1
-- synthesis translate_off
generic map(
INIT => x"2" ) -- режим буфера
-- synthesis translate_on
port map (O => s1, I0 => s0);

o<=s1;

end s_delay;

 

Но по-мойму легче для входящих сигналов (если работаете с virtex-4/5) использовать линию задержки находящюуся в IOB, для внутренних сигналов использовать констрэйнты типа MAXDELAY и MAXSKEW и т.п. и только в крайних случаях прибегать к изворотам, в виде цепочки буферов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...