|
Элементы задержки в DLL от Xilinx |
|
|
|
Mar 28 2008, 10:19
|
Знающий
   
Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059

|
Мучает любопытство : что есть физически элементы задержки в DLL Xilinx ? В документации Xilinx ни слова о их структуре не говорит (или плохо искал  ) Каждый отдельный элемент постоянной или переменной величины? Расмотрим эти элементы задержки в DCM. В документации рисуют Delay1 , Delay2 .. Delay N . Чему равно это N? Почему дискрет сдвига фазы равен 1/256 (1,4 градуса) ? Получается N=255 ? Тогда почему она постоянная для разных частот ? Каждый элемент задержки переменной величины ?
|
|
|
|
|
Mar 28 2008, 13:24
|

Знающий
   
Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933

|
Цитата(Костян @ Mar 28 2008, 13:19)  Мучает любопытство : что есть физически элементы задержки в 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, думаю тогда все поймете.
--------------------
|
|
|
|
|
Mar 29 2008, 15:57
|

Частый гость
 
Группа: Свой
Сообщений: 88
Регистрация: 5-11-07
Пользователь №: 32 072

|
Цитата(dm.pogrebnoy @ Mar 28 2008, 16:24)  В документе на DCM имелись ввиду буферы с нормированной задержкой, выстроенные в цепочку. выход каждого буфера заводится ну мультиплексор, таким образом можно выбирать нужную задержку. Во четвертом виртексе, например, задержка меняется с шагом минимум 5 ps в быстром режиме. Элемент задержки, о котором вы говорили (DelayN) состоит как раз из таких буферов. Т.е. сама линия задержки состоит из кучи маленьких подстраиваемых задержекю. Это стандартная схема, задержка от частоты не зависит, а вот сдвиг фазы как раз зависит от частоты, т.е. зависит от того какой у вас входной сигнал.
Посмотрите DS302 у Xilinx на странице 41 характеристики Fine Phase Shifting и Delay Lines, думаю тогда все поймете. Вопрос - возможно ли использовать самому такую структуру задержки? Напрямую пытался выстраивать, давно еще, последовательность из буферов, из инверторов, из лутов.... Задержка фиксированная получается для любой длины последовательности, этот гад ИСЕ все оптимизирует) Как корректно реализовать? До сих пор приходится делать, если требуется задержка для подстройки, на быстродействующих сдвиговых регистрах с тактированием)
--------------------
I have nothing... Because only my dreams. And i put my dreams under your feet. Tread softly.. because you tread on my dreams. W. Yeats.
|
|
|
|
|
Mar 29 2008, 20:43
|

Частый гость
 
Группа: Свой
Сообщений: 88
Регистрация: 5-11-07
Пользователь №: 32 072

|
Цитата(avesat @ Mar 29 2008, 22:44)  DLL или DCM это так называемые hard core, добраться к ним можно через примитивы, и использовать только те настройки, которые у них есть. Я не о DCM спрашивал, а о том, как корректно сделать задержку не на базе сдвиговых регистров.
--------------------
I have nothing... Because only my dreams. And i put my dreams under your feet. Tread softly.. because you tread on my dreams. W. Yeats.
|
|
|
|
|
Mar 30 2008, 05:54
|

Частый гость
 
Группа: Свой
Сообщений: 88
Регистрация: 5-11-07
Пользователь №: 32 072

|
Цитата В документе на DCM имелись ввиду буферы с нормированной задержкой, выстроенные в цепочку. выход каждого буфера заводится ну мультиплексор, таким образом можно выбирать нужную задержку. Я думаю, такая схема вполне рабочая, если используется самой Xilinx. Я спрашиваю, как ее корректно реализовать. Цитата(avesat @ Mar 30 2008, 00:06)  Ну так и делайте на синхронных регистрах или счетчиках, если вам нужны асинхронные элементы задержки то таких примитивов нет. То, что нет готовых примитивов, я, вообще говоря, в курсе. Но очевидно, сделать как-то аналогично Xilinx возможно. Видимо, придется почитать исходники CoreLib. Цитата(Fat Robot @ Mar 30 2008, 00:03)  можете использовать кварцевые, ртутные, коаксиальные, полупроводниковые ЛЗ
всё это отдельные, внешние устройства. внутри ПЛИС Зайлинкс доступных пользователю элементов с нормированной (например, в диапазоне рабочих температур) задержкой нет.
Вероятно, имело бы смысл переработать Ваш модуль с тем, чтобы потребности в элементах задержки не возникало. К сожалению, переработать модуль таким образом нет возможности.
--------------------
I have nothing... Because only my dreams. And i put my dreams under your feet. Tread softly.. because you tread on my dreams. W. Yeats.
|
|
|
|
|
Mar 30 2008, 19:19
|
Частый гость
 
Группа: Свой
Сообщений: 100
Регистрация: 4-01-05
Пользователь №: 1 799

|
Цитата(Ender @ Mar 30 2008, 01:54)  Я думаю, такая схема вполне рабочая, если используется самой Xilinx. Я спрашиваю, как ее корректно реализовать. То, что нет готовых примитивов, я, вообще говоря, в курсе. Но очевидно, сделать как-то аналогично Xilinx возможно. Видимо, придется почитать исходники CoreLib. К сожалению, переработать модуль таким образом нет возможности. Есть регулируемая задержка в каждом IO - IDELAY в Virtex 4 и IDELAY,ODELAY в Virtex 5. Каждый tap 75 ps. Всего 64 taps
|
|
|
|
|
Mar 30 2008, 20:35
|

Частый гость
 
Группа: Свой
Сообщений: 88
Регистрация: 5-11-07
Пользователь №: 32 072

|
Цитата(leevv @ Mar 30 2008, 23:19)  Есть регулируемая задержка в каждом IO - IDELAY в Virtex 4 и IDELAY,ODELAY в Virtex 5. Каждый tap 75 ps. Всего 64 taps Да, верно. Но эти задержки, как следует из названия и даташита, применяются только к входным пинам, как написано в официальном документе: "для выравнивания потоков данных на входе ПЛИС" (вольный перевод  ). Меня же интересуют задержки внутри, в глубине самой ПЛИС.
--------------------
I have nothing... Because only my dreams. And i put my dreams under your feet. Tread softly.. because you tread on my dreams. W. Yeats.
|
|
|
|
|
Mar 31 2008, 00:25
|
Частый гость
 
Группа: Свой
Сообщений: 100
Регистрация: 4-01-05
Пользователь №: 1 799

|
Цитата(Ender @ Mar 30 2008, 16:35)  Да, верно. Но эти задержки, как следует из названия и даташита, применяются только к входным пинам, как написано в официальном документе: "для выравнивания потоков данных на входе ПЛИС" (вольный перевод  ). Меня же интересуют задержки внутри, в глубине самой ПЛИС. Ну заведите сигнал на неиспользуемый пин и с него же снимите. Я думаю можно даже Bonded IO block использовать. То есть IO block у которого и вовсе нет наружнего пина. Хотя в V4,V5 не знаю точно можно ли их задействовать. В V2 можно было, но там нет IDELAY.
|
|
|
|
|
Mar 31 2008, 07:35
|

Частый гость
 
Группа: Свой
Сообщений: 88
Регистрация: 5-11-07
Пользователь №: 32 072

|
Цитата(leevv @ Mar 31 2008, 04:25)  Ну заведите сигнал на неиспользуемый пин и с него же снимите. Я думаю можно даже Bonded IO block использовать. То есть IO block у которого и вовсе нет наружнего пина. Хотя в V4,V5 не знаю точно можно ли их задействовать. В V2 можно было, но там нет IDELAY. Спасибо, обязательно попробую как вариант!
--------------------
I have nothing... Because only my dreams. And i put my dreams under your feet. Tread softly.. because you tread on my dreams. W. Yeats.
|
|
|
|
|
Mar 31 2008, 08:08
|

Знающий
   
Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933

|
Цитата(Ender @ Mar 29 2008, 19:57)  Вопрос - возможно ли использовать самому такую структуру задержки? Напрямую пытался выстраивать, давно еще, последовательность из буферов, из инверторов, из лутов.... Задержка фиксированная получается для любой длины последовательности, этот гад ИСЕ все оптимизирует) Как корректно реализовать? До сих пор приходится делать, если требуется задержка для подстройки, на быстродействующих сдвиговых регистрах с тактированием) В принципе можно делать задержку и на буферах. Для того что бы 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 и т.п. и только в крайних случаях прибегать к изворотам, в виде цепочки буферов.
--------------------
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|