Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Использование BUFGMUX
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Alex_AZ
Приветствую.
Есть такая задача - нужен контроллер памяти SSRAM. Рабочая частота - до 200 МГц.
Режим работы памяти - пишем отсчеты сигнала с АЦП(работает в зависимости от режима на частотах 150-200МГц), затем медленно сливаем их контроллеру USB, который работает на 50 МГц. Но желательно обеспечить возможность писать в память по тактам usb или читать по тактам АЦП. Схематический набросок решения можно посмотреть во вложении.
Тактовую частоту работы памяти выбираю с помощью BUFGMUX. Регистры на схеме - некоторая абстракция. По такой схеме идет обмен данными между доменами adcClockDomain, memClockDomain и usbClockDomain. Захватываю данные по падающему клоку, т.к. задержка тактового сигнала при переходе через bufgmux, как мне кажется может испортить сигнал при передаче его из adcClockDomain в memClockDomain. Написал констрейны на тактовые сигналы, на задержки распространения из adcClockDomain в memClockDomain (from-to 2.5ns) и обратно. Аналогично с usbClockDomain и memClockDomain.

Теперь со всей этой фигней на борту пытаемся взлететь.(с)
1) Работает сие чудо довольно нестабильно. Бывают пропуски отсчетов. Timing Analyzer ругается на цепи (сигналы статуса, не данные), которые идут из memClkDomain к adcClockDomain. Может я какие-нибудь констрейнты упустил из внимания? До сих пор вообще временными ограничениями на дизайн не пользовался, т.к. проекты были сравнительно низкочастотными и хватало area-констрейнтов, так то просьба сильно не пинать и если нужно, ткнуть мордой в полезную для образовательных целей инфу.
2) Можно ли поставить на выход bufgmux dcm/pmc и передавать данные между adc и mem доменами строго по возходящему фронту тактового сигнала и аналогично между mem и usb доменами? Т.е. привязать по фазе такты adc и mem во время работы с памятью из домена adc и аналогично с usb и mem. Если можно, то как?

Дополнительные сведения: девайс - xilinx virtex4 vsx55, синтезатор - Leonardo, MAP-PAR - ISE.
RobFPGA
Приветствую!

Самое правильное решене использовать FIFO на запись и чтение в память.
Тесть память работает всегда на фиксированной максимальной частоте, clock domain правильно развязаны - фигня летит rolleyes.gif

В вашем же случае уберите инверсию после BUFGMUX, а входы BUFGMUX подключите к НЕ к глобальным клокам adcClockDomain, usbClockDomain, а к входам соответствующих глобальных буферов. Тогда задержки BUFGMUX не будут влиять.

Успехов! Rob.
Alex_AZ
Спасибо за ответ. Идея подключить BUFGMUX напрямую к буферам интересная. По крайней мере Timing Analyzer больше не ругается. Может, конечно, будут косяки с тактированием из разных источников - часть схемы от BUFG, другая - от BUFGMUX при передаче данных между этими доменами? В крайнем случае перейду на фифо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.