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

Вопрос 23 - Константы (литеральные, именованные, параметры) в языке ahdl. Назначение, синтаксис, применение.

  1. Литеральные (без имени):

    • Логические (GND, gnd, VCC, vcc),

    • Числовые (целые числа без знака):

      • десятичная система счисления (обозначение нет; цифры: 0..9): 525, 4110 ;

      • двоичная система счисления (обозначение B, b; цифры: 0, 1, X): B”1101”, b”1101”, B”10X1”, b”10X1” ;

      • восьмеричная система счисления (обозначение O, o, Q, q; цифры: 0..7): O”125”, o”125”, Q”125”, q”125” ;

      • шестнадцатеричная система счисления (обозначение H, h, X, x; цифры: 0..9, a..f, A..F): H”2A3F”, h”2A3f”, X”2a3f”, x”2a3F” .

    • Строковые: “FLEX10K”, "Controller ""MCS51""" .

  2. Именованные: Constant width = 8;

  3. Параметры: Parameters (width = 8, data = 16);

Вопрос 24 - Простые (порты, узлы, группы) и сложные (примитивы буферов и триггеров, модули) переменные в языке AHDL. Назначение, объявление, синтаксис и область применения простых и сложных переменных.

Порты:

  1. Порты модуля

<port name> : <port type> [ = <default port value> ]

<port type> ::=

INPUT | OUTPUT

| BIDIR | MACHINE INPUT

| MACHINE OUTPUT

<default port value> ::= VCC | GND

  1. Порты модулей нижнего уровня

<instance name>. <port name>

<instance name> ::= <symbolic name>

Примеры:

SUBDESIGN my_modul

(

data[7..0], clk : INPUT;

reset : INPUT= GND;

ce : INPUT= VCC;

out[3..0] : OUTPUT;

InOut : BIDIR;

InSm : MACHINE INPUT;

out_sm : MACHINE OUTPUT;

)

--------------------------------------

dff.clk, 7segment.a, 7segment.i[] ;

my_modul. data[]; my_modul.ce

Узлы:

SUBDESIGN logika

( --интерфейсная секция

a, b : INPUT = GND;

c, d : INPUT = VCC;

a_out, b_out : OUTPUT;

)

VARIABLE -- секция переменных

a_var, b_var : NODE;

--ts[3..0] : TRI_STATE_NODE;

BEGIN --логическая секция

a_var = a # b;

b_var = c !& d;

a_out = a_var !# b_var;

b_out = a_var & b_var;

END;

Группы:

1. Одномерные:

v[3..0], data[7..0];

q[N-1 .. 0]; tr[LOG2(M)-1 .. 0];

Обращение к элементам группы:

data[5]; data5; data[7..4];

Обращение ко всей групе: v[];

2. Двухмерные:

a[2..0][3..0]; tr[N-1..0][M-1..0];

Обращение к элементам группы:

a[1][2], a1_2;

Обращение ко всей групе: a[][];

3. Временные

(v[3..0], a, c) ;

Одномерные и двухмерные группы объявляются в секции переменных:

Variable

v[3..0], data[7..0] : NODE; --объявление одномерной группы узлов

a[2..0][3..0] : NODE; --объявление двухмерной группы узлов

tr[N-1..0] : dff; --объявление одномерной группы триггеров

tr[N-1..0][M-1..0] : dff; -- объявление двухмерной группы триггеров

Временные группы создаются в логической секции по мере необходимости: (v[2..0], a, c) ;

Примитивы буферов:

Примитивы

Прототип

Назначение

1

CARRY

FUNCTION CARRY (in)

RETURNS (out);

Буфер цепочного переноса;

(Только для семейств FLEX6000, FLEX8000, FLEX10K)

2

CASCADE

FUNCTION CASCADE (in)

RETURNS (out);

Буфер каскадного наращивания логической функции; (как и CARRY)

3

EXP

FUNCTION EXP (in)

RETURNS (out);

Буфер логического расширителя;

(Только для семейств MAX5000, MAX7000, MAX9000)

4

GLOBAL

FUNCTION GLOBAL (in)

RETURNS (out);

Буфер глобальной цепи распространения управляющего сигнала;

5

LCELL

FUNCTION LCELL (in)

RETURNS (out);

Неудаляемый буфер размещения логической ячейки;

6

OPNDRV

FUNCTION OPNDRV (in)

RETURNS (out);

Буфер выхода с открытым коллектором;

(Только для семейств MAX7000S и FLEX10K , иначе TRI)

7

SOFT

FUNCTION SOFT (in)

RETURNS (out);

Удаляемый буфер размещения логической ячейки;

8

TRI

FUNCTION TRI (in, oe)

RETURNS (out);

Буфер выхода с Z-состоянием.

Примитивы триггеров:

Примитив

Прототип примитива

1

DFF

FUNCTION DFF(D, CLK, CLRN, PRN)

RETURNS (Q);

2

DFFE

FUNCTION DFFE(D, CLK, CLRN, PRN, ENA)

RETURNS (Q);

3

TFF

FUNCTION TFF(T, CLK, CLRN, PRN)

RETURNS (Q);

4

TFFE

FUNCTION TFFE(T, CLK, CLRN, PRN, ENA)

RETURNS (Q);

5

JKFF

FUNCTION JKFF(J, K, CLK, CLRN, PRN)

RETURNS (Q);

6

JKFFE

FUNCTION JKFFE(J, K, CLK, CLRN, PRN, ENA)

RETURNS (Q);

7

SRFF

FUNCTION SRFF(S, R, CLK, CLRN, PRN)

RETURNS (Q);

8

SRFFE

FUNCTION SRFFE(S, R, CLK, CLRN, PRN, ENA)

RETURNS (Q);

9

LATCH

FUNCTION LATCH(D, ENA)

RETURNS (Q);

Модули:

-- Использование оператора FUNCTION

-- Файл sreg_p1d.tdf должен

-- находиться в текущем каталоге!!

----------------------------------------

FUNCTION sreg_p1d (data, clk, ce, reset)

WITH (width)

RETURNS (out[(width) - (1)..0]);

------------------

SUBDESIGN filter

(

clk, ce, clrn, d : INPUT;

-------

outA[7..0],

outB[11..0] : OUTPUT;

)

BEGIN

--IN LINE REFERENCE

outA[] = sreg_p1d(d, clk, ,! clrn)

WITH (width = 8);

(sign, outB[10..0]) = sreg_p1d(d, clk, , )

WITH (width = 12);

-------

END;

-- Использование оператора INCLUDE

-- Файл sreg_p1d.inc вместе с файлом

-- sreg_p1d.tdf должен находиться в

-- доступной библиотеке!!

----------------------------------------

INCLUDE “sreg_p1d.inc”;

------------------

SUBDESIGN filter

(

clk, ce, clrn, d : INPUT;

-------

outA[7..0], sign,

outB[11..0] : OUTPUT;

)

VARIABLE

reg8s : sreg_p1d WITH (width = 8);

reg12s : sreg_p1d WITH (width = 12);

-------

BEGIN

reg12s.clk = clk;

--IN LINE REFERENCE

(sign, outA[],,,) = reg12s(d, clk, , );

(outB[10..3]) = reg8s(.data=d, .clk = clk);

-------

END;