Изменения

VHDL (VHSIC Hardware Description Language)

212 байтов убрано, 4 года назад
Нет описания правки
{{ Язык программированияInfobox programming language�
| name = VHSIC Hardware Description Language
| semantics paradigm = [[Язык описания аппаратуры]]
|year = 1983
|designer = Министерство обороны США
|extension file_ext = .vhd
|typing = [[строгая]]
|operating system = [[Windows]], [[OS X]], [[Linux]]
'''VHDL''' (''англ. VHSIC (Very high speed integrated circuits) Hardware Description Language'') — язык описания аппаратуры интегральных схем. Язык проектирования VHDL является базовым языком при разработке аппаратуры современных вычислительных систем.
 
== История ==
=== Ограничитель ===
Ограничителем может быть один из следующих символов (входящих в базовый набор): & amp; ' ( ) * + , - . / : < = > |
Ограничителем может быть также один из составных ограничителей, составленный из стоящих рядом специальных символов:
|+ Зарезервированные слова
|-style="vertical-align: top;"
|ABS<br />ACCESS<br />AFTER<br />ALIAS<br />ALL<br />AND<br />ARCHITECTURE<br />ARRAY<br />ASSERT<br />ATTRIBUTE<br />BEGIN<br />BLOCK<br />BODY<br />BUFFER<br />BUS<br />CASE<br />COMPONENT<br />CONFIGURATION<br />CONSTANT<br />DISCONNECT<br />
DOWNTO
||ELSE<br />ELSEIF<br />END<br />ENTITY<br />EXIT<br />FILE<br />FOR<br />FUNCTION<br />GENERATE<br />GENERIC<br />GUARDED<br />IF<br />IMPORT<br />IN<br />INITIALIZE<br />INOUT<br />IS<br />LABEL<br />LIBRARY<br />LINKAGE<br />LOOP<br />
MAP
||MOD<br />NAND<br />NEW<br />NEXT<br />NOR<br />NOT<br />NULL<br />OF<br />ON<br />OPEN<br />OR<br />OTHERS<br />OUT<br />PACKAGE<br />PORT<br />PROCEDURE<br />PROCESS<br />RANGE<br />RECORD<br />REGISTER<br />REM<br />
REPORT
||RETURN<br />SELECT<br />SEVERITY<br />SIGNAL<br />SUBTYPE<br />THEN<br />TO<br />TRANSPORT<br />TYPE<br />UNITS<br />UNTIL<br />USE<br />VARIABLE<br />WAIT<br />WHEN<br />WHILE<br />WITH<br />
XOR
|}
объектов данного типа. Рассмотрим несколько примеров объявлений целых типов.
<sourcesyntaxhighlight>
type Apples is range 0 to 75;
type Oranges is range 0 to 75;
type Word_index is range 31 downto 0;
</sourcesyntaxhighlight>
Рассмотрим, как объявляются объекты, использующие
эти типы.
<sourcesyntaxhighlight>
variable Macintosh: Apples;
variable Seville,Valencia,av_oranges:Oranges := 10;
signal control_selector:Word_Index;</sourcesyntaxhighlight>
Константе должно быть присвоено значение в момент объявления. Аналогично начальное значение может
допустимых для объектов данного типа. Рассмотрим пример объявлений типа с плавающей точкой.
<sourcesyntaxhighlight>type Probability is range 0.0 to 1.0;</sourcesyntaxhighlight>
Диапазоны задаются либо убывающей, либо возрастающей последовательностью значений. Границы
эти типы.
<sourcesyntaxhighlight>
constant alpha_level: Probability:=0.75;
variable beta_level: Probability;</sourcesyntaxhighlight>
Константе должно быть присвоено значение в момент объявления. Аналогично начальное значение может
упорядочения определяется последовательностью их появления в списке. Рассмотрим несколько примеров:
<sourcesyntaxhighlight>
type severity is(OKAY,NOTE,WARNING,ERROR,FAILURE);
type color is(red,orange,yellow,green,blue,indigo,violet);
type bit6 is('U','0','1','F','R','X');
type fuzzy_logic is('0', may be,'1');</sourcesyntaxhighlight>
Нет необходимости писать объявления для следующих перечислительных типов, поскольку они являются
предопределенными:
<sourcesyntaxhighlight>
type character is (NUL,...,'A','B','C',...DEL);
type boolean is (False,True);
type bit is ('0','1');</sourcesyntaxhighlight>
Тип character включает символы для всех печатаемых и непечатаемых элементов кода ASCII, а также для их
OKAY, NOTE и WARNING.
<sourcesyntaxhighlight>
type severity is (OKAY,NOTE,WARNING,ERROR,FAILURE);
subtype go_status is severity range OKAY to WARNING;
signal A: go_status;</sourcesyntaxhighlight>
Объявление подтипа определяет базовый тип <code>base type</code> и ограничение диапазона <code>range constraint</code>. Любое
свободно использоваться в одном выражении.
<sourcesyntaxhighlight>
type Counter is range 0 to 100;
subtype low_range is Counter range 0 to 50;
.
mid_count:=(hi_count + low_count)/2;
</sourcesyntaxhighlight>
Значения hi_count и low_count оба имеют тип Counter. Сначала вычисляется значение выражения. Затем до
us и так далее. Рассмотрим определение типа TIME.
<sourcesyntaxhighlight>
type TIME is range -(2**31-1) to 2**31-1
units
hr = 60 min;
end units;
</sourcesyntaxhighlight>
Диапазон типа TIME определяет диапазон базовых единиц, который может быть точно представлен
массива. Неограниченные массивные типы в следующем списке являются предопределенными:
<sourcesyntaxhighlight>
type bit_vector is array(natural range <>) of bit;
type string is array( positive range <>) of character;</sourcesyntaxhighlight>
Каждый из этих типов имеет одно измерение. Тип bit_vector индексирован значениями предопределенного
Например:
<sourcesyntaxhighlight>
type matrix is array(integer range <>,integer range<>)of real;
type color_accumulator is array(color range <>) of natural;
type transition_delay is array(bit6 range<>,bit6 range<>)of time;
type conversion_vector is array(bit6 range<>) of bit;
</sourcesyntaxhighlight>
Объявление объекта типа массив определяет имя типа и ограничения на индекс (index constraint):
<sourcesyntaxhighlight>
variable square: matrix(1 to 10,1 to 10);
signal A_register,B_register: bit6_data(63 downto 0);
constrant part_id:string := "M00368";
variable bit_equivalence: conversion_vector(bit6);
</sourcesyntaxhighlight
Каждая индексная позиция в объявлении объекта типа массив, который использует неограниченный тип,
качестве сокращения для полного обозначения подтипа:
<sourcesyntaxhighlight>
subtype data_store is bit6_data(63 downto 0);
signal A_reg,B_reg: data_store;
variable X,Y:transform;
signal unit: transform;
</sourcesyntaxhighlight>
Имеется также другая сокращенная запись, которая часто полезна при создании массивов. Рассмотрим
следующую пару объявлений:
<sourcesyntaxhighlight>
type transition_delay is array(bit6 range<>,bit6 range<>)of time;
subtype cmos_transition is transition_delay(bit6,bit6);
</sourcesyntaxhighlight>
Эти объявления можно записать в следующем виде:
<sourcesyntaxhighlight>
type cmos_transition is array(bit6,bit6) of time;
</sourcesyntaxhighlight>
Отличие заключается в том, что неограниченный массивный тип transition_delay никогда явно не
Editors
984
правки