Розробка спеціалізованого перемножувача

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2024
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Основи проектування цифрових засобів на ПЛІС

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” / Кафедра ЕОМ Звіт з лабораторної роботи №3 з дисципліни «Основи проектування цифрових засобів на ПЛІС» на тему: «Розробка спеціалізованого перемножувача» Тема: Розробка спеціалізованого перемножувача. Мета роботи: Проектування та перевірка спеціалізованого перемножувача на константу. Постановка задачі: Розробити спеціалізований перемножувач на константу. Покроковий опис кожного етапу оптимізації За варіантом, наша константа рівна: / Обраховуєм та переводимо у двійкову систему числення(32 біти, з яких першим є «0»): / / Переведемо дробову частину в десяткову систему числення: 0 110 0011 0011 0010 0100 1110 1001 10112= 166424130710 Оптимізуємо наш вираз: 0 110 0011 0011 0010 0100 1110 1001 10112 Крок1: 110112 заміняємо на 1001012 (27 на 32-5): 0 110 0011 0011 0010 0100 1110 1010 01012 Крок2: 111012 заміняємо на 1000112 (29 на 32-3): 0 110 0011 0011 0010 0101 0001 1010 01012 Отже, в оптимізованому варіанті буде на 2 одиниці менше Підкресленні одинички ми будемо віднімати. У неоптимізованого варіанту у VHDL коді число буде таким: kiv_prod <= (kiv_p0 + kiv_p1 + kiv_p3 + kiv_p4 + kiv_p7 + kiv_p9 + kiv_p10 + kiv_p11 + kiv_p14 + kiv_p17 + kiv_p20 + kiv_p21 + kiv_p24 +kiv_p25 + kiv_p29 + kiv_p30); У оптимізованого варіанту у VHDL коді число буде таким: kiv_prod <= (kiv_p5 +kiv_p12 + kiv_p14 + kiv_p17 + kiv_p20 + kiv_p21+ kiv_p24 +kiv_p25 + kiv_p29 + kiv_p30) - kiv_p0 -kiv_p2- kiv_p7 - kiv_p8; Перевірку зробимо під час побудови діаграм, зрівнявши 1 і 2 спосіб(оптимізований та неоптимізований) з 3 способом ( IP – ядро) в якому константа вже задана. Vhdl код реалізації оптимального множення на константу Розглянемо тільки оптимальний варіант множення /Результат синтезу схеми HDL Synthesis Report Macro Statistics # Adders/Subtractors : 28 40-bit adder : 24 40-bit subtractor : 4 ========================================================================= * Final Report * ========================================================================= Final Results RTL Top Level Output File Name : kiv_sw.ngr Top Level Output File Name : kiv_sw Output Format : NGC Optimization Goal : Speed Keep Hierarchy : No Design Statistics # IOs : 127 Cell Usage : # BELS : 890 # GND : 1 # INV : 107 # LUT1 : 18 # LUT2 : 64 # LUT3 : 69 # LUT4 : 96 # MULT_AND : 27 # MUXCY : 245 # MUXF5 : 2 # VCC : 1 # XORCY : 260 # IO Buffers : 127 # IBUF : 8 # OBUF : 119 ========================================================================= Device utilization summary: Number of Slices: 244 out of 6144 3% Number of 4 input LUTs: 354 out of 12288 2% Number of IOs: 127 Number of bonded IOBs: 127 out of 240 52% --------------------------- Partition Resource Summary: Delay: 22.234ns (Levels of Logic = 53) Total 22.234ns (11.634ns logic, 10.600ns route) (52.3% logic, 47.7% route) Total REAL time to Xst completion: 33.00 secs Total CPU time to Xst completion: 33.57 secs Результат синтезу схеми перемножувача розробленого на основі ip-core Створюємо IP- ядро та вибираємо розподілену пам’ять / Формуємо звіт: Timing Details: ---------------------------------------- Total 2.172ns (0.892ns logic, 1.280ns route) (41.1% logic, 58.9% route) Total REAL time to Xst completion: 14.00 secs Total CPU time to Xst completion: 13.54 secs --> Total memory usage is 427100 kilobytes Number of errors : 0 ( 0 filtered) Number of warnings : 0 ( 0 filtered) Number of infos : 0 ( 0 filtered) Vhdl код тестового стенду Код аналогічний коду з л.р. №2 LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.numeric_std.ALL; LIBRARY UNISIM; USE UNISIM.Vcomponents.ALL; ENTITY kiv_sw_kiv_sw_sch_tb IS END kiv_sw_kiv_sw_sch_tb; ARCHITECTURE behavioral OF kiv_sw_kiv_sw_sch_tb IS COMPONENT kiv_sw PORT( KIV_A : IN STD_LOGIC_VECTOR (7 DOWNTO 0); KIV_CM : OUT STD_LOGIC_VECTOR (39 DOWNTO 0); KIV_mCM : OUT STD_LOGIC_VECTOR (39 DOWNTO 0); KIV_IP_CM : OUT STD_LOGIC_VECTOR (38 DOWNTO 0)); END COMPONENT; SIGNAL KIV_A : STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL KIV_CM : STD_LOGIC_VECTOR (39 DOWNTO 0); SIGNAL KIV_mCM : STD_LOGIC_VECTOR (39 DOWNTO 0); SIGNAL KIV_IP_CM : STD_LOGIC_VECTOR (38 DOWNTO 0); constant clk_c : time :=10 ns; BEGIN UUT: kiv_sw PORT MAP( KIV_A => KIV_A, KIV_CM => KIV_CM, KIV_mCM => KIV_mCM, KIV_IP_CM => KIV_IP_CM ); tb : PROCESS BEGIN KIV_A <="00000001"; wait for clk_c; KIV_A <="00001111"; wait for clk_c; KIV_A <="11111111"; wait for clk_c; END PROCESS; END; Часові діаграми для 3-ох варіантів. / Висновок: Після аналізу звітів можна визначити, що перемножувач з оптимізованою константою є ефективнішим, ніж перемножувач з неоптимізованою константою. У неоптимізованого варіанту затримка становить 22.071 ns, що еквівалентно 1*1000/T = 1*1000/22.071 = 45,3 MHZ, а у оптимізованого – 20.218 ns , що еквівалентно 1*1000/T = 1*1000/20.218 = 49,46 MHZ. Також присутня різниця в кількості логічних елементів(суматорів, віднімачів). В оптимізованому варіанті їх 9, а в неоптимізованому – 15. Як і в 2 лабораторній, найшвидшим виявився метод з використання IP-ядра – вбудованого інстурменту середовища XILINX. Затримка становила всього 2.172 ns що еквівалентно 1*1000/T = 1*1000/2.172 = 461 MHZ проте елементів в нього найбільше.
Антиботан аватар за замовчуванням

22.03.2018 19:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!