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

 
 
> Задание констрейнов, констрейны Vivado2016
Anton1990
сообщение Oct 17 2017, 15:41
Сообщение #1


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

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



Всем привет.
Есть проект работающий на частоте clkA (~200 МГц). И сигнал CE сопровождающий весь проект. СЕ реально не превышает 50 МГц. Как задать констрейн для учета сигнала CE ведь всем проекту нет необходимости тикать на clkA.

Есть регистр "А" (32 разряда) куда записывается некоторое число из программы по сигналу clkrd. Выход данного регистра идет на вход другого регистра "В" работающего на частоте clkB. Запись в регистр "А" осуществляется из программы очень редко, а может и вообще не меняться. Как сообщить vivado не пытаться совместить частоты clkA и clkB?
Заранее всем спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Shivers
сообщение Oct 17 2017, 17:46
Сообщение #2


Знающий
****

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



Правила такие: констрейнить надо всегда по максимальной частоте, даже если в реальной схеме сигнал сопровождения возникает раз в тысячу тактов. После этого, надо смотреть связи между триггерами: если есть триггер А, выход которого поступает на триггер Б гарантированно через 2 и более тактов (но никогда в следующем такте), то на этот путь накладывается малтисайкл. Но все остальные пути (которые могут придти в следующем такте) должны анализироваться без малтисайкла.

Представить себе ситуацию, когда в схеме выходы ВСЕХ триггеров приходят на приемники через 2 и более такта, я не могу, потому что это будет означать, что дизайн написан по-лоховски, ведь опорный клок надо было делить еще на входе, до реальной частоты схемы. Т.е. если у топикстартера реальная частота схемы 50 МГц, а опорная частота 200, значит надо делить частоту на 4, а потом уже заводить в схему. И констрейнты тогда надо писать относительно клока 50 МГц, который объявить как генерейтед от 200 МГц.

Еще один момент. У топикстартера в первом посте какая то каша с клоками. Если в проекте используются две частоты clkA и clkB, где одна не получается из другой делением (т.е. оба генератора асинхронны друг другу), то это вообще другая история - читайте про CDC.
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Oct 19 2017, 15:32
Сообщение #3


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

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



Цитата(Shivers @ Oct 17 2017, 20:46) *
Представить себе ситуацию, когда в схеме выходы ВСЕХ триггеров приходят на приемники через 2 и более такта, я не могу, потому что это будет означать, что дизайн написан по-лоховски, ведь опорный клок надо было делить еще на входе, до реальной частоты схемы. Т.е. если у топикстартера реальная частота схемы 50 МГц, а опорная частота 200, значит надо делить частоту на 4, а потом уже заводить в схему. И констрейнты тогда надо писать относительно клока 50 МГц, который объявить как генерейтед от 200 МГц.

Еще один момент. У топикстартера в первом посте какая то каша с клоками. Если в проекте используются две частоты clkA и clkB, где одна не получается из другой делением (т.е. оба генератора асинхронны друг другу), то это вообще другая история - читайте про CDC.


Поясняю ситуацию. Частота дискретизации сигнала 100 МГц, принимаемый сигнал 100 кГц. На выходе дема принятые символы идут на 100 МГц в сопровождении CE (равной символьной скорости т.е. 100 кГц). Сигнал децемировать заранее нельзя т.к. демов стоит несколько и соседний вполне может принимать сигнал с шириной 40 МГц.

По второму вопросу: дем работает на частоте 100 МГц а управление идет из регистров записываемых из программы с шины с ее частотой clkRD. Запись статична, т.е записали значение и забыли, но vivado ведь незнает что запись происходит очень редко (по желанию пользователя) и пытается совместить "несовместимые" и независимые частоты.
Go to the top of the page
 
+Quote Post
Shivers
сообщение Oct 20 2017, 05:45
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 680
Регистрация: 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
Сообщение #5


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

Группа: Участник
Сообщений: 155
Регистрация: 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

Сообщений в этой теме
- Anton1990   Задание констрейнов   Oct 17 2017, 15:41
- - Tausinov   Цитата(Anton1990 @ Oct 17 2017, 18:41) Вс...   Oct 17 2017, 15:52
|- - Anton1990   Цитата(Tausinov @ Oct 17 2017, 18:52) Это...   Oct 17 2017, 16:21
|- - Tausinov   Цитата(Anton1990 @ Oct 17 2017, 19:21) Пе...   Oct 17 2017, 16:45
|- - RobFPGA   Приветствую! Цитата(Anton1990 @ Oct 17 2...   Oct 17 2017, 18:17
- - Flip-fl0p   ЦитатаВсем привет. Есть проект работающий на часто...   Oct 17 2017, 15:54
- - yes   а почему не пойдет set_multicycle_path ? вроде как...   Oct 17 2017, 18:55
|- - RobFPGA   Приветствую! Цитата(yes @ Oct 17 2017, 2...   Oct 17 2017, 19:22
|- - _Anatoliy   Цитата(RobFPGA @ Oct 17 2017, 22:22) Да т...   Oct 18 2017, 06:37
|- - RobFPGA   Приветствую! Цитата(_Anatoliy @ Oct 18 2...   Oct 18 2017, 11:28
|- - _Anatoliy   Цитата(RobFPGA @ Oct 18 2017, 14:28) Прив...   Oct 18 2017, 11:54
- - andrew_b   Вообще по сравнению с ucf описание мультицикла в s...   Oct 18 2017, 06:05
- - Maverick   Цитата(Anton1990 @ Oct 17 2017, 18:41) Вс...   Oct 18 2017, 06:31
- - Shivers   Получается два асинхронных клоковых домена: частот...   Oct 23 2017, 17:04
|- - Anton1990   Цитата(Shivers @ Oct 23 2017, 20:04) Полу...   Oct 24 2017, 15:44
- - Shivers   В общих чертах. Самый главный констрейнт - объявле...   Oct 25 2017, 06:18
- - Anton1990   Цитата(Shivers @ Oct 25 2017, 09:18) В об...   Oct 25 2017, 15:42
- - alexadmin   Цитата(Anton1990 @ Oct 25 2017, 18:42) Я ...   Oct 26 2017, 10:20
- - Anton1990   Цитата(alexadmin @ Oct 26 2017, 13:20) Пр...   Oct 26 2017, 15:32
- - Maverick   Цитата(Anton1990 @ Oct 26 2017, 18:32) Ка...   Oct 26 2017, 15:37
|- - Anton1990   Цитата(Maverick @ Oct 26 2017, 18:37) мож...   Oct 27 2017, 15:45
- - AVR   Цитата(Anton1990 @ Oct 26 2017, 18:32) Ка...   Oct 27 2017, 09:49


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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 18:36
Рейтинг@Mail.ru


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