Перейти к содержанию
    

Altera (Cyclone II) signal integrity как то удивительно

и вижу, кучи "битых" отсчетов

 

то есть в основном тактовом домене, который занимает 90% чипа (самый старший циклон 2) сигнал заведомо константа, например resetn (1)

при оцифровки этого сигнала асинхронным signaltap-ом вижу достаточно много отсчетов в 0 (ну то есть иголки)

 

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

 

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

 

плата фирменная альтеровская, предполагаю, что питание там правильное,

может это все таки сигналтап глючит?

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

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно посмотреть например, как формируется resetn. Можно перевести reset на асинхронный и посмотреть, влияет ли это. Можно наконец перевести SignalTap на синхронный клок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

 

???

 

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

 

в даном случае reset выход комбинаторной схемы - выход триггера, выход lock pll и т.п. по AND

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

выход lock pll и т.п. по AND

так, может, в lock pll и дело?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

судя по тому, как я с бубном танцевал с сыклонами 3, там может быть всё что угодно %(

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в даном случае reset выход комбинаторной схемы - выход триггера, выход lock pll и т.п. по AND

Начнем с того, что такой ресет нельзя делать синхронным: у вас пропадет частота, но упавший lock не сбросит схему, потому что пропала частота, а сброс синхронный. То есть, reset надо делать асинхронным. А тут уже вам придется разобраться, почему он гуляет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотелось бы докопаться до истины в данном вопросе.

Можно было бы поотключать поочереди сигналы, объединяемые по AND и посмотреть на результирующий сигнал сброса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

экспериментировать дальше пока времени нет,

вот описание сброса (типа по Гейслеру), то есть для системы используется 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;

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

кстати не вижу никакой проблемы использовать LOCK для синхр. сброса
Вы может и не видите, зато видит Xilinx. Попробуйте в Coregen при конфигурировании PLL например не вывести LOCK - он вам сразу скажет, что это опасно, так как пока PLL не установила режим - все тактируемые ей триггеры должны быть сброшены.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...