Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Metod_labs_v5

.pdf
Скачиваний:
17
Добавлен:
12.02.2016
Размер:
4.03 Mб
Скачать

BEGIN

UUT: GVV_sch1 PORT MAP( gvv_e => gvv_e, gvv_f => gvv_f, gvv_c => gvv_c, gvv_d => gvv_d, gvv_a => gvv_a, gvv_b => gvv_b, gvv_res => gvv_res

);

gvv_a<=not gvv_a after 10 ns; gvv_b<=not gvv_b after 20 ns; gvv_c<=not gvv_c after 40 ns; gvv_d<=not gvv_d after 60 ns; gvv_e<=not gvv_e after 100 ns; gvv_f<=not gvv_f after 160 ns;

-- *** Test Bench - User Defined Section ***

tb : PROCESS BEGIN

WAIT; -- will wait forever END PROCESS;

END;

Зберігаємо Test Bench файл, виконуємо перевірку синтаксису і проводимо часову симуляцію.

Рис. 3.1 Отримані симуляційні часові діаграми імплементації модуля проекту, реалізованого з допомогою бібліотечних примітивів

Отримані симуляційні часові діаграми можна проаналізувати і дійти висновку, що поведінка імплементації проекту є відповідною заданій функції.

4. Після верифікації проекту виконуємо процеси:

1. Implement Design. Етап містить у собі дві фази: трансляція й розподіл ресурсів кристала для реалізації проектованого пристрою. Результатом трансляції є формування логічного опису проекту в термінах примітивів Xilinx низького рівня з урахуванням часових і топологічних обмежень. На другій стадії виконується розбивка логічного опису проекту на блоки відповідно до ресурсів обраного типу ПЛІС. При цьому виконується оптимізація з метою мінімізації

необхідних ресурсів кристала з урахуванням заданих обмежень. Результатом етапу розміщення й трасування є створення двійкового файлу, що описує використання фізичних ресурсів кристала для реалізації функцій проектованого пристрою.

2. Generate Programming File. Результати, одержані на етапі розміщення й трасування проекту в кристал, не можуть безпосередньо використовуватися для конфігурування ПЛІС. Їх необхідно перетворити на формат, прийнятний для засобів програмування. Для цього використовується процес Generate

Programming File.

Перед активізацією розглянутих процесів необхідно встановити значення їхніх параметрів.

5. Реалізація ФАЛ виду y=a&b v c&d v e&f з допомогою VHDL опису проекту.

5.1. Для створення нового модуля вихідного опису проекту необхідно виконати Project-> New Source… У діалоговій панелі, що відкрилася, необхідно вибрати тип нового модуля, задати його ім'я й указати місце розташування файлу на диску.

Рис. 5.1 Створення нового модуля проекту реалізації ФАЛ

Рис. 5.2 – Визначення входів/виходів VHDL моделі проекту

Рис. 5.3 – Вікно навігатора проектів; праворуч бачимо автоматично згенерований шаблон моделі, де в розділ архітектури вписуємo задану функцію.

5.2 Встановлюємо Top-Level симуляції: правою клавішею мишки на файлі VHDL модуля –>Set as Top Module. Виконуємо процес синтезування.

На етапі синтезу створено звіт, витяг з якого подаємо.

================================================================

* Final Report

================================================================

Final Results

RTL Top Level Output File Name

: GVV_v.ngr

Top Level Output File Name

: GVV_v

Output

Format

: NGC

Optimization Goal

: Speed

Keep Hierarchy

: NO

Design

Statistics

 

# IOs

 

: 7

Cell Usage :

 

# BELS

 

: 2

#

LUT3

: 1

#

LUT4

: 1

# IO Buffers

: 7

#

IBUF

: 6

#

OBUF

: 1

=================================================================

Device utilization summary:

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

 

 

 

 

Selected Device : 4vlx15sf363-12

 

 

 

 

Number of Slices:

1

out of

6144

0%

Number of 4 input LUTs:

2

out of

12288

0%

Number of IOs:

7

 

 

 

Number of bonded IOBs:

7

out of

240

2%

Рис. 5.4 Технологічна схема проекту

5.3 Аналогічно пунктам 3 і 4 Порядку виконання роботи виконуємо часове симулювання (необхідно створити аналогічний Test Bench файл асоційований з модулем GVV_v) та процеси імплементування та генерування програмних файлів.

Рис. 5.1 Отримані симуляційні часові діаграми імплементації модуля проекту, реалізованого з допомогою VHDL опису.

Проаналізувавши отримали симуляційні часові діаграми можна дійти висновку, що поведінка імплементації проекту є відповідною заданій функції.

6. За результатами проведених робіт зробити висновки. Звернути увагу на

звіти процесів синтезу!

Завдання

1.Створити новий проект.

2.Розробити модуль проекту, що реалізує ФАЛ задану згідно варіанту (ФАЛ задає викладач індивідуально), з допомогою бібліотечних примітивів.

3.Виконати синтез пристрою.

4.Розробити модуль проекту, що реалізує ФАЛ задану згідно варіанту, з допомогою VHDL опису.

5.Виконати синтез пристрою.

6.Виконати розміщення й трасування на ПЛІС.

7.Виконати часове моделювання пристрою для обох реалізацій.

8.За результатами виконаних робіт зробити висновки.

ЛАБОРАТОРНА РОБОТА № 2

РОЗРОБКА СПЕЦІАЛІЗОВАНОГО ПЕРЕМНОЖУВАЧА

Мета роботи: Проектування та перевірка роботи перемножувача двійкових чисел та спеціалізованого перемножувача на константу.

Зауваження: Обов'язкова умова - назви проектів, вкладених файлів, створених елементів і всіх зв'язків на схемах на екранах і в звітах з лабораторних робіт повинні починатися з ініціалів студентів, які ці роботи виконували!

ТЕОРЕТИЧНІ ВІДОМОСТІ

Операція множення - одна із найбільш часто вживаних арифметичних операцій. Оскільки класичні методи множення двійкових чисел (множення починаючи з молодших розрядів множника та множення починаючи з старших розрядів множника) відносять зазначену операцію до числа найбільш довготривалих арифметичних операцій, розроблено досить багато методів прискорення виконання цієї операції. В більшості випадків виграш у швидкодії пристроїв множення досягається за рахунок збільшення апаратної складності пристроїв множення. Іншим варіантом підвищення швидкодії та зменшення затрат обладнання є використання спеціалізованих перемножувачів на сталу константу.

Існує декілька основних способів побудови перемножувачів: перемножувач з послідовним та паралельним додавання множеного, багатошарові перемножувачі та перемножувачі Бута. Розробка паралельного перемножувала на константу виконується з метою подальшої реалізації на ПЛІС фірми Xilinx. Оскільки базові комірки ПЛІС фірми Xilinx спроектовані для ефективного виконання паралельних додавань з прискореним переносом, тому доцільно будувати перемножувач за схемою з паралельним додаванням множеного.

Частина 1 Перемножувач цілих двійкових чисел без знаків

1. Алгоритм множення цілих двійкових чисел без знаків

Якщо позначити множене буквою Х, а множник буквою Y, причому представитиY у вигляді суми його двійкових розрядів:

 

= ∑ −1 2 ,

 

 

 

(1)

 

 

=0

 

 

 

 

 

то результат Z множення:

 

 

 

 

 

 

= = ∑ −1

2 = 20 + 21

+ +

 

2−1

(2)

=0

 

0

1

−1

 

 

Як видно з наведеного

виразу,

операція

множення

двійкових

чисел

зводиться до операції логічного множення множеного на розряди множника та підсумуванням отриманих результатів з їх зсувом на кількість розрядів рівну відповідному показнику степеня у виразі. Граф алгоритму множення наведений на рис. 1.1. Схема множення двох 4-бітних числа зображена на рис. 1.2.

B0

B1

B2

B(n-1)

A

AND

AND

AND ...

AND

 

R0

R1

R2

R(n-1)

 

+

 

 

 

Рис. 1.1. Граф алгоритму множення

 

 

×

 

 

 

a3

a2

a1

a0

множене

 

 

 

b3

b2

b1

b0

множник

 

 

 

 

 

 

 

 

а3b0

а2b0

а1b0

а0b0

 

 

 

 

а3b1

а2b1

а1b1

а0b1

 

 

 

 

а3b2

а2b2

а1b2

а0b2

 

 

 

+

а3b3

а2b3

а1b3

а0b3

 

 

 

 

 

 

 

 

 

 

 

 

 

pp34

pp33

pp32

pp31

pp30

pp20

pp10

pp00

добуток

 

 

 

Рис. 1.2 Схема множення двох чисел

 

Лінійка операторів AND формує n n-розрядних результатів логічного множення множеного на розряди множника, які зсуваються праворуч на Ri (i = 1, 2, …, n-1) розрядів. Ці результати називаються частковими добутками.

VHDL код 8-ми бітного помножувача на основі цього алгоритму наведено

далі:

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

library IEEE;

use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL;

--Uncomment the following library declaration if using

--arithmetic functions with Signed or Unsigned values --use IEEE.NUMERIC_STD.ALL;

--Uncomment the following library declaration if instantiating

--any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity GVV_MULT is

Port ( GVV_A : in STD_LOGIC_VECTOR (7 downto 0); GVV_B : in STD_LOGIC_VECTOR (7 downto 0); GVV_P : out STD_LOGIC_VECTOR (15 downto 0));

end GVV_MULT;

architecture Behavioral of GVV_MULT is constant WIDTH: integer:=8;

signal gvv_ua, gvv_bv0, gvv_bv1, gvv_bv2, gvv_bv3, gvv_bv4, gvv_bv5, gvv_bv6, gvv_bv7 : unsigned (WIDTH - 1 downto 0);

signal gvv_p, gvv_p0, gvv_p1, gvv_p2, gvv_p3, gvv_p4, gvv_p5, gvv_p6, gvv_p7 : unsigned (2*WIDTH - 1 downto 0);

begin

gvv_ua <= unsigned (GVV_A); gvv_bv0 <= (others => GVV_B(0)); gvv_bv1 <= (others => GVV_B(1)); gvv_bv2 <= (others => GVV_B(2)); gvv_bv3 <= (others => GVV_B(3)); gvv_bv4 <= (others => GVV_B(4)); gvv_bv5 <= (others => GVV_B(5)); gvv_bv6 <= (others => GVV_B(6)); gvv_bv7 <= (others => GVV_B(7));

gvv_p0 <= "00000000" & (gvv_bv0 and gvv_ua); gvv_p1 <= "0000000" & (gvv_bv1 and gvv_ua) & "0"; gvv_p2 <= "000000" & (gvv_bv2 and gvv_ua) & "00"; gvv_p3 <= "00000" & (gvv_bv3 and gvv_ua) & "000"; gvv_p4 <= "0000" & (gvv_bv4 and gvv_ua) & "0000"; gvv_p5 <= "000" & (gvv_bv5 and gvv_ua) & "00000"; gvv_p6 <= "00" & (gvv_bv6 and gvv_ua) & "000000"; gvv_p7 <= "0" & (gvv_bv7 and gvv_ua) & "0000000";

gvv_p<=((gvv_p0+gvv_p1)+(gvv_p2+gvv_p3))+((gvv_p4+gvv_p5)+(gvv_p6+ gvv_p7));

GVV_PROD<= std_logic_vector (gvv_p); end Behavioral;

Основним компонентом цієї схеми є суматор. Для схем з n-розрядним множником і n-розрядним множеним, добуток буде мати 2n біт. Як видно з рис. 1.2 кожний частковий добуток розширяється до 2n розрядів. Таким чином для реалізації перемножувача необхідно n-1 2n-розрядних суматорів.

Вибрані фрагменти із звіту про результати виконання процесу синтезу перемножувача наведені нижче. У п'ятому розділі цього звіту міститься інформація про послідовність синтезу скомпільованих об'єктів вихідних описів проектованого пристрою. В окремій секції цього розділу розташовані дані про виявлені макроси.

=============================================================

* HDL Synthesis *

=============================================================

Performing bidirectional port resolution...

Synthesizing Unit <GVV_MULT>.

Related source file is

"D:/Users/Lab2/GVV_MULT.vhd".

Found

16-bit

adder for

signal <gvv_prod>.

Found

16-bit

adder for

signal <gvv_prod$addsub0000>

created at line 62.

Found 16-bit adder for signal <gvv_prod$addsub0001> created at line 62.

Found 16-bit adder for signal <gvv_prod$addsub0002> created at line 62.

Found 16-bit adder for signal <gvv_prod$addsub0003> created at line 62.

Found 16-bit adder for signal <gvv_prod$addsub0004> created at line 62.

Found 16-bit adder for signal <gvv_prod$addsub0005>

created at line 62.

 

Summary:

 

 

inferred

7 Adder/Subtractor(s).

 

Unit <GVV_MULT> synthesized.

 

=============================================================

HDL Synthesis Report

 

Macro Statistics

 

# Adders/Subtractors

: 7

16-bit adder

 

: 7

 

 

 

 

 

 

У заключній частині звіту наведені дані про основні параметри процесу синтезу та статистичні дані отриманих результатів: кількість використовуваних EDIF елементів і блоків вводу/виводу. У цьому ж розділі відображаються підсумкові відомості про кількість виявлених помилок і попереджень.

=============================================================

* Final Report *

=============================================================

Final Results

 

RTL Top Level Output File Name

: GVV_MULT.ngr

Top Level Output File Name

: GVV_MULT

Output Format

: NGC

Optimization Goal

: Speed

Keep Hierarchy

: NO

Design Statistics

 

# IOs

 

: 32

Cell Usage :

 

# BELS

 

: 199

#

GND

: 1

#

LUT1

: 5

#

LUT2

: 37

#

LUT3

: 1

#

LUT4

: 46

#

MULT_AND

: 14

#

MUXCY

: 46

#

XORCY

: 49

# IO Buffers

: 32

#

IBUF

:

16

#

OBUF

:

16

==============================================================

Device utilization summary:

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

 

 

 

 

Selected Device : 4vlx15sf363-12

 

 

 

 

Number of Slices:

49

out of

6144

0%

Number of 4 input LUTs:

89

out of

12288

0%

Number of IOs:

32

 

 

 

Number of bonded IOBs:

32

out of

240

13%

Шляхом зменшення необхідних для реалізації перемножувала затрат є послідовне зсування часткових добутків. Це зменшить розрядність необхідних суматорів до n+1 біт. Схема перемноження наведена на рис. 1.3.

×

 

 

 

a3

a2

a1

a0

Множене

 

 

 

b3

b2

b1

b0

Множник

 

 

 

 

 

 

 

+

а3b0

а2b0

а1b0

а0b0

 

 

 

 

pp04

pp03

pp02

pp01

pp00

частковий добуток pp0

 

 

+

а3b1

а2b1

а1b1

а0b1

 

 

 

 

pp14

pp13

pp12

pp11

pp10

 

частковий добуток pp1

 

+

а3b2

а2b2

а1b2

а0b2

 

 

 

 

pp24

pp23

pp22

pp21

pp20

 

 

частковий добуток pp2

+

а3b3

а2b3

а1b3

а0b3

 

 

 

 

pp34

pp33

pp32

pp31

pp30

 

 

 

частковий добуток pp3

 

 

 

 

 

 

 

 

 

pp34

pp33

pp32

pp31

pp30

pp20

pp10

pp00

добуток prod

 

Рис. 1.3 Схема перемноження двійкових чисел з використанням часткових

 

 

 

добутків зменшеної розрядності

 

Для реалізації цієї схеми все ще необхідно n-1 суматор, але їх розрядність зменшилась з 2n до n+1 біт.

VHDL код 8-ми бітного помножувача на основі цього алгоритму:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL;

entity GVV_mod_multiplier is

Port ( GVV_A : in STD_LOGIC_VECTOR (7 downto 0); GVV_B : in STD_LOGIC_VECTOR (7 downto 0);

GVV_mPROD : out STD_LOGIC_VECTOR (15 downto 0)); end GVV_mod_multiplier;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]