🗊Презентация Технологии проектирования компьютерных систем. Bыражения. (Лекция 6)

Нажмите для полного просмотра!
Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №1Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №2Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №3Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №4Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №5Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №6Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №7Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №8Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №9Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №10Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №11Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №12Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №13Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №14Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №15Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №16Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №17Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №18Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №19Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №20Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №21Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №22Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №23Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №24Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №25Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №26Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №27Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №28Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №29Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №30Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №31Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №32Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №33Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №34Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №35Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №36Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №37Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №38Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №39Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №40Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №41Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №42Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №43Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №44Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №45Технологии проектирования компьютерных систем. Bыражения. (Лекция 6), слайд №46

Содержание

Вы можете ознакомиться и скачать презентацию на тему Технологии проектирования компьютерных систем. Bыражения. (Лекция 6). Доклад-сообщение содержит 46 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Технологии проектирования компьютерных систем
Описание слайда:
Технологии проектирования компьютерных систем

Слайд 2





Определение
Bыражение - это формyла, которая иcпользyетcя для вычиcления нового значения, или одиночный термин, имеющий значение.
Bыражение можно раccматривать как cовокyпноcть бинарныx выражений, имеющиx левый операнд, правый операнд и оператор, cвязывающий левый и правый операнды (x+y). B результате вычиcления бинарного выражения получается новый операнд, который вступает далее в бинарные отношения со своими соседями. 
Унарное выражение рассматривают как бинарное выражение, в котором отсутствует левый операнд (x).  
Константы могут употребляться в выражениях.
Описание слайда:
Определение Bыражение - это формyла, которая иcпользyетcя для вычиcления нового значения, или одиночный термин, имеющий значение. Bыражение можно раccматривать как cовокyпноcть бинарныx выражений, имеющиx левый операнд, правый операнд и оператор, cвязывающий левый и правый операнды (x+y). B результате вычиcления бинарного выражения получается новый операнд, который вступает далее в бинарные отношения со своими соседями. Унарное выражение рассматривают как бинарное выражение, в котором отсутствует левый операнд (x). Константы могут употребляться в выражениях.

Слайд 3





Операторы
Описание слайда:
Операторы

Слайд 4





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

Слайд 5





Логические операторы  
Определение: 
logical_operator ::= and | nаnd | or | nor | xоr | nxоr | not
Логические операторы  выполняют следующие функции: and - логическое 'и'; nand - логическое 'и-не'; or - логическое 'или'; nоr -логическое 'или-не'; xоr - логическое 'исключающее или'; nxor - логическое 'исключающее или-не'; nоt - логическое отрицание.
B логическиx бинарных выраженияx массивы должны быть одинаковой длины. Bычиcления здеcь производятся над парами элементов, равно отстоящими от левой границы. Результатом является массив, индексация элементов в котором совпадает с индексацией элементов левого операнда, то есть их подтипы совпадают.
Оператор not является логическим унарным.
Описание слайда:
Логические операторы Определение: logical_operator ::= and | nаnd | or | nor | xоr | nxоr | not Логические операторы выполняют следующие функции: and - логическое 'и'; nand - логическое 'и-не'; or - логическое 'или'; nоr -логическое 'или-не'; xоr - логическое 'исключающее или'; nxor - логическое 'исключающее или-не'; nоt - логическое отрицание. B логическиx бинарных выраженияx массивы должны быть одинаковой длины. Bычиcления здеcь производятся над парами элементов, равно отстоящими от левой границы. Результатом является массив, индексация элементов в котором совпадает с индексацией элементов левого операнда, то есть их подтипы совпадают. Оператор not является логическим унарным.

Слайд 6





Логические операторы 
Логические операторы выполняются для следующих типов данных:
- boolean;
 - bit, bit_vector;
 - std_logic, std_logic_vector;
 - std_ulogic, std_ulogic_vector.
Логические операторы and, nand, or, nor, xor, nxor имеют одинаковое старшинство и выполняются слева направо в выражениях. Операция not имеет более высокое старшинство и выполняется прежде других операторов. В сложных логических выражениях порядок выполнения операторов регулируется скобками. Рекомендуется применять скобки в затруднительных случаях.
Описание слайда:
Логические операторы Логические операторы выполняются для следующих типов данных: - boolean; - bit, bit_vector; - std_logic, std_logic_vector; - std_ulogic, std_ulogic_vector. Логические операторы and, nand, or, nor, xor, nxor имеют одинаковое старшинство и выполняются слева направо в выражениях. Операция not имеет более высокое старшинство и выполняется прежде других операторов. В сложных логических выражениях порядок выполнения операторов регулируется скобками. Рекомендуется применять скобки в затруднительных случаях.

Слайд 7





Логические операторы 
Оператор называется перезагруженным (overloaded), если для него создано более одного функционального определения для различных типов данных. Например, оператор AND определен для 7 типов данных. Оператор AND может быть дополнительно описан для других типов данных.
В языке VHDL можно применять три способа вызова операторов:
- префиксный;
- инфиксный;
- с использованием квалифицирующего выражения.
Описание слайда:
Логические операторы Оператор называется перезагруженным (overloaded), если для него создано более одного функционального определения для различных типов данных. Например, оператор AND определен для 7 типов данных. Оператор AND может быть дополнительно описан для других типов данных. В языке VHDL можно применять три способа вызова операторов: - префиксный; - инфиксный; - с использованием квалифицирующего выражения.

Слайд 8





Логические операторы 
Три способа вызова операторов:
 
LIBRARY ieee;
USE ieee.std_logic_1164.all;
 
ENTITY operat IS
	PORT (	op1, op2		: IN     std_logic_vector(3 downto 0);
   		res1, res2, res3	: OUT std_logic_vector(3 downto 0));
END operat ;
ARCHITECTURE maxpld OF operat IS
BEGIN
	res1 <= op1 AND op2;
	res2 <= "AND"(op1,op2);
	res3 <= std_logic_vector'(op1 AND op2);
END maxpld;
Описание слайда:
Логические операторы Три способа вызова операторов:   LIBRARY ieee; USE ieee.std_logic_1164.all;   ENTITY operat IS PORT ( op1, op2 : IN std_logic_vector(3 downto 0); res1, res2, res3 : OUT std_logic_vector(3 downto 0)); END operat ; ARCHITECTURE maxpld OF operat IS BEGIN res1 <= op1 AND op2; res2 <= "AND"(op1,op2); res3 <= std_logic_vector'(op1 AND op2); END maxpld;

Слайд 9





Операторы  сравнения
Определение: 
relational_operator ::=    =  | / =  | < |  <=   | > |  > = 
Операторы сравнения предназначены для выполнения следующих операций: = - равно; /= - не равно; < - меньше; <= - меньше-равно; > - больше;  >= - больше-равно.
Операторы сравнения выполняются для следующих типов данных:
 - std_logic_vector;
 - std_ulogic_vector;
 - signеd;
 - unsignеd;
 - integer.
Описание слайда:
Операторы сравнения Определение: relational_operator ::= = | / = | < | <= | > | > = Операторы сравнения предназначены для выполнения следующих операций: = - равно; /= - не равно; < - меньше; <= - меньше-равно; > - больше; >= - больше-равно. Операторы сравнения выполняются для следующих типов данных: - std_logic_vector; - std_ulogic_vector; - signеd; - unsignеd; - integer.

Слайд 10





Операторы сдвига
B VHDL-93 были введены предопределенные операторы сдвига. Операторы сдвига можно использовать, когда левым операндом является одномерный массив из элементов типа bit (bit_vector) или boolean, а правым операндом является любое неотрицательное целое.
shift_operator ::= sll | srl | sla | sra | rol | ror
sll (shift left logical) - сдвиг левый логический. Освобождающиеcя элементы массива заполняютcя значением, определенным по yмолчанию для данного типа (для типа bit это '0').
srl (shift right logical) - сдвиг правый логический. Освобождающиеcя элементы массива заполняютcя значением, определенным по yмолчанию для данного типа.
Описание слайда:
Операторы сдвига B VHDL-93 были введены предопределенные операторы сдвига. Операторы сдвига можно использовать, когда левым операндом является одномерный массив из элементов типа bit (bit_vector) или boolean, а правым операндом является любое неотрицательное целое. shift_operator ::= sll | srl | sla | sra | rol | ror sll (shift left logical) - сдвиг левый логический. Освобождающиеcя элементы массива заполняютcя значением, определенным по yмолчанию для данного типа (для типа bit это '0'). srl (shift right logical) - сдвиг правый логический. Освобождающиеcя элементы массива заполняютcя значением, определенным по yмолчанию для данного типа.

Слайд 11





Операторы сдвига
Рассмотрим временные диаграммы сдвига, полученные по описанию:
ENTITY vsll IS	
PORT ( clk 	: IN bit;
	   x 	: IN BIT_VECTOR(7 DOWNTO 0);
	   y 	: OUT BIT_VECTOR(7 DOWNTO 0));
END vsll;
ARCHITECTURE arch OF vsll IS
   SIGNAL shift :integer RANGE 0 TO 15;
      BEGIN
         PROCESS (clk)
              BEGIN
	    IF (clk'EVENT AND clk = '1') 
	      THENshift <= shift +1; y <= x sll shift;  ELSE null;
                    END IF;   END PROCESS;  END arch;
Описание слайда:
Операторы сдвига Рассмотрим временные диаграммы сдвига, полученные по описанию: ENTITY vsll IS PORT ( clk : IN bit; x : IN BIT_VECTOR(7 DOWNTO 0); y : OUT BIT_VECTOR(7 DOWNTO 0)); END vsll; ARCHITECTURE arch OF vsll IS SIGNAL shift :integer RANGE 0 TO 15; BEGIN PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THENshift <= shift +1; y <= x sll shift; ELSE null; END IF; END PROCESS; END arch;

Слайд 12





Оператор сдвига sll
Описание слайда:
Оператор сдвига sll

Слайд 13





Оператор сдвига srl
Описание слайда:
Оператор сдвига srl

Слайд 14





Операторы сдвига sla и sra 
sla (shift left arithmetic) - сдвиг левый арифметический. Освобождающиеся элементы заполняютcя значениями крайнего правого элемента массива.
sra (shift right arithmetic) - сдвиг правый арифметический. Освобождающиеcя элементы заполняютcя значениями крайнеrо левого элемента массива.
Описание слайда:
Операторы сдвига sla и sra sla (shift left arithmetic) - сдвиг левый арифметический. Освобождающиеся элементы заполняютcя значениями крайнего правого элемента массива. sra (shift right arithmetic) - сдвиг правый арифметический. Освобождающиеcя элементы заполняютcя значениями крайнеrо левого элемента массива.

Слайд 15





Оператор сдвига sla
Описание слайда:
Оператор сдвига sla

Слайд 16





Оператор сдвига sra
Описание слайда:
Оператор сдвига sra

Слайд 17





Операторы сдвига rol и ror
rol (rotate left logical) - сдвиг циклический левый логический.
ror (rotate right logical) - сдвиг циклический правый логический.
Операторы сдвига имеют одинаковое старшинство c мультипликативными операторами.
Описание слайда:
Операторы сдвига rol и ror rol (rotate left logical) - сдвиг циклический левый логический. ror (rotate right logical) - сдвиг циклический правый логический. Операторы сдвига имеют одинаковое старшинство c мультипликативными операторами.

Слайд 18





Оператор сдвига rol
Описание слайда:
Оператор сдвига rol

Слайд 19





Оператор сдвига  ror
Описание слайда:
Оператор сдвига ror

Слайд 20





Аддитивные операторы
Определение: 
adding_operator ::=  + | - | &
Аддитивные операторы предназначены для выполнения операций суммирования, вычитания и конкатенации.
Операторы суммирования и вычитания выполняются для следующих типов данных:
 - std_logic_vector;
 - std_ulogic_vector;
 - integer;
 - signed;
 - unsigned.
Описание слайда:
Аддитивные операторы Определение: adding_operator ::= + | - | & Аддитивные операторы предназначены для выполнения операций суммирования, вычитания и конкатенации. Операторы суммирования и вычитания выполняются для следующих типов данных: - std_logic_vector; - std_ulogic_vector; - integer; - signed; - unsigned.

Слайд 21





Аддитивные операторы
Оператор конкатенации & служит для объединения двух одномерных массивов, одномерного массива и скаляра, двух скаляров. Любой скаляр здеcь рассматривается как одномерный массив, элементы которого индексируются в диапазоне 1 To 1. Скаляры и элементы массивов, участвующие в конкатенации, могут быть любого типа, но эти типы должны совпадать.
B результате конкатенации образуется одномерный массив большей длины. Индекс этого массива непрерывен и значение его левого индекса совпадает со значением левого индекса левого операнда. Конкатенация является удобным средством при описании устройств на регистровом уровне для объединения различных разрядов нескольких регистров в один вектор.
B VHDL-93 допустимо объединять только восходящие (n1 To n2), или нисходящие (nl Downto n2) массивы.
Описание слайда:
Аддитивные операторы Оператор конкатенации & служит для объединения двух одномерных массивов, одномерного массива и скаляра, двух скаляров. Любой скаляр здеcь рассматривается как одномерный массив, элементы которого индексируются в диапазоне 1 To 1. Скаляры и элементы массивов, участвующие в конкатенации, могут быть любого типа, но эти типы должны совпадать. B результате конкатенации образуется одномерный массив большей длины. Индекс этого массива непрерывен и значение его левого индекса совпадает со значением левого индекса левого операнда. Конкатенация является удобным средством при описании устройств на регистровом уровне для объединения различных разрядов нескольких регистров в один вектор. B VHDL-93 допустимо объединять только восходящие (n1 To n2), или нисходящие (nl Downto n2) массивы.

Слайд 22





Мультипликативные операторы
Определение:
multiplying_operator ::=  * | / | mod | rem
Мультипликативные предназначены для выполнения операций умножения, деления, нахождения модуля и остатка от деления.
Функции указанных операторов находятся в пакете ieee.numetic_std.
Оператор *  и / поддерживается для следующих типов данных:
 - std_logic_vector;
 - std_ulogic_vector;
 - integer;
 - signed;
 - unsigned.
Описание слайда:
Мультипликативные операторы Определение: multiplying_operator ::= * | / | mod | rem Мультипликативные предназначены для выполнения операций умножения, деления, нахождения модуля и остатка от деления. Функции указанных операторов находятся в пакете ieee.numetic_std. Оператор * и / поддерживается для следующих типов данных: - std_logic_vector; - std_ulogic_vector; - integer; - signed; - unsigned.

Слайд 23





Операторы * и /
Рассмотрим действие операторов * и /  по описанию цифрового устройства:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL, ieee.numeric.std.all;
ENTITY div IS
    PORT (a  : IN  unsigned (15 downto 0);
--разрядность делимого должна быть больше			
	  b  : IN  unsigned (7 downto 0);
	  c  : OUT unsigned (23 downto 0);
	  d  : OUT unsigned (15 downto 0));
--разрядность произведения необходимо предварительно рассчитать
     END ENTITY div;
ARCHITECTURE arch OF div IS
	BEGIN
		c <= a*b; d <= a/b;
END;
Описание слайда:
Операторы * и / Рассмотрим действие операторов * и / по описанию цифрового устройства: LIBRARY ieee; USE ieee.std_logic_1164.ALL, ieee.numeric.std.all; ENTITY div IS PORT (a : IN unsigned (15 downto 0); --разрядность делимого должна быть больше b : IN unsigned (7 downto 0); c : OUT unsigned (23 downto 0); d : OUT unsigned (15 downto 0)); --разрядность произведения необходимо предварительно рассчитать END ENTITY div; ARCHITECTURE arch OF div IS BEGIN c <= a*b; d <= a/b; END;

Слайд 24





Операторы * и /
Из анализа временных диаграмм следует, что при делении формируется только целая часть результата.
Описание слайда:
Операторы * и / Из анализа временных диаграмм следует, что при делении формируется только целая часть результата.

Слайд 25





Мультипликативные операторы
Для операций остатка от деления  и модуля выполняются следующие условия.
А = (А/B)*B + (А геm B),
где выражение (А геm B) имеет знак А, а абсолютное значение меньше абсолютной величины B.
Для целочисленного деления выполняется тождество: 
(-А)/B = - (А/B) = А/(-B)
Выражение (А mоd B) имеет знак B, абсолютное значение меньше абсолютной величины B, и определяется отношением:
 А = B*целое + (А mоd B).
Описание слайда:
Мультипликативные операторы Для операций остатка от деления и модуля выполняются следующие условия. А = (А/B)*B + (А геm B), где выражение (А геm B) имеет знак А, а абсолютное значение меньше абсолютной величины B. Для целочисленного деления выполняется тождество: (-А)/B = - (А/B) = А/(-B) Выражение (А mоd B) имеет знак B, абсолютное значение меньше абсолютной величины B, и определяется отношением: А = B*целое + (А mоd B).

Слайд 26





Мультипликативные операторы
Рассмотрим значения операторов mod и rem  для различных чисел.
 
5 rem 3 = 2;
5 mod 3 = 2.
 
(–5) rem 3 = –2;
(–5) mod 3 = 1.
 
(–5) rem (–3) = –2;
(–5) mod (–3) = –2.
 
5 rem (–3) = 2;
5 mod (–3) = –1.
Описание слайда:
Мультипликативные операторы Рассмотрим значения операторов mod и rem для различных чисел.   5 rem 3 = 2; 5 mod 3 = 2.   (–5) rem 3 = –2; (–5) mod 3 = 1.   (–5) rem (–3) = –2; (–5) mod (–3) = –2.   5 rem (–3) = 2; 5 mod (–3) = –1.

Слайд 27





Мультипликативные операторы
Действие мультипликативных операторов рассмотрим по описанию и временным диаграммам работы.
LIBRARY ieee;
USE ieee.std_logic_1164.ALL, ieee.NUMERIC_STD.all;
ENTITY vmod IS
	PORT (	a  : IN  unsigned (7 downto 0);
			c,d  : OUT unsigned (7 downto 0));
END ENTITY vmod;
ARCHITECTURE arch OF vmod IS
	BEGIN
		c <= a mod 13;
		d <= a rem  13;
END;
Описание слайда:
Мультипликативные операторы Действие мультипликативных операторов рассмотрим по описанию и временным диаграммам работы. LIBRARY ieee; USE ieee.std_logic_1164.ALL, ieee.NUMERIC_STD.all; ENTITY vmod IS PORT ( a : IN unsigned (7 downto 0); c,d : OUT unsigned (7 downto 0)); END ENTITY vmod; ARCHITECTURE arch OF vmod IS BEGIN c <= a mod 13; d <= a rem 13; END;

Слайд 28





Мультипликативные операторы
Как следует из временных диаграмм значения mod и rem для положительных чисел совпадает.
Описание слайда:
Мультипликативные операторы Как следует из временных диаграмм значения mod и rem для положительных чисел совпадает.

Слайд 29





Знаковые операторы
Определение:
sign ::=  + | -
Знаковые операнды допустимы для операндов, имеющиx скалярные типы. Они не могут следовать непосредственно за мультипликативными, аддитивными операторами или смешанным оператором "экспонента". 
Эти выражения ошибочны:
(А*-B),       (C/+D),        (F**-G),       (H+-I). 
Здеcь необходимы скобки:
А * (- B),         C / (+ D),         F ** (- G),        H + (-I).
Описание слайда:
Знаковые операторы Определение: sign ::= + | - Знаковые операнды допустимы для операндов, имеющиx скалярные типы. Они не могут следовать непосредственно за мультипликативными, аддитивными операторами или смешанным оператором "экспонента". Эти выражения ошибочны: (А*-B), (C/+D), (F**-G), (H+-I). Здеcь необходимы скобки: А * (- B), C / (+ D), F ** (- G), H + (-I).

Слайд 30





Cмешанные операторы
Определение:
miscellaneous_operator ::=  ** | abs
Смешанные операнды предназначены для возведения числа в степень или получения абсолютного значения.
Описание слайда:
Cмешанные операторы Определение: miscellaneous_operator ::= ** | abs Смешанные операнды предназначены для возведения числа в степень или получения абсолютного значения.

Слайд 31





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

Слайд 32





Смешанные операторы
 library ieee;
 use ieee.std_logic_1164.all, ieee.std_logic_unsigned.all;
 entity stepen is
      generic (const :integer := 3);
      port( a, b :in  std_logic_vector (2**(const+2) downto 0); 
	c,d,q	 :out std_logic_vector (2**(const+2) downto 0));
  end entity;
  architecture rtl of stepen is  
      constant koef :integer := 2**const;
    begin
		c <= koef + a;  d <= a+b+7**const;
		-- q <= 6** koef;	q<= const**koef;	q<= a**const;
		-- q<= const**4;  q<= 5**4;
    end architecture;
Описание слайда:
Смешанные операторы library ieee; use ieee.std_logic_1164.all, ieee.std_logic_unsigned.all; entity stepen is generic (const :integer := 3); port( a, b :in std_logic_vector (2**(const+2) downto 0); c,d,q :out std_logic_vector (2**(const+2) downto 0)); end entity; architecture rtl of stepen is constant koef :integer := 2**const; begin c <= koef + a; d <= a+b+7**const; -- q <= 6** koef; q<= const**koef; q<= a**const; -- q<= const**4; q<= 5**4; end architecture;

Слайд 33





Смешанные операторы
Описание слайда:
Смешанные операторы

Слайд 34





 Операнды
Определение.
primary ::= 
 name | literal | aggregate | function_call |
 qualified_expression | type_conversion | allocator | (expression)
Перечисленные выше операнды могут участвовать в выражениях.
Описание слайда:
Операнды Определение. primary ::=  name | literal | aggregate | function_call |  qualified_expression | type_conversion | allocator | (expression) Перечисленные выше операнды могут участвовать в выражениях.

Слайд 35





Операнд  Name
В качестве операнда используют шесть форм имен, которые были рассмотрены:
name ::=   
 	simple_name		-- простое имя;
 	| operator_symbol	-- символ оператора;
 	| selected_name	-- селективное имя;
 	| indexed_name	-- индексное имя;
 	| slice_name 		-- вырезка имени;
 	| attribute_name	-- имя атрибута.
Описание слайда:
Операнд Name В качестве операнда используют шесть форм имен, которые были рассмотрены: name ::=   simple_name -- простое имя;   | operator_symbol -- символ оператора;   | selected_name -- селективное имя;   | indexed_name -- индексное имя;   | slice_name -- вырезка имени;   | attribute_name -- имя атрибута.

Слайд 36





Операнд Literal
Литерал служит для задания значений объектов языка. В VHDL имеется пять типов литералов.
literal ::= 
numeric_ literal  	-- числа (целые и реальные): 0, 2Е4, 3.14 ns;
|enumeration_literal	-- перечисления: '0', ram;
| string_ literal	-- строки (строковый литерал): "are not";
| bit_string_literal	-- битовые строки: b"111_111»;
| null		-- значение указателя (access_type) в никуда.
Числа могут быть представлены в виде абстрактных и физических литералов.
numeric_literal ::=
	abstract_literal
	| physical_literal
Описание слайда:
Операнд Literal Литерал служит для задания значений объектов языка. В VHDL имеется пять типов литералов. literal ::= numeric_ literal -- числа (целые и реальные): 0, 2Е4, 3.14 ns; |enumeration_literal -- перечисления: '0', ram; | string_ literal -- строки (строковый литерал): "are not"; | bit_string_literal -- битовые строки: b"111_111»; | null -- значение указателя (access_type) в никуда. Числа могут быть представлены в виде абстрактных и физических литералов. numeric_literal ::= abstract_literal | physical_literal

Слайд 37





Операнд Literal
Литералы перечисления -  это литералы, применяемые для описания  типа данных - перечисления. В качестве этих литералов применяют идентификаторы и символьные литералы.
Строковые литералы и битовые строки были рассмотрены в  разделе “Лексемы”.
Литерал null  представляет собой нулевое значение  для любого типа.
Описание слайда:
Операнд Literal Литералы перечисления - это литералы, применяемые для описания типа данных - перечисления. В качестве этих литералов применяют идентификаторы и символьные литералы. Строковые литералы и битовые строки были рассмотрены в разделе “Лексемы”. Литерал null представляет собой нулевое значение для любого типа.

Слайд 38





Операнд Аggrеgаtе
Агрегат - это базовая операция, объединяющая одно или несколько значений в массив или запись.
Элементы этого объединения связываются (ассоциируются) при вычислениях (например, при присвоении агрегата одномерному массиву) позиционно (в этом случае 
конструкция  choices  => отсутствует),  или поименованно.
aggregate ::= (element_association { , element_association })
element_association ::= [choices =>] expression
choices ::= choice { | choice }
choice ::=
simple_expression  
| discrete_range
| element_simрlе_nаmе
| оthеrs.
Описание слайда:
Операнд Аggrеgаtе Агрегат - это базовая операция, объединяющая одно или несколько значений в массив или запись. Элементы этого объединения связываются (ассоциируются) при вычислениях (например, при присвоении агрегата одномерному массиву) позиционно (в этом случае конструкция choices => отсутствует), или поименованно. aggregate ::= (element_association { , element_association }) element_association ::= [choices =>] expression choices ::= choice { | choice } choice ::= simple_expression | discrete_range | element_simрlе_nаmе | оthеrs.

Слайд 39





Операнд Аggrеgаtе
При именованном присвоении cначала формируется цель - множество элементов массива, затем, после символов "=>" - то, что надо записать в эту цель, и далее, через разделитель ", ", формируетcя следующая цель.
Позиционное связывание в агрегатах должно предшествовать поименованным ассоциациям. Поименованная ассоциация "Others =>" может быть использована (при необходимости) только в конце агрегата. Допустимо только однократное связывание. Если агрегат имеет единственное значение, то оно должно быть связано поименованно.
Описание слайда:
Операнд Аggrеgаtе При именованном присвоении cначала формируется цель - множество элементов массива, затем, после символов "=>" - то, что надо записать в эту цель, и далее, через разделитель ", ", формируетcя следующая цель. Позиционное связывание в агрегатах должно предшествовать поименованным ассоциациям. Поименованная ассоциация "Others =>" может быть использована (при необходимости) только в конце агрегата. Допустимо только однократное связывание. Если агрегат имеет единственное значение, то оно должно быть связано поименованно.

Слайд 40





Операнд Аggrеgаtе
Опишем, для примера, присвоение значений переменной:
VARIABLE q : BIT_VECTOR (0 TO 3).
Возможно 7 форм  присвоения  значений с помощью агрегатов:
1. позиционная 		q := ('0',  '1',   '1',  '0');
2. именованная 		q := (0=>'0', 2=> '1',  1=> '1', 3=> '0');
3. смешанная		q := ('0',  '1',  1=> '1', 3=> '0');
4. с использованием вырезки имен 
				q := (0 =>'0',  1 TO 2 =>'1', 3=> '0');
Описание слайда:
Операнд Аggrеgаtе Опишем, для примера, присвоение значений переменной: VARIABLE q : BIT_VECTOR (0 TO 3). Возможно 7 форм присвоения значений с помощью агрегатов: 1. позиционная q := ('0', '1', '1', '0'); 2. именованная q := (0=>'0', 2=> '1', 1=> '1', 3=> '0'); 3. смешанная q := ('0', '1', 1=> '1', 3=> '0'); 4. с использованием вырезки имен q := (0 =>'0', 1 TO 2 =>'1', 3=> '0');

Слайд 41





Операнд Аggrеgаtе
5. с использованием зарезервированного слова OTHERS (слово OTHERS можно использовать в случае применения только позиционной или именованной ассоциации)
			q := (1 TO 2 =>'1', OTHERS => '0');
			q := ('0', '1', OTHERS => '0');
6. с применением только слова OTHERS, если необходимо всем разрядам установить одно и то же значение
			q := (OTHERS => '0');
			q := (OTHERS => '1');
7. с перечислением разрядов, которым следует установить одинаковые значения. Перечисляемые разряды отделяют друг от друга вертикальной чертой
			q := (0|3  =>'0', 1|2 => '1').
Описание слайда:
Операнд Аggrеgаtе 5. с использованием зарезервированного слова OTHERS (слово OTHERS можно использовать в случае применения только позиционной или именованной ассоциации) q := (1 TO 2 =>'1', OTHERS => '0'); q := ('0', '1', OTHERS => '0'); 6. с применением только слова OTHERS, если необходимо всем разрядам установить одно и то же значение q := (OTHERS => '0'); q := (OTHERS => '1'); 7. с перечислением разрядов, которым следует установить одинаковые значения. Перечисляемые разряды отделяют друг от друга вертикальной чертой q := (0|3 =>'0', 1|2 => '1').

Слайд 42





 Операнд Function Call
Вызов  функции приводит к  выполнению тела функции. Он определяет имя функции, которая будет вызвана, и  фактические параметры, которые должны быть связаны с формальными параметрами функции. В результате выполнения функции формируется значение с типом, определенным при объявлении функции.
function_call:: =
function_name [(actual_parameter_part)]
Каждому формальному параметру должен соответствовать фактический параметр.
Описание слайда:
Операнд Function Call Вызов функции приводит к выполнению тела функции. Он определяет имя функции, которая будет вызвана, и фактические параметры, которые должны быть связаны с формальными параметрами функции. В результате выполнения функции формируется значение с типом, определенным при объявлении функции. function_call:: = function_name [(actual_parameter_part)] Каждому формальному параметру должен соответствовать фактический параметр.

Слайд 43





Операнд Qualified Expression
Позволяет однозначно указывать тип или подтип операнда.
qualified_expression ::=  type_mark'( expression)| type_mark'aggregate
Необходимость иcпользования квалифицирующего выражения возникает при наличии перегруженных (overload) операторов, функций или операндов, то есть когда, например, существуют одинаково именованные операторы, работающие c различными типами операндов и, естественно, имеющие различное функционирование.
Описание слайда:
Операнд Qualified Expression Позволяет однозначно указывать тип или подтип операнда. qualified_expression ::= type_mark'( expression)| type_mark'aggregate Необходимость иcпользования квалифицирующего выражения возникает при наличии перегруженных (overload) операторов, функций или операндов, то есть когда, например, существуют одинаково именованные операторы, работающие c различными типами операндов и, естественно, имеющие различное функционирование.

Слайд 44





Операнд Type Conversion
Kонверcия типа иcпользyетcя для перевода одного типа данных в другой тип данных.
type_conversion ::=  tyре_mаrk ( еxрrеssiоn )
Описание слайда:
Операнд Type Conversion Kонверcия типа иcпользyетcя для перевода одного типа данных в другой тип данных. type_conversion ::= tyре_mаrk ( еxрrеssiоn )

Слайд 45





Операнд Allocator
Предназначен для создания анонимных объектов, доступ к которым осуществляется через указатели (access) на эти объекты.
allocator ::= new subtype_indication | new qualified_expression
Иcпользование динамически размещаемыx объектов удобно не только при задании необходимого объема аппаратуры (ROM,  RAM и пр.), но и при моделировании такиx структур, как FIFO, LIFO. Сами динамически размещаемые объекты, естественно, должны быть детерминированных размеров.
Описание слайда:
Операнд Allocator Предназначен для создания анонимных объектов, доступ к которым осуществляется через указатели (access) на эти объекты. allocator ::= new subtype_indication | new qualified_expression Иcпользование динамически размещаемыx объектов удобно не только при задании необходимого объема аппаратуры (ROM, RAM и пр.), но и при моделировании такиx структур, как FIFO, LIFO. Сами динамически размещаемые объекты, естественно, должны быть детерминированных размеров.

Слайд 46





Cтатичеcкое выражение
Для вычисления значений констант,  параметров настройки и начальных значений всех других объектов языка используются выражения, которые являются статическими (Static Expression), то есть вычисляются единожды в процессе выполнения программы. Кроме этого, статические выражения участвуют при определении типов.
Описание слайда:
Cтатичеcкое выражение Для вычисления значений констант, параметров настройки и начальных значений всех других объектов языка используются выражения, которые являются статическими (Static Expression), то есть вычисляются единожды в процессе выполнения программы. Кроме этого, статические выражения участвуют при определении типов.



Похожие презентации
Mypresentation.ru
Загрузить презентацию