Изучение VHDL

       

Изучение VHDLПараллельные операторы.


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

Все параллельные операторы, кроме оператора блока и вставки компонента, могут быть заме­нены на эквивалентные операторы процесса, в которых список чувствитель­ности содержит все входные сигналы выражений исходного оператора и у которых оператор wait стоит последним в цепочке последовательных операторов.

Оператор параллельного присваивания.

Этот оператор имеет такой же синтаксис, как и оператор присваивания сигналу в процессе. Такой оператор эквивалентен оператору процесса, в котором этот оператор повторен в его исполнительной части, а последним оператором стоит оператор wait со списком чувствительности. Например, следующие два оператора эквивалентны:

ADDER:A<=B+C;

ADDER_P:process begin

            A<=B+C;

            wait on B,C;

       end process;

Оператор условного параллельного присваивания.

Оператор условного параллельного присваивания имеет синтаксис:

\условное параллельное присваивание\::= \имя\<= [\способ задержки\]



                  {\график\ when   \булевское выражение\ else  }

                   \график\[when   \булевское выражение\];

где определение способа задержки и графика представлено выше при описании оператора присваивания сигналу.

Любой оператор условного параллельного присваивания имеет эквива­лентное представление в виде процесса, как например, оператор:

cntrl<= one when   st=1 else 

        two when   st=2 or st=3 else 

        three;             

эквивалентен оператору

process(st,one,two,three)

begin

   if st=1 then

      cntrl<= one;

   elsif st=2 or st=3 then

      cntrl<= two;

   else 

      cntrl<=three;

   end if;

end process;

Оператор селективного параллельного присваивания.

Оператор селективного параллельного присваивания имеет синтаксис:

\селективное параллельное присваивание\::= with \выражение\ select

   {\имя\<=  [\способ задержки\]{\график\ when \альтернативы\,}

                              \график\[when others ];

где \альтернативы\ имеют то же значение, что и в операторе case. Этот оператор эквивалентен соответствующему процессу, как например, опера­тор:

with st select

      cntrl<= one when   1,

              two when   2 to 3,

              three when others;

выполняет такие же действия, что и процесс:

process(st,one,two,three)

begin

   case st is

      when 1      => cntrl<= one;

      when 2 to 3 => cntrl<= two;

      when others => cntrl<= three;

   end case;

end process;

Требования к выражению селектора и альтернативам оператора такие же, как у оператора case. Так, каждая из альтернатив должна быть такого же типа, что и \выражение\ и представлена статическим выражением или диа­пазо­ном. Никакие два значения, получаемые из выражений альтернатив, не должны быть равны друг другу.

Параллельный оператор assert.

Этот оператор имеет такой же синтаксис, как и соответствующий ему последова­тель­ный оператор. Он выполняется точно также, как и процесс, в исполнительной части которого стоит последовательный оператор assert  с таким  же содержа­нием.

Параллельный вызов процедуры.

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

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

Отложенные параллельные операторы.

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

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