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

 
 
 
Reply to this topicStart new topic
> Констрейн на двухпортовый фифо, как законстрейнить фифо
Anton1990
сообщение Nov 28 2015, 05:47
Сообщение #1


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

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



Все добрый день.
Понимаю что тема избитая, но тем не менее.
Есть фифо. По одному порту пишу на частоте порядка 200 МГц. По другому порту читаю на частоте порядка 1 МГц. Причем читаю только после того как вся фифо забилась и запись останавливаю. Все прочитал - запускаю запись и т.д. Как правильно законстрейнить такую фифо и сигналы записи и чтения?
Go to the top of the page
 
+Quote Post
Kolya
сообщение Nov 28 2015, 08:13
Сообщение #2


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

Группа: Свой
Сообщений: 85
Регистрация: 21-03-11
Из: Киев
Пользователь №: 63 755



Что опнимать под "правильно законстрейнить"? После синтеза и/или разводки вылазят слаки в данном месте?
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Nov 28 2015, 14:44
Сообщение #3


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

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



Цитата(Kolya @ Nov 28 2015, 11:13) *
Что опнимать под "правильно законстрейнить"? После синтеза и/или разводки вылазят слаки в данном месте?

Сейчас висят констрейны типа "период" на частоту записи и частоту чтения. Это разве достаточно? И потом при маленькой глубине фифо (512) проблем вроде нет. Но когда глубина фифо 65535 то читается всяка хрень. Ну может она уже и записывается всяка хренб. В общем пытаюсь разобраться.
Go to the top of the page
 
+Quote Post
Kolya
сообщение Nov 28 2015, 21:11
Сообщение #4


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

Группа: Свой
Сообщений: 85
Регистрация: 21-03-11
Из: Киев
Пользователь №: 63 755



Если ФИФО сгенерино в IpCore то проблем возникнуть не должно. Достаточно будет заданных параметров. Ну и по моему личному мнению стоит избегать ФИФОшек столь большой величини. Лучше разруливать как-то через РАМ или регистрами справляться. Ибо в основном ФИФО - это мультиплексоры, а они ой как на больших входах начинають ложить проект.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Nov 28 2015, 22:21
Сообщение #5


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

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



Цитата(Kolya @ Nov 28 2015, 23:11) *
Если ФИФО сгенерино в IpCore то проблем возникнуть не должно. Достаточно будет заданных параметров. Ну и по моему личному мнению стоит избегать ФИФОшек столь большой величини. Лучше разруливать как-то через РАМ или регистрами справляться. Ибо в основном ФИФО - это мультиплексоры, а они ой как на больших входах начинають ложить проект.

ФИФО строятся на двухпортовой памяти, для двухклоковых доменов.
Никогда не замечал сбои проекта из-за ФИФО, а наоборот


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

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Anton1990
сообщение Nov 29 2015, 06:18
Сообщение #6


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

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



Цитата(Kolya @ Nov 29 2015, 00:11) *
Если ФИФО сгенерино в IpCore то проблем возникнуть не должно. Достаточно будет заданных параметров. Ну и по моему личному мнению стоит избегать ФИФОшек столь большой величини. Лучше разруливать как-то через РАМ или регистрами справляться. Ибо в основном ФИФО - это мультиплексоры, а они ой как на больших входах начинають ложить проект.


Про IPCore полностью согласен. с ними проблем значительно меньше чем с самописными (хотя непонятно почему, видимо ОНИ умнее меня). Но так ведь независимо какая фифо всеодно нужны констрейны.
Go to the top of the page
 
+Quote Post
Kolya
сообщение Nov 29 2015, 08:53
Сообщение #7


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

Группа: Свой
Сообщений: 85
Регистрация: 21-03-11
Из: Киев
Пользователь №: 63 755



Цитата(Maverick @ Nov 29 2015, 00:21) *
ФИФО строятся на двухпортовой памяти, для двухклоковых доменов.
Никогда не замечал сбои проекта из-за ФИФО, а наоборот


Не всегда ФИФО ставят на разные клоковые домены. Иногда можно разрулить обычными регистрами + синхронизаторами. И у меня действительно были проблемы со слаками при использовании очень больших ФИФО (+разные клоковые домены были).

И кстати просто законстрейнить разные клоки будет достаточным условием для разводки проекта.
Go to the top of the page
 
+Quote Post
aabmail
сообщение Dec 1 2015, 15:45
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 210
Регистрация: 4-06-08
Из: Москва
Пользователь №: 38 056



Цитата(Kolya @ Nov 29 2015, 11:53) *
Не всегда ФИФО ставят на разные клоковые домены. Иногда можно разрулить обычными регистрами + синхронизаторами. И у меня действительно были проблемы со слаками при использовании очень больших ФИФО (+разные клоковые домены были).

И кстати просто законстрейнить разные клоки будет достаточным условием для разводки проекта.


ИМХО даже при больших рахмерах (до 65536) и при больших частотах (400MHz@Kintex) читаться хрень из FIFO не должна. Но на PAR могут возникать timing errors, и как их избежать, написано в AR# 43210.
Timing - How do I disable expected setup and hold time violations that are due to data synchronization between clock domains while using CORE Generator FIFO?

http://www.xilinx.com/support/answers/43210.html

Помогает.



Цитата(Anton1990 @ Nov 28 2015, 08:47) *
Все добрый день.
Понимаю что тема избитая, но тем не менее.
Есть фифо. По одному порту пишу на частоте порядка 200 МГц. По другому порту читаю на частоте порядка 1 МГц. Причем читаю только после того как вся фифо забилась и запись останавливаю. Все прочитал - запускаю запись и т.д. Как правильно законстрейнить такую фифо и сигналы записи и чтения?


А вот если Ваши 200МГц и 1МГц происходят от независимых источников тактирования (иными словами Implementation tool не имеет данных о фазовом соотношении между клоками), то для кросс-клоковых цепей проверка на тайминг не производится. Тут подстерегает опасность - может считываться ерунда. Идем в Language templates и берем constraining asynchronous clock domain paths.

Код
#-----------------------------------------------------------------------------
# When constraining asynchronous clock domain paths, it is sometimes desired
# to limit the maximum delay between the two clock domains. Because the clock
# domains are asynchronous, the timing relationship between the two clock
# signals is not known, and should not be included in delay calculations. for
# these paths, the FROM-TO DATAPATHONLY constraint can be used.
#
# An example design situation is shown below:
#
#                             -----                      -----
#                             |REG|===Asynch Data Path===|REG|
#                             |   |                      |   |
#                             --^--                      --^--
#  O---WriteClk-----------------|                          |
#                                                          |
#  O---ReadClk----------------------------------------------
#
#-----------------------------------------------------------------------------

# Defining the Asynchronous Domain Path Timing Groups
# NET <clock_net> TNM_NET = "<clock_net_timegroup>";
NET "WriteClk" TNM_NET = "WriteClkGrp";
NET "ReadClk" TNM_NET = "ReadClkGrp";

# TIMESPEC <TS_name> = FROM <group1> TO <group2> <time> <units> DATAPATHONLY;
TIMESPEC TS_AsynchPath = FROM WriteClkGrp TO ReadClkGrp 10 ns DATAPATHONLY;
Go to the top of the page
 
+Quote Post

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

 


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


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