Учебник языка описания аппаратуры VHDL, страница 7

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

Понятно, что для периодических сигналов данный способ описания может вызвать чувство раздражения, особенно в тех случаях, когда требуется много периодов. Такие сигналы предпочтительнее задавать с помощью процессов. Именно так описаны сигналы D0_TEST и D1_TEST. В обоих случаях используется оператор ожидания wait, о котором будет отдельный разговор.

В примере применяется самая простая его конструкция (wait for 100ns), указывающая, на какое время надо приостановить процесс. Некоторые отличия в его использовании, наблюдаемые для сигналов D0_TEST и D1_TEST, принципиального значения не имеют.

ПРАВИЛА НАПИСАНИЯ ИДЕНТИФИКАТОРОВ

Идентификаторы, то есть имена констант, переменных, сигналов, интерфейсов и архитектур, процедур и функций, пакетов и конфигураций, должны удовлетворять следующим правилам:

§  Первый символ имени должен быть буквой (строчной или прописной);

§  Последующие символы могут быть буквами, цифрами или знаком подчёркивания;

§  Идентификатор не должен начинаться или заканчиваться знаком подчёркивания. Он не может содержать и два подчёркивания подряд;

§  Никакие пробелы внутри идентификатора не допускаются;

§  Зарезервированные слова не могут использоваться в качестве идентификаторов;

§  Литеры верхнего и нижнего регистра не различаются;

§  Имя должно вмещаться в одну строку.

Приведём несколько примеров правильных и не правильных идентификаторов:

Binary_Counter и BinaryCounter – два правильных, но разных имени.

Adder4 и adder4 – два правильных и одинаковых имени.

FULL_ADD и FULLADD – хороший и плохой стили написания правильных имён;

Неправильные идентификаторы: 555LA3 (начинается с цифры), _SHIFT (начинается с подчёркивания), REG_ (заканчивается подчёркиванием), adder__sub (включает два подчёркивания подряд), A&B (содержит специальный символ &), IN, OUT, PORT (в качестве имени используются зарезервированные слова).

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

Имена многих реальных компонентов начинаются с цифры, например 7404 или 74ls193 (TTL-логика). Номер секции для многосекционных элементов принято указывать через дефис (специальный символ), например, так: IN1_-1 или OUT1_-4, что опять порождает неправильный идентификатор.

Чтобы удовлетворить «капризам» электронщиков, в языке VHDL определено понятие «расширенный идентификатор» (extended_identifier). Он заключается в backslash-скобки, внутри которых можно использовать любой символ, включая и пробел.

Если «запрещённые» имена использовались вами на этапе проектирования схемы, то редактор OrCAD Capture обнаружит их и автоматически «упакует» в backslash-скобки, например, так: \74ls193\ или \OUT1_-4\.

Если вы самостоятельно пишите VHDL-код, то компилятор будет браковать такие «ошибочные» имена, и вам придётся вручную превращать их в расширенные идентификаторы.

Заканчивая разговор об идентификаторах, следует сделать ещё одно важное замечание. Хотя язык VHDL является нечувствительным к регистру, этот тезис не распространяется на допустимые значения многозначной логики типа std_logic. Там разрешены только заглавные буквы ('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-').

Например, если вы напишите Y<= 'z'; то получите диагностическое сообщение, что литерал (не идентификатор!) перечисления 'z' - не является элементом типа std_logic.

ТИПЫ ДАННЫХ