реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> IODELAYE1, Вкючение и использование IODELAYE1
Anton1990
сообщение Oct 30 2015, 15:36
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 155
Регистрация: 26-04-12
Пользователь №: 71 584



Всем добрый день.
Объясните неучу как использовать компонент IODELAYE1. Читаю вроде все понятно. Подключаю выдает ошибки.
Задача:
Есть пользовательский вход плис (пусть будет "А") который необходимо задержать и выдать на дальнейшую обработку в плис (пусть будет линия "B") и далее на выход плис. Куда что нужно подключить и какие параметры задать?
Вариант 1 - задержка фиксированная.
Вариант 2 задержка изменяемая. Значение задержки храниться в регистре (Например RG1(4 downto 0)) который я могу менять из пользовательской программы.
Реальный пример: получаю данные из АЦП которые необходимо задержать относительно тактов.
Используется Virtex6.
Привожу заготовку элемента IODELAYE1 чтобы Вам не пришлось долго искать.
Я так понимаю что в отчете я должен увидеть результат об используемой задержке?
Куда что подключать и какие задать параметры элемента IODELAYE1 ?
Всем откликнувшимся заранее большое спасибо.

IODELAYE1_inst : IODELAYE1
generic map (
CINVCTRL_SEL => FALSE, -- Enable dynamic clock inversion ("TRUE"/"FALSE")
DELAY_SRC => "I", -- Delay input ("I", "CLKIN", "DATAIN", "IO", "O")
HIGH_PERFORMANCE_MODE => TRUE, -- Reduced jitter ("TRUE"), Reduced power ("FALSE")
IDELAY_TYPE => "DEFAULT", -- "DEFAULT", "FIXED", "VARIABLE", or "VAR_LOADABLE"
IDELAY_VALUE => 0, -- Input delay tap setting (0-32)
ODELAY_TYPE => "FIXED", -- "FIXED", "VARIABLE", or "VAR_LOADABLE"
ODELAY_VALUE => 0, -- Output delay tap setting (0-32)
REFCLK_FREQUENCY => 200.0, -- IDELAYCTRL clock input frequency in MHz
SIGNAL_PATTERN => "DATA" -- "DATA" or "CLOCK" input signal
)
port map (
CNTVALUEOUT => CNTVALUEOUT, -- 5-bit output - Counter value for monitoring purpose
DATAOUT => DATAOUT, -- 1-bit output - Delayed data output
C => C, -- 1-bit input - Clock input
CE => CE, -- 1-bit input - Active high enable increment/decrement function
CINVCTRL => CINVCTRL, -- 1-bit input - Dynamically inverts the Clock © polarity
CLKIN => CLKIN, -- 1-bit input - Clock Access into the IODELAY
CNTVALUEIN => CNTVALUEIN, -- 5-bit input - Counter value for loadable counter application
DATAIN => DATAIN, -- 1-bit input - Internal delay data
IDATAIN => IDATAIN, -- 1-bit input - Delay data input
INC => INC, -- 1-bit input - Increment / Decrement tap delay
ODATAIN => ODATAIN, -- 1-bit input - Data input for the output datapath from the device
RST => RST, -- 1-bit input - Active high, synchronous reset, resets delay chain to IDELAY_VALUE/
-- ODELAY_VALUE tap. If no value is specified, the default is 0.
T => T -- 1-bit input - 3-state input control. Tie high for input-only or internal delay or
-- tie low for output only.
);
Go to the top of the page
 
+Quote Post
Artemius_tv
сообщение Oct 31 2015, 18:05
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-04-15
Из: Тверь
Пользователь №: 86 019



А компонент IDELAYCTRL установлен? Без него IODELAYE1 пользоваться нельзя.
Ну и текст ошибки хорошо бы привести.
Go to the top of the page
 
+Quote Post
dm.pogrebnoy
сообщение Oct 31 2015, 20:20
Сообщение #3


Знающий
****

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



Цитата(Artemius_tv @ Oct 31 2015, 21:05) *
А компонент IDELAYCTRL установлен? Без него IODELAYE1 пользоваться нельзя.
Ну и текст ошибки хорошо бы привести.

И 200 МГц не забыть подвести к нему.


--------------------
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Nov 1 2015, 13:42
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 155
Регистрация: 26-04-12
Пользователь №: 71 584



Цитата(dm.pogrebnoy @ Oct 31 2015, 23:20) *
И 200 МГц не забыть подвести к нему.

Что значит установлен? В ПЛИС он есть - использую виртекс6.
Ошибку сообщу, но в понедельник.

Цитата(Artemius_tv @ Oct 31 2015, 21:05) *
А компонент IDELAYCTRL установлен? Без него IODELAYE1 пользоваться нельзя.
Ну и текст ошибки хорошо бы привести.


Что такое IDELAYCTRL ? И что значит установлен? Давайте подробней плиз ? Может скинете простой пример? Свои пожелания об задержке я высказал ранее.
Go to the top of the page
 
+Quote Post
Artemius_tv
сообщение Nov 1 2015, 14:30
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-04-15
Из: Тверь
Пользователь №: 86 019



Если интересно, что зачем и почему, почитайте UG361.
Если нет, установите в топовом модуле один компонент:
Код
IDELAYCTRL_inst : IDELAYCTRL
port map (
    RDY => idelay_valid, -- выход сигнал готовности
    REFCLK => clk_200mhz, -- вход клок 200 МГц
    RST =>rst -- вход сброс
    );


Сообщение отредактировал Artemius_tv - Nov 1 2015, 14:33
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Nov 1 2015, 14:47
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 155
Регистрация: 26-04-12
Пользователь №: 71 584



Цитата(Artemius_tv @ Nov 1 2015, 17:30) *
Если интересно, что зачем и почему, почитайте UG361.
Если нет, установите в топовом модуле один компонент:
Код
IDELAYCTRL_inst : IDELAYCTRL
port map (
    RDY => idelay_valid, -- выход сигнал готовности
    REFCLK => clk_200mhz, -- вход клок 200 МГц
    RST =>rst -- вход сброс
    );


Я этот документ читал и читаю, но если все понял, то не задавал бы таких вопросов. Может расскажите вкратце.
Go to the top of the page
 
+Quote Post
Artemius_tv
сообщение Nov 1 2015, 15:33
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-04-15
Из: Тверь
Пользователь №: 86 019



Разбираться с IDELAYCTRL особого смысла нет, у него нет настроек, он просто должен быть, если используются IODELAYE1 или подобные. На каждый регион пинов с управляемой задержкой приходится по одному IDELAYCTRL, котрый занимается калибровкой задержек. Для этого ему нужен тактовый сигнал 200МГц.
Можно самому установить компоненты IDELAYCTRL для каждого региона, где используется управляемая задержка, прописав вручную LOC, а можно только один IDELAYCTRL без указания LOC, тогда ISE автоматически задействует нужные.
Если его вообще не установить, то проект с использованием IODELAYE1 не соберется, ISE выдаст ошибку.
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Nov 1 2015, 16:26
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 155
Регистрация: 26-04-12
Пользователь №: 71 584



Цитата(Artemius_tv @ Nov 1 2015, 18:33) *
Разбираться с IDELAYCTRL особого смысла нет, у него нет настроек, он просто должен быть, если используются IODELAYE1 или подобные. На каждый регион пинов с управляемой задержкой приходится по одному IDELAYCTRL, котрый занимается калибровкой задержек. Для этого ему нужен тактовый сигнал 200МГц.
Можно самому установить компоненты IDELAYCTRL для каждого региона, где используется управляемая задержка, прописав вручную LOC, а можно только один IDELAYCTRL без указания LOC, тогда ISE автоматически задействует нужные.
Если его вообще не установить, то проект с использованием IODELAYE1 не соберется, ISE выдаст ошибку.


Вот достойный ответ. Спасибо. Завтра пойду снова экспериментировать. А что выход idelayctrl готовности никуда подключать не нужно если я этот выход не использую?
Go to the top of the page
 
+Quote Post
Artemius_tv
сообщение Nov 1 2015, 16:45
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-04-15
Из: Тверь
Пользователь №: 86 019



Если не используете, то и не подключайте. Я у себя не подключаю.
Кстати, в UG361 это явно написано: "implementation tools allow RDY to be unconnected/ignored".
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Nov 2 2015, 15:38
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 155
Регистрация: 26-04-12
Пользователь №: 71 584



Цитата(Artemius_tv @ Nov 1 2015, 19:45) *
Если не используете, то и не подключайте. Я у себя не подключаю.
Кстати, в UG361 это явно написано: "implementation tools allow RDY to be unconnected/ignored".


Вроде бы у меня все получилось. Последнее уточнение:
вход clkin использую если хочу задержать тактовый сигнал со спец буферов ? Это правильно?
Если я устанавливаю фиксированную задержку, то мне вход "с" ненужен. Это правильно?
Если задержка динамические изменяется, то на вход "с" подаю такт. Любой частоты?
На вход CNTVALUEIN(4 :0) значение задержки.
Я результат установленный задержек смотрел в FPGA'editor. Там они устанавливаются, а вот в отчете pinout пишет iob Delay = none. Почему?
Go to the top of the page
 
+Quote Post
Artemius_tv
сообщение Nov 2 2015, 17:59
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-04-15
Из: Тверь
Пользователь №: 86 019



Цитата(Anton1990 @ Nov 2 2015, 18:38) *
вход clkin использую если хочу задержать тактовый сигнал со спец буферов ? Это правильно?

Да
Цитата(Anton1990 @ Nov 2 2015, 18:38) *
Если я устанавливаю фиксированную задержку, то мне вход "с" ненужен. Это правильно?

Да.
Цитата(Anton1990 @ Nov 2 2015, 18:38) *
Если задержка динамические изменяется, то на вход "с" подаю такт. Любой частоты?

Что-то я тоже не нашел ничего в документации. Только совет подавать клок, от которого затактирован задерживаемый сигнал.

Go to the top of the page
 
+Quote Post
GAYVER
сообщение Nov 3 2015, 05:12
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 139
Регистрация: 3-04-13
Пользователь №: 76 333



Цитата(Anton1990 @ Nov 1 2015, 19:26) *
Вот достойный ответ. Спасибо. Завтра пойду снова экспериментировать. А что выход idelayctrl готовности никуда подключать не нужно если я этот выход не использую?


выход готовности можно использовать в проекте. если готовности нет - не стартовать какие то процессы. но в основном он висит в воздухе и все sm.gif

зы
когда то делал контроллер, по включению питания автоматом выравнивающий данные от ацп. Правда у меня уже был свой контроллер SPI... В общем по включению питания из РОМки вычитываются команды, настраивающие АЦП на тестовый режим, через SPI контроллер вдавливаются в АЦП, который начаинает выдавать на шину данных тестовую последовательность. Эти данные приходят на ИОДЕЛЕИ, собираются через ИСЕРДЕСЫ и сравниваются с заданной эталонной константой. если не соответствует - наращиваем ТАП по данным и опять сравниваем. Когда добегаем до ТАП по данным =32, наращиваем ТАП по клоку, обнуляем ТАП по данным и опять же сравниваем. И так прогоняем ТАПы по данным-клоку до тех пор, пока не будет устойчивое совпадение данных с эталонной константой, либо пока ТАПы не закончатся. В этом случае генерим эррор - подстройка не может быть завершена.

Устойчивое совпадение - равенство принимаемых данных и эталонной константы в течение 8-12 ТАПов. Это обеспечивает защиту от "дрожания" фронтов. На моей рабочей частоте 8 ТАПов для запаса было достаточно. Механизм следующий - как только есть первое совпадение константы с данными, мы запоминаем текущий ТАП, запускаем счетчик "валидных ТАПов" и параллельно с этим вычисляем значение "первый валидный ТАП"+4. Продолжаем наращивать ТАПы и сравнивать. Как только счетчик валидных равен 8 - генерим сигнал "подстройка завершена" и записываем в ИОДЕЛЕИ по данным (синхра и так останется на текущем значении).

Если цикл подстройки завершен - вычитываем из РОМки команды, настраивающие АЦП на штатный режим и задавливаем их через контроллер SPI.

Модуль параметризируемый, с возможностью подключение нескольких АЦП. В этом случае они настраиваются последовательно, один за другим
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Nov 3 2015, 15:08
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 155
Регистрация: 26-04-12
Пользователь №: 71 584



Цитата(GAYVER @ Nov 3 2015, 08:12) *
зы
когда то делал контроллер, по включению питания автоматом выравнивающий данные от ацп. Правда у меня уже был свой контроллер SPI... В общем по включению питания из РОМки вычитываются команды, настраивающие АЦП на тестовый режим, через SPI контроллер вдавливаются в АЦП, который начаинает выдавать на шину данных тестовую последовательность. Эти данные приходят на ИОДЕЛЕИ, собираются через ИСЕРДЕСЫ и сравниваются с заданной эталонной константой. если не соответствует - наращиваем ТАП по данным и опять сравниваем. Когда добегаем до ТАП по данным =32, наращиваем ТАП по клоку, обнуляем ТАП по данным и опять же сравниваем. И так прогоняем ТАПы по данным-клоку до тех пор, пока не будет устойчивое совпадение данных с эталонной константой, либо пока ТАПы не закончатся. В этом случае генерим эррор - подстройка не может быть завершена.


Офигеть - тут отдельная задача по настройке задержек. А ведь с оцифрованными данными нужно еще что-то делать, ну там демодулировать, отфильтровать и т.д. А до этого можно и не дойти - зарыться в настройке АЦП.
Я в таких случаях до сих пор колдую с простой инверсией клока. Иногда бывает очень геморройно.

Цитата(Artemius_tv @ Nov 2 2015, 20:59) *
Да

Да.

Что-то я тоже не нашел ничего в документации. Только совет подавать клок, от которого затактирован задерживаемый сигнал.


А что более правильно задерживать: параллельную шину с данными или клок? Мне представляется что клок, он же все-таки один а не целая шина. Или я не прав?
Go to the top of the page
 
+Quote Post
Artemius_tv
сообщение Nov 4 2015, 20:17
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-04-15
Из: Тверь
Пользователь №: 86 019



Если setup не сходится, то клок, если hold, то данные. У каждого пина свой элемент задержки, который только с ним можно использовать, значит экономить их смысла нет.

Go to the top of the page
 
+Quote Post
GAYVER
сообщение Nov 5 2015, 06:46
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 139
Регистрация: 3-04-13
Пользователь №: 76 333



Цитата(Anton1990 @ Nov 3 2015, 18:08) *
Офигеть - тут отдельная задача по настройке задержек. А ведь с оцифрованными данными нужно еще что-то делать, ну там демодулировать, отфильтровать и т.д. А до этого можно и не дойти - зарыться в настройке АЦП.
Я в таких случаях до сих пор колдую с простой инверсией клока. Иногда бывает очень геморройно.


поставили задачу автоматизировать процесс )). чтобы потом вокруг каждой отдельно взятой платы не скакать с осцилом вручную подбирая задержки (темболее если данные идут от 3 АЦП, как у нас). в теории вроде получилось. на стенде тоже. что будет в серии - пока неизвестно
зы
а по сравнению с вычислителем (обрабатывающим оцифрованые данные) и его управлением - мой блочок как блоха на собаке sm.gif

Цитата(Anton1990 @ Nov 3 2015, 18:08) *
А что более правильно задерживать: параллельную шину с данными или клок? Мне представляется что клок, он же все-таки один а не целая шина. Или я не прав?


конечно более оптимально рулить клоком, но нет гарантии что там хватит 32 тапов на то чтобы одним клоком получить устойчивый прием на шине. по-хорошему бы ровнять каждый отдельно взятый пин данных - чтобы уж наверняка все сделать. но тогда алгоритм подстройки будет писец каким сложным...
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 2nd July 2025 - 23:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01478 секунд с 7
ELECTRONIX ©2004-2016