Автор работы: Пользователь скрыл имя, 13 Марта 2014 в 19:27, курсовая работа
У даній роботі показані основні принципи формування логічної послідовності двійкового суматора. Синтезовано суматор за допомогою пакету Decomposer, описано суматор на мові VHDL. А також було використано систему наскрізного проектування - програмні засоби WebPACK ISE.
Десятковий суматор з кодом 7-4-2-1. Цей код позиційний. Кожному розряду кодової комбінації зіставляється певний ваговий коефіцієнт, що залежить від позиції цього розряду. Якщо задана кодова комбінація , де - двійкові символи, то десяткову цифру, відповідну цієї кодової комбінації можна визначити за формулою:
Таким чином, даний код має наступні позначення чисел:
«0» – 0000; «4» – 0100; «8» – 1000; «C» - 1100.
«1» – 0001; «5» – 0101; «9» – 1001; «D» - 1101
«2» – 0010; «6» – 0110; «A» - 1010; «E» - 1110
«3» – 0011; «7» – 0111; «B» - 1011; «F» - 1111
Для даного суматора отримана наступна логічна послідовність:
00 01 01 02 02 03 03 04 04 05 05 06 06 08 ** **
08 09 09 0A 0A 0B 0B 0C 0C 0D 0D 10 ** ** ** **
01 02 02 03 03 04 04 05 05 06 06 08 08 09 ** **
09 0A 0A 0B 0B 0C 0C 0D 0D 10 10 11 ** ** ** **
02 03 03 04 04 05 05 06 06 08 08 09 09 0A ** **
0A 0B 0B 0C 0C 0D 0D 10 10 11 11 12 ** ** ** **
03 04 04 05 05 06 06 08 08 09 09 0A 0A 0B ** **
0B 0C 0C 0D 0D 10 10 11 11 12 12 13 ** ** ** **
04 05 05 06 06 08 08 09 09 0A 0A 0B 0B 0C ** **
0C 0D 0D 10 10 11 11 12 12 13 13 14 ** ** ** **
05 06 06 08 08 09 09 0A 0A 0B 0B 0C 0C 0D ** **
0D 10 10 11 11 12 12 13 13 14 14 15 ** ** ** **
06 08 08 09 09 0A 0A 0B 0B 0C 0C 0D 0D 10 ** **
10 11 11 12 12 13 13 14 14 15 15 16 ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
08 09 09 0A 0A 0B 0B 0C 0C 0D 0D 10 10 11 ** **
11 12 12 13 13 14 14 15 15 16 16 18 ** ** ** **
09 0A 0A 0B 0B 0C 0C 0D 0D 10 10 11 11 12 ** **
12 13 13 14 14 15 15 16 16 18 18 19 ** ** ** **
0A 0B 0B 0C 0C 0D 0D 10 10 11 11 12 12 13 ** **
13 14 14 15 15 16 16 18 18 19 19 1A ** ** ** **
0B 0C 0C 0D 0D 10 10 11 11 12 12 13 13 14 ** **
14 15 15 16 16 18 18 19 19 1A 1A 1B ** ** ** **
0C 0D 0D 10 10 11 11 12 12 13 13 14 14 15 ** **
15 16 16 18 18 19 19 1A 1A 1B 1B 1C ** ** ** **
0D 10 10 11 11 12 12 13 13 14 14 15 15 16 ** **
16 18 18 19 19 1A 1A 1B 1B 1C 1C 1D ** ** ** **
Варіант 1
Варіант 1 складається з 3 суматорів і 5 блоків. Схема наведена на малюнку 2. Результати трасування для різних типів мікросхем наведені в таблиці 1.
Рис.2. Схема суматора. Варіант 1.
Таблиця 1.
Кількість використаних ресурсыв ПЛІС | |||
макрокомірки (macrocells) |
конюнкт. терми (product terms) |
входи функц. блоків (func. block inputs) | |
xc9500xl |
23 |
160 |
92 |
CoolRunner |
15 |
78 |
29 |
Варіант 2
Ця схема складається з 4-х суматорів,
2-х елементів «виключає або» і 4-х блоків.
Схема наведена на рис.3. Результати трасування
для різних типів мікросхем наведені в таблиці
Рис.3. Схема суматора. Варіант 2.
Таблиця 2.
Кількість використаних ресурсыв ПЛІС | |||
макрокомірки (macrocells) |
конюнкт. терми (product terms) |
входи функц. блоків (func. block inputs) | |
xc9500xl |
24 |
167 |
98 |
CoolRunner |
18 |
91 |
39 |
Варіант 3
Проаналізувавши дану схему
(рис.4.), можна зробити висновок про те,
що вона є найбільш складною схемою, в
плані реалізації, а також за кількістю використаних
Рис.4. Схема суматора. Вариант 3.
Таблиця 3.
Кількість використаних ресурсыв ПЛІС | |||
макрокомірки (macrocells) |
конюнкт. терми (product terms) |
входи функц. блоків (func. block inputs) | |
xc9500xl |
26 |
241 |
73 |
CoolRunner |
20 |
67 |
29 |
Даний спосіб реалізації цифрових пристроїв користується найбільшою популярністю в усьому світі. Нижче наведений текст мовою VHDL, що описує поведінку десяткового суматора з кодом 7-4-2-1, і результати трасування даного варіанта.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity sum_vhdl is
Port ( I : in std_logic_vector(8 downto 0);
O : out std_logic_vector(4 downto 0));
end sum_vhdl;
architecture Behavioral of sum_vhdl is
signal sum: std_logic_vector(4 downto 0);
signal sum_prom: std_logic_vector(3 downto 0);
signal A: std_logic_vector(3 downto 0);
signal B: std_logic_vector(3 downto 0);
begin
A <= I(4 downto 1) when I(4 downto 1) < "0111" else
(I(4 downto 1) - "0001");
B <= I(8 downto 5) when I(8 downto 5) < "0111" else (I(8 downto 5) - "0001");
sum <= ('0'&A) + ('0'&B) + I( 0 );
sum_prom(3 downto 0) <= sum(3 downto 0) when sum < "01101"
else (sum(3 downto 0) + "0011");
O(3 downto 0) <= sum_prom(3 downto 0) when sum_prom(3 downto 0) <
"0111"
else (sum_prom(3 downto 0) + "0001");
O( 4 ) <= '0' when sum < "01101" else '1';
end Behavioral;
Таблиця 4.
Ккількість використаних ресурсів ПЛІС | |||
макрокомірка (macrocells) |
конюнкт. терми (product terms) |
входи функц. блоків (func. block inputs) | |
xc9500xl |
18 |
241 |
74 |
CoolRunner |
21 |
80 |
42 |
Таблиця 5. Результати трасування для xc9500xl.
xc9500xl |
Кількість використаних ресурсів ПЛІС | ||
macrocells |
product terms |
function block inputs | |
Варіант 1 |
23 |
160 |
92 |
Варіант 2 |
24 |
167 |
98 |
Варіант 3 |
26 |
241 |
73 |
Варіант 4 (VHDL) |
18 |
241 |
74 |
Таблиця 6. Результати трасування для CoolRunner.
CoolRunner |
Кількість використаних ресурсів ПЛІС | ||
macrocells |
product terms |
function block inputs | |
Вариант 1 |
15 |
78 |
29 |
Вариант 2 |
18 |
91 |
39 |
Вариант 3 |
20 |
67 |
29 |
Вариант 4 (VHDL) |
21 |
80 |
42 |
Провівши порівняльний аналіз за таблицями 5, 6, можна зробити висновок про те, що оптимальним є перший варіант розкладання. Проведемо покриття блоків за допомогою мультиплексорів типу 4/1.
За допомогою мультиплексора типу 4/1 можна реалізувати будь-яку логічну функцію 3-х аргументів, оскільки при розкладанні виключаються 2 аргумента, а на входи подаються функції одного аргументу. Це можуть бути або константи «0», «1», або функція тотожності, або функція інверсії 3-го аргументу.
Логічна послідовність першого
0012 345* 6633 700*
Матриці розкладання мають
)
2)
3)
Використовуючи дані розкладання, уявімо схему даного блоку (графічна робота "Схема електрична принципова блоку DC1").
Логічна послідовність другого
0112 2302 1203 0013 0222 0013 13*3 1120
Матриці розкладання мають
1)
2)
Використовуючи дані розкладання, уявімо схему даного блоку (графічна робота "Схема електрична принципова блоку DC2").
Логічна послідовність
0123 0124 056* 723*
Матриці розкладання мають
1)
2)
3)
Використовуючи дані
Логічна послідовність
0123 4560 2347 *476
Матриці розкладання мають
1)
2)
3)
Використовуючи дані розкладання,
уявімо схему даного блоку (графічна робота
"Схема електрична принципова блоку
DC4").
Логічна послідовність п'ятого
0123 4125 2345 6457
Матриці розкладання мають
1)
2)
3)
Використовуючи дані розкладання, уявімо схему даного блоку (графічна робота "Схема електрична принципова блоку DC5").
Після покриття блоку отримали наочну економію ресурсів ПЛІС.
Таблица 7.
Кількість використаних ресурсів ПЛІС | |||
макрокомірки (macrocells) |
конюнкт. терми (product terms) |
входи функц. блоків (func. block inputs) | |
xc9500xl |
20 |
160 |
91 |
CoolRunner |
15 |
77 |
29 |
Для нетривіальних схем методи декомпозиції дають суттєвий виграш по відношенню до використовуваних ресурсів. Як видно з таблиць 5-6, традиційний в наш час підхід опису цифрових пристроїв (VHDL) для суматора в коді 7-4-2-1 при трасуванні в кристал не дає істотного виграшу, ніж схема, отримана в результаті декомпозиції .
З таблиць 5-6, видно, що для різних типів ПЛІС оптимальний результат дають різні варіанти реалізації. Це пов'язано з особливістю структури тих чи інших ПЛІС і вимагає окремих досліджень.
Пошук оптимального рішення задачі синтезу складається з розгляду та аналізу декількох варіантів реалізації комбінаційної схеми для різних типів ПЛІС. У деяких випадках виникає необхідність оцінювати не тільки використовувані ресурси ПЛІС, але і затримку проходження сигналу через схему.
Як видно з таблиць 5-6, для реалізації суматора за модулем 13 з ваговими коефіцієнтами 7-4-2-1 найбільш оптимальними варіантами є схеми № 1 і № 2. Після покриття схеми № 1 мультиплексорами типу 4/1, помітний істотний виграш у використанні ресурсів ПЛІС, про що свідчать результати таблиці 7.
Информация о работе Розробка двійкового суматора на мові VHDL