Фактически, данный перечень представляет собой список событий, каждое из которых указывает новое значение сигнала и момент времени, когда сигнал должен получить это значение.
Понятно, что для периодических сигналов данный способ описания может вызвать чувство раздражения, особенно в тех случаях, когда требуется много периодов. Такие сигналы предпочтительнее задавать с помощью процессов. Именно так описаны сигналы 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.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.