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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Задание констрейнов, констрейны Vivado2016
Shivers
сообщение Oct 20 2017, 05:45
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 624
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



Цитата(Anton1990 @ Oct 19 2017, 18:32) *
Поясняю ситуацию. Частота дискретизации сигнала 100 МГц, принимаемый сигнал 100 кГц. На выходе дема принятые символы идут на 100 МГц в сопровождении CE (равной символьной скорости т.е. 100 кГц). Сигнал децемировать заранее нельзя т.к. демов стоит несколько и соседний вполне может принимать сигнал с шириной 40 МГц.

Т.е., как я понял, у Вас входной интерфейс - состоит из шины данных, сигнала сопровождения СЕ и тактируется 100 МГц.

Цитата(Anton1990 @ Oct 19 2017, 18:32) *
По второму вопросу: дем работает на частоте 100 МГц а управление идет из регистров записываемых из программы с шины с ее частотой clkRD. Запись статична, т.е записали значение и забыли, но vivado ведь незнает что запись происходит очень редко (по желанию пользователя) и пытается совместить "несовместимые" и независимые частоты.

И как я понял, сам проект тактируется clkRD?

Смотрите что получается.
1. Входной интерфейс надо обязательно констрейнить по его частоте, ничего сокращать нельзя. Это нужно, чтобы выровнять задержки входной шины данных, чтобы они сильно не расползались во времени. И частота сигнала СЕ здесь никакой роли не играет -сигнал СЕ тоже нужно констренить относительно 100МГц.
2. Вам надо разобраться, что делать с этим потоком данных. Логичное решение - на вход интерфейса ставить триггеры, работающие на 100Мгц, с разрешением записи по сигналу СЕ - теперь их данные будут меняться уже с периодичностью изменения сигнала СЕ, т.е. частоту потока данных Вы понизили, хотя эти данные все равно остаются синхронными 100 МГц.
3. Надо понять, что делать с этим потоком данных, от какого генератора будут тактироваться триггеры дальше по схеме. Если по клоку clkRD, то ставите пересинхронизационное фифо, получаете поток данных, синхронный clkRD, и делаете с этим потоком что захотите. При этом, между clkRD и 100Мгц - фалзпасы в обе стороны, поскольку это асинхронные частоты, как я понял (т.е. clkRD не получается делением из 100МГц). Это бы Вы делали эсик, а не ПЛИС, то к фалзпасам надо было бы добавить асинхронный констрейнт set_max_delay в обе стороны, чтобы тул совсем уж не бросал эти пути сигналов.
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Oct 20 2017, 15:52
Сообщение #17


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

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



Цитата(Shivers @ Oct 20 2017, 08:45) *
Т.е., как я понял, у Вас входной интерфейс - состоит из шины данных, сигнала сопровождения СЕ и тактируется 100 МГц.
И как я понял, сам проект тактируется clkRD?
Смотрите что получается.


Вначале не хотел всего раскрывать, но что уж теперь.
Схема такова.
Одна плата PCIe оцифровывает данные на 200 МГц и оцифрованные данные передаются по pcie на другу плату pcie (обработчик).
Далее на плате обработчика.
Разумеется по приходу с pcie поток складывается в фифо. Из фифо поток по генератору 210 МГц (чтобы успевать за частотой дискретизации) и сигналу ce (это флаг полноты фифо) данные качаются на линейку демов. С выхода которых имеем множество потоков на частоте 210 МГц в сопровождении сигнала datavalid (эквивалент символьной скорости от 1кГц до 50 МГц).
Управляются (настраиваются) демы из pcie через регистры, которые записываются по частоте pcieRD (~250 МГц), а выходы этих (управляющих) регистров (эти регистры записываются редко, по желанию пользователя) идут на регистры демов, которые тикают на 210 МГц.
Связку фифо-демы и регистры управления-демы, нужно как-то правильно обконстрейнить.
как-то так.
Go to the top of the page
 
+Quote Post
Shivers
сообщение Oct 23 2017, 17:04
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 624
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



Получается два асинхронных клоковых домена: частота PCI-E PHY и регистров (250 МГц), и частота 210 МГц для обработки. Фифо нужно пересинхронизационное, сигналы управления из регистров тоже надо пересинхронизировать - пропустить через два D-триггера на частоте 210. Между обоими клоками ставить фазпасы в обе стороны.
Что касается домена 210 МГц и сигнала datavalid, то на мой взгляд, констрейнить здесь какое то понижение частоты нельзя. Может быть, символьная скорость и снижается, но времена сетап/холд приемных триггеров этих символов, работающих (как я понял) тоже на 210 МГц, никто не отменял.
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Oct 24 2017, 15:44
Сообщение #19


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

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



Цитата(Shivers @ Oct 23 2017, 20:04) *
Получается два асинхронных клоковых домена: частота PCI-E PHY и регистров (250 МГц), и частота 210 МГц для обработки. Фифо нужно пересинхронизационное, сигналы управления из регистров тоже надо пересинхронизировать - пропустить через два D-триггера на частоте 210. Между обоими клоками ставить фазпасы в обе стороны.
Что касается домена 210 МГц и сигнала datavalid, то на мой взгляд, констрейнить здесь какое то понижение частоты нельзя. Может быть, символьная скорость и снижается, но времена сетап/холд приемных триггеров этих символов, работающих (как я понял) тоже на 210 МГц, никто не отменял.

Все верно понято. Пересинхронизационное фифо стоит, но ведь его входную и выходную частоты нужно както обконстрейнить? А что значит "Между обоими клоками ставить фазпасы в обе стороны" ?
Go to the top of the page
 
+Quote Post
Shivers
сообщение Oct 25 2017, 06:18
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 624
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



В общих чертах. Самый главный констрейнт - объявление клока. Он автоматически накладывает ограничения на все триггеры, тактируемые этим клоком. Если есть внешний интерфейс микросхемы, который либо драйверится триггерами на данном клоке, либо принимается этими триггерами, то этот интерфейс надо констрейнить относительно данного клока с помощью set_input_delay/set_output_delay с ключами min/max. Таким образом констрейните один клоковый домен (250), так же констрейните второй клоковый домен (210). Поскольку клоки асинхронные, пути между ними (из домена 250 в домен 210 и наоборот, т.е. в обе стороны) будут нарушаться, и их надо исключить из анализа. Делается это через команды set_false_path -from clk250 -to clk210 и set_false_path -from clk210 -to clk250.
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Oct 25 2017, 15:42
Сообщение #21


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

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



Цитата(Shivers @ Oct 25 2017, 09:18) *
В общих чертах. Самый главный констрейнт - объявление клока. Он автоматически накладывает ограничения на все триггеры, тактируемые этим клоком. Если есть внешний интерфейс микросхемы, который либо драйверится триггерами на данном клоке, либо принимается этими триггерами, то этот интерфейс надо констрейнить относительно данного клока с помощью set_input_delay/set_output_delay с ключами min/max. Таким образом констрейните один клоковый домен (250), так же констрейните второй клоковый домен (210). Поскольку клоки асинхронные, пути между ними (из домена 250 в домен 210 и наоборот, т.е. в обе стороны) будут нарушаться, и их надо исключить из анализа. Делается это через команды set_false_path -from clk250 -to clk210 и set_false_path -from clk210 -to clk250.


Я себе это примерно так и представлял. Но у меня возникла загвоздка: имена clk250 и ck210 откуда брать? Эти цепи находятся не на самом верхнем уровне проекта, поэтому просто указать имена clk250 и ck210 не проходит. Требуется видимо иерархическое имя которое можно выудить из схематика после синтеза (ну по крайней мере так советовали). Я прав?
Go to the top of the page
 
+Quote Post
alexadmin
сообщение Oct 26 2017, 10:20
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 535
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Цитата(Anton1990 @ Oct 25 2017, 18:42) *
Я себе это примерно так и представлял. Но у меня возникла загвоздка: имена clk250 и ck210 откуда брать? Эти цепи находятся не на самом верхнем уровне проекта, поэтому просто указать имена clk250 и ck210 не проходит. Требуется видимо иерархическое имя которое можно выудить из схематика после синтеза (ну по крайней мере так советовали). Я прав?


Проще всего после компиляции проекта запустить тайминг визард - он сам найдет не обконстрейненные клоки и предложит их задать. По крайней мере оттуда можно взять их имя и написать констрэйн самому. Или просто из репорта - там обычно тоже все найденные клоки проекта есть.
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Oct 26 2017, 15:32
Сообщение #23


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

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



Цитата(alexadmin @ Oct 26 2017, 13:20) *
Проще всего после компиляции проекта запустить тайминг визард - он сам найдет не обконстрейненные клоки и предложит их задать. По крайней мере оттуда можно взять их имя и написать констрэйн самому. Или просто из репорта - там обычно тоже все найденные клоки проекта есть.

Кажется со всем разобрался. Всем спасибо за советы. Тему закрываем.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 26 2017, 15:37
Сообщение #24


я только учусь...
******

Группа: Модераторы
Сообщений: 3 394
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Anton1990 @ Oct 26 2017, 18:32) *
Кажется со всем разобрался. Всем спасибо за советы. Тему закрываем.

может поделитесь?
другим вопрошающим будет ответ sm.gif


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
AVR
сообщение Oct 27 2017, 09:49
Сообщение #25


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Anton1990 @ Oct 26 2017, 18:32) *
Кажется со всем разобрался. Всем спасибо за советы. Тему закрываем.

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


--------------------
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Oct 27 2017, 15:45
Сообщение #26


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

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



Цитата(Maverick @ Oct 26 2017, 18:37) *
может поделитесь?
другим вопрошающим будет ответ sm.gif

Прошу прощения, конечно. Но чем делится, то?
Сделал так как Вы мне и посоветовали. Вычистил файл констрейнов (кроме распиновки). Синтезировал, имплементировал. Запустил констрейн визард. По ходу нажимания стрелочек он сам (всмысле визард) нашел все мои клоки, я лишь указал частоту, и самое главное предложил создать асинхронные участки между клоком pcie и моей частотой 210МГц в обоих направлениях. Правда написал, что не советует так делать (но я сделал). Вот и все. Сохранил констрейны. Перекомпилил проект. Варнинги по поводу асинхронщины исчезли (по крайней мере в этой части проекта). Как все выше проделанное сказалось на общей работоспособности пока понять не смог, там у меня еще других проблем хватает. Но вопрос правильного "обконстрейнивания" проекта благодаря Вам я пока закрыл. Вот и все.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 13th December 2017 - 22:42
Рейтинг@Mail.ru


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