Металогический базис, ориентированный на моделирование и синтез аппаратуры




Скачать 78.39 Kb.
НазваниеМеталогический базис, ориентированный на моделирование и синтез аппаратуры
Дата публикации20.08.2013
Размер78.39 Kb.
ТипЛекция
uchebilka.ru > Химия > Лекция
Лекция 4

ИНТЕРПРЕТАЦИЯ И ПРЕОБРАЗОВАНИЕ ТИПОВ VHDL-ДАННЫХ
В аппаратуре источниками сигналов являются входные и внутренние полюса схемы:

входы (порты);

выходы элементов (сигналы).
При этом в качестве первоисточников данных могут выступать только элементы с памятью, такие как:

порты, удерживающие значения в процессе моделирования;

триггерные элементы (flip-flop):

а) an edge-trigger device;

б) latch (a level-sensitive device)- защелка.

Поэтому все объекты и типы данных должны быть сопоставимы с этими так называемыми “Value Holders”.

^ Металогический базис, ориентированный на моделирование и синтез аппаратуры

Как правило в моделируемых системах используется следующий металогический базис (МЛБ):

‘0’- логическмй нуль;

‘1’- логическая единица;

‘U’- Unknown- неизвестное состояние;

‘D’- Don’t care- неопределенное состояние;

‘Z’- high-impedance- состояние высокого импеданса.
В стандарте IEEE 1164 принят расширенный 9-ти значный МЛБ. Для синтеза необходима однозначная интерпретация. VHDL оставляет право за разработчиком синтезируемой системы. Однако, так как синтезируемая система работает с упрощенным МЛБ, необходим переход от расширенного к упрощенному. Это может быть осуществлено с помощью следующего атрибута:

attribute ENUM_ENCODING of STD_LOGIC:type

--‘U’,’X’,’0’,’1’,’Z’,’W’,’L’,’H’,’-’

is “U D 0 1 Z D 0 1 D”;
Наиболее просто интерпретируются типы bit, bit_vector и перечислимый тип (enumerated):

а) bit  “схемный полюс” (wire)- 1 бит аппаратуры;

б) bit_vector  bus;

в) enumerated  buses.
type FSM_state is (RESET, S1, S2, SEND);

“00” “01” ”10” ”11”

Размерность аппаратных бит определяется из описания, например:

signal s: bit_vector (15 downto 0); -- 16 аппаратных бит

variable x1: bit_vector (0 to 7); -- 8 аппаратных бит

subtype st is bit_vector (32 to 63);

variable x2: st; --32 аппаратных бита

constant CON: bit_vector := “110”; -- 3 аппаратных бита

VHDL не дает информацию о б наиболее значащем разряде, но такая информация необходима при выполнении арифметических операций.

В синтезируемых системах значения типа BIT_VECTOR часто представляют беззнаковыми числами и крайний левый бит рассматривается как наиболее значимый.

В данном примере наиболее значимыми разрядами являются S(15), x1(0), x2(32), CON(1).

Тип BIT_VECTOR может быть представлен знаковым числом. Это можно сделать путем использования переопределяющих значений в пакете, например для “+”:

function “+” (L, R: BIT_VECTOR)

return BIT_VECTOR;

^

Перечислимый тип


enumerated -> buses.

type FSM_state is (RESET, S1, S2, SEND);

“00” “01””10” ”11”

Массивы (arrays)


Типичная синтезирующая система поддерживает:

а) 1-D-array (одномерный массив); б) array of an array type (массив массивов);

Базовым элементом массива должен быть 1 бит. Массивы представляются упрощенным набором схемных полюсов (wire1 of flip-flops).

type Metalog is (‘0’,’1’,’Z’,’U’,’D’); type RG_set is array (Natural range <>) of Metalog; signal s_metalog: RG_set(15 downto 0);

также можно записать:

signal s_metalog: array(15 downto 0, 2 downto 0);

но такая запись недопустима при синтезе!

^

Представление целых чисел (integer)


Целые числа могут быть знаковыми (signed), или беззнаковыми (unsigned).

Знаковые числа представляются дополнительным кодом числа (2’s complement form).

Если объект имеет только неотрицательные значения (non-negative values), то объект можно представлять беззнаковыми числами.

Размер bit_vector при преобразовании определяются описанием объекта данных как число бит необходимое для представления возможного диапазона целого числа.

Например,
signal A: integer range 0 to 15; -- преобразуется в bit_vector(3 downto 0);

type My_int is range –128 to +48; -- преобразуется в bit_vector(7 downto 0);

variable x: My_int;

subtype pos is POSITIVE range 68 downto 32;

variable y: my_pos; -- преобразуется в bit_vector(6 downto 0);

Как правило используется ниспадающий диапазон (descending range).

Наиболее крайний левый разряд является наиболее значащим.
signal Smax: integer -- требует как минимум 32 бита- очень много.

S<=A+B, где A и B имеют размер 7 бит, тогда S должен иметь размер 8 бит.

Для обеспечения возможности оперирования арифметическими операциями над целыми числами, представляемыми как bit_vector вводятся два новых типа данных:

type SIGNED is array (NATURAL range<>) of BIT; type UNSIGNED is array (NATURAL range<>) of BIT;

Оба типа имеют одинаковое определение как BIT_VECTOR.


Literal

UNSIGNED

SIGNED

“0000”

0

0

“0111”

7

7

“1000”

8

-8

“1001”

9

-7

“1110”

14

-2

“1111”

15

-1


Необходимо также определить функцию конверсии между этими типами и типами integer.

function “+”(L, R: signed) return signed; function “*”(L: signed; R: signed) return signed; function “<”(L, R: signed) return BOOLEAN; function TO_SIGNED(OPD: integer; SIZE: natural) return signed; function TO_INTEGER(OPD: unsigned) return integer;

Синтезируемая система обычно обеспечивает эти функции конверсией типов. Например, система ArchSyn поставляет пакет STD_LOGIC_ARICH. Этот пакет содержит арифметические операторы и другие утилиты функций, определенные на signed и unsigned типах.

Типы signed и unsigned базируются на элементе типа STD_LOGIC, который определяется в IEEE standard package STD_LOGIC_1164.

В пакете STD_LOGIC_ARITH имеются следующие декларации:

type SIGNED is array (NATURAL range<>) of BIT;

type UNSIGNED is array (NATURAL range<>) of BIT;

type SIGNED is array (NATURAL range<>) of STD_LOGIC;

type UNSIGNED is array (NATURAL range<>) of STD_LOGIC;
Листинг пакета имеет следующий вид:
use IEEE.STD_LOGIC_n64.all;

package STD_LOGIC_ARITH is

The types UNSIGNED and SIGNED:

type UNSIGNED is array (NATURAL range <>) of STD_LOGIC;

type SIGNED is array (NATURAL range <>) of STD_LOGIC;

Conversion functions:

function TO_INTEGER (U: UNSIGNED) return INTEGER;

function TO_INTEGER (S: SIGNED) return INTEGER;

function TO_STDLOGJC VECTOR (U: UNSIGNED;

SIZE: INTEGER) return STD_LOGIC_ VECTOR;

subtype LONG is STD_LOGJC_VECTOR (31 downto 0);

function TO_STDLOGICVECTOR (J: INTEGER) return LONG;

function TO_STDLOGICVECTOR (I, SIZE: INTEGER)

return STD_LOGIC_ VECTOR;

function TO_UNSIGNED (I, SIZE: INTEGER) return UNSIGNED;

function TO_UNSIGNED (S: SIGNED; SIZE: INTEGER)

return UNSIGNED;

function TO_UNSIGNED (U: UNSIGNED; SIZE: INTEGER)

return UNSIGNED;

function TO_SIGNED (I, SIZE: INTEGER) return SIGNED;

function TO_SIGNED (U : UNSIGNED; SIZE: INTEGER)

return SIGNED;

function TO_SIGNED (S: SIGNED; SIZE: INTEGER)

return SIGNED;

function TO_STDULOGIC (C: CHARACTER)

return STD_ULOGIC;

function TO_CHARACTER (S: STD_ULOGIC)

return CHARACTER;

Binary arithmetic functions:

function "+" (L: UNSIGNED; R: UNSIGNED) return UNSIGNED;

function "+" (L: SIGNED; R: SIGNED) return SIGNED;

function "+" (L: SIGNED; R: INTEGER) return SIGNED;

function "+" (L: INTEGER; R: SIGNED) return SIGNED;

function "+" (L: UNSIGNED; R: INTEGER) return UNSIGNED;

function "+" (L: INTEGER; R: UNSIGNED) return UNSIGNED;

function "-" (L: UNSIGNED; R: UNSIGNED) return UNSIGNED;

function "-" (L: SIGNED; R: SIGNED) return SIGNED;

function "-" (L: SIGNED; R: INTEGER) return SIGNED;

function "-" (L: INTEGER; R: SIGNED) return SIGNED;

function "-" (L: UNSIGNED; R: INTEGER) return UNSIGNED;

function "-" (L: INTEGER; R: UNSIGNED) return UNSIGNED;

function "*" (L: UNSIGNED; R: UNSIGNED) return UNSIGNED;

function "*" (L: SIGNED; R: SIGNED) return SIGNED;

function "/" (L: UNSIGNED; R: UNSIGNED) return UNSIGNED;

function "/" (L: SIGNED; R: SIGNED) return SIGNED;

function "mod" (L: UNSIGNED; R: UNSIGNED) return UNSIGNED;

function "mod" (L: SIGNED; R: SIGNED) return SIGNED;

function "rem" (L: UNSIGNED; R: UNSIGNED) return UNSIGNED;

function "rem" (L: SIGNED; R: SIGNED) return SIGNED;
Unary arithmetic functions:

function "-" (L: SIGNED) return SIGNED;

function "abs" (L: SIGNED) return SIGNED;

Comparison functions:

function "<" (L: UNSIGNED; R: UNSIGNED) return BOOLEAN;

function "<" (L: UNSIGNED; R: INTEGER) return BOOLEAN;

function "<" (L: INTEGER; R: UNSIGNED) return BOOLEAN;

function "<" (L: INTEGER; R: SIGNED) return BOOLEAN;

function "<" (L: SIGNED; R: SIGNED) return BOOLEAN;

function "<" (L: SIGNED; R: INTEGER) return BOOLEAN;

function "<=" (L: UNSIGNED; R: UNSIGNED) return BOOLEAN;

function "<=" (L: UNSIGNED; R: INTEGER) return BOOLEAN;

function "<=" (L: INTEGER; R: UNSIGNED) return BOOLEAN;

function "<=" (L: INTEGER; R: SIGNED) return BOOLEAN;

function "<=" (L: SIGNED; R: SIGNED) return BOOLEAN;

function "<=" (L: SIGNED; R: INTEGER) return BOOLEAN;

function ">=" (L: UNSIGNED; R: UNSIGNED) return BOOLEAN;

function ">=" (L: UNSIGNED; R: INTEGER) return BOOLEAN;

function ">=" (L: INTEGER; R: UNSIGNED) return BOOLEAN;

function ">=" (L: INTEGER; R: SIGNED) return BOOLEAN;

function ">=" (L: SIGNED; R: SIGNED) return BOOLEAN;

function ">=" (L: SIGNED; R: INTEGER) return BOOLEAN;

function ">" (L: UNSIGNED; R: UNSIGNED) return BOOLEAN;

function ">" (L: UNSIGNED; R: INTEGER) return BOOLEAN;

function ">" (L: INTEGER; R: UNSIGNED) return BOOLEAN;

function ">" (L: INTEGER; R: SIGNED) return BOOLEAN;

function ">" (L: SIGNED; R: SIGNED) return BOOLEAN;

function ">" (L: SIGNED; R: INTEGER) return BOOLEAN;

function "=" (L: UNSIGNED; R: UNSIGNED) return BOOLEAN;

function "=" (L: UNSIGNED; R: INTEGER) return BOOLEAN;

function "=" (L: INTEGER; R: UNSIGNED) return BOOLEAN;

function "=" (L: INTEGER; R: SIGNED) return BOOLEAN;

function "=" (L: SIGNED; R: SIGNED) return BOOLEAN;

function "=" (L: SIGNED; R: INTEGER) return BOOLEAN;

function "/=" (L: UNSIGNED; R: UNSIGNED) return BOOLEAN

function "/=" (L: UNSIGNED; R: INTEGER) return BOOLEAN;

function "/=" (L: INTEGER; R: UNSIGNED) return BOOLEAN;

function "/=" (L: INTEGER; R: SIGNED) return BOOLEAN;

function "/=" (L: SIGNED; R: SIGNED) return BOOLEAN;

function "/=" (L: SIGNED; R: INTEGER) return BOOLEAN;

Logical operations:

function "and" (L, R: UNSIGNED) return UNSIGNED;

function "nand" (L, R: UNSIGNED) return UNSIGNED;

function "or" (L, R: UNSIGNED) return UNSIGNED;

function "nor" (L, R: UNSIGNED) return UNSIGNED;

function "xor" (L, R: UNSIGNED) return UNSIGNED;

function "not" (L: UNSIGNED) return UNSIGNED;

function "and" (L, R: SIGNED) return SIGNED;

function "nand" (L, R: SIGNED) return SIGNED;

function "or" (L, R: SIGNED) return SIGNED;

function "nor" (L, R: SIGNED) return SIGNED;

function "xor" (L, R: SIGNED) return SIGNED;

function "not" (L: SIGNED) return SIGNED;

Shift functions:

function SHIFT_LEFT (U: UNSIGNED; SIZE: NATURAL)

return UNSIGNED;

function SHIFT_LEFT (S: SIGNED; SIZE: NATURAL)

return SIGNED;

function SHIFT_RIGHT (U: UNSIGNED; SIZE: NATURAL)

return UNSIGNED;

function SHIFT_RIGHT (S: SIGNED; SIZE: NATURAL)

return SIGNED;

Preset / clear procedure:

procedure PRESET_CLEAR (signal FF: out UNSIGNED;

PC_VALUE: UNSIGNED);

procedure PRESET_CLEAR (signal FF: out SIGNED;

PC_VALUE: SIGNED);

procedure PRESET_CLEAR (signal FF: out INTEGER;

PC_VALUE: INTEGER);

Clock-level functions:

function HIGH_LEVEL (CLK: STD_ULOGIC) return BOOLEAN;

function LOW_LEVEL (CLK: STD_ULOGIC) return BOOLEAN;

Utility function used in test benches:

function NOT_EQUALS (OBSERVED, EXPECTED:

STD_ULOGIC) return BOOLEAN;

end package STD_LOGIC_ARITH;
IEEE standart 1076.3-1997 определяет два функционально эквивалентных пакета:


  1. NUMERIC_BIT- основан на типе BIT array types;

  2. NUMERIC_STD- основан на типе STD_LOGIC array types.


Они определяют два новых типа:

    • SIGNED;

    • UNSIGNED.


Функции, описанные в этих пакетах классифицируются следующим образом:

      1. Арифметические функции;

      2. Функции сравнения;

      3. Функции конверсии;

      4. Функции сдвига;

      5. Функции преобразования размеров;

      6. Функции определения границ;

      7. Логические функции.


Не поддерживаются операции:


    • SIGNED * UNSIGNED;

    • SIGNED * NATURAL;

    • UNSIGNED * INTEGER.

Добавить документ в свой блог или на сайт

Похожие:

Металогический базис, ориентированный на моделирование и синтез аппаратуры iconГубарь Ю. В. Синтез и моделирование цифровых автоматических систем...
Синтез и моделирование цифровых автоматических систем с экстраполяторами нулевого и первого порядков. Выполнен синтез параметров...

Металогический базис, ориентированный на моделирование и синтез аппаратуры iconТемы дипломных работ
Теоретические методы: анализ, синтез, абстрагирование, конкретизация, дедукция, индукция, моделирование

Металогический базис, ориентированный на моделирование и синтез аппаратуры icon19 Синтез фа диво 26-го проявления Киев, 7-8 апреля 2012г., Инна Свиренко
И мы возжигаемся всем накопленным огнём, возжигаясь фа- или синтез 16 рицами, фа- или синтез-32-рицами, фа- или синтез-64-рицами...

Металогический базис, ориентированный на моделирование и синтез аппаратуры icon30 Синтез Основ диво 90-го проявления Киев, 04-05 мая 2013г., Инна Свиренко
Возжигаемся всем накопленным огнём, развёртываясь фа- или синтез-16-рицами, фа- или синтез-32-рицами, фа- или синтез-64-рицами

Металогический базис, ориентированный на моделирование и синтез аппаратуры iconРеферат скачан с сайта allreferat wow ua
Синтез управляющего автомата модели lego транспортной тележки и моделирование ее движения

Металогический базис, ориентированный на моделирование и синтез аппаратуры iconЛичностно-ориентированный поход в процессе обучения физике, информатике, астрономии
Я считаю, что в настоящее время личностно-ориентированный подход в обучении стал своеобразным знаменем современной школы

Металогический базис, ориентированный на моделирование и синтез аппаратуры iconРеферат скачан с сайта allreferat wow ua Имитационное моделирование...
Имитационное моделирование воспроизводственных процессов в нефтегазовой промышленности

Металогический базис, ориентированный на моделирование и синтез аппаратуры icon26Синтез Основ диво 26-го проявления Киев 5-6 января 2013г., Инна Свиренко
Мы возжигаемся всем накопленным огнём, возжигая фа- или синтез-16рицы, фа- или синтез-32-рицы, фа- или синтез-64-рицы. И в этом возжигании...

Металогический базис, ориентированный на моделирование и синтез аппаратуры icon32 Синтез Основ диво 90-го проявления Киев, 6-7 июля 2013г., Инна Свиренко
Итак, мы концентрируемся в центр грудной клетки и возжигаем весь накопленный огонь и Синтез, возжигаем весь стяжённый огонь и Синтез,...

Металогический базис, ориентированный на моделирование и синтез аппаратуры iconПао «Донецкий завод горноспасательной аппаратуры»
Александр Морозов, заместитель директора по маркетингу и сбыту Донецкого завода горноспасательной аппаратуры (дзга)

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
uchebilka.ru
Главная страница


<