DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

Рік:
2015
Тип роботи:
Лабораторна робота
Предмет:
Основи проектування цифрових засобів на ПЛІС
Група:
КІ 41

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” / Лабораторна робота №2 з дисципліни "Основи проектування цифрових засобів на ПЛІС" Тема: Розробка спеціалізованого перемножувача. Мета: Проектування та перевірка роботи перемножувача двійкових чисел та спеціалізованого перемножувача на константу. На цій схемі зображені всі модулі у такому порядку: перемножувач цілих чисел з послідовним додаванням часткових добутків, перемножувач цілих чисел з паралельним додаванням часткових добутків, перемножувач цілих чисел реалізований генератором ядер, оптимізований перемножувач на константу, неоптимізований перемножувач на константу, перемножувач на константу реалізований генератором ядер. Наступні два малюнки – це функціональна та технологічна схема початкової схеми. / Рис. 1. Реалізована схема. / Рис. 2. Функціональна схема. / Рис. 3. Технологічна схема. / Рис. 4. Вхідні сигнали. Частина №1 Перемножувач цілих чисел з послідовним додаванням часткових добутків. Module1.vhd library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; entity Module1 is Port ( GVV_A : in STD_LOGIC_VECTOR (7 downto 0); GVV_B : in STD_LOGIC_VECTOR (7 downto 0); GVV_PROD : out STD_LOGIC_VECTOR (15 downto 0)); end Module1; architecture Behavioral of Module1 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; / Рис. 5. Часова діаграма, послідовний перемножувач. Звіт для Module1 Synthesizing Unit <Module1>. Related source file is "D:/WebPack Xilinx/lab2/Module1.vhd". Found 16-bit adder for signal <gvv_p>. Found 16-bit adder for signal <gvv_p$addsub0000> created at line 64. Found 16-bit adder for signal <gvv_p$addsub0001> created at line 64. Found 16-bit adder for signal <gvv_p$addsub0002> created at line 64. Found 16-bit adder for signal <gvv_p$addsub0003> created at line 64. Found 16-bit adder for signal <gvv_p$addsub0004> created at line 64. Found 16-bit adder for signal <gvv_p$addsub0005> created at line 64. Summary: inferred 7 Adder/Subtractor(s). Unit <Module1> synthesized. ========================================================================= * Final Report * ========================================================================= Final Results RTL Top Level Output File Name : Module1.ngr Top Level Output File Name : Module1 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% Timing constraint: Default path analysis Total number of paths / destination ports: 43772 / 16 ------------------------------------------------------------------------- Delay: 8.861ns (Levels of Logic = 21) Total 8.861ns (6.556ns logic, 2.305ns route) (74.0% logic, 26.0% route) Total REAL time to Xst completion: 45.00 secs Total CPU time to Xst completion: 45.44 secs Total memory usage is 291412 kilobytes Перемножувач цілих чисел з паралельним додаванням часткових добутків. Module2.vhd library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; entity Module2 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 Module2; architecture Behavioral of Module2 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_p0, gvv_p1, gvv_p2, gvv_p3, gvv_p4, gvv_p5, gvv_p6, gvv_p7: unsigned (WIDTH downto 0); signal gvv_product: 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 <= "0" & (gvv_bv0 and gvv_ua); gvv_p1 <= ("0" & gvv_p0(WIDTH DOWNTO 1)) + ("0" & (gvv_bv1 and gvv_ua)); gvv_p2 <= ("0" & gvv_p1(WIDTH DOWNTO 1)) + ("0" & (gvv_bv2 and gvv_ua)); gvv_p3 <= ("0" & gvv_p2(WIDTH DOWNTO 1)) + ("0" & (gvv_bv3 and gvv_ua)); gvv_p4 <= ("0" & gvv_p3(WIDTH DOWNTO 1)) + ("0" & (gvv_bv4 and gvv_ua)); gvv_p5 <= ("0" & gvv_p4(WIDTH DOWNTO 1)) + ("0" & (gvv_bv5 and gvv_ua)); gvv_p6 <= ("0" & gvv_p5(WIDTH DOWNTO 1)) + ("0" & (gvv_bv6 and gvv_ua)); gvv_p7 <= ("0" & gvv_p6(WIDTH DOWNTO 1)) + ("0" & (gvv_bv7 and gvv_ua)); gvv_product <= gvv_p7 & gvv_p6(0) & gvv_p5(0)& gvv_p4(0)& gvv_p3(0)& gvv_p2(0)& gvv_p1(0)& gvv_p0(0); GVV_mPROD <= std_logic_vector (gvv_product); end Behavioral; / Рис. 6. Часова діаграма, паралельний перемножувач. Звіт для Module2 Synthesizing Unit <Module2>. Related source file is "D:/WebPack Xilinx/lab2/Module2.vhd". Found 9-bit adder for signal <gvv_p1>. Found 9-bit adder for signal <gvv_p2>. Found 9-bit adder for signal <gvv_p3>. Found 9-bit adder for signal <gvv_p4>. Found 9-bit adder for signal <gvv_p5>. Found 9-bit adder for signal <gvv_p6>. Found 9-bit adder for signal <gvv_p7>. Summary: inferred 7 Adder/Subtractor(s). Unit <Module2> synthesized. ========================================================================= * Final Report * ========================================================================= Final Results RTL Top Level Output File Name : Module2.ngr Top Level Output File Name : Module2 Output Format : NGC Optimization Goal : Speed Keep Hierarchy : No Design Statistics # IOs : 32 Cell Usage : # BELS : 177 # GND : 1 # LUT2 : 2 # LUT3 : 48 # LUT4 : 7 # MULT_AND : 7 # MUXCY : 56 # XORCY : 56 # IO Buffers : 32 # IBUF : 16 # OBUF : 16 ========================================================================= Device utilization summary: --------------------------- Selected Device : 4vlx15sf363-12 Number of Slices: 29 out of 6144 0% Number of 4 input LUTs: 57 out of 12288 0% Number of IOs: 32 Number of bonded IOBs: 32 out of 240 13% Total REAL time to Xst completion: 34.00 secs Total CPU time to Xst completion: 34.02 secs Total memory usage is 337760 kilobytes Total 13.073ns (9.106ns logic, 3.967ns route) (69.7% logic, 30.3% route) Перемножувач цілих чисел. Генератор ядер. / Рис. 7. Часова діаграма, результат роботи генератора ядер. Порівняння Після аналізу звітів можна визначити, що перемножувач цілих чисел з послідовним додаванням часткових добутків є ефективнішим, ніж перемножувач цілих чисел з паралельним додаванням часткових добутків. Ці два варіанти використувують по 7 суматорів. Здавалося би ефективніший варіант використовує 9-бітні суматори, а менш ефективніший використовує 16-бітні суматори, що є більш дорожчим варіантом. Проте перемножувач цілих чисел з послідовним додаванням часткових добутків використовує такі елементи і їх кількість: 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. Його затримка складає 8.861 ns та використовує 291412 кілобайтів пам’яті. Перемножувач цілих чисел з паралельним додаванням часткових добутків використовує такі елементи і їх кількість: BELS – 177, GND – 1, LUT2 – 2, LUT3 – 48, LUT4 – 7, MULT_AND –7, MUXCY – 56, XORCY – 59, IO Buffers – 32, IBUF – 16, OBUF – 16. Його затримка складає 13.073 ns та використовує 337760 кілобайтів пам’яті. Отже, не зважаючи на те, що перший варіант використовує більш розрядні суматори він є кращим, тому що використовує менше елементів, пам’яті та має меншу затримку. Частина №2 / / Рис. 8. Переведення виразу у нормальне число. / Рис. 9. Переведення числа у двійкове представлення. Переведемо дробову частину у 10 СЧ: 011111010110010011110000001000012 = 210376707310 Оптимізація Початковий вираз: 01111101011001001111000000100001 1 крок: 01111101011001010001000000100001 2 крок: 10000101011001010001000000100001 Для неоптимізованого варіанту наше число запишемо таким чиному у коді: gvv_prod <= (gvv_p0 + gvv_p5 + gvv_p12 + gvv_p13 + gvv_p14 + gvv_p15 + gvv_p18 + gvv_p21 + gvv_p22 + gvv_p24 + gvv_p26 + gvv_p27 + gvv_p28 + gvv_p29 + gvv_p30); Для оптимізованого варіанту наше число запишемо таким чиному у коді: gvv_prod <= (gvv_p0 + gvv_p5 + gvv_p16 + gvv_p18 + gvv_p21 + gvv_p22 + gvv_p24 + gvv_p31) - gvv_p12 - gvv_p26; / Рис. 10. Часова діаграма неоптимізованого варіанту та оптимізованого варіанту. Звіт для неоптимізованого варіанту Summary: # Adders/Subtractors : 14 40-bit adder : 14 * Final Report * ========================================================================= Final Results RTL Top Level Output File Name : NotOptimized.ngr Top Level Output File Name : NotOptimized Output Format : NGC Optimization Goal : Speed Keep Hierarchy : No Design Statistics # IOs : 48 Cell Usage : # BELS : 240 # GND : 1 # LUT1 : 3 # LUT2 : 17 # LUT3 : 48 # LUT4 : 54 # MULT_AND : 9 # MUXCY : 51 # XORCY : 57 # IO Buffers : 48 # IBUF : 8 # OBUF : 40 Device utilization summary: --------------------------- Selected Device : 4vlx15sf363-12 Number of Slices: 72 out of 6144 1% Number of 4 input LUTs: 122 out of 12288 0% Number of IOs: 48 Number of bonded IOBs: 48 out of 240 20% Delay: 19.539ns (Levels of Logic = 41) Total 19.539ns (10.267ns logic, 9.272ns route) (52.5% logic, 47.5% route) Total REAL time to Xst completion: 42.00 secs Total CPU time to Xst completion: 41.19 secs Total memory usage is 293332 kilobytes Код для неоптимізованого варіанту library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity NotOptimized is Port ( GVV_A : in STD_LOGIC_VECTOR (7 downto 0); GVV_C_M : out STD_LOGIC_VECTOR (39 downto 0)); end NotOptimized; architecture Behavioral of NotOptimized is signal gvv_prod,gvv_p30,gvv_p29,gvv_p28,gvv_p27,gvv_p26,gvv_p24,gvv_p23,gvv_p22,gvv_p21,gvv_p20,gvv_p19,gvv_p18,gvv_p17,gvv_p16,gvv_p15,gvv_p14,gvv_p13,gvv_p12,gvv_p11,gvv_p9,gvv_p7,gvv_p5,gvv_p2,gvv_p1,gvv_p0:unsigned(39 downto 0); begin gvv_p0 <= "00000000000000000000000000000000" & unsigned(GVV_A); gvv_p1 <= "0000000000000000000000000000000" & unsigned(GVV_A) & "0"; gvv_p2 <= "000000000000000000000000000000" & unsigned(GVV_A) & "00"; --gvv_p3 <= "00000000000000000000000000000" & unsigned(GVV_A) & "000"; --gvv_p4 <= "0000000000000000000000000000" & unsigned(GVV_A) & "0000"; gvv_p5 <= "000000000000000000000000000" & unsigned(GVV_A) & "00000"; --gvv_p6 <= "00000000000000000000000000" & unsigned(GVV_A) & "000000"; gvv_p7 <= "0000000000000000000000000" & unsigned(GVV_A) & "0000000"; --gvv_p8 <= "000000000000000000000000" & unsigned(GVV_A) & "00000000"; gvv_p9 <= "00000000000000000000000" & unsigned(GVV_A) & "000000000"; --gvv_p10 <= "0000000000000000000000" & unsigned(GVV_A) & "0000000000"; gvv_p11 <= "000000000000000000000" & unsigned(GVV_A) & "00000000000"; gvv_p12 <= "00000000000000000000" & unsigned(GVV_A) & "000000000000"; gvv_p13 <= "0000000000000000000" & unsigned(GVV_A) & "0000000000000"; gvv_p14 <= "000000000000000000" & unsigned(GVV_A) & "00000000000000"; gvv_p15 <= "00000000000000000" & unsigned(GVV_A) & "000000000000000"; gvv_p16 <= "0000000000000000" & unsigned(GVV_A) & "0000000000000000"; gvv_p17 <= "000000000000000" & unsigned(GVV_A) & "00000000000000000"; gvv_p18 <= "00000000000000" & unsigned(GVV_A) & "000000000000000000"; gvv_p19 <= "0000000000000" & unsigned(GVV_A) & "0000000000000000000"; gvv_p20 <= "000000000000" & unsigned(GVV_A) & "00000000000000000000"; gvv_p21 <= "00000000000" & unsigned(GVV_A) & "000000000000000000000"; gvv_p22 <= "0000000000" & unsigned(GVV_A) & "0000000000000000000000"; gvv_p23 <= "000000000" & unsigned(GVV_A) & "00000000000000000000000"; gvv_p24 <= "00000000" & unsigned(GVV_A) & "000000000000000000000000"; --gvv_p25 <= "0000000" & unsigned(GVV_A) & "0000000000000000000000000"; gvv_p26 <= "000000" & unsigned(GVV_A) & "00000000000000000000000000"; gvv_p27 <= "00000" & unsigned(GVV_A) & "000000000000000000000000000"; gvv_p28 <= "0000" & unsigned(GVV_A) & "0000000000000000000000000000"; gvv_p29 <= "000" & unsigned(GVV_A) & "00000000000000000000000000000"; gvv_p30 <= "00" & unsigned(GVV_A) & "000000000000000000000000000000"; --gvv_p31 <= "0" & unsigned(GVV_A) & "0000000000000000000000000000000"; gvv_prod <= (gvv_p0+gvv_p5+gvv_p12+gvv_p13+gvv_p14+gvv_p15+gvv_p18+gvv_p21+gvv_p22+gvv_p24+gvv_p26+gvv_p27+gvv_p28+gvv_p29+gvv_p30); GVV_C_M <= std_logic_vector (gvv_prod); end Behavioral; Звіт для оптимізованого варіанту # Adders/Subtractors : 9 40-bit adder : 7 40-bit subtractor : 2 ========================================================================= * Final Report * ========================================================================= Final Results RTL Top Level Output File Name : Optimized.ngr Top Level Output File Name : Optimized Output Format : NGC Optimization Goal : Speed Keep Hierarchy : No Design Statistics # IOs : 48 Cell Usage : # BELS : 323 # GND : 1 # INV : 28 # LUT1 : 29 # LUT2 : 24 # LUT3 : 12 # LUT4 : 32 # MULT_AND : 8 # MUXCY : 85 # MUXF5 : 1 # VCC : 1 # XORCY : 102 # IO Buffers : 48 # IBUF : 8 # OBUF : 40 ========================================================================= Device utilization summary: --------------------------- Selected Device : 4vlx15sf363-12 Number of Slices: 67 out of 6144 1% Number of 4 input LUTs: 125 out of 12288 1% Number of IOs: 48 Number of bonded IOBs: 48 out of 240 20% Delay: 13.083ns (Levels of Logic = 22) Total 13.083ns (8.252ns logic, 4.831ns route) (63.1% logic, 36.9% route) Total REAL time to Xst completion: 30.00 secs Total CPU time to Xst completion: 30.27 secs Total memory usage is 340000 kilobytes Код для оптимізованого варіанту library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.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 Optimized is Port ( GVV_A : in STD_LOGIC_VECTOR (7 downto 0); GVV_Opt : out STD_LOGIC_VECTOR (39 downto 0)); end Optimized; architecture Behavioral of Optimized is signal gvv_prod, gvv_p31, gvv_p30,gvv_p29,gvv_p28,gvv_p27,gvv_p26,gvv_p24,gvv_p23,gvv_p22,gvv_p21,gvv_p20,gvv_p19,gvv_p18,gvv_p17,gvv_p16,gvv_p15,gvv_p14,gvv_p13,gvv_p12,gvv_p11,gvv_p9,gvv_p7,gvv_p5,gvv_p2,gvv_p1,gvv_p0:unsigned(39 downto 0); begin gvv_p0 <= "00000000000000000000000000000000" & unsigned(GVV_A); --gvv_p1 <= "0000000000000000000000000000000" & unsigned(GVV_A) & "0"; --gvv_p2 <= "000000000000000000000000000000" & unsigned(GVV_A) & "00"; gvv_p3 <= "00000000000000000000000000000" & unsigned(GVV_A) & "000"; --gvv_p4 <= "0000000000000000000000000000" & unsigned(GVV_A) & "0000"; gvv_p5 <= "000000000000000000000000000" & unsigned(GVV_A) & "00000"; --gvv_p6 <= "00000000000000000000000000" & unsigned(GVV_A) & "000000"; gvv_p7 <= "0000000000000000000000000" & unsigned(GVV_A) & "0000000"; --gvv_p8 <= "000000000000000000000000" & unsigned(GVV_A) & "00000000"; gvv_p9 <= "00000000000000000000000" & unsigned(GVV_A) & "000000000"; --gvv_p10 <= "0000000000000000000000" & unsigned(GVV_A) & "0000000000"; gvv_p11 <= "000000000000000000000" & unsigned(GVV_A) & "00000000000"; gvv_p12 <= "00000000000000000000" & unsigned(GVV_A) & "000000000000"; --gvv_p13 <= "0000000000000000000" & unsigned(GVV_A) & "0000000000000"; gvv_p14 <= "000000000000000000" & unsigned(GVV_A) & "00000000000000"; --gvv_p15 <= "00000000000000000" & unsigned(GVV_A) & "000000000000000"; gvv_p16 <= "0000000000000000" & unsigned(GVV_A) & "0000000000000000"; --gvv_p17 <= "000000000000000" & unsigned(GVV_A) & "00000000000000000"; gvv_p18 <= "00000000000000" & unsigned(GVV_A) & "000000000000000000"; --gvv_p19 <= "0000000000000" & unsigned(GVV_A) & "0000000000000000000"; --gvv_p20 <= "000000000000" & unsigned(GVV_A) & "00000000000000000000"; gvv_p21 <= "00000000000" & unsigned(GVV_A) & "000000000000000000000"; gvv_p22 <= "0000000000" & unsigned(GVV_A) & "0000000000000000000000"; --gvv_p23 <= "000000000" & unsigned(GVV_A) & "00000000000000000000000"; gvv_p24 <= "00000000" & unsigned(GVV_A) & "000000000000000000000000"; gvv_p25 <= "0000000" & unsigned(GVV_A) & "0000000000000000000000000"; gvv_p26 <= "000000" & unsigned(GVV_A) & "00000000000000000000000000"; --gvv_p27 <= "00000" & unsigned(GVV_A) & "000000000000000000000000000"; --gvv_p28 <= "0000" & unsigned(GVV_A) & "0000000000000000000000000000"; --gvv_p29 <= "000" & unsigned(GVV_A) & "00000000000000000000000000000"; --gvv_p30 <= "00" & unsigned(GVV_A) & "000000000000000000000000000000"; gvv_p31 <= "0" & unsigned(GVV_A) & "0000000000000000000000000000000"; gvv_prod <= (gvv_p31+gvv_p24+gvv_p22+gvv_p21+gvv_p18+gvv_p16+gvv_p5+gvv_p0)-gvv_p26-gvv_p12; GVV_Opt <= std_logic_vector (gvv_prod); end Behavioral; Порівняння Після аналізу звітів можна визначити, що перемножувач з оптимізованою константою є набагато ефективнішим, ніж перемножувач з неоптимізованою константою. Ці два варіанти використувують 40-бітні суматори і віднімачі, проте відрізняються у кількості. Неоптимізований варіант використовує 21 елементів, а оптимізований 11, що є у два рази ефективніше, а це видно по затримці – у неоптимізованого варіанту 19.5 нс, а у оптимізованого – 13 нс. Висновок На цій лабораторній роботі я займався розробкою спеціалізованого перемножувача. Проаналізував роботу перемножувачів цілих чисел з послідовним та паралельним додаванням часткових добутків, визначив кращий варіант. Реалізував множення на константу, провів мінімізацію константи та досягнув оптимізації перемноженні у 2 рази.
Антиботан аватар за замовчуванням

30.12.2015 03:20

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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