Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Констрейн на двухпортовый фифо
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Anton1990
Все добрый день.
Понимаю что тема избитая, но тем не менее.
Есть фифо. По одному порту пишу на частоте порядка 200 МГц. По другому порту читаю на частоте порядка 1 МГц. Причем читаю только после того как вся фифо забилась и запись останавливаю. Все прочитал - запускаю запись и т.д. Как правильно законстрейнить такую фифо и сигналы записи и чтения?
Kolya
Что опнимать под "правильно законстрейнить"? После синтеза и/или разводки вылазят слаки в данном месте?
Anton1990
Цитата(Kolya @ Nov 28 2015, 11:13) *
Что опнимать под "правильно законстрейнить"? После синтеза и/или разводки вылазят слаки в данном месте?

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

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


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


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

И кстати просто законстрейнить разные клоки будет достаточным условием для разводки проекта.
aabmail
Цитата(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;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.