Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Altera (Cyclone II) signal integrity как то удивительно
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
yes
и вижу, кучи "битых" отсчетов

то есть в основном тактовом домене, который занимает 90% чипа (самый старший циклон 2) сигнал заведомо константа, например resetn (1)
при оцифровки этого сигнала асинхронным signaltap-ом вижу достаточно много отсчетов в 0 (ну то есть иголки)

это как понимать?

раньше до такого извращения не додумывался, а сейчас захотел померить задержки внешних сигналов - и побочный результат меня удивил

плата фирменная альтеровская, предполагаю, что питание там правильное,
может это все таки сигналтап глючит?
все-таки я могу тот же сброс сделать асинхронным, тогда иголки будут оказывать влияние на функциональность


DmitryR
Можно посмотреть например, как формируется resetn. Можно перевести reset на асинхронный и посмотреть, влияет ли это. Можно наконец перевести SignalTap на синхронный клок.
yes
вообще-то меня не интересует как починить, так как синхронная часть дизайна замечательно работает

просто мне интересно - наблюдаю ли я какой-то глюк сигналтапа (причину такого глюка придумать не могу)

или же действительно внутри плисины на "проводах" творится черт знает что в неважные моменты времени, скорее всего непосредственно после такта и успокаивается [задолго] перед следующим

тогда квартус такой умный (upd: может квартус не умный, а железно в ПЛИСине такие цепи безглючны, но они где-то же подключаются к интерконнекту) и допускает такое для синхронных сигналов, а асинхронные разводит более тщательно - бывают асинхронные блоки, но они же работают

???

-----------------

в даном случае reset выход комбинаторной схемы - выход триггера, выход lock pll и т.п. по AND
ViKo
Цитата(yes @ Oct 20 2010, 18:12) *
выход lock pll и т.п. по AND

так, может, в lock pll и дело?
des00
Цитата(yes @ Oct 20 2010, 09:12) *
или же действительно внутри плисины на "проводах" творится черт знает что в неважные моменты времени, скорее всего непосредственно после такта и успокаивается [задолго] перед следующим

судя по тому, как я с бубном танцевал с сыклонами 3, там может быть всё что угодно %(
DmitryR
Цитата(yes @ Oct 20 2010, 19:12) *
в даном случае reset выход комбинаторной схемы - выход триггера, выход lock pll и т.п. по AND

Начнем с того, что такой ресет нельзя делать синхронным: у вас пропадет частота, но упавший lock не сбросит схему, потому что пропала частота, а сброс синхронный. То есть, reset надо делать асинхронным. А тут уже вам придется разобраться, почему он гуляет.
ViKo
Хотелось бы докопаться до истины в данном вопросе.
Можно было бы поотключать поочереди сигналы, объединяемые по AND и посмотреть на результирующий сигнал сброса.
yes
да не гуляет _синхронный_ сброс - все в нем хорошо, то есть микропроцессор от этого сброса не сбрасывается, а продолжает работать
экспериментировать дальше пока времени нет,
вот описание сброса (типа по Гейслеру), то есть для системы используется rstout (выход триггера)
Код
async : if syncrst = 0 generate
    reg1 : process (clk, arst) begin
      if rising_edge(clk) then
        r <= r(3 downto 0) & clklock;
        rstoutl <= r(4) and r(3) and r(2);
      end if;
      if (arst = '0') then r <= "00000"; rstoutl <= '0'; end if;
    end process;
    rstout <= (rstoutl and rst) when scanen = 1 else rstoutl;
  end generate;


наблюдал rstout, при этом не только он но и другие сигналы имеют "иголки" - просто объяснить, что это не так мне было бы сложнее чем сброс, поэтому в качестве примера я привел сброс

--------------------------

кстати не вижу никакой проблемы использовать LOCK для синхр. сброса - в любом случае тактовый сигнал появляется до того как поднимется LOCK, поэтому если сброс не заведен на управление PLL, то
Код
sync : if syncrst = 1 generate
    reg1 : process (clk) begin
      if rising_edge(clk) then
        r <= (r(3 downto 0) & clklock) and (rst & rst & rst & rst & rst);
        rstoutl <= r(4) and r(3) and r(2);
      end if;
    end process;
    rstout <= rstoutl and rst;
  end generate;

такая конструкция не имеет проблем (разве что до появления сброса схема находится в неопределенном состоянии - но так как внутри ПЛИСины трехстабильных шин и конфликта драйверов нет, то если немножко до появления клока постоит враскоряку то ничего страшного)
DmitryR
Цитата(yes @ Oct 25 2010, 14:26) *
кстати не вижу никакой проблемы использовать LOCK для синхр. сброса
Вы может и не видите, зато видит Xilinx. Попробуйте в Coregen при конфигурировании PLL например не вывести LOCK - он вам сразу скажет, что это опасно, так как пока PLL не установила режим - все тактируемые ей триггеры должны быть сброшены.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.