Пример выполнения. Иерархическое описание схемы в целом аналогично описанию, рассмотренному в работе №2

Способ №1

Иерархическое описание схемы в целом аналогично описанию, рассмотренному в работе №2. Отличие состоит в том, что добавляется описание подсхемы, а также в состав компонент могут входить более мелкие и простые компоненты.

Получающаяся иерархическая структура представлена на рисунке 5.

 
 


∙ ∙ ∙

 
 


Рисунок 5. Иерархическая структура проекта для способа №1.

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

Способ №2

В иерархической структуре проекта для способа №2, по сравнению со способом №1, отсутствует описание подсхемы, и все компоненты связаны напрямую с основной программой.

Рассмотрим особенности основной программы.

Вид оператора generic, который находится в описании интерфейса объекта entity (см. работу №1):

Entity имя объекта is

Generic (N:natural:= натуральное число);

Port (…);

End имя объекта;

N – настроечный параметр типа natural, которому присваивается конкретное значение (в нашем случае это будут значения от 2 до 5).

Тип сигнала BIT_VECTOR задаётся в описании интерфейса объекта следующим образом:

Entity имя объекта is

Port (имя сигнала: in BIT_VECTOR (K to L);

имя сигнала: out BIT_VECTOR (P downto Q));

End имя объекта;

Здесь K и Q – нижние границы диапазона, а L и P – верхние. В нашем случае нижняя граница всегда будет равна 0, а верхняя – N-1 или N.

Также тип данных BIT_VECTOR могут иметь и внутренние сигналы, объявляемые после ключевого слова signal в архитектурном теле объекта.

Рисунок 6. Схема N-разрядного сумматора.

Приведём небольшой пример описания N-разрядного сумматора (см. рисунок 6), иллюстрирующий все эти особенности, а также использование оператора generate.

Entity adder_N is

Generic ( N:natural:=4 );

Port ( a,b :in bit_vector ( 0 to N-1 );

s :out bit_vector ( 0 to N-1 );

c :out bit );

End adder_N;

Architecture func of adder_N is

Component add1

Port (b1,b2: in BIT;

c1,s1: out BIT);

end component;

component add2

port (c1,a1,a2: in BIT;

c2,s2: out BIT);

end component;

signal c_in: bit_vector (0 to N-1);

begin

add: for i in 0 to N-1 generate

first_bit: if (i=0) generate

first_cell: add1 port map (b1=>a(0), b2=>b(0), c1=>c_in(0),

s1=>s(0));

end generate first_bit;

middle_bit: if (i=>0) and (i<N-1) generate

middle_cell: add2 port map (c1=>c_in(i-1),a1=>a(i),

a2=>b(i),c2=>c_in(i),s2=>s(i));

end generate middle_bit;

end_bit: if (i=N-1) generate

end_cell: add2 port map (c1=>c_in(i-1),a1=>a(i),

a2=>b(i),c2=>c,s2=>s(i));

end generate end_bit;

end generate adder;

end func;

Описание регулярной структуры в варианте задания выполняется аналогично приведённому примеру.

В тестирующей программе также следует использовать операторы generate и generic, с помощью которых нужно задать все необходимые значения входных сигналов.


Вариант 1.

Способ №1

Способ №2


Вариант 2.

Способ №1

Способ №2


Вариант 3.

Способ №1

Способ №2


Вариант 4.

Способ №1

Способ №2


Вариант 5.

Способ №1

Способ №2


Вариант 6.

Способ №1

Способ №2


Вариант 7.

Способ №1

Способ №2


Вариант 8.

Способ №1

Способ №2


Вариант 9.

Способ №1

Способ №2


Вариант 10.

Способ №1

Способ №2


Вариант 11.

Способ №1

Способ №2


Вариант 12.

Способ №1

Способ №2


Вариант 13.

Способ №1

Способ №2


Вариант 14.

Способ №1

Способ №2

Вариант 15.

Способ №1 и 2


Вариант 16.

Способ №1 и 2


Вариант 17.

Способ №1 и 2


Вариант 18.

Способ №1 и 2

Вариант 19.

Способ №1 и 2


Вариант 20.

Способ №1 и 2

Вариант 21.

Способ №1 и 2

Вариант 22.

Способ №1 и 2

Вариант 23.

Способ №1 и 2

Вариант 24.

Способ №1 и 2

Вариант 25.

Способ №1 и 2



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: