Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППЛИС_лаб2.doc
Скачиваний:
77
Добавлен:
05.06.2015
Размер:
1.31 Mб
Скачать

Оператор непосредственного обращения к примитиву имеет следующий вид:

<имя вывода>=<имя примитива>(список выводов);

Список выводов может быть организован либо по именам, либо позиционно.

Ниже приведен пример позиционного обращения к примитиву:

SUBDESIGN Prim1

( D_in, Ena : INPUT;

D_tri : OUTPUT;

)

BEGIN

D_tri=TRI(D_in,Ena);

END;

Неиспользуемые выводы примитивов получают значения определенные по умолчанию.

Пример организации обращения к примитиву в случае задания выводов по именам.

SUBDESIGN Prim2

( D_in, Ena, CLK : INPUT;

D_out : OUTPUT;

)

BEGIN

D_tri=DFFE(.CLK=CLK, .D=D_in, .ENA=Ena);

END;

Обращение к примитиву как к переменной.

В этом случае необходимо в разделе переменных (Variable) символическому имени или группе символических имён сопоставить примитив. Объявленная таким образом переменная, а также каждая переменная из объявленной группы переменных будет иметь тот же набор выводов, что и примитив.

Ниже приведен пример обращения к примитиву, как к переменной.

SUBDESIGN Prim3

( En_BUSA, En_BUSB, LoadA, LoadB, CLK : INPUT;

BUS_A, BUS_B : OUTPUT;

)

Variable

RG_BUSA, RG_BUSB : DFFE;

BUF_A, BUF_B: Tri;

BEGIN

(RG_BUSA, RG_BUSB).CLK = CLK;

RG_BUSA.(D,ENA)=(BUS_A, LoadB);

RG_BUSB.(D,ENA)=(BUS_B, LoadA);

BUF_A.(IN.OE) =(RG_BUSA,0,En_BUSA);

BUF_B.(IN.OE) =(RG_BUSB,0,En_BUSB);

BUS_A=BUF_A.OUT;

BUS_B=BUF_B.OUT;

END;

7. Проектирование типовых схем на языке AHDL

7.1. Простые комбинационные схемы

Работу простых комбинационных схем на языке AHDL обычно описывают набором логических выражений. Рассмотрим простую схему, представленную на рис. 7.1.1.

Рис. 7.1.1. Простая комбинационная схема.

Эквивалентное описание этой схемы на языке AHDL выглядит следующим образом.

SUBDESIGN BOOL

(

A0,A1,B : INPUT;

OUT2 : OUTPUT; )

VARIABLE

T1:NODE;

BEGIN

T1=A1 & !A0;

OUT2=T1 # B;

END;

Для упрощения записи логических выражений в схему введена внутренняя переменная T1.

Временная диаграмма работы схемы представлена на рис. 7.1.2.

Рис. 7.1.2. Временная диаграмма работы комбинационной схемы.

7.2. Мультиплексоры

Рассмотрим схему мультиплексора 41, описанную на языке AHDL. Мультиплексор имеет четыре информационных входа In[4..1], два входа адреса Adr[2..1], вход разрешения работы ENA и один выход OUT. Мультиплексор реализован на базе оператора CASE. Описание мультиплексора имеет следующий вид.

SUBDESIGN MUX

( In[4..1], Adr[2..1] :INPUT;

ENA :INPUT;

OUT :OUTPUT; )

BEGIN

IF ENA THEN

CASE ADR[] IS

WHEN 0 => OUT = In[1];

WHEN 1 => OUT = In[2];

WHEN 2 => OUT = In[3];

WHEN 3 => OUT = In[4];

END CASE;

END IF;

END;

Временная диаграмма мультиплексора представлена на рис. 7.2.1

Рис 7.2.1. Временная диаграмма работы мультиплексора.

7.3. Шифраторы

Рассмотрим схему шифратора 84, описанную на языке AHDL. Шифратор имеет восемь информационных входов D[7..0] и четыре выхода Q[3..0]. Шифратор реализован на базе оператора TABLE. Описание шифратора имеет следующий вид.

SUBDESIGN SHIFRAT

( D[7..0] : INPUT;

Q[3..0]: OUTPUT;)

BEGIN

TABLE

D[]=>Q[];

B"00000000" => B"0000";

B"00000001" => B"0001";

B"00000010" => B"0010";

B"00000100" => B"0011";

B"00001000" => B"0100";

B"00010000" => B"0101";

B"00100000" => B"0110";

B"01000000" => B"0111";

B"10000000" => B"1000";

END TABLE;

END;

Ниже, на рис 7.3 приведена временная диаграмма работы шифратора.

Рис. 7.3. Временная диаграмма работы шифратора.

7.4. Демультиплексоры

Рассмотрим схему демультиплексора 18, описанную на языке AHDL. Демультиплексор имеет один информационных вход данных D, три входа, задающие адрес ADR[3..1] и восемь выходов OUT[7..0]. Демультиплексор реализован на базе оператора CASE. Описание шифратора имеет следующий вид.

SUBDESIGN DMUX

( IN, ADR[3..1] :INPUT;

OUT[7..0] :OUTPUT; )

BEGIN

CASE ADR[] IS

WHEN 0 => OUT[0]=IN;

WHEN 1 => OUT[1]=IN;

WHEN 2 => OUT[2]=IN;

WHEN 3 => OUT[3]=IN;

WHEN 4 => OUT[4]=IN;

WHEN 5 => OUT[5]=IN;

WHEN 6 => OUT[6]=IN;

WHEN 7 => OUT[7]=IN;

END CASE;

END;

Ниже, на рис 7.4 приведена временная диаграмма работы демультиплексора.

Рис. 7.4. Временная диаграмма работы демультиплексора.