Как сделать процесс, который выполняется только один раз при включении?
Легко сделать процесс, который выполняется при нажатии кнопки сброса, но как заставить его работать при подключении источника питания, не касаясь кнопки сброса?
В моем примере я хочу инициализировать ЖК-дисплей при запуске, и мне нужно сначала отправить некоторые команды ему, но мне не нужно его в процессе, зависящем от какого-либо сигнала, такого как сброс (просто давайте предположим, что есть без кнопки сброса).Как сделать процесс запуска в VHDL
ответ
состояние (первый запуск) хранится в одном FF, который инициализирован '1':
signal IsStartup : STD_LOGIC := '1';
FF процесс без сброса:
process(clk)
begin
if rising_edge(clk) then
IsStartup <= '0';
end if;
end process;
Пример использования (FSM):
process(clk)
begin
if rising_edge(clk) then
if (Reset = '1') then
State <= ST_RESET;
else
State <= NextState;
end if;
end if;
end process;
process(State, IsStartup)
begin
NextState <= State;
case State is
when ST_RESET =>
if (IsStartup = '1') then
NextState <= ST_STARTUP;
else
NextState <= ST_IDLE;
end if;
-- ...
end case;
end process;
ничего себе, спасибо! – ScienceSamovar
@ScienceSamovar: Обычно этот метод следует использовать только для автоматического создания сброса при запуске, и пусть вся ваша другая логика инициализации будет инициирована этим сигналом сброса. Помните, что сброс при включении не синхронизирован с часами, поэтому чем сложнее логика, тем выше риск нарушения требований к настройке/удержанию. –
Просто используйте заявление ожидания без списка сенсаций.
process
begin
assignment <= "101";
wait;
end process;
Это, как говорится, я бы рекомендовал вам построить это как конечный автомат.
Правильно ли я понимаю, что если у нас нет списка чувствительности, процесс будет иметь «дефолтную» чувствительность тактового сигнала? И будет ожидать, что заявление приостановит его навсегда? Имеет ли он недостатки в powerconsumption (я имею в виду, что ожидания внутри чипа реализованы, как я полагаю). – ScienceSamovar
Да, возможно, для того, чтобы сделать FSM, кажется более логичным, чем приостановление процесса, я полагаю, что мне все равно нужно его изучить :) – ScienceSamovar
списки чувствительности и выражения «ждут» предназначены только для моделирования, а не для синтеза – maxy
Вы пытались объявить сигнал (ы) вашего FSM значением по умолчанию? – maxy
Я не использую путь FSM здесь ... хотя бы явно. – ScienceSamovar
Вам просто нужен только один FF. Он инициализируется '1' и очищается до' 0' на каждом такте. Если вы не подключаете сброс к этому FF, он никогда не будет '1', если вы не перепрограммируете FPGA. – Paebbels