Изучение VHDL

       

Статические выражения


Структура виртуальной параллельной вычислительной системы и ее параметры формируются при компиляции программы VHDL и остаются неизменными в процессе ее исполнения. Точнее, это происходит на последнем этапе – этапе связывания объектов (elaboration). В программах часто встречаются выражения, от результатов которых зависят структура и параметры системы. Это например, настроечные переменные (generic), определяющие порядок включения блоков, их разрядность. Результаты этих выражений должны иметь конкретные значения перед исполнением программы и не должны зависеть от входных данных. Такие выражение получили название статических. Другими словами, непосредственно перед моделированием статическое выражение должно быть вычислено до константы или приведено к идентификатору . Некоторые операторы, например, case, вставки компонента, требуют, чтобы в них входили статические выражения. Например, если объявлены сигналы
signal n: integer;
signal A: bit_vector(16 downto n+1);
то на момент начала моделирования операнд n неизвестен и симулятор будет пытаться подставить n= -2147483647, что вызывает аварийную остановку симулятора при размещении сигнала А в памяти, т.е. здесь выражение n+1 – не статическое.

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

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

Содержание раздела