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

Quartus не понимает power-up state

Перешел тут с Xilinx на Altera и столкнулся с неприятностью: Quatrus не транслирует значение сигнала по умолчанию (VHDL) в register power-up state. Пишет ignored и все. Не подскажте, как бороться? В fpga-faq написано, что VHDL default с register power-up ничего общего не имеет, тем не менее софт Xilinx это компилирует правильно.

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


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

Выдержка из Altera Help:

The following example shows how to use the altera_attribute synthesis attribute to set the power-up level of an inferred register. Because you cannot directly associate the synthesis attribute with the inferred register, you must associate the synthesis attribute to the inferred register's output signal; the Quartus II software automatically transfers the synthesis attribute to the inferred register.

 

signal my_reg : std_logic

attribute altera_attribute : string;

attribute altera_attribute of my_reg : signal is "POWER_UP_LEVEL=HIGH";

 

process(clk)

begin

  if(rising_edge(clk)) then

      my_reg <= d;

  end if;

end process;

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


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

Warning пропал, однако с триггером все равно что-то непонятное (его aclr привязан к VCC).

 

И еще, что делать, если сигнал - std_logic_vector, причем немаленький? Если разобрать его по битам (допустим, хотя это почти нереально) - то как потом, например, программировать арифметические операции с ним?

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


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

Warning пропал, однако с триггером все равно что-то непонятное (его aclr привязан к VCC).

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

И еще, что делать, если сигнал - std_logic_vector, причем немаленький? Если разобрать его по битам (допустим, хотя это почти нереально) - то как потом, например, программировать арифметические операции с ним?

Используйте прием от Altera, описанный выше. Вообще не являюсь большим спецом в области VHDL, я Verilog люблю :) . Поройтесь по докам Quartus :huh:

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


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

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

 

Не понял, ведь aclr - это асинхронных сброс. Если на нем всегда 1 - то на выходе будет всегда 0. Не так?

 

Используйте прием от Altera, описанный выше. Вообще не являюсь большим спецом в области VHDL, я Verilog люблю  :) . Поройтесь по докам Quartus  :huh:

 

А как прием, описанный выше, применить к вектору, если мне половину бит надо в 1 поставить, а половину - в 0? В доках - голяк, я уже второй день решаю эту весьма тупую проблему.

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


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

Не понял, ведь aclr - это асинхронных сброс. Если на нем всегда 1 - то на выходе будет всегда 0. Не так?

Altera примитив DFF имеет инверсные входы асинхронной предустановки :excl:

 

У Altera действительно кривовато с использованием altera_attribute констрейнсов. Если не могу обойтись без пред установки, и c составным сигналом косяк (в Verilog без проблем k = {a0, a1, d5 ...}), то можно сделать так (у меня это работает безотказно): вожу сигнал асинхронной предустановки, коим устанавливаю вектор в нужное состояние b'11100011, синтезатор Altera дает предупреждение "not gete push back" и у станавливает нужные триггера в 1 состояние по включению питания, не могу сказать что это документированная возможность, но на протяжении нескольких версий Quartus все работает нормально.

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


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

А можно как-нибудь в ChipViewer увидеть power-up state? Для проверки, так сказать ...

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


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

Конкретно по ChipViewer, незнаю эти вещи у Altera появились недавно, но для проверки можно посмотреть выходной нетлист, промоделировать наконец.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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