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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Сдвиг фазы такта в Virtex4
maxics
сообщение Oct 31 2011, 08:23
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 16-11-09
Пользователь №: 53 649



Цитата(Boris_TS @ Oct 26 2011, 22:12) *
Для начала Вам необходимо прочитать о constraint'ах (см. Constraint Guide) OFFSET, IOBDELAY и IOB.
При помощи OFFSET IN можно задать необходимое соотношение между данными и clock'ом, а при компиляции среда сможет проверить выполняются ли эти соотношения или нет.
IOBDELAY определяет использование элементов задержки в IOB.
Именно для V-4 – не помню, но в ряде FPGA можно задерживать как Data, так и Clock.
Кстати, обращаю Ваше внимание, иногда этот Delay втыкается автоматически (когда не нужен), поэтому его лучше всегда задавать вручную.
Также помогает FPGA Editor, чтобы понять, какие ресурсы использованы и как расположены триггера (легли в IOB или нет - от этого очень сильно зависит времянка)...
Constraint IOB задаёт: укладывать триггер в IOB или нет.

Если не поможет, то тогда почитайте про DCM. Вроде как им можно покрутить фазу непрерывного clock'а.


Хочу сдвинуть входной поток данных ADC_IN относительно clk на 2 ns.
Если использовать OFFSET IN это будет выглядеть так:

NET "ADC_IN" OFFSET = IN "2 ns" VALID "10 ns" BEFORE "clk" RISING;

соответственно если, например, сдвинуть только 6-й бит потока:

NET "ADC_IN<5>" OFFSET = IN "2 ns" VALID "10 ns" BEFORE "clk" RISING;
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Oct 31 2011, 09:16
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Вам сначала необходимо зафиксировать фазу частоты в Spartan. Для этого надо, чтобы частота там прошла через DCM. То, что это добавит джиттер - уже неважно, потому что мы хлопаем оцифрованные данные. Далее, эта частота придет в Virtex-4 c некоторым смещением к данным. Вам надо это смещение засечь осцилографом. И затем на это смещение подвинуть клок, либо с помощью DCM в Spartan, либо использовав в Virtex еще одну DCM. Статически клок сдвинуть в DCM можно при ее создании в Coregen.
Go to the top of the page
 
+Quote Post
maxics
сообщение Oct 31 2011, 10:02
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 16-11-09
Пользователь №: 53 649



Если я хочу сдвинуть только один бит, например 6-й. В UCF эту строчку нужно прописать?

NET "ADC_IN<5>" OFFSET = IN "2 ns" VALID "10 ns" BEFORE "clk" RISING;

Сообщение отредактировал maxics - Oct 31 2011, 13:05
Go to the top of the page
 
+Quote Post
Genn
сообщение Oct 31 2011, 17:31
Сообщение #19


Участник
*

Группа: Свой
Сообщений: 48
Регистрация: 14-04-05
Пользователь №: 4 146



Цитата(maxics @ Oct 31 2011, 13:02) *
Если я хочу сдвинуть только один бит, например 6-й. В UCF эту строчку нужно прописать?

NET "ADC_IN<5>" OFFSET = IN "2 ns" VALID "10 ns" BEFORE "clk" RISING;


Эта строка - всего лишь временное ограничение для транслятора, который будет просто стараться уложиться в определенный диапазон, а возможностью управлять задержками в IOB она не обладает. Найдите в каталоге XILINX файл "cgd.pdf" (очень полезный файл!) и просмотрите главу "Input Buffer Delay Value (IBUF_DELAY_VALUE)".
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 29th June 2025 - 01:53
Рейтинг@Mail.ru


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