Действительно ли нам нужен VHDL

       

Объекты VHDL:Сигнал


Действительно ли нам нужен VHDL? Представление Системы в VHDL: Единицы Проекта Объекты VHDL:Сигнал Спецификация Интерфейса Системы Конструкции VHDL для Описания Поведения Системы Описание Поведения при помощи Процессов Многократные Процессы в Архитектуре Определение Структуры Системы Испытание Проекта при помощи Испытательного стенда

Глава 3

Объекты VHDL:Сигнал

Содержание главы 3

3.1. Краткий обзор Главы

3.2. Введение в Сигналы

3.2.1. Понятие Сигнала

3.2.2. Сигналы в Электронных Приборах



3.2.3. Значение Электрических Сигналов

3.3. Основные Типы Сигналов

3.3.1. Отдельный Сигнал против Многократных Сигналов

3.3.2. Типы Сигнала: bit и bit_vector

3.3.3. Ширина Шины и Порядок Битов

3.4. Объявление Сигналов

3.4.1. Внешний против Внутренних Сигналов

3.4.2. Объявление Сигналов Интерфейса

3.4.3. Направление Потока информации: Режим Порта

3.4.4. Декларация Внутренних Сигналов

3.4.5. Видимость Сигналов

Резюме

3.1. Краткий обзор Главы

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

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

Секция 3 вводит два важных классификационных признака сигналов:

  • Единичный против множественного сигнала (провода и шины); вначале оба типа сигналов представлены неформально, а затем обсуждается их VHDL представление. Такие понятия как ширина шины и порядок битов в шине рассмотрены и объяснены;
  • Внешний против внутренних сигналов; внешние сигналы соединяют систему с окружающей средой, и они составляют интерфейс системы.
    Внутренние сигналы постоянно функционируют внутри системы и не видимы их снаружи. Обе группы иллюстрируются и показана их связь с VHDL представлением.
  • Прежде, чем любой сигнал может быть использован в VHDL проекте, в его спецификации, он должен быть объявлен. Четвертая Секция посвящена этому вопросу. Эта глава будет готовить Вас для написания ваших первых VHDL спецификаций просто и доходчиво.

    3.2.1. Концепция Сигнала

    Ключевые вопросы:

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

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

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

    Рисунок справа показывает отдельные примеры сигналов в реальной жизни.

    Примеры:



    Рисунок:

    3.2.2. Сигналы в Электронных Приборах

    Ключевые вопросы:

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

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


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

    Имеются много способов классифицировать сигналы. Например, они могут быть классифицированы как сигналы, несущие информацию или внутри прибора или между электронными элементами. Это базовая классификация сигнала, принятая в VHDL.

    Примеры:

    Рисунок:

    3.2.3. Значение Электрических Сигналов

    Ключевые вопросы:

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

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

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

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

    Примеры:

    Рисунок:

    3.3.1. Единичный сигнал против множественного сигнала

    Ключевые вопросы:

    Электронные проекты основаны на компонентах и сигнальных линиях, соединяющих эти компоненты.


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

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

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

    Примеры:

    Рисунок:

    3.3.2. Типы Сигнала: bit и bit_vector

    Ключевые вопросы:

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

    Два типа сигнала, которые допускаются спецификацией VHDL, названы bit (битом) (для единичных сигналов) и bit_vector (бит_вектор)(для шин). В обоих случаях каждая сигнальная линия может быть или '0' или '1'. В случае bit_vector, также необходимо определять ширину.

    Примеры:

    Рисунок:



    3.3.3. Ширина Шины и Порядок Битов

    Ключевые вопросы:

    В случае единичного провода все просто; Вы можете только говорить " этот сигнал, имеет р тип bit". Префикс bit сообщает что это все. Однако, описание шин – более комплексно. Во-первых, мы должны указать, что это – множественный сигнал, прибавляя слово: _vector, при этом формируется утверждение bit_vector.

    Во-вторых, ширина шины и порядок линий или битов должен быть явно задан в списке. Например, это составляет главное различие , является ли разряд номер 7 старшим значащим битом (MSB), а номер 0 - самый младшим битом (LSB) в шине, или наоборот. Эта информация обеспечивается через диапазон вектора, которая всегда указывается в круглой скобках, например (7 downto 0). Диапазон вектора определяется в VHDL путем использования двух ключевых слов: или TO или DOWNTO.


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

    Примеры:

    Диапазон шины может быть определен четырьмя различными способами. Однако, только два из них правильны (и имеют смысл). Четырех-разрядная шина может быть правильно определена как:

  • bit_vector(0 to 3) ascending order of bits
  • bit_vector(3 downto 0) descending order of bits
  • Два неправильных технических данных диапазона шины могли быть написаны как:

  • bit_vector(0 downto 3) incorrect order of bits
  • bit_vector(3 to 0) incorrect order of bits

    Рисунок:



    3.4.1. Внешний против Внутренних Сигналов

    Ключевые вопросы:

    Сигналы могут быть классифицированы как внутренние или как внешние:

  • Внешние сигналы - сигналы, которые соединяют систему со внешним миром. Другими словами, они формируют интерфейс системы;
  • Внутренние сигналы, которые не видимы из наружной части, являются полностью вложенным внутри системы и являются частью внутренней архитектуры, обеспечивающей связь между внутренними линиями.
  • Поскольку Вы можете помнить из предыдущей главы, подобное различие которое существует между сущностью и единицами архитектуры проекта. Фактически, внешние сигналы объявлены только в сущности, а внутренние сигналы определены исключительно в архитектуре.

    Примеры:

    При использовании упрощенной функциональной блок-схемы центрального процессора Вы можете классифицировать сигналы как внутренние или как внешние.



    3.4.2. Объявление Сигналов Интерфейса

    Ключевые вопросы:

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

    Каждый сигнал должен иметь уникальное название (например. Clock1 или DataBUS [0 to7]) и тип (например bit или bit_vector). Однако, порт должен иметь кроме того направление потока информации которое называется mode.


    Этому объясняется на следующей странице.

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

    Примеры:

    Позвольте нам объявлять порты ЦЕНТРАЛЬНОГО ПРОЦЕССОРА. Этот пример показывает только общую идею и не должны трактоваться как реальная спецификация VHDL.

    entity Central_Processing_Unit is

    port( Input_CPU : mode bit_vector (31 downto 0);

    Output_CPU : mode bit_vector (31 downto 0));

    end Central_Processing_Unit;

    И более детальный пример памяти ROM:



    entity ROM_Memory is

    port (A_ROM : mode bit_vector (3 downto 0); -- Address

    CS_ROM : mode bit := ' 0' ; -- Chip Select

    D_ROM : mode bit_vector (7 downto 0));-- Data

    end ROM_Memory;

    Рисунок:

    3.4.3. Направление Потока информации: MODE Порта

    Ключевые вопросы:

    В циркулирующем направлении потока информации Мы должны определить, является ли частный сигнал входом, выходом или двунаправленным. Направление сигнала должно быть явно задано. Если это не определено, то по умолчанию объявляется как вход. Для установления направление сигнала в VHDL осуществляется приписывание соответствующей mode к каждому сигналу интерфейса. Следовательно, декларация порта имеет следующий синтаксис:

    port_name : mode port_type

    Несмотря на то, что VHDL поддерживает пять mode сигнала: IN, OUT, INOUT, BUFFER, и LINKAGE, рекомендуется, чтобы Вы использовали только первые три, т.к. последние два не поддержаны инструментальными средствами синтеза.

    Типичные mode сигнала:

  • 'in' – Данные могут читаться внутри архитектуры, но не могут быть выданы архитектурой;
  • 'out' – Данные могут быть сгенерированы внутри архитектуры, но не могут читаться;
  • 'inout' – Данные могут быть как записаны так и считаны в внутри архитектуры.

    Примеры:

    Теперь мы способны закончить сущность из предыдущей страницы с присущими mode:

    Entity Central_Processing_Unit is

    port( Input_CPU : in bit_vector (31 downto 0);

    Output_CPU : out bit_vector (31 downto 0));

    end Central_Processing_Unit;

    entity ROM_Memory is

    port (A_ROM : in bit_vector (3 downto 0); -- Address



    CS_ROM : in bit; -- Chip Select

    D_ROM : out bit_vector (7 downto 0));-- Data

    end ROM_Memory;

    Данные могут быть или написаны в память RAM или читать из нее. Это обозначено способом inout:

    entity RAM_Memory is

    port (A_RAM : in bit_vector (3 downto 0); -- Address

    CS_RAM : in bit; -- Chip Select

    D_RAM : inout bit_vector (7 downto 0));-- Data

    end RAM_Memory;

    Рисунок:

    3.4.4. Декларация Внутренних Сигналов

    Ключевые вопросы:

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

    Заметьте: ключевое слово signal не нужно около порта, потому что каждый порт - по определению сигнал.

    Заметьте: Внутренние сигналы не требуют декларации mode (in, out или inout).

    Заметьте: возможно определить начальное значение для внутреннего сигнала.

    Примеры:

    Для того, чтобы облегчать связь между подсистемами центрального процессора (ROM памятью, RAM памятью, I/O блоками) мы должны определить внутренние сигналы для адреса, данных, и шин управления. Так как они - внутренние сигналы, их декларация расположена внутри архитектуры:

    architecture Behavior_CPU OF Central_Processing_Unit is

    -- Architecture declarative part

    signal Address : bit_vector (31 downto 0);

    signal Data : bit_vector (15 downto 0);

    signal Control : bit_vector (10 downto 0) := " 00011101101" ;

    begin

    -- Architecture statements part

    end Behavior_CPU;

    Рисунок:

    3.4.5. Видимость Сигналов

    Ключевые вопросы:

    "Видимость" каждого сигнала определена местом, в котором он объявлен:

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

    Примеры:



    Рисунок:

    Резюме

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

    1. Электронные проекты основаны на компонентах и сигнальных линиях, соединяющих эти компоненты. Сигнальные линии могут быть выполнены как:
      • Однопроводные линии, которые имеют единичное двоичное значение в любой момент (представленной в VHDL типом bit);
      • Многопроводные линии связи, которые называются шины или векторы, и передают информацию, являющуюся комбинацией некоторых двоичных значений (тип bit_vector, который поддерживается вектором с заданной шириной).
    2. Сигналы могут также быть классифицированы как:
      • Внешние сигналы, которые формируют интерфейс системы;
      • Внутренние сигналы, которые являются полностью вложенным внутри системы и обеспечивают связь между внутренними линиями.
    3. Каждый сигнал в спецификации проекта VHDL должен быть объявлен.
    4. Сигналы могут быть явно объявлены в декларативной части:
      • пакета - Сигналы видимы во всех частях проекта, использующих пакет;
      • архитектуры (внутренний сигнал) - Сигналы - видимы только внутри архитектуры;
      • блока – Сигналы – видимы непосредственно внутри блока.
    5. Кроме того, декларация порта (внешняя декларация сигнала) по существу - неявная декларация сигнала. Сигнал объявленный таким способом видим во всех архитектурах, приписыванных к этой сущности.
    6. Сигналу может быть назначено начальное значение в декларации. Если не имеется никакого выражения в декларации сигнала, то значение по умолчанию сигнала - левая граница указанного типа.
    7. Запрещено объявлять сигналы в процессе или подпрограмме, за исключением тех случаев, когда они вводятся как формальные параметры.

    8. Далее>>

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