ЛЕКЦИЯ 16 06.06.07 Язык описания аппаратуры VHDL.

Презентация:



Advertisements
Похожие презентации
ЛЕКЦИЯ Экскурс в язык описания аппаратуры VHDL.
Advertisements

ЛЕКЦИЯ Экскурс в язык описания аппаратуры VHDL.
ЛЕКЦИЯ Язык моделирования PML. Язык поведенческого моделирования PML На этом языке можно создавать функциональные и поведенческие модели цифровых.
ОСНОВЫ ЯЗЫКА VHDL 1. Структурное представление проекта 2 Язык VHDL предоставляет возможность структуризации описания так называемые структурные архитектурные.
Язык Verilog, основные особенности. Сравнение с языком VHDL. Модель логического элемента на Verilog. ЛЕКЦИЯ N
ЯЗЫКИ ОПИСАНИЯ ДИСКРЕТНЫХ УСТРОЙСТВ 1. HDL-программа как модель проектируемого устройства 2 Языковое описание устройства - это текст, сохраняемый в одном.
ОСНОВЫ ЯЗЫКА VHDL 1. Описание цифровых автоматов 2 Общие сведения об автоматах Устройства, содержащие элементы памяти (ЭП), имеют некоторое внутреннее.
ОСНОВЫ ЯЗЫКА VHDL 1. Описание типовых дискретных устройств 2 Комбинационные логические схемы Представление функции в форме бинарного дерева решений основано.
ЛЕКЦИЯ Тема 3. Языки и системы моделирования Языки логического моделирования (ЯЛМ) Отличия ЯЛМ от языков программирования Краткий обзор ЯЛМ.
2007Архитектура ЭВМ1 VII. Элементы и узлы ЭВМ Триггеры Одноступенчатый асинхронный RS-триггер Триггер – логический элемент, который может находиться в.
Основы языка VHDL Московский Государственный Университет Приборостроения и Информатики.
ЛЕКЦИЯ Языки описания аппаратуры. Детерминистский и системный подходы к описанию объекта Мы уже знаем (лекция 2), что существуют два подхода.
Магистрант ММФ БГУ Колб А. И. Научный руководитель: к. т. н., доцент, доцент кафедры УМФ Степанец Владимир Яковлевич, Научный руководитель: к. т. н., доцент,
Date: Filename:SCL_3e.1 SIMATIC S7 Siemens AG All rights reserved. Создание и вызов блоков.
Лекция 4 Программирование на Паскале. Элементы языка Турбо Паскаль 7.0. Типы данных. Управляющие конструкции.
Реклама дисциплины «Моделирование» Единство и борьба противоположностей Единство и борьба противоположностей Материя первична, сознание вторично Материя.
СОБОЛЕВ Сергей Сергеевич ЗОЛЬНИКОВ Владимир Константинович КРЮКОВ Валерий Петрович СОБОЛЕВ Сергей Сергеевич ЗОЛЬНИКОВ Владимир Константинович КРЮКОВ Валерий.
ЛЕКЦИЯ Тема 3. Языки и системы моделирования Языки логического моделирования (ЯЛМ) Отличия ЯЛМ от языков программирования Языки описания аппаратуры.
ПРОЕКТИРОВАНИЕРучноеАвтоматическое Автоматизированное (САПР) ЧеловекМашинаЧеловек + Машина.
ЛЕКЦИЯ 3 ( ) Тема 1. Общие вопросы теории моделирования Понятия модели и моделирования Классификация моделей Аксиомы теории моделирования.
Транксрипт:

ЛЕКЦИЯ Язык описания аппаратуры VHDL

Язык VHDL. Почему он так называется? В шутку язык VHDL называют Very Huge Design Language – что переводится как Гигантский язык проектирования Поэтому военное ведомство США решилось выступить в роли спонсора при создании такого языка. Он получил название VHDL. В 1987 году появилась окончательная версия этого языка - VHDL87 В начале 80-х годов прошлого столетия военное ведомство США работало над программой VHSIC – создания сверхскоростных ИМС. Аббревиатура VHSIC расшифровывается как Very-High-Speed Integrated Circuit - сверхскоростные интегральные схемы. При их проектировании обнаружилась необходимость точного учёта временных параметров ИМС, но подходящего языка для моделирования таких схем не было. Язык VHDL – от слов VHSIC HDL (Hardware Description Language)

Язык VHDL используется во многих современных САПР, например OrCAD 9.1, Active-HDL 7.1, Xilinx ISE 6.2 Язык VHDL применяется для: документирования проектов; верификации проектов путём моделирования; описания внешних воздействий (разработка тестов); высокоуровневого синтеза цифровой аппаратуры. Проектирование на VHDL не зависит от конкретной технологии реализации проекта VHDL имеет большое сходство с языком Ада и Паскаль. Verilog имеет своим началом язык Си. VHDL не имеет механизма наследования Скачок популярности и признания полезности VHDL произошёл с появлением коммерческих инструментов синтеза.

Особенности языка VHDL Любой VHDL-объект содержит две части: Интерфейс (сущность) – Entity (Port Declaration), который описывает взаимосвязи между объектом проекта и средой его «обитания». Это внешнее описание объекта. Интерфейс определяет «границы» модели, выделяя объект из окружения. Архитектура (архитектурное тело) – Architecture, которая описывает поведение компонента с функциональной или структурной точки зрения. Это внутреннее описание объекта. Может быть несколько архитектур.

Модель логического элемента AND2 (VHDL87) Тип bit, используемый в первой редакции языка VHDL87, определён как type bit is ('0', '1');

Модель логического элемента AND2 (VHDL93) Алфавит сигнала типа std_logic: (U,X,0,1,Z,W,L,H,-) Девять значений

Модель логического элемента AND2 (VHDL93) Версия VHDL93 позволяет без всяких ухищрений имитировать высокоомный выход ('Z'), открытый коллектор ('H'), шинные структуры и прочие особенности реальной цифровой аппаратуры. Например, на время формирования фронта (среза) на выходе можно задать неизвестное значение X

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

Модель логического элемента AND2 (VHDL93) с разными задержками (начало) library IEEE;-- с помощью ключевых слов Library и Use use IEEE.STD_LOGIC_1164.all;-- подключаем нужный пакет, в котором -- определён девятизначный алфавит entity and2_tpLH_tpHL is generic(tpLH : time := 15ns; tpHL : time := 20ns); port( A : in STD_LOGIC; B : in STD_LOGIC; Y : out STD_LOGIC :='0' -- нужна начальная инициализация --Y : inout STD_LOGIC :='0' -- работает без Y'driving_value --Y : buffer STD_LOGIC :='0' –работает без Y'driving_value ); end and2_tpLH_tpHL;

Модель логического элемента AND2 (VHDL93) с разными задержками (окончание) architecture and2_tpLH_tpHL of and2_tpLH_tpHL is begin PROCESS (A,B) variable Y_INT : std_logic; begin Y_INT:=A and B; -- Вычисляем выход без задержки if Y_INT='1' and Y'driving_value ='0' then --работает с Y'driving_value Y

Результаты моделирования элемента AND2 (VHDL93) с разными задержками

Модель генератора прямоугольных импульсов с периодом 200 ns (начало) library IEEE; use IEEE.STD_LOGIC_1164.all; entity gener is port (Y : out STD_LOGIC); end gener; architecture gener of gener is constant stop_gen : time :=1100ns; -- задаём время останова signal done : std_logic; -- сигнал окончания работы begin

Модель генератора прямоугольных импульсов с периодом 200 ns (окончание) GEN_PR: process -- моделирует работу генератора begin if NOW=0ns then Y

Инерционная и транспортная задержки В языке VHDL в оператор назначения

Модель элемента AND2 с инерционной и транспортной задержками. Резекция library IEEE; use IEEE.STD_LOGIC_1164.all; entity and2_I_T is port( A : in STD_LOGIC; B : in STD_LOGIC; Y_I, Y_T, Y_I_R : out STD_LOGIC); end and2_I_T; architecture and2_I_T of and2_I_T is begin Y_I

Результаты моделирования элемента AND2 с инерционной и транспортной задержками Порог резекции должен быть меньше задержки элемента

Отыскание «иголок» (glitch) library IEEE; use IEEE.STD_LOGIC_1164.all; entity and2_glitch is port( A : in STD_LOGIC; B : in STD_LOGIC; Y : out STD_LOGIC ); end and2_glitch; architecture and2_glitch of and2_glitch is signal Y_I, Y_T : std_logic; begin Y_I

Отыскание «иголок» (glitch). Результаты моделирования

Контроль минимальной длительности импульса library IEEE; use IEEE.STD_LOGIC_1164.all; entity buffer_my is port (A : in STD_LOGIC; Y : out STD_LOGIC); end buffer_my; architecture model of buffer_my is begin PROCESS (A) variable t_event : time :=0ns; --переменная t_event инициализируется нулём begin if now > 8ns then assert (now - t_event >= 8ns) report violation minimum A" severity ERROR; end if; t_event:=now; end process; Y

Контроль минимальной длительности импульса. Результаты моделирования

Контроль времени предустановки на входе D-триггера library IEEE; use IEEE.STD_LOGIC_1164.all; entity DFF_setup is port (D, C : in STD_LOGIC; Q : out STD_LOGIC); end DFF_setup; architecture DFF_setup of DFF_setup is begin process (C) begin if C='1' and C'EVENT then if (D'last_event>=10ns) then Q

Контроль времени предустановки на входе D-триггера. Результаты моделирования

Модель сумматора add_4 (начало) library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.all;-- добавил для арифм. операций entity add_4 is port( CI : in STD_LOGIC; A : in STD_LOGIC_VECTOR(3 downto 0); B : in STD_LOGIC_VECTOR(3 downto 0); CO : out STD_LOGIC; S : out STD_LOGIC_VECTOR(3 downto 0) ); end add_4;

Модель сумматора add_4 (окончание) architecture add_4 of add_4 is begin process (A, B, CI) variable TEMP_RESULT : std_logic_vector(4 downto 0); begin TEMP_RESULT:=('0' & A) + ('0' & B) + CI;-- конкатенация --S

Результаты моделирования сумматора add_4

Модель регистра reg_4 (начало) library IEEE; use IEEE.STD_LOGIC_1164.all; entity reg_4 is port ( DL : in STD_LOGIC; C : in STD_LOGIC; R : in STD_LOGIC; Q : out STD_LOGIC_VECTOR(3 downto 0) ); end reg_4;

Модель регистра reg_4 (окончание) architecture reg_4 of reg_4 is signal TEMP_Q : std_logic_vector(3 downto 0); begin process (C, R) begin if R = '1' then TEMP_Q '0'); -- сброс elsif rising_edge (C) then TEMP_Q

Результаты моделирования регистра reg_4

Модель счётчика count_M9_IP (начало) library IEEE; use IEEE.std_logic_1164.all; entity count_M9_IP is port ( C : in std_logic; R : in std_logic; Q : out std_logic_vector (3 downto 0) ); end entity;

Модель счётчика count_M9_IP (окончание) library IEEE; use IEEE.std_logic_unsigned.all; architecture count_M9_IP of count_M9_IP is signal TEMP_Q : std_logic_vector(3 downto 0); begin process (C, R) begin if R = '1' then TEMP_Q '0'); elsif rising_edge (C) then if (TEMP_Q = "1000") then TEMP_Q '0'); else TEMP_Q

Результаты моделирования счётчика count_M9_IP

Особенности языка VHDL Первая особенность – тяжеловесность В языке определены 97 ключевых слов (стандарт VHDL93) Для сравнения в языке PML их всего 11 В языке Verilog - 73

Особенности языка PML Вторая особенность – многозначный алфавит Алфавит сигнала типа std_logic: (U,X,0,1,Z,W,L,H,-) Девять значений VHDL93 VHDL87 Двузначный алфавит (исключение) type bit is ('0', '1'); Кроме того, пакет std_logic_1164 включает подтип X01Z с четырёхзначным алфавитом (как в языке Verilog) Имеются функции преобразования 9-значного алфавита в 4- значный и наоборот. Более того, пользователь может самостоятельно определить рабочий алфавит сигналов и число различных значений в нём

Особенности языка VHDL В языке PML определены четыре значения логической силы В языке Verilog – восемь значений Третья особенность – логическая сила в языке VHDL на определена Нагрузочную способность в языке VHDL можно описать только косвенным образом: сильным (Forcing) или слабым (Weak) сигналом Forcing / Weak X / W 0 / L 1 / H Z – High Impedance

Особенности языка VHDL Язык VHDL позволяет непосредственно запрограммировать временную задержку, с которой входной сигнал передаётся на выход. Четвёртая особенность – имитация задержек Y_I

Особенности языка VHDL Пятая особенность – стили описания Язык VHDL поддерживает все стили описание объекта Функциональное (аналитическое или алгоритмическое) Потоковое Структурное Смешанное

Стили описания проекта Да Library IEEE; Use IEEE.std_logic_1164.all; entity MUX2 is port ( D0, D1, A : in std_logic; Y : : out std_logic); end MUX2; architecture FUNC of MUX2 is -- аналитическое begin -- описание функции объекта Y

Стили описания проекта architecture BEHAV of MUX2 is begin process (D0, D1, A) -- алгоритмическое begin-- описание функции объекта if A='0' then Y

Стили описания проекта architecture STRUCT of MUX2 is -- структурное описание объекта component INVR -- объявления компонентов port (IN1:in std_logic;OUT1:out std_logic); end component; component AND2 generic (TPLH : time:=20ns; TPHL : time:=22ns); port (IN1, IN2:in std_logic; OUT1: out std_logic); end component; component OR2 port (IN1, IN2:in std_logic; OUT1: out std_logic); end component; signal F1, F2, F3 : std_logic; --объявление внутренних сигналов

Стили описания проекта begin DD1 : AND2generic map (10ns,12ns) --карта настройки задержек port map (IN1=>D0, IN2=>F1, OUT1=>F2); -- карта порта DD2 : OR2port map (IN1=>F2, IN2=>F3, OUT1=>Y); DD3 : AND2generic map (TPHL=>15ns,TPLH=>11ns) port map (D1, A, F3); DD4 : INVRport map (IN1=>A, OUT1=>F1); end STRUCT; Поимённое связывание Позиционное связывание: задержек, портов и цепей

Особенности языка VHDL Шестая особенность – сигналы и шины

Особенности языка PML Восьмая особенность – операция конкатенации Отдельные узлы можно объединять, "складывать" в шину с помощью операции конкатенации, называемой иначе [cat-узел]. Слово Cat происходит от Catenation - сцепление. Таким образом, с помощью cat-узла легко наполнить шину конкретным содержанием. Выражения в cat-узле недопустимы Q_BUS = [~D4, D3&D2, "0", D0]; /* ошибка */ Шина – это внутреннее достояние PML-модели OUTPUT Q1, Q2, Q3, Q4; INPUT D1, D2, D3, D4; LOCAL Q_BUS[4]; /* объявляется четырёхразрядная шина */ { Q_BUS = [D4,D3,D2,D1]; /* значение шины определяется входами D4..D1 */ Q_BUS = ["1","1","0","1"];/* шине присваивается значение 13 */ Q_BUS = [D4,"1","0",D1];/* в cat-узел можно подставлять узлы и */ /* узловые значения "0","1","X" */ }

Особенности языка PML В условных выражениях можно использовать описание переключающегося сигнала (его фронта или среза) Девятая особенность – динамическое управление IF (C == "/") Q = D; /* загрузка в D-триггер данных по фронту C */ Пример Аналогичным образом обозначается срез сигнала: "\" - наклонная черта влево (backslash). Заметим, что в операторе присваивания использование названных символов недопустимо. Компилятор языка PML зафиксирует ошибку, если вы наберёте следующий текст: Q = "/"; /* попытка присвоить сигналу Q значение «фронт» */

Подведём итог. Перечислим кратко особенности языка PML всего одиннадцать ключевых слов трёхзначный алфавит {0, 1, X} логическая сила: S > D > R > Z имитация задержек PCL-список Y = ~(A & B) (20, 22, D, Z) Ключевых слов BEGIN и END нет. Их заменяют фигурные скобки { } Большие и малые буквы не различаются Язык PML поддерживает только поведенческое и потоковое описания Разрешены локальные узлы и шины Шины определены только внутри PML-модели операция конкатенации – cat-узел: Q_BUS = [D4,D3,D2,D1]; динамическое управление IF (C == "/") Q = D;

Подведём итог. Перечислим кратко особенности языка PML В языке PML определены всего три оператора: присваивания, условный и выбора нет операции вычитания шинных сигналов Ключевого слова THEN в условном операторе нет: IF (R=="1") Q = 0000"; Условное выражение всегда заключается в круглые скобки: IF (A_BUS == ["1","1","0","1"]) Q_BUS = "0XD"; Язык PML позволяет суммировать шины разной ширины: S = [A3,A2,A1,A0] + [B3,B2,B1,B0] +[CRI]; Выходные сигналы нельзя собрать в cat-узел: [CRO,S3,S2,S1,S0] = [A3,A2,A1,A0] + [B3,B2,B1,B0] +[CRI]; /* ошибка */