VHDL - Когда процесс () запускается в первый раз? - PullRequest
2 голосов
/ 30 ноября 2009

Рассмотрим: процесс (а) Согласно тексту у меня есть:

Процесс впервые вводится во время моделирования, в котором это время выполняется, пока он не приостанавливает себя из-за на ожидание или чувствительность список.

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

Ответы [ 2 ]

4 голосов
/ 30 ноября 2009

AFAIK, список чувствительности (например, process (x,y)) - это просто сокращение для wait on x,y; непосредственно перед end process процедуры (стр. 152, «Руководство дизайнера по VHDL», 3-е издание). Таким образом, все процедуры будут выполняться хотя бы один раз.

3 голосов
/ 02 декабря 2009

В симуляции VHDL участвуют 3 этапа. Это разработка, инициализация и моделирование.

В начале фазы инициализации текущее время устанавливается равным 0. Затем ядро ​​моделирования помещает все процессы моделирования в очередь активных процессов. Каждый процесс моделирования затем берется из этой очереди и выполняется до тех пор, пока не будет приостановлен. Порядок выполнения процессов моделирования при инициализации не важен. Первоначальное выполнение каждого процесса моделирования гарантирует, что все начальные транзакции запланированы так, что моделирование может продолжаться.

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

Когда очередь активных процессов пуста, фаза инициализации завершена.

Таким образом, чтобы ответить на ваш вопрос, все процессы будут запущены один раз на этапе инициализации.

...