Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Quartus не понимает power-up state
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
DmitryR
Перешел тут с Xilinx на Altera и столкнулся с неприятностью: Quatrus не транслирует значение сигнала по умолчанию (VHDL) в register power-up state. Пишет ignored и все. Не подскажте, как бороться? В fpga-faq написано, что VHDL default с register power-up ничего общего не имеет, тем не менее софт Xilinx это компилирует правильно.
cdg
Выдержка из 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;
DmitryR
Warning пропал, однако с триггером все равно что-то непонятное (его aclr привязан к VCC).

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

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

Используйте прием от Altera, описанный выше. Вообще не являюсь большим спецом в области VHDL, я Verilog люблю smile.gif . Поройтесь по докам Quartus huh.gif
DmitryR
Цитата(cdg @ Feb 24 2005, 14:14)
Скорее всего добавили инверсию на выходе, это у Altera излюбленный прием, я тоже частенько таким пользуюсь.


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

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


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

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

У Altera действительно кривовато с использованием altera_attribute констрейнсов. Если не могу обойтись без пред установки, и c составным сигналом косяк (в Verilog без проблем k = {a0, a1, d5 ...}), то можно сделать так (у меня это работает безотказно): вожу сигнал асинхронной предустановки, коим устанавливаю вектор в нужное состояние b'11100011, синтезатор Altera дает предупреждение "not gete push back" и у станавливает нужные триггера в 1 состояние по включению питания, не могу сказать что это документированная возможность, но на протяжении нескольких версий Quartus все работает нормально.
DmitryR
А можно как-нибудь в ChipViewer увидеть power-up state? Для проверки, так сказать ...
cdg
Конкретно по ChipViewer, незнаю эти вещи у Altera появились недавно, но для проверки можно посмотреть выходной нетлист, промоделировать наконец.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.