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

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

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

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

Рік:
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:12-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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