Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не работает BUFGMUX Spartan-3
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
kaktus
Код
BUFGMUX_inst : BUFGMUX
   port map (
      O => CLK155_int,        -- Clock MUX output
      I0 => CLK155W_ibuf,          -- Clock0 input
      I1 => CLK155P_ibuf,          -- Clock1 input
      S => Protect             -- Clock select input
   );                            
                            
Protect <= '1' when ((ALARM_SW_P & ALARM_SW_W) = "01") else '0'; -- '0' is Failure


Нарушая все правила хорошего тона подключаю чипскоп ко всем сигналам, включая тактовые.
При Protect = 0 все работает. При Protect = 1 на CLK155P_ibuf есть частота, на CLK155_int висит 1.
Проблема возникла видимо после одной из перекомпиляций проекта, т.к. раньше работало.
В UCF обоим сигналам прописан CLOCK_DEDICATED_ROUTE = false, т.к. оба сигнала прходят диф. парами на
тактовые входы, расположенные рядом и в железе действительно нет места обоим.
ISE 11.5
Spartan - 3, XC3S2000-4FG456
Shtirlits
Чудес не бывает (С), поэтому хочется узнать про сигнал Protect.
ALARM_SW_P и ALARM_SW_W - константы?

Имел дело с BUFGMUX на максимальных частотах. В полный рост проявляется время распространения от входа до глобальной сети и снова до входа "S". Если сигнал Protect является выходом какого-то регистра, то запросто может наблюдаться стробоскопический эффект в чипскопе, а временные ограничения BUFGMUX нарушаются. Кстати, они прописаны в UCF-файле?
Bad0512
Цитата(kaktus @ Jun 7 2011, 20:03) *
Код
BUFGMUX_inst : BUFGMUX
   port map (
      O => CLK155_int,        -- Clock MUX output
      I0 => CLK155W_ibuf,          -- Clock0 input
      I1 => CLK155P_ibuf,          -- Clock1 input
      S => Protect             -- Clock select input
   );                            
                            
Protect <= '1' when ((ALARM_SW_P & ALARM_SW_W) = "01") else '0'; -- '0' is Failure


Нарушая все правила хорошего тона подключаю чипскоп ко всем сигналам, включая тактовые.
При Protect = 0 все работает. При Protect = 1 на CLK155P_ibuf есть частота, на CLK155_int висит 1.
Проблема возникла видимо после одной из перекомпиляций проекта, т.к. раньше работало.
В UCF обоим сигналам прописан CLOCK_DEDICATED_ROUTE = false, т.к. оба сигнала прходят диф. парами на
тактовые входы, расположенные рядом и в железе действительно нет места обоим.
ISE 11.5
Spartan - 3, XC3S2000-4FG456

Для успешного переключения обе частоты должны пристствовать. Иначе антиглитчевая логика этой переключалки (BUFGMUX) просто не срабатывает. В последних версиях ISE в примитве BUFGMUX появился GENERIC, позволяющий обойти это ограничение. Не помню точно, как называется. Что-то типа ASYNC = TRUE. Не уверен что это сработает для Спартана3, уж больно древнее семейство, но для Спартана3А это точно работает.

З Ы Не поленился - полазил по хелпам, атрибут называется CLK_SEL_TYPE. Принимает значения SYNC(default) и ASYNC. В версии 11 ISE точно поддерживается. В версии 12.3 почему-то уже нет упоминания о нём, только для 6 спартана. В ообщем, зайдите на сайт Xilinx, сделайте поиск по слову CLK_SEL_TYPE - и будет вам много новой и неожиданной информации.

З З Ы Симуляторы, кстати, в курсе этой чудесной особенности элемента BUFGMUX.
kaktus
Спасибо, попробую поставить эксперимент с атрибутом. Странно то, что такая же переключалка работает в другой аналогичной плате, да и здесь работала до какого-то момента.

Protect не изменяется постоянно. Он принимает одно из состояний при включении. Сигналы ALARM статические, сообщают о наличии источников частоты (Work/Protect).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.