Оператор присваивания значения переменной — КиберПедия 

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Оператор присваивания значения переменной

2022-11-27 33
Оператор присваивания значения переменной 0.00 из 5.00 0 оценок
Заказать работу

Типы:

Scalar (скалярный) тип - обобщенное имя, которое присваивается всем типам, чьи объекты имеют единственное значение в любой момент времени.

Physical (физические) типы уникальны в VHDL, потому что они определяют не только значения объекта, но также и единицы, в которых значения выражены. Это допускает такие физические величины как время, расстояние, поток, температура, и т.д.

Перечисляемый тип определяется как список (перечисление) всех возможных значений данного типа.

 Массивы - составной тип с регулярной структурой, состоящий из элементов того же самого типа. Число элементов в массиве определяется диапазоном массива. Имеется два предопределенных VHDL массива - bit_vector (с элементами типа bit) и string (строка) (имеющий элементы типа character"символ").

Тип с плавающей запятой определяется аналогично целому типу, но с диапазоном с плавающей запятой. Максимальный диапазон зависит от компилятора.

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

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

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

5 Интерфейс и архитектура объекта в языке VHDL.

Понятие entity определяется как "интерфейс объекта проекта". В entity описывается интерфейс между объектом проекта и окруже­нием, в котором употребляется объект. "Внутренность" объекта в entity не описывается и может быть уподоблена "черному ящику".

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

Архитектура - это структура системы на функциональном уровне ее описания. Архитектурное тело (architecture) определяет тело объекта, т. е. раскрывает внутренность "черного ящика". В архитектурном теле описываются функции (поведение) либо структура объекта проекта.

В entity (в разделе деклараций) наряду с декларацией портов могут быть декларированы параметры. Для декларации таких пара­метров употребляется ключевое слово generic (настраиваемый). С помощью generic могут передаваться такие параметры, как ширина (разрядность) шины, число входных либо выходных полюсов, за­держки элементов и т. д.

6 Использование нескольких архитектурных тел для одного объекта в языке VHDL.

ОБЪЕКТ ПРОЕКТА (entity) представляет собой описание компоненты проекта, имеющей чётко заданные входы и выходы и выполняющей чётко определённую функцию. В описании объекта проекта можно использовать компоненты, которые, в свою очередь, могут быть описаны как самостоятельные объекты проекта более низкого уровня. Таким образом, каждый компонент объекта проекта может быть связан с объектом проекта более низкого уровня. В результате такой декомпозиции пользователь строит иерархию объектов проекта, представляющих весь проект в целом и состоящую из нескольких уровней абстракций. Такая совокупность объектов проекта называется ИЕРАРХИЕЙ ПРОЕКТА (design hierarchy). Каждый объект проекта состоит, как минимум, из двух различных типов описаний: описания интерфейса и одного или более архитектурных тел. Интерфейс описывается в ОБЪЯВЛЕНИИ ОБЪЕКТА ПРОЕКТА (entity declaration) и определяет только входы и выходы объекта проекта.

Для описания поведения объекта или его структуры служит АРХИТЕКТУРНОЕ ТЕЛО (architecture body). Чтобы задать, какие объекты проекта использованы для создания полного проекта, используется ОБЪЯВЛЕНИЕ КОНФИГУРАЦИИ (configuration declaration).

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

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

Entity n1 is

End n1;

Architecture struct_1 of n1 is

begin

End stucn_1;

Architecnture struct_2 of n1 is

Begin

End struct_2;

7 Выражения языка VHDL.

Основной элемент каждого выражения - оператор. Каждому оператору назначен некоторый определенный тип (или типы) и для него требуется один или два операнда, которые являются объектами, над которыми производятся действия. Запрещено использовать оператор или операнд, тип которых не поддерживается, но пользователь может определять новое значение для существующего оператора для других типов. Это выполнено через так называемую перегрузку оператора.

Выражения определяют способ, которым новые значение вычисляются. Они состоят из операндов и операторов. Например, выражение " 1 + 2 " прибавляет два целых числа. Числа - операнды, и знак "плюс" - предопределенный оператор добавления.

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

Смешанные операторы ** | abs | not

Мультипликативные операторы * | / | mod | rem

Операторы знака + | -

Операторы сложения + | - | &

Операторы сдвига sll | srl | sla | sra | rol | ror

Реляционные операторы = | \= | < | <= | > | >=

Логические операторы and | or | nand | nor | xor | xnor

 

 

8 Последовательные операторы языка VHDL.

В VHDL последовательные операторы подобны операторам языков высокого уровня.

Оператор case

Оператор case выбирает одну из альтернатив, избранная альтернатива (случай) определяется значением выражения. Выражение должно быть дискретного типа или типа одноразмерного массива символов.

Оператор next

next [метка цикла][when условие]

Оператор употребляется для завершения итераций цикла.

Оператор exit

exit [метка цикла][when условие]

Оператор употребляется, чтобы завершить выполнение и закрыть оператор цикла. Если условие (condition) есть TRUE, то осуществляется выход из цикла.

Операторnull (пустой)

Оператор null не представляет действий. Он употребляется, чтобы точно специфицировать, что нет действий.

Оператор вызова процедуры

Состоит из имени процедуры с аргументами (если они есть) в скобках.

Оператор return(возврат)

return [выражение]

Употребляется, чтобы завершить выполнение самой внутренней функции или процедуры. Он используется только внутри тела функции или процедуры.

Оператор assert(сообщение)

assert условие [report выражение][severity выражение]

Операторы сообщений проверяют является ли условие истинным, и сообщают об ошибке, если условие является ложным.

9 Операторы цикла в языке VHDL.

Этот оператор (loop) несколько раз выполняет последовательность операторов. Его синтаксис:

\оператор цикла\::=[\метка\:][\схема итерации\] loop

{\последовательный оператор\}

{ next [\метка\][ when \условие\];}

{ exit [\метка\][ when \условие\];}

end loop [\метка\];

\схема итерации\::= while \условие\ | for \переменная цикла \ in \диапазон\

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

variable vec: bit_vector(1 to n);

variable or_vec:bit;

….

or_vec:='0';

for i in 1 to n loop

or_vec:= or_vec or vec(i);

end loop;

Оператор loop часто применяется без схемы итерации, т.е. когда цикл может выполняться неопределенно большое число раз.

signal clk: bit;

signal numb:natural;

numb<=0;

Loop

wait until clk='1';

numb<=numb+1;

end loop;

10 Операторы процесса языка VHDL.

Оператор процесса – это параллельный оператор, представляющий основу языка VHDL.

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

 Его упрощенный синтаксис:

\оператор процесса\::=[ postponed ] process [(\имя сигнала\ {,\имя сигнала\})] [ is ]

{\объявление в процессе\}

Begin

{\последовательный оператор\}

end process;

Метка процесса необязательна, однако, если она есть в конце (после слов end process), то она должна быть и вначале перед словом process. В декларативной части процесса могут быть: тела подпрограмм; декларации подтипов; декларация констант; декларация файлов; декларация альтернативных точек входа в подпрограмму; декларация атрибутов; спецификации атрибутов.

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

В круглых скобках заголовка процесса указывается множество сигналов, по которым процесс запускается – список чувствительности.

Это форма оператора процесса, альтернативная процессу с оператором wait on, стоящим последним в цепочке последовательных операторов тела процесса.

В операторе процесса со списком чувствительности ставить операторы wait не допускается. Так как отложенный процесс запускается последним в цепочке процессов с дельта-задержкой, то он сам должен исполняться с ненулевой задержкой, т.е. в нем должен быть оператор wait for.

11 Процедуры и функции в языке VHDL. Атрибуты.

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

Функции. Общий вид оператора декларации функции:

[pure | impure] function имя функции (параметр {, параметр})

return тип возвращаемого функцией значения is
раздел деклараций

begin

тело функции

end [имя функции];

Функция имеет только входные параметры. Функция может содержать последовательные операторы, ис­ключая операторы ожидания и назначения сигналов. В теле функции могут декларироваться локальные переменные.

Функция разрешения - это функция определения значения сигнала по его значениям из различных источников.

Процедуры. Общий вид оператора декларациипроцедуры:

procedure имя процедуры (параметр {, параметр}) is

раздел деклараций

begin

тело процедуры

end [имя процедуры];

Процедура может иметь входные (in), выходные (out) и вход/выходные (inout) параметры. Это могут быть сигналы, переменные или константы. По умолчанию входные параметры - константы, выходные и вход/выходные параметры - переменные.

Общий вид оператора вызовапроцедуры:

имя процедуры (фактический параметр {, фактический параметр});

Атрибуты - это значения, связанные с поименованным элементом - объектом языка VHDL.В VHDL имеются предопределенные атрибуты и определенные пользователем атрибуты. Для построения моделей и моделирования важную роль играют атрибуты сигналов. Например предопределенный атрибут event  ассоциируется с каким-либо сигналом (например, с сигналом СLК). Атрибут записывается СLK’event. Этот атрибут имеет тип BOOLEAN с значением T RU E когда значение CLK изменилось.

Атрибут S’last_value' (прошлое значение S) - предыдущее значение, которое сигнал имел непосредственно перед последним изменением S. Относится к тому же самому типу, что и S.

Атрибут S’transaction имеет тип bit атрибут изменяет свое значение в циклах моделирования в которых происходит изменение (транзакция) S.

Атрибут S’stable(Т) имеет тип BOOLEAN. Атрибут имеет истинное значение, если сигнал S стабилен в течение последних Т единиц времени. Если Т=0, атрибут записывается S’stable.

Атрибуты сигналов, в том числе и такие, как S’delayed(t), S’quiet(t), S’transaction, S’active(t), S’last_event, S’driving, S’driving_value используются главным образом при моделировании.

12 Параллельные операторы языка VHDL.

Параллельные операторы в VHDL определяют параллельное (во времени) поведение схем. Параллельные операторы активизируются сигналами, которые употребляются для связи параллельных операторов.

Параллельные операторы:

1) оператор process (процесс);

2) оператор параллельного сообщения;

3) оператор параллельного вызова процедуры;

4) оператор условного назначения сигнала;

5) оператор select выборочного назначения сигнала;

6) оператор конкретизации (создания экземпляра) компонента;

7) оператор generate (генерации);

8) оператор block (блок).                        

1). Параллельный оператор process - определяет независимое последовательное поведение некоторой части проекта, описанное упорядоченной совокупностью последовательных операторов

2). Оператор параллельного сообщения. "Параллельность” заключается в том, что оператор assert может присутствовать в параллельных процессах.

3). Оператор параллельного вызова процедуры представляет процесс, содержащий оператор последовательного вызова процедуры.

4). Параллельный оператор условного назначения сигнала эквивалентен оператору процесса

5). Параллельный оператор select выборочного назначения сигнала. Данный оператор эквивалентен оператору процесса.

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

Оператор блока определяет часть проекта (часть VHDL- описания цифровой системы, схемы). Напомним, что block - это ограниченный фрагмент VHDL-кода, содержащий раздел описания и исполняемый раздел.

13 Структура программы на VHDL.

Файл проекта может содержать один или более блоков проекта. Имеются первичные и вторичные блоки проекта.

Первичные блоки проекта: - • декларация объекта в целом (интерфейса entity); - • декларация конфигурации; - • декларация пакета.

Первичный блок может быть связан с многими вторичными блоками проекта, которые включают: - архитектурное тело; - • тело пакета.

Каждый первичный блок в данной библиотеке должен иметь уникальное простое имя. Каждое архитектурное тело, связанное с entity, должно быть уникальным.

В рабочей библиотеке размещаются файлы (блоки), анализируемые VHDL-анализатором. Блоки проекта (первичные и вторичные) размещаются в библиотеках. Рабочая библиотека может быть только одна.

В библиотеках ресурсов размещаются блоки, на которые ссылаются анализируемые блоки.

Ресурсной библиотеки может не быть во время анализа. Ссылка на библиотеку осуществляется указанием ключевого слова libгагу.

…..VHDL-анализатор читает файлы исходного VHDL-кода, читает ссылки на ресурсные библиотеки и генерирует базу данных моделирования в рабочей библиотеке.

Область видимости библиотеки - от начальной ссылки до конца декларативной области, связанной с блоком проекта, где ссылка появилась.

Видимость сигналов: сигнал, декларированный в пакете, является видимым во всех объектах проекта, которые употребляют ссылку (use) на данный пакет. Сигнал, декларированный в entity является видимым во всех архитектурных телах, связанных с данным entity. Сигнал, декларированный в разделе деклараций архитектурного тела, видим только внутри данного архитектурного тела.

14 Повторное использование подсхем в языке VHDL.

Общий вид оператора конкретизации компонента (оператора создания экземпляра компонента):

метка: имя компонента

[generic ( список параметров );]

[роrt mар (список портов) ];

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

Соответствие портов при создании экземпляров компонентов может быть осуществлено:

• позиционным сопоставлением;

• ключевым соответствием, с использованием оператора “=>”

Общий вид оператора generate (генерации):

метка: for параметр генерации generate

 if условие generate

      параллельные операторы

end generate [метка];

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

15 Использование оператора generate в языке VHDL.

Общий вид оператора generate (генерации):

метка: for параметр генерации generate

  if условие generate

      параллельные операторы

end generate [метка];

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

Имеются два способа употребления оператора генерации.

Способ 1 - (способ for), синтаксис такой же, как у последовательного оператора for loop.

Способ 2 - (способ if) употребление подобно по синтаксису последовательному оператору if.

В архитектуре RTL2 способ if употреблен внутри способа for.

Различия параллельного оператора генерации от последовательных операторов for, if.

1). Оператор генерации есть параллельный оператор, а if, for loop есть последовательные операторы.

2). Оператор генерации не имеет фраз else, elsif.

3). Необходима метка для оператора генерации.

4). Только параллельные операторы могут появляться внутри оператора генерации. Только последовательные операторы могут появляться внутри последовательного for loop оператора и последовательного if оператора.

16 Проектирование комбинационных схем на языке VHDL.

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

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

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

Пример:

Process (A,D,E) begin

case A is

         when “01” => C <= D+E;

         when “10” => C <= D-E;

  end case;

end process;

В данном случае, если А имеет тип bit, то не учитываются 2 комбинации битов сигнала. Если сигнал А имеет тип std_logic_vector то не учитываются более 70 возможных комбинаций сигнала. Для того чтобы избегать таких ситуаций рекомендуется:

1) использовать служебное слово others:

Process (A,D,E) begin

case A is

         when “01” => C <= D+E;

         when “10” => C <= D-E;

         when others => C < = D+E;

  end case;

end process;

2) использовать предварительное назначение сигнала:

Process (A,D,E) begin

         C <= D+E;

if А=“10” then

C <= D-E;

  end if;

end process;

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

 

17 Проектирование схем с памятью на языке VHDL.

Begin

[ if \услов. асинхр. сброса \ then присваивание переменной состояния при сбросе ]

[ elsif \услов. асинхр. установки\ then присваивание переменной состояния при установке\ ]

         [ els ] if \ условие фронта синхросигнала\ then

                     [ if \условие разрешения записи\ then ]

                                 присваивание переменных сигналов до синхронной записи

                                 [ end if ]

end if

end process;

Формат шаблона зависим от библиотеки компонентов микросхем

Требования к проектированию ПЛИС и СБИС.

С развитием микроэлектроники и степени интеграции микросхем существенную роль стали играть две тенденции:

- во-первых, стали существенные задержки, искажение и перекрестные помехи сигналов в проводниках;

- во-вторых, с ростом производительности существенно выросло и энергопотребление.

Даже при использовании старой технологии производства микросхем 0,18 мкм средняя задержка в проводниках становится примерно равно задержке в вентеле, а при использовании более современных норм относительная задержка становится еще больше. Эта тенденция уже давно проявляется в проектах ПЛИС. В них задержка сигналов связи может достигать 90% минимальной длительности тактового сигнала. Поэтому стратегии проектирования включает иерархическое проектирование, оптимизацию количества соединений между различными уровнями иерархии, конверизацию и буферизацию вычислений, а также требований к пригодности схемы. Энергопотребление современных микропроцессоров достигает нескольких десятков ватт, что влечет за собой проблемы с охлаждением, надежностью, стабильностью, безопасностью для окружающей среды.

Проблема уменьшения энергопотребления особо остро стоит при разработке микросхем для портативных устройств. РТ.О. оптимизация энергопотребления может достигаться за счет минимизации, что означает минимизацию затрат и проектных норм. Мощность микросхем может быть оценена по формуле: Р=?*Lc*(Vcc^2)*fлк. Где Lc –эквивалентная мощность всех переключаемых микросхем, Vcc – напряжение питания, fлк – тактовая частота,? - среднее значение активности переключения. Оптимизация энергопотребления может достигаться за счет минимизации. Примером оптимизации может служить включение режима пониженного энергопотребления, путем отключения синхросигнала от ВУ после выполнения задачи. Вероятность переключений можно понизить выбором эффективного алгоритма работы ВУ с min операций, а также арифметики и обработки чисел.

Задача №1

Опишите на языке VHDL интерфейс и архитектуру объекта, схема которого представлена на рисунке. При описании архитектуры используйте компонент элемента “И” и оператор конструкции компонента.

Решение

-- Интерфейс “И”

entity entity_and is

port (in1, in2: in bit;

    q: out bit);

end entity_and;

 

-- Архитектура “И”

architecture architecture_and of entity_and is

begin

q<=in1 and in2;

end architecture_and;

 

-- Интерфейс основного компонента

entity entity_main is

port (i1, i2, i3, i4: in BIT;

QQ: out BIT);

end entity_main;

 

-- Архитектура основного компонента

architecture architecture_main of entity_main is

component entity_and

port (in1, in2: in BIT;

        q: out BIT);

end component;

signal q1,q2: BIT;

begin

label1: entity_and

port map (i1,i2,q1);

label2: entity_and

port map (i3,i4,q2);

label3: entity_and

port map (q1,q2,QQ);

end architecture_main;

 

Исп комп эл «И» и «И-НЕ»

Задача №2

Опишите на языке VHDL интерфейс и архитектуру объекта, схема которого представлена на рисунке. При описании архитектуры используйте компонент элемента “И” и “И-НЕ” и оператор конкретизации компонента.

Решение

- Интерфейс “ И ”

entity entity_and is

port (in1, in2: in BIT;

        q: out BIT);

end entity_and;

-- Архитектура “ И ”

architecture architecture_and of entity_and is begin

q<=in1 and in2;

end architecture_and;

-- Интерфейс “ И - НЕ ”

entity entity_and_not is

port (in1, in2: in BIT;

        q: out BIT);

end entity_and_not;

-- Архитектура “ И - НЕ ”

architecture architecture_and_not of entity_and_not is begin

q<= not (in1 and in2);

end architecture_and_not;

-- Интерфейс основного компонента

entity entity_main is

port (i1, i2, i3, i4: in BIT;

               QQ: out BIT);

end entity_main;

-- Архитектура основного компонента

architecture architecture_main of entity_main is

component entity_and

port (in1, in2: in BIT; q: out BIT);

end component;

component entity_and_not

port (in1, in2: in BIT; q: out BIT);

end component;

signal q1,q2: BIT;

begin

label1: entity_and_not port map (i1,i2,q1);

label2: entity_and port map (i3,i4,q2);

label3: entity_and port map (q1,q2,QQ);

end architecture_main;

3 Используйте генератор generate

Задача №3

Опишите на языке VHDL интерфейс и архитектуру объекта, схема которого представлена на рисунке. При описании архитектуры используйте генератор generate.

Решение

 

-- Интерфейс “И”

entity entity_and is

port (in1, in2: in BIT; q: out BIT); end entity_and;

 

-- Архитектура “И”

architecture architecture_and of entity_and is begin

q<=in1 and in2;

end architecture_and;

 

-- Интерфейс основного компонента

entity entity_main is

port (inp: in BIT_VECTOR(1 to 4);

  QQ: out BIT);

end entity_main;

 

-- Архитектура основного компонента

architecture architecture_main of entity_main is

component entity_and port (in1, in2: in BIT; q: out BIT); end component;

signal qi: BIT_VECTOR(1 to 2);

begin

q1: for i in 0 to 1 generate

label1: entity_and port map (inp(i+1),inp(i+2),qi(i+1));

end generate;

label2: entity_and port map (qi(1), qi(2),QQ);

end architecture_main;

 

Задача №4

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

Решение

-- Интерфейс "И"

entity entity_and is port (in1, in2: in BIT; q: out BIT); end entity_and;

 

-- Архитектура "И"

architecture architecture_and of entity_and is begin

q<=in1 and in2;

end architecture_and;

 

-- Интерфейс "И-НЕ"

entity entity_and_not is port (in1, in2: in BIT; q: out BIT); end entity_and_not;

 

-- Архитектура "И-НЕ"

architecture architecture_and_not of entity_and_not is begin

q<= not (in1 and in2);

end architecture_and_not;

 

-- Интерфейс компонента "ИЛИ"

entity entity_or is port (in1, in2: in bit; q: out bit); end entity_or;

 

-- Архитектура компонента "ИЛИ"

architecture architecture_or of entity_or is begin

q<=in1 or in2;

end architecture_or;

 

-- Интерфейс основного компонента

entity entity_main is port (i1,i2,i3,i4:in bit; QQ: out BIT); end entity_main;

 

-- Архитектура основного компонента

architecture architecture_main of entity_main is

component entity_and port (in1, in2: in BIT; q: out BIT); end component;

component entity_and_not port (in1, in2: in BIT; q: out BIT); end component;

component entity_or port (in1, in2: in BIT; q:out BIT); end component;

signal q1,q2: BIT;

begin

label1: entity_and_not port map (i1,i2,q1);

label2: entity_and port map (i3,i4,q2);

label3: entity_or port map (q1,q2,QQ);

end architecture_main;

 

В поведенческом стиле

Задача №5

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

Решение

-- Интерф основного компонента

entity entity_main is

port (i1, i2, i3, i4: in BIT;

              QQ: out BIT);

end entity_main;

-- Архитектура осн. компонента -

architecture architecture_main of entity_main is

begin

QQ<=not((i1 and i2) or (i3 and i4));

end architecture_main;

Исп комп эл «ИЛИ»

Задача №6

Опишите на языке VHDL интерфейс и архитектуру объекта, схема которого представлена на рисунке. При описании архитектуры используйте компонент элемента “ИЛИ” и оператор конкретизации компонента.

Решение

-- Интерфейс компонента “ИЛИ”

entity entity_or is

port (in1, in2: in bit;

        q: out bit);

end entity_or;

-- Архитектура компонента “ ИЛИ ”

architecture architecture_or of entity_or is begin

q<=in1 or in2;

end architecture_or;

-- Интерфейс основного компонента

entity entity_main is

port (i1, i2, i3, i4: in BIT;

              QQ: out BIT);

end entity_main;

-- Архитектура основного компонента

architecture architecture_main of entity_main is

component entity_or

port (in1, in2: in BIT;

         q: out BIT);

end component;

signal q1,q2: BIT;

begin

label1: entity_or

port map (i2, i3, q1);

label2: entity_or

port map (q1, i4, q2);

label3: entity_or

port map (i1, q2, QQ);

end architecture_main;

 

 

Задача №7

Опишите на языке VHDL интерфейс и архитектуру объекта, схема которого представлена на рисунке. При описании архитектуры используйте компонент элемента “ИЛИ” и “ИЛИ-НЕ” и оператор конкретизации компонента.

Решение

-- Интерфейс компонента “ИЛИ”

entity entity_or is

port (in1, in2: in bit; q: out bit);

end entity_or;

 

-- Архитектура компонента “ИЛИ”

architecture architecture_or of entity_or is begin

q<=in1 or in2;

end architecture_or;

 

-- Интерфейс компонента “ИЛИ-НЕ”

entity entity_or_not is

port (in1, in2: in bit; q: out bit);

end entity_or_not;

 

-- Архитектура компонента “ИЛИ-НЕ”

architecture architecture_or_not of entity_or_not is begin

q<=not (in1 or in2);

end architecture_or_not;

 

-- Интерфейс основного компонента

entity entity_main is

port (i1, i2, i3, i4: in BIT; QQ: out BIT);

end entity_main;

 

-- Архитектура основного компонента

architecture architecture_main of entity_main is

component entity_or

port (in1, in2: in BIT; q: out BIT);

end component;

component entity_or_not

port (in1, in2: in BIT; q: out BIT);

end component;

signal q1,q2: BIT;

begin

label1: entity_or port map (i2, i3, q1);

label2: entity_or port map (q1, i4, q2);

label3: entity_or_not port map (i1, q2, QQ);

end architecture_main;

8 Оператор generate

Задача №8

Опишите на языке VHDL интерфейс и архитектуру объекта, схема которого представлена на рисунке. При описании архитектуры используйте оператор generate.

Решение

-- Интерфейс компонента "ИЛИ"

entity entity_or is

port (in1, in2: in bit; q: out bit);

end entity_or;

 

-- Архитектура компонента "ИЛИ"

architecture architecture_or of entity_or is begin

q<=in1 or in2;

end architecture_or;

 

-- Интерфейс основного компонента

entity entity_main is

port (inp: in BIT_VECTOR (1 to 4);

  QQ: out BIT);

end entity_main;

 

-- Архитектура основного компонента

architecture architecture_main of entity_main is

component entity_or

port (in1, in2: in BIT; q: out BIT);

end component;

signal qi: BIT_VECTOR (1 to 7);

begin

qi(1)<=inp(2); 

qi(2)<=inp(3);

qi(4)<=inp(4);

qi(6)<=inp(1);

q1: for i in 1 to 3 generate

label1: entity_or

port map (qi(2*i-1), qi(2*i), qi(2*i+1));

end generate;

QQ<= qi(7);

end architecture_main;

 

Задача №9

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

Решение

-- Интерфейс компонента “ИЛИ”

entity entity_or is port (in1, in2: in bit; q: out bit); end entity_or;

 

-- Архитектура компонента “ИЛИ”

architecture architecture_or of entity_or is begin

q<=in1 or in2;

end architecture_or;

 

-- Интерфейс компонента “ИЛИ-НЕ”

entity entity_or_not is port (in1, in2: in bit; q: out bit); end entity_or_not;

 

-- Архитектура компонента “ИЛИ-НЕ”

architecture architecture_or_not of entity_or_not is begin

q<=not (in1 or in2);

end architecture_or_not;

 

-- Интерфейс компонента “Искл. ИЛИ”

entity entity_xor is port (in1, in2: in bit; q: out bit); end entity_xor;

 

-- Архитектура компонента “Искл. ИЛИ”


Поделиться с друзьями:

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

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

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.762 с.