Мегаобучалка Главная | О нас | Обратная связь


Представление комбинационных схем



2020-02-04 226 Обсуждений (0)
Представление комбинационных схем 0.00 из 5.00 0 оценок




 2.1. Параллельные и последовательные операторы

       Процессы в реальных дискретных устройствах происходят параллельно во времени, причем изменения  в различных частях устройства могут происходить асинхронно, относительно независимо и  в том числе одновременно.  При моделировании такое поведение должно быть воспроизведено с требуемой степенью точности последовательными алгоритмами, реализуемыми в ЭВМ. Для правильного понимания принципов языкового описания и результатов моделирования следует достаточно четко представлять методы, заложенные в подсистемы моделирования САПР.

Операторы в  языке VHDL   с точки зрения порядка исполнения подразделяются на последовательные и параллельные. Базовым видом операторов языка являются параллельные операторы. Современные системы моделирования дискретных систем в большинстве случаев работают по событийному принципу.  Модель каждого из параллельных операторов языка (процессов системы моделирования) в каждый момент модельного времени может находиться в одном из пяти состояний (Ready, Active, Wait Event, Wait Time, Complete) – рис. 2.1.

 

 

 

Рис. 2.1. Состояния процесса

При старте процедуры моделирования все процессы системы устанавливаются в состояние Ready. Состояние Ready соответствует готовности процесса к исполнению. В этом состоянии он ждет готовности системы моделирования к выполнению операций, определяемых его запланированными действиями и исходными данными моделируемой системы. Когда система моделирования может обрабатывать готовый процесс (одновременно в состоянии Ready может находиться несколько процессов), он переводится в активное состояние (Active) и начинает выполняться. Из этого состояния процессы могут переходить в три состояния. Состояние Wait Event соответствует ожиданию события,  состояние Wait Time соответствует ожиданию перехода модельного времени к запланированному времени, и  состояние Complete соответствует завершению процесса.

Исполнение параллельных  операторов может инициировать события (в языке VHDL это порождается изменением состояния сигналов). На время исполнения всех операторов, инициированных одним и тем же событием, значения сигналов  остаются неизменными. Эти значения сохраняются   даже в том случае, если какие-то из таких операторов предполагают изменение сигналов  других «одновременно» исполняемых операторов. Для реализации такого поведения каждый сигнал имеет так называемый драйвер сигнала. В простейших случаях можно считать драйвер следующим значением сигнала, а сам сигнал текущим значением. Следующее значение (драйвер) сигнала перезаписывается в текущее только в тот момент модельного времени, когда не останется ни одного процесса в состоянии Ready. Подобное правило исполнения   операторов и обеспечивает корректное моделирование параллельно протекающих  процессов. Поэтому в отличие от обычных языков программирования (Паскаль, Си и т.д.) результаты работы совокупности параллельных операторов  не зависят  от  порядка их записи.

 

 

 

Рис. 2.2. Пример комбинационной схемы

Текст программы, описывающий эту схему, может (и, как правило, должен) описываться, так, как приведено в листинге 2.1.   Этот и последующие примеры данного раздела  при синтезе дают комбинационные схемы.

 

Листинг   2.1 Описание схемы рис. 2.2.

 

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

 

ENTITY Example  IS

PORT (

       x0   : IN std_logic;

       x1   : IN std_logic;

       x2   : IN std_logic;

       z     : OUT std_logic

);

END Lab21;

 

ARCHITECTURE behave1 OF Example IS

 

 BEGIN

z  <=  '1'  WHEN (x2 =  '0' AND x1  = '0'AND x0 =  '1') OR

                              (x2  = '1' AND x1 = '0' AND x0 =  '1') ELSE '0';

 

END ARCHITECTURE behave1;

 

В примере описанию комбинационной схемы соответствует параллельный оператор присвоения значения сигналу. Иногда для аналогичных целей используют параллельный оператор PROCESS, в теле которого размещаютпоследовательный   оператор присвоения значения сигналу:

z <= NOT x2 AND NOT x1 AND x0 OR

          x2 AND NOT x1 AND NOT x0 OR

       x2 AND NOT x1  AND x0;

С точки зрения и системы моделирования, и системы синтеза различий нет (разве что существует вероятность расхождения между поведением выхода схемы в системе  моделирования и реальной схеме. К такому расхождению может приводить ошибка, связанная с неполным перечислением сигналов в списке чувствительности процесса, пункт 1 в разделе 2.4).

Для сложных схем желательно каскадное соединение их фрагментов между собой. Пусть для удобства записи сложной схемы (будем считать схему рисунка 2 сложной) вводятся дополнительные данные, разбивающую сложную схему на  отдельные фрагменты. Выходы таких фрагментов обозначим y1, y2, y3. Архитектурное тело программы, когда выходы y1, y2, y3 являются сигналами параллельных операторов, приведено в листинге 2.2.

 

Листинг  2.2 Описание модифицированной схемы рис. 2.2.

 

ARCHITECTURE behave2 OF Example IS

 

SIGNAL y1, y2, y3 : std_logic;

 

BEGIN

       y1 <= NOT x2 AND NOT x1 AND x0;

y2 <= x2 AND NOT x1 AND NOT x0;     

y3 <= x2 AND NOT x1  AND x0;

           

       z<= y1 OR y2 OR y3;

 

END ARCHITECTURE behave2;

 

Однако для сложных последовательных алгоритмов  описание  исключительно через параллельные операторы иногда считается   не удобным и не наглядным, в таком случае предлагается  пользоваться оператором PROCESS. Сам оператор PROCESS определяется как параллельный, а в его  теле  допустимо использование только последовательных операторов, которые исполняются друг за другом в порядке их записи как и в обычных языках программирования. Однако следует иметь в виду, что исполнение последовательного оператора присвоения значения сигналу отличается от исполнения других последовательных операторов. Так как он подчиняется общим правилам присвоения сигналу значения драйвера. Подобный пример приведен в листинге 2.3.

Исполнение последовательности, входящей в оператор  PROCESS, инициируется  по событийному принципу, то есть    при изменении любого сигнала из списка, заключенного в  скобках, находящихся непосредственно после ключевого слова PROCESS. Такой список инициирующих сигналов называют списком чувствительности оператора. Иными словами: оператор PROCESS   определяет последовательное  в порядке записи  исполнение входящих (вложенных) в него операторов после каждого возникновения инициирующего события. При отсутствии списка чувствительности у  какого либо  оператора PROCESS, предполагается безусловное  его исполнение  после начала моделирования и автоматическая ре-инициализация исполнения после исполнения всех вложенных операторов.

 

Листинг 2.3 Описание модифицированной схемы рис. 2.2.

 

ARCHITECTURE behave3 OF Example IS

 

BEGIN  

 

u1: PROCESS(x0,x1,x2)

BEGIN

              z <= NOT x2 AND NOT x1 AND x0 OR

x2 AND NOT x1 AND NOT x0 OR

                          x2 AND NOT x1  AND x0;

END PROCESS;

 

 END ARCHITECTURE behave3;

 

С точки зрения и системы моделирования, и системы синтеза различий нет (разве что возможность появления расхождения между результатами поведения выхода схемы в системе  моделирования и реальной схеме, при ошибке, приведенной в пункте 1[O1] ).

 

Ещё больше возможностей для ошибочной реализации поведения схемы в моделирующей программе  появляется в случае использования параллельного оператора PROCESS, в теле которого размещенпоследовательный   оператор присвоения значения сигналу (листинг 2.4):

 

Листинг 2.4 Описание модифицированной схемы рис. 2.2.

 

ARCHITECTURE behave4 OF Example IS

 

SIGNAL y1,y2,y3 : std_logic;

 

BEGIN

u1: PROCESS(x0,x1,x2)

BEGIN

                  

y1 <= NOT x2 AND NOT x1 AND x0;

y2 <= x2 AND NOT x1 AND NOT x0;     

              y3 <= x2 AND NOT x1  AND x0;

           

              z<= y1 OR y2 OR y3;

END PROCESS;

 END ARCHITECTURE behave4;

 

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

 

Листинг 2.5 Описание модифицированной схемы рис. 2.2.

 

ARCHITECTURE behave5 OF Example IS

 

BEGIN

u1: PROCESS (x0,x1,x2)

VARIABLE y1, y2, y3 : std_logic;

BEGIN

              y1 := NOT x2 AND NOT x1 AND x0;

y2 := x2 AND NOT x1 AND NOT x0;

y3 := x2 AND NOT x1  AND x0;

           

                   z<= y1 OR y2 OR y3;

       END PROCESS;

 

END ARCHITECTURE behave5;

 

Переменные и сигналы

Язык VHDL основан на концепции строгой типизации данных, т. е. любой единице информации в программе должно быть присвоено имя, и для нее должен быть определен тип. Определение информационной единицы размещается в разделе деклараций программного модуля, в котором оно используется, или иерархически предшествующего модуля. Тип данных определяет набор значений объектов, отнесенных к этому типу, а также набор допустимых преобразований этих данных. Данные разных типов несовместимы в одном выражении.

 Как уже указывалось ранее, для  описания взаимодействия между параллельными операторами  в язык  VHDL введена специальная  категория  данных – сигналов (SIGNAL). Сигналы кроме значения несут информацию о временных и причинно следственных связях в моделируемой системе.

 Аргументами  параллельного оператора могут быть сигналы или константы. Такой оператор исполняется при изменении значения любого аргумента (в том числе сигнала из списка чувствительности оператора PROCESS).

Сигналы  декларируются в разделе деклараций архитектурного тела (в общем случае в пакете, использование которого объявлено в начале программы), а область действия декларации – все операторы архитектурного тела, за исключением случаев декларации переменной с таким же именем в операторе  PROCESS.

В цепочке последовательных операторов промежуточные результаты преобразований (не передаваемые другим параллельным операторам) представляют данными, относящимися к категории переменные – VARIABLE (листинг 2.5).  Переменные объявляются в разделе деклараций оператора PROCESS,  а область действия декларации – раздел операторов этого процесса (т.е. такая переменная имеет смысл  только в разделе операторов этого процесса).

Различие  «сигналов» и «переменных» состоит  в порядке фиксации значения этих данных при исполнении операторов присваивания. Переменная принимает новое значение  сразу после исполнения оператора присваивания. При исполнении операторов, которые должны присваивать значения сигналам, вычисленное  значение сохраняется во временном буфере[O2] ,  называемом драйвером сигнала. Окончательное присваивание же значения сигналу (перепись из драйвера) производится только после исполнения всех операторов программы, вызванных общим событием. В частности  при исполнении последовательного оператора присваивания некоторому сигналу этот сигнал сохраняет старое значение  не только до  исполнения всех операторов процесса или до оператора останова WAIT, а в общем случае и до всех других операторов, инициированных общим событием. Реакция на предсказанное  изменение сигнала (новое событие)  будет воспроизводиться системой моделирования либо через явно указанный в операторе присваивания временной интервал,  либо  – в случае «нулевой» задержки после отработки всех событий, предсказанных на этот момент времени ранее выполненными операторами. Правила изменения значений на выходных портах совпадают с правилами изменения сигналов.

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

  



2020-02-04 226 Обсуждений (0)
Представление комбинационных схем 0.00 из 5.00 0 оценок









Обсуждение в статье: Представление комбинационных схем

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (226)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)