lecture about Very High Speed Integrated Circuit Hardware Description Language lecture about Very High Speed Integrated Circuit Hardware Description Language lecture about Very High Speed Integrated Circuit Hardware Description Language lecture about Very High Speed Integrated Circuit Hardware Description Language
Trang 1Язык VHDL:
описание цифровых устройств
Trang 2Литература, средства проектирования
- любые книги по языку VHDL например:
«Ю.Е Шейнин, Е.А Суворова Проектирование
Цифровых Систем на VHDL»
Trang 3Введение
Trang 4Предпосылки использования HDL
100 10.000 1.000.000
100.000.000
Использованные транзисторы / чел мес
Транзисторы
/СБИС (без эл-тов
памяти)
10 1.000 100.000 10.000.000
1981 1985 1989 1993 1997 2001 2005 2009
ЗаконМура
Продуктивностьразработки
Предел для опытныхинженеров
Кризис продуктивности разработки
Trang 5 Совершенствование элементной базы – создание
функционально законченных и параметризуемых модулей
аппаратно реализованных на кристаллах (умножители,
модули памяти, интерфейстные модули)
Trang 7b
c
Trang 8Этапы процесса проектирования
Разработка алгоритма и архитектуры
«Поведенческое моделирование»
Алгоритм OK?
Синтез
«Временное моделирование»
Синтезировано ОК?
Да
Нет Спецификация
Реализация
Да Временные параметры ОК?
Нет
Нет Да
Внедрение Отладка в составе системы
Trang 11История языка VHDL
Project to Create a Standard Hardware Description
Language Under the Very High Speed Integrated
Circuit (VHSIC) Program
1987 - the Institute of Electrical and Electronics
Engineers (IEEE) Ratified As IEEE Standard 1076
Updated to IEEE 1076 ’93
Trang 13Поведенческое описание
IF shift_left THEN FOR j IN high DOWNTO low LOOP
Trang 14Компонент нижнего уровня 2
Структура модуля
Могут применяться специфические аппаратные элементы
Используется для синтеза и моделирования (Synthesis,
Simulation )
Trang 16Подмножества языка VHDL
Операторы языка
VHDL
синтезируемое подмножество
Синтезируемое описание – описание, допускающее
автоматическую реализацию процедуры синтеза на
заданном элементном базисе
Trang 17Уровни описания проекта
Поведенческий уровень
Уровень регистровых передач
Логический уровень
Физический уровень
Behavioral
RTL
Gate Level
Physical
Trang 19- Функциональное моделирование (Quartus II)
Trang 20Процедура проектирования в рамках пакета QuartusII
Временной анализ
- проверка соответствия созданной СБИС требованиям к быстродействию
Моделирование на вентильном уровне
Тестирование и отладка СБИС в составе системы
(ISP, SignalTap II )
tclk
Trang 21Основы языка VHDL
Trang 24Основные элементы проектирования
Package Declaration
Trang 25Packages & Libraries
Trang 27Встроенная библиотека
Library Std;
– Встроенная библиотека
• Нет необходимости ссылаться на нее в VHDL описании
– Содержит следующие пакеты:
• Standard (задает типы объектов: Bit, Boolean, Integer,
Real, and Time; и все операторы и функции для данных объектов)
• Textio (файловые операторы)
Trang 28Типы, определенные в пакете Standard Package
Trang 29Типы, определенные в пакете Standard Package
– 2 Logic Value System (‘0’, ‘1’)
Signal A_temp : Bit;
– Bit_vector Array of Bits
Signal Temp : Bit_vector(3 Downto 0);
Signal Temp : Bit_vector(0 to 3) ;
Trang 31Рабочая библиотека
Рабочая библиотека - Working Library
Trang 32Entity (объект); Architecture (архитектура)
A B
Mux_out
Символ (интерфейс)
MUX
inst
Trang 34Объявление объекта (Entity)
ENTITY <entity_name> IS
Port Declarations
END <entity_name>; (1076-1987 version)
END ENTITY <entity_name> ; ( 1076-1993 version)
Trang 35END <entity_name>; (1076-1987 version)
END ENTITY <entity_name> ; ( 1076-1993 version)
Trang 36OR4_GATE
Trang 38END <Identifier> ; (1076-1987 Version)
END ARCHITECTURE; (1076-1993 Version)
Trang 39qa <= r or t ;
qb <= qa and not(g xor h);
qa
Trang 40OR4_GATE
Trang 41END <Identifier> ; (1076-1987 Version)
END ARCHITECTURE; (1076-1993 Version)
Trang 42Использование сигнала в архитектуре
ENTITY or4_gate ISPORT (
Trang 44Ожидаемые результаты:
• Отчет, в который включены результаты выполнения всех указанных выше пунктов.
• созданные проекты.
Trang 45Приложение 1
Trang 46Package Standard
This is Package STANDARD as defined in the VHDL 1993 Language Reference Manual
It will be compiled into VHDL library 'std'
'(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', del,c128, c129, c130, c131, c132, c133, c134, c135,c136, c137, c138, c139, c140, c141, c142, c143,c144, c145, c146, c147, c148, c149, c150, c151,c152, c153, c154, c155, c156, c157, c158, c159,
Trang 47Package Standard
the character code for 160 is there (NBSP), but prints as no char
' ', '¡', '¢', '£', '¤', '¥', '¦', '§','¨', '©', 'ª', '«', '¬', '-', '®', '¯','°', '±', '²', '³', '´', 'µ', '¶', '·','¸', '¹', 'º', '»', '¼', '½', '¾', '¿','À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç','È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï','Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×','Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß','à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç','è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï','ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷','ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ' );
type severity_level is (note, warning, error, failure);
type integer is range -2147483647 to 2147483647;
type real is range -1.0E308 to 1.0E308;
type time is range -2147483647 to 2147483647
Trang 48Package Standard
subtype delay_length is time range 0 fs to time'high;
impure function now return delay_length;
subtype natural is integer range 0 to integer'high;
subtype positive is integer range 1 to integer'high;
type string is array (positive range <>) of character;
type bit_vector is array (natural range <>) of bit;
type file_open_kind is (
read_mode, write_mode, append_mode);
type file_open_status is (
open_ok, status_error, name_error, mode_error);
attribute foreign : string;
attribute syn_enum_encoding : string;
attribute syn_enum_encoding of character : type is "sequential";
end standard;
Trang 49Приложение 2
Trang 50– Проект может содержать либо несколько логических файлов, образующих иерархическое описание модуля (при этом один
из логических файлов должен быть файлом верхнего уровня иерархии описаний), либо один логический файл (по
умолчанию являющийся файлом верхнего уровня в иерархии описаний).
Trang 51Quartus II Редактор памяти
Quartus II Текстовый редактор
Quartus II Схемный редактор
Level File
Top-.bdf gdf
Файл верхнего уровня в иерархии описания проекта
- bdf, tdf, vhd, vhdl, v, vlg, edif or edf
Block File
Symbol File
Text File
Text File
.v
Text File
Импортируются из других средств автоматизации
Mentor Graphics, Synopsys,
Synplicity, etc
AHDL
Verilog
.edf edif
Text File
.v, vlg, vhd, vhdl, vqm MegaWizard®
Файлы с описанием проекта
Trang 52Мастер New Project Wizard – запуск
Trang 53К проекту можно добавить файлы следующих типов:
•Файлы нижних уровней в иерархии описания проекта, находящиеся в рабочей папке проекта, можно явным образом не добавлять к проекту Они будут автоматически добавлены компилятором
Trang 54Мастер New Project Wizard - выбор
семейства СБИС для реализации проекта
(demo 1_project_wizard)
2 Укажите режим выбора типа СБИС:
• Автоматический выбор компилятором (NO)
• непосредственное назначение типа СБИС (Yes)
1 Выберите семейство СБИС
Фильтры используются для упрощения поиска конкретной СБИС
Trang 55Мастер New Project Wizard - Подключение дополнительных
средств автоматизации проектирования (EDA Tool )
(demo 1_project_wizard)
Выберите подключаемое средство проектирования (EDA tools ) из списка.
Trang 56Мастер New Project Wizard - окно с результатами
сделанных установок (demo 1_project_wizard)
Проверьте результаты сделанных установок и нажмите кнопку FINISH
Trang 58# The default values for assignments are stored in the file
# ram_assignment_defaults.qdf
# If this file doesn't exist, and for assignments not listed, see file
# assignment_defaults.qdf
# Altera recommends that you do not modify this file This
# file is updated automatically by the Quartus II software
# and any changes you make may be lost or overwritten.
# Project-Wide Assignments
# ========================
set_global_assignment -name ORIGINAL_QUARTUS_VERSION "5.0 SP1.04"
set_global_assignment -name PROJECT_CREATION_TIME_DATE "09:34:31 OCTOBER
09, 2005"
set_global_assignment -name LAST_QUARTUS_VERSION "5.0 SP1.04"
# Analysis & Synthesis Assignments
Trang 59В меню File пакета Quartus II в разделе Recent Projects выберите проект
из списка тех проектов, которые открывали в последнее время.
Trang 60– Creates Archive
Activity Log (.QARLOG)
• Design Files
• Settings Files
Trang 612 Файл - <имя проекта>.qarlog
-файл с отчетом о результатах архивирования
При выполнении команды
Меню: Restore Archived Project
восстанавливается архивированный проект
Trang 63Текстовый ввод описания проекта в
пакете Quartus ® II
Trang 65 VHDL- VHSIC Hardware Description Language
Trang 66Создание текстового описания
File extension is bdf
Для создания схемы используйте иконку
или выполните команду: меню File>New>VHDL file
Trang 68Язык VHDL:
Типы данных
Trang 70Типы данных библиотеки STD
Trang 72x_neqx_more
x_or~0
x_and~0
x_eq
x_neq~0b
a
Trang 74x_neq~0
x_or~0b
x_andx_or
x_more
x_neq
x_eqa
Trang 77– SIGNAL bit_vector_4 : BIT_VECTOR ( 3 DOWNTO 0);
– SIGNAL bit_vector_UC : BIT_VECTOR ;
Trang 78B[3 0] OUT
EQUAL
x_and~3x_or~0
x_or~2x_or~3
x_eqx_and[3 0]
a,b : IN BIT_VECTOR (3 downto 0);
x_and : OUT BIT_VECTOR (3 downto 0);
x_or : OUT BIT_VECTOR (3 downto 0);
x_eq : OUT BOOLEAN );
Trang 79Задание собственных типов
• TYPE my_bit_vector1 IS ARRAY (1 TO 8) of bit;
• TYPE my_bit_vector2 IS ARRAY (7 DOWNTO 0) of bit;
• TYPE my_bit_vector3 IS ARRAY (-3 TO 4) of bit;
• TYPE my_bool_vector1 IS ARRAY (1 TO 8) of BOOLEAN;
• TYPE my_ bool _vector2 IS ARRAY (7 DOWNTO 0) of BOOLEAN;
• TYPE my_ bool _vector3 IS ARRAY (-3 TO 4) of BOOLEAN;
Trang 80x_and : OUT SHORT_BIT_VECTOR;
x_eq : OUT BOOLEAN );
x_eq
a[7 0]
b[7 0]
x_and[7 0]
Trang 81x_and : OUT SHORT_BIT_VECTOR;
x_eq : OUT BOOLEAN );
x_and~5 x_and~6 x_and~7
Trang 82x_and : OUT SHORT_BOOL_VECTOR;
x_eq : OUT BOOLEAN );
x_and~5 x_and~6 x_and~7
Trang 83• созданный проект.
Trang 84Использование элементов массива
Отдельного элемента – по индексу, указанному в круглых скобках:
– SIGNAL a, b : BIT_VECTOR (3 DOWNTO 0);
– SIGNAL z,x,y : BIT;
– a (3)<= z;
– a (0)<= ‘0’;
– a(2)<=b(3);
Части массива (slice)
– SIGNAL a : BIT_VECTOR (3 DOWNTO 0);
– SIGNAL b : BIT_VECTOR (0 DOWNTO 5);
– SIGNAL z,x,y : BIT;
– a (3 downto 2)<=b(0 to 1);
– a (1 downto 0)<= “00”;
Конкатенация (concatenation):
– SIGNAL a : BIT_VECTOR (3 DOWNTO 0);
– SIGNAL b : BIT_VECTOR (0 DOWNTO 5);
– SIGNAL z,x,y : BIT;
– a <= z & x & y & b(1);
– a (1 downto 0)<= z & y;
Агрегация
– SIGNAL a : BIT_VECTOR (3 DOWNTO 0);
– SIGNAL b : BIT_VECTOR (0 DOWNTO 5);
– SIGNAL z,x,y : BIT;
– a <= (z, x, y, b(1));
– a (1 downto 0)<= (z, y);
Trang 851 © 2007 Санкт-Петербург Антонов А.П.
Обращение к элементам массива
Trang 862 © 2007 Санкт-Петербург Антонов А.П.
Обращение к отдельному элементу массива
n К отдельному элементу – по индексу, указанному в круглых скобках ENTITY array_index IS
PORT (
a : IN BIT_VECTOR (4 downto 0) ;
x_c : OUT BIT_VECTOR (1 downto 0);
x_d : OUT BIT_VECTOR (1 downto 0)
Trang 87x_ d [0 ] x_ d [1 ]
x_c : OUT BIT_VECTOR (3 downto 0);
x_d : OUT BIT_VECTOR (3 downto 0) );
END array_slice;
ARCHITECTURE rtl OF array_slice IS
BEGIN
Trang 88x_c : OUT BIT_VECTOR (3 downto 0);
x_d : OUT BIT_VECTOR (3 downto 0) );
Error (10484): VHDL error at array_slice.vhd(19): range direction of
object slice must be same as range direction of object
Trang 895 © 2007 Санкт-Петербург Антонов А.П.
Агрегация
Trang 917 © 2007 Санкт-Петербург Антонов А.П.
1
1 0 1 0 1 0 1 0
0 1 0
x_c[0] (opndrn)
x_d[0] (opndrn) x_d[1]
x_d[2] (opndrn) x_d[3]
x_e[0] (opndrn) x_e[1]
x_e[2] (opndrn) x_e[3]
x_c[3]
x_c[2] (opndrn) x_c[1]
Агрегация (пример)
ENTITY array_aggregate IS
PORT (
Trang 92END array_aggregate1;
ARCHITECTURE rtl OF array_aggregate1 IS
BEGIN
x_c (x_d, x_e) - a(1),a(0),a(1),a(0)
END rtl;
Trang 939 © 2007 Санкт-Петербург Антонов А.П.
001
x_e[7]
x_e[1] (opndrn) x_e[2]
x_e <= (a(1), a(0), 2|0 => a(0), 4 downto 3 => '0', others=>'1');
x_e - a(1),a(0), '1', '0', '0', a(0), '1', a(0)
END rtl;
Trang 9410 © 2007 Санкт-Петербург Антонов А.П.
Операторы, применяемые к массивам
Trang 96правого»
Trang 9713 © 2007 Санкт-Петербург Антонов А.П.
0
y
z a[0]
x_c : OUT BIT_VECTOR (1 downto 0);
x_d : OUT BIT_VECTOR (2 downto 0);
x_e : OUT BIT_VECTOR (2 downto 0);
x_f : OUT BIT_VECTOR (1 downto 0);
x_g : OUT BIT_VECTOR (3 downto 0);
x_h : OUT BIT_VECTOR (3 downto 0) );
Trang 9915 © 2007 Санкт-Петербург Антонов А.П.
00
Trang 10117 © 2007 Санкт-Петербург Антонов А.П.
Вращение влево логическое(пример)
ENTITY array_operation2 IS
PORT (
Trang 10319 © 2007 Санкт-Петербург Антонов А.П.
x_ca~0x_ca~1x_ca~2
x_ca~3x_ca~4x_ca~5x_c~1
x_c~2z
xa[2 0]
aa[2 0]
x_ca[2 0]
x_c[2 0]
x_c~0y
);
END array_operation3;
ARCHITECTURE rtl OF array_operation3 IS
BEGIN
x_ca <= (aa or (z, z, z)) and (x & x & x);
x_c <= (z xor y, 0 => a(0) xor x, others=> a(2) xor a(1));
END rtl;
Trang 10521 © 2007 Санкт-Петербург Антонов А.П.
CIN A[2 0]
x y
x_ca~0
x_c~0 z
END array_operation4;
ARCHITECTURE rtl OF array_operation4 IS
BEGIN
x_ca <= (aa or (z, z, z)) <= (x & x & x);
x_c <= (z < y, 0 => a(0) > x, others=> a(2) = a(1));
END rtl;
Trang 10723 © 2007 Санкт-Петербург Антонов А.П.
Тип Integer
Trang 111x_ca : OUT integer range -4096 to 4095;
Trang 112x_ca : OUT integer range 0 to 8;
Trang 114ENTITY integer_5 IS
PORT (
x_ca : OUT integer range 0 to 8;
Trang 115add_sub_cella[0]~66 add_sub_cella[0]~68 add_sub_cella[0]~70 add_sub_cella[0]~72 add_sub_cella[0]~74
add_sub_cella[0]~63 add_sub_cella[0]~65 add_sub_cella[0]~67 add_sub_cella[0]~69 add_sub_cella[0]~71 add_sub_cella[0]~73
add_sub_cella[0]~53 add_sub_cella[0]~55 add_sub_cella[0]~57 add_sub_cella[0]~59 add_sub_cella[0]~61
add_sub_cella[0]~43 add_sub_cella[0]~45 add_sub_cella[0]~47 add_sub_cella[0]~49
DATA A DATA B DATA D
CO M BO
LC ELL (AACC)
DATAA DATAB DATAC DATAD
CB O UT
LCE LL (AAC A)
DATA A DATA B DATA D
CO M BO
LCE LL (AC CC)
DATAA DATAB DATAC DATAD
CB O UT
LCE LL (AAC A)
DATA A DATA B DATA D
CO M BO
DATAB DATAC DATAD
CO M BO
LCE LL (AC CC)
DATAA DATAB DATAC DATAD
CB O UT
LCE LL (AAC A)
DATA A DATA B DATA D
CO M BO
DATAB DATAC DATAD
CO M BO
LCE LL (AC CC)
DATAA DATAB DATAC DATAD
CO M BO
DATAB DATAC DATAD
CO M BO
LCE LL (AC CC)
DATAA DATAB DATAC DATAD
CB O UT
LCE LL (AAC A)
add_sub_5ec:add_sub_5 add_sub_4ec:add_sub_4
Trang 1181' h0
8' h01
x_c~1x_c~0
Trang 120Многомерные массивы
Trang 122– TYPE array_type_name IS ARRAY ( integer DOWNTO integer,
integer DOWNTO integer) OF type_name;
Trang 123a[0][1]
x_a[0][0] (opndrn) x_a[0][1]
x_a[1][0]
x_a[1][1]
x_b[0][0] (opndrn) x_b[0][1]
Trang 124Атрибуты
Trang 126FALSE
Trang 127x_a, x_b : OUT integer range 127 downto 0;
x_c, x_d : OUT integer range 127 downto 0 );
0 0
0 0 0 0 1 1 1 1 1 1 0
0 0 0 0 0 0 1
0 0
Trang 128Левая граница N-го диапапзона индекса А
A’LEFT(1) - - 8 A’LEFT(2) - - 5
A’right(n) Тип правой
границы N-го диапапзона индекса А
Правая граница N-го диапапзона индекса А
A’RIGHT(1) - - 7 A’RIGHT(2) - - 6
A’low(n) Тип N-го
диапапзона индекса А
Нижняя граница N-го диапапзона индекса А
A’LOW(1) - - 7 A’LOW(2) - - 5
A’high(n) Тип N-го
диапапзона индекса А
Верхняя граница N-го диапапзона индекса А
A’HIGH(1) - - 8 A’ HIGH(2) - - 6
Trang 129x_low1 : OUT integer range 0 to 15;
x_low2 : OUT integer range 0 to 15;
x_high1 : OUT integer range 0 to 15;
x_high2 : OUT integer range 0 to 15 );
0
1 1 0
1 1 1 0
0
0 1
0 0
x_low2[0] (opndrn)x_low2[1]
x_low2[2] (opndrn)
x_high1[2]
x_high2[1] (opndrn)x_high2[2] (opndrn)x_high2[3]
x_low1[0] (opndrn)x_low1[1] (opndrn)x_low1[2] (opndrn)x_low1[3]