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


Данные, выражения   и их интерпретация в   цифровом устройстве



2020-02-04 196 Обсуждений (0)
Данные, выражения   и их интерпретация в   цифровом устройстве 0.00 из 5.00 0 оценок




Состояние линий связи в цифровых схемах, равно как и состояние элементов схемы отражается в VHDL-программах  данными категорий SIGNAL  и VARIABLE. Назовем данные «одиночными», если состоянию каждой линии присваивается индивидуальное имя, а «групповыми», если несколько линий рассматриваются как единый объект и имеют общее имя.  

При   моделировании  цифрового устройства, не содержащего монтажной логики  [груш], [схемотех], элементов с тремя состояниями и   без учета переходных состояний и сбойных ситуаций  достаточно положить, что  сигналы могут принимать два значения –  логический ноль и логическую единицу.  Тогда удобно  в описании  отнести  одиночные данные либо к типу BOOLEAN, либо к типу  BIT. Принципиальной разницы  в использовании этих типов нет –  для обоих  типов определены одинаковые  логические операции, которые отражаются при синтезе такими же компонентами. Например, замена в листинге 1.1 типов данных на BOOLEAN или BIT не изменит результатов синтеза. Обычно тип  BOOLEAN используется как средство записи обобщенных условий  исполнения операторов (операции сравнения дают результат BOOLEAN), а  BIT – для представления фактических значений уровней, хотя это, в общем-то,  это дело вкуса. Отметим, что, несмотря на общность допустимых операций, смысла и аппаратной интерпретации преобразований  данных  типов BOOLEAN и BIT, данные разных типов несовместимы в одной операции. Например, если x1 и x2 относятся к типу BOOLEAN, а y1  и y2 к типу BIT, то выражение

                                      (x1 AND y1) OR (x2 AND NOT  y2)

недопустимо. Можно записать так

                                  (x1 AND (y1='1')) OR (x2 AND (y2='0')),

причем результат будет булевского типа.

Параллельные операторы присваивания, а также последовательные присваивания, записанные в теле процессов, список чувствительности которых содержит все аргументы такого оператора,  при реализации в аппаратуре  порождают  комбинационные логические схемы (за исключением случаев, рассмотренных далее). В случаях, когда логическая функция относительно проста, удобнее и нагляднее параллельные присваивания, но в сложных  случаях следует пользоваться декомпозицией исходной функции (этот вопрос подробно рассмотрен в [1] и [2]). Использование параллельных операторов позволяет легче “заставить” компилятор реализовать схему в том виде, в котором её хотел бы получить разработчик. Такое совпадение безразлично при работе аппаратуры с частотами, обеспечивающими полное завершение переходных процессов, но при сбойных ситуациях совпадение оказывается весьма полезным.

Если проектируются устройства, содержащие шинные соединения компонентов (элементы с высокоимпедансным состоянием, схемы с открытым коллектором и т.п.), а также при необходимости анализа  проектируемого устройства в переходных состояниях, в том числе обнаружения  риска сбоев, используется моделирование в многозначном алфавите. Стандарт языка не определяет многозначного алфавита, но практически все интерпретаторы  имеют в своем составе пакет  std_logic_1164, который определяет тип данных std_logic, то есть набор допустимых девяти значений данных этого типа, и правила выполнения логических операций с такими данными. Для применения этого типа   в программу необходимо включать декларацию использования этого пакета.  Реализация комбинационных схем при выполнении преобразований данных типа  std_logic не отличается от схем, выполняющих такие же преобразования с данными типа BIT, но результаты моделирования будут отличаться, и моделирование с типом std_logic более адекватно. К тому же тип std_logic позволяет описывать шинные соединения, а синтезаторы интерпретируют эти  соединения включением соответствующих буферных схем.

Состояния группы соединений или компонентов могут представляться массивами (если элементы группы определены как BIT или std_logic, то  предопределены и соответствующие типы массивов: BIT_ VECTOR и std_logic_VECTOR), а также некоторые скалярные типы данных. С каждым элементом  векторных данных можно оперировать как с отдельным битом, но допустимы и групповые операции, в том числе двуместные операции над векторами равной размерности. Тогда операция выполняется параллельно для пар одноименных битов. При реализации это соответствует наличию одинаковых индивидуальных схем преобразования для каждой пары битов.  

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

Тип данных  INTEGER используется в  случаях, когда  в алгоритме присутствует относительно большое число арифметических операций. Коды, сопоставляемые значениям данных этого типа, современные синтезаторы интерпретируют в традиционной форме позиционного двоично-взвешенного кодирования.  Предпочтительно использовать ограниченный тип, то есть задавать диапазон допустимых значений данных, что позволит синтезатору выбрать минимально достаточную  разрядность представления.  Операторы, преобразующие численные данные, при синтезе интерпретируются подсхемами из библиотеки используемой  САПР, выполняющими требуемое преобразование, например сумматорами, умножителями и т.п.   Для выделения отдельных битов   данных, отнесенных к типу INTEGER, а также для представления числового эквивалента кода, в большинстве систем интерпретации имеются стандартизованные  функции преобразования типов. Например, в системе моделирования  ModelSim функции преобразования  вектор-число и (conv_integer)  и число-вектор (conv_std_logic_vector) определены в пакете  std_logic_arith.

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

       Пусть, например, проектируется арифметико-логическое устройство, для которого определены такие операции:  ADD (сложение), SUBB (вычитание), AND (поразрядное И), OR (поразрядное ИЛИ), NOT (инверсия), СOPY (повторение одного из входов).

     Тогда требуется ввести тип таких данных и управляющие сигналы этого типа:

 TYPE instruction IS (add, subb, and, or, not, copy);

 SIGNAL current_instruction: instruction;

Теперь правило функционирования арифметико-логического устройства будет описываться приблизительно так:

    CASE current_instruction IS

                 WHEN add =>  < описание варианта реализации сложения>;

                 WHEN subb =>  < описание варианта реализации вычитания>;

                 WHEN and  =>  < описание варианта реализации поразрядного И>;

                    …….      

  END CASE;   

и так далее.

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

Надо заметить, что алгоритмическое представление логической функции часто возникает из самой логики функционирования проекта. Ведь разработчик не сразу записывает формулы,  а рассуждает, например, так: «если  на какую-то группу входов поступила определенная кодовая комбинация, то следует  на выходе сформировать такие-то сигналы, иначе …». В таком случае естественно порождается алгоритмическое представление.

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

 



2020-02-04 196 Обсуждений (0)
Данные, выражения   и их интерпретация в   цифровом устройстве 0.00 из 5.00 0 оценок









Обсуждение в статье: Данные, выражения   и их интерпретация в   цифровом устройстве

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

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

Популярное:
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...



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

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

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

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

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

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



(0.006 сек.)