цифровая электроника
вычислительная техника
встраиваемые системы

 

Иерархия в VHDL-коде

Автор: Mike(admin) от 1-11-2013, 18:11

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


Зачастую весь VHDL-код умещают в одном файле на одном уровне. Если бы мы, к примеру, разрабатывали печатную плату, то не стали бы размещать на ней кучу дискретных компонентов. Вместо этого мы бы взяли микроконтроллеры, микросхемы памяти и другие устройства и классифицировали бы их как «компоненты», которые должны выполнять определенные функции. В некоторых случаях мы бы использовали на плате отдельные компоненты несколько раз. Это бы существенно упростило нашу работу.


плата с микросхемами

Рисунок 1 — плата с микросхемами

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


схематичное изображение соединения «устройств» VHDL-кода

Рисунок 2 — схематичное изображение соединения «устройств» VHDL-кода

Этот пример представляет собой очень простой проект с несколькими компонентами на сигнальном уровне. При умении и желании можно добавить сколько угодно уровней. Но сначала посмотрим на VHDL-код данного примера:


VHDL-код

Рисунок 3 — VHDL-код

Здесь в архитектурном блоке кода мы перечисляем компоненты, которые хотим использовать. Название, следующее за ключевым словом COMPONENT, является именем объекта проекта (ENTITY), характеризующим имя устройства или компонента, который мы хотим использовать. Также в коде можно видеть определение PORT, позволяющее нам организовать интерфейс. Это все, что нам нужно знать об этих блоках. Взглянув на схему проекта, можно увидеть два «черных» (BLACK) устройства, одно «красное» (RED) и одно «оранжевое» (ORANGE). Однако, мы определили компонент BLACK только один раз.


Теперь мы должны соединить все компоненты вместе и предусмотреть их связь с внешним миром. Такая связь показана в следующем блоке кода. Здесь мы просто через PORT MAP с помощью сигнальных «проводов» соединяем необходимым образом компоненты. Некоторые сигналы мы выводим во внешний мир, например, сигналы A, B, C и т.д.


VHDL-код

Рисунок 4 — VHDL-код

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


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


схема уровень 1

Рисунок 5 — уровень 1

Итак, посмотрим, что же наша программа сгенерировала в итоге. На первом уровне, который представляет собой проект в целом или, если использовать ранее принятую аналогию, печатную плату, мы можем наблюдать все высокоуровниевые соединения типа A, B, C и т.д. Истинную суть блочного метода можно увидеть, спустившись на один уровень.


схема уровень 2

Рисунок 6 — уровень 2

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


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


схема уровень 3

Рисунок 7 — уровень 3

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




Перевод © digitrode.ru


<Источник>


Теги: ПЛИС, VHDL




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий