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


Описание структур на языке VHDL



2020-02-04 369 Обсуждений (0)
Описание структур на языке VHDL 0.00 из 5.00 0 оценок




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

В разделе объявлений SAB, кроме характерных для любых архитектурных тел деклараций, таких как декларации типов, сигналов, констант, включаются специфические подразделы: обязательный подраздел декларации прототипов используемых компонентов и необязательный подраздел объявления конфигураций. Раздел операторов SAB содержит операторы вхождения компонентов, которые, собственно, и определяют порядок соединения компонентов. Могут включаться и другие параллельные операторы, а если таких операторов относительно много, подобное архитектурное тело называют смешанным, или структурно-поведенческим.

Каждому модулю, используемому в качестве структурного компонента
в SAB, должно сопутствовать объявление прототипа. Синтаксис декларации прототипа компонента имеет вид:

 

COMPONENT <имя ENTITY компонента> IS

    [ <образ настройки>]

     <образ порта>

END COMPONENT  [ < имя ENTITY компонента >];

 

Здесь <образ настройки> и <образ порта> — являются прямой копией высказываний GENERIC и PORT из текста декларации ENTITY соответствующего компонента.

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

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

Основными операторами SAB являются операторы вхождения компонентов (Component Instantiation Statement), которые определяют порядок соединения включаемых в проект модулей и, возможно, их параметры. Синтаксис оператора вхождения определяется следующим образом:

<оператор вхождения компонента> ::=

    <метка вхождения> : ([ COMPONENT  ] <имя компонента>

     GENERIC MAP (<список соответствий параметров настройки>)

     PORT MAP  (<список соответствий порта>);

<список соответствий> ::=

     ([ <формальный параметр>] =><фактический параметр>

    «,[ <формальный параметр> ] => <фактический параметр>»)

 

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

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

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

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

Рассмотрим в качестве  примера структурное описание логической схемы, приведенной на рис. 3.1.

 

 

 

Рис. 3.1. Простое логическое устройство

 

Предположим,  что в библиотеку используемой САПР  скомпилированы  образы необходимых компонентов:

 

Универсальный элемент И:

ENTITY   vand   IS

GENERIC ( n : INTEGER,   -- коэффициент объединения по входу

                            m : INTEGER); --   коэффициент разветвления по выходу                  

PORT         (x : IN std_logic_vector (n-1 DOWNTO 0);

                          y :  OUT std_logic) ;

END vand;

 

 Универсальный элемент ИЛИ:

ENTITY  vor   IS

GENERIC ( n: INTEGER,   -- коэффициент объединения по входу

                      m: INTEGER); --   коэффициент разветвления  по выходу                  

PORT        (x:   IN std_logic_vector (n-1 DOWNTO  0);

                      y:  OUT std_logic) ;

END vor;

 

Инвертер:

ENTITY   inv  IS

GENERIC (n:  INTEGER); --   коэффициент разветвления по выходу                  

PORT      (x:   IN std_logic;

                      y:  OUT std_logic) ;

END inv;

 

Тогда структурная модель устройства может быть представлена, как в листинге 3.1[O4] .

 

 Листинг 3.1 Структурное описание простого логического устройства

 

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

 

ENTITY ex2 IS

 PORT (x0, x1, x2 : IN std_logic;

              z: OUT std_logic);

END ex2;

 

ARCHITECTURE  structure   OF ex2  IS

 

COMPONENT vand IS

GENERIC ( n: INTEGER;      m: INTEGER);                 

PORT         (x: IN std_logic_vector (n-1 DOWNTO 0);

                      y :  OUT std_logic) ;

END COMPONENT;

 

COMPONENT vor IS

GENERIC  ( n: INTEGER,   m: INTEGER);               

PORT  (x: IN std_logic_vector (n-1 DOWNTO 0);

                      y: OUT std_logic) ;

END COMPONENT;

 

COMPONENT inv IS

GENERIC (m: INTEGER);                  

PORT         (x:  IN std_logic;

                          y:  OUT std_logic) ;

END COMPONENT;

 

SIGNAL  nx1, nx2 : std_logic;-- выходы инверторов

SIGNAL  y1, y2 : std_logic;   -- выходы элементов И

 

BEGIN

  V1: inv  GENERIC MAP(1)                    

  PORT MAP  (x=>x1,  y =>nx1);

 

  V2: inv GENERIC MAP (1)                    

  PORT MAP  (x=>x2,  y =>nx2);

 

  V3: vand GENERIC MAP (2, 1)                    

  PORT MAP  (x(0)=>x0, x(1)=>x2, y =>y1);

 

  V4: vand GENERIC MAP (3, 1)                    

  PORT MAP  (x(0)=>x0, x(1)=>nx1,

                       x(2)=>nx2, y =>y2);

 

  V5: vor GENERIC MAP (2, 5)                    

  PORT MAP  (x(0)=>y1, x(1)=>y2, y=>z);

 

END ARCHITECTURE structure;

 

По приведенному примеру следует сделать несколько замечаний.

Во-первых, выполняемые преобразования в программе 3.1 технически  могут быть реализованы в форме различных устройств в зависимости от целевой технологии исполнения и дополнительных устанавливаемых разработчиком опций (критериев). В частности обычно приходится иметь дело с противоречивым выбором  между быстродействием, потребляемой энергией и занимаемой площадью. «Чистое поведение» часто не обеспечивает гибкого выбора. В приведенной программе 3.1 предполагается выбор параметров  компонента на основе параметров настройки. В развитых САПР предусматривается возможность выбора исполнителей из множества различных функционально эквивалентных библиотечных модулей, причем как  в автоматическом, так и полуавтоматическом режимах.   

Во-вторых, надо иметь в виду, что ряд программ синтеза (например, Leonardo Spectrum) на начальных этапах  синтеза автоматически преобразуют «чисто-поведенческие» фрагменты программы в структурное представление подобное  листингу 3.1.

Такое описание является исходным материалом для программ размещения и трассировки, а кроме того позволяет строить графический образ схемы соединений (так называемый schematic view) и облегчить вмешательство разработчика в процесс проектирования вплоть до возможности локальной модификации схемы или топологии (правда это относится в большей мере к проектированию заказных БИС).

 

Практикум по теме

 

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

 

 

 

 

Рис. 3.2. Реализация семейства логических функций с помощью дешифратора

 

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

Файл comp_lab3.Vhd  содержит декларации ENTITY  и поведенческие архитектурные тела компонентов, которые могут потребоваться в проекте: дешифратор (decod), четырехвходной элемент ИЛИ (or4), источник логического нуля (zero), а также модуль генерации тестового воздействия (test). Поведение последнего в точности совпадает с процессом stimulator программы 2.5.  Декларации Entity этих компонентов приведены в листинге  3.2.

 

Листинг 3.2. Декларации ENTITY рекомендованных компонентов

 

ENTITY decod IS

GENERIC( num_outputs: INTEGER;-- число выходов

                                           DELAY:time);

PORT(input: IN INTEGER RANGE 0 TO  num_terms-1;

                 output: OUT std_logic_vector ( 0 TO  num_terms-1));

 END decod;

 

ENTITY or4 IS             

PORT (x1, x2, x3, x4 : IN std_logic; y : OUT  std_logic) ;

END or4;

 

ENTITY zero IS            

PORT (y :  OUT std_logic) ;

END zero;

 

ENTITY test IS

PORT (stim_integer : OUT INTEGER RANGE 0 TO 7);

END test;

 

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

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

 

Листинг 3.3 Трафарет программы описания многокомпонентного устройства

 

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

ENTITY lab3 IS

PORT (input: IN INTEGER RANGE 0 TO 7;

                  z1, z2 ,z3: OUT std_logic );

END lab3;

 

ARCHITECTURE structure OF lab3 IS

 

 CONSTANT num_terms: INTEGER :=8;

 

COMPONENT  decod

GENERIC( num_outputs: INTEGER; delay:time);

PORT (input: IN INTEGER RANGE 0 TO   num_terms-1;

                 output: OUT std_logic_vector ( 0 TO num_terms-1));

 END COMPONENT;

-- -----------------------------

-- Здесь следует разместить объявление

-- компонентов OR4 и Zero,

-- подобно таким же  конструкциям декларации

 -- компонента  decod

--  ---------------------------------

SIGNAL y : std_logic_vector(0 TO num_terms-1);

SIGNAL zero: std_logic:

 

 BEGIN

 

u1: decod

 GENERIC MAP(num_terms, 5 ns)

 PORT MAP(input, y);

-- --------------------------------------

--Здесь следует разместить операторы

-- вхождения  и  определить

-- подключение выходов ( PORT MAP) нескольких компонентов OR4 и zero,

--  ----------------------------------

END structure;

 

Текст файла  tb_lab3.Vhd  (листинг 3.4) является заготовкой для создания  модели тестирующей установки. Как уже ранее отмечалось, в подобных моделях  раздел портов модуля высшей степени иерархии пуст.

Листинг 3.4. Тестирование многокомпонентного устройства

 

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

 

ENTITY tb IS

END tb;

 

ARCHITECTURE structure OF tb IS

 

COMPONENT lab3 IS

PORT (input:  IN INTEGER RANGE 0 TO 7;

                             z1, z2, z3: OUT std_logic );

END COMPONENT;

 

COMPONENT test IS

PORT (stim_integer: OUT INTEGER RANGE 0 TO 7);

END COMPONENT;

-------------------------------

-- Здесь следует разместить объявление связей модуля генератора теста

-- и логической схемы,   а также имена выходов устройства

--  ---------------------------------

BEGIN

-- --------------------------------------

-- Здесь следует разместить операторы

-- вхождения  и  определить подключение выходов  компонентов

 --  ----------------------------------

END structure;

Рекомендуется придерживаться следующего порядка работы:

 

1. Создать в системе моделирования новый проект, включив в него файлы  comp_Lab3.vhd и Lab3.vhd. Изменить текст программы Lab3.vhd так, чтобы реализовать три  функции таблицы  2.1 по заданию преподавателя.

2. Переоформить  программу tb_lab2.vhd  для реализации процедуры тестирования устройства lab3.

3.   Выполнить компиляцию файлов  проекта в порядке   их вхождения в иерархию проекта.

4. Выполнить моделирование в течение 1 – 3 циклов изменения тестового воздействия в пошаговом режиме. Наблюдать и записать порядок инициализации процессов (окна   process и source).

5.   Выполнить моделирование узла в автоматическом режиме.

6. Наблюдать временную диаграмму процесса. В случае обнаружения отклонения результатов от ожидаемых повторить пп. 2 и 4[O5] .

7. Компилировать проект Lab3.VHD  в САПР Quartus II фирмы Altera.

8. Выполнить функциональное и временное моделирование откомпилированного проекта.

9. Произвести  «распиновку» проекта в соответствии с возможностями отладочной платы   DE0 фирмы Terasic.

10. Выполнить компиляцию проекта и его загрузку в отладочную плату   DE0.

11. Проверить функционирование проекта в реальной системе.

Отчет по  теме должен содержать:

 

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

    -   Текст программы с его разбиением на разделы и их наименованием.

    -  Принципиальную схему системы тестирования со встроенным устройством в форме компонента.

    -   Текст программы тестирования с его разбиением на разделы и их наименованием.

    - Последовательность активизации и дезактивизации процессов при пошаговом моделировании.

    - Временные диаграммы результатов моделирования.

 

3.4. Контрольные вопросы

1. Каков типовой порядок разделов структурного архитектурного тела?

2. В каких случаях необходима декларация конфигурации, и какой смысл имеют элементы этого высказывания?

3. Определите составляющие декларации компонента и оператора вхождения?

4. Поясните условия исполнения оператора вхождения компонента?

Какова разница между позиционным сопоставлением и сопоставлением по имени списков соответствия.

 



2020-02-04 369 Обсуждений (0)
Описание структур на языке VHDL 0.00 из 5.00 0 оценок









Обсуждение в статье: Описание структур на языке VHDL

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

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

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



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

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

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

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

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

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



(0.007 сек.)