Розробка конвеєрного процесора

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

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

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

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

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

Міністерство освіти та науки України Національний університет «Львівська політехніка» Звіт з лабораторної роботи №4 з дисципліни:« Основи проектування цифрових засобів на ПЛІС» на тему: «Розробка конвеєрного процесора» Львів-2017 Тема: Розробка конвеєрного процесора. Мета роботи: розробити конвеєрний процесор. Постановка задачі: Для перетворення прототипу комбінаційної схеми в потокову структуру та отримання VHDL коду цієї процедури, зручно використовувати такі кроки: Створити блок-схему комбінаційної схеми та організувати її компоненти в вигляді каскадної послідовності. Визначити основні компоненти блок-схеми та оцінити тривалості їх виконання. Поділити послідовність компонентів на етапи, щоб тривалість етапів була приблизно рівною. Визначити дані й сигнали необхідні на кожному етапі опрацювання та вибрати ті, які надходять з інших етапів опрацювання. Розмістити регістри для зберігання даних й сигналів, які находять з інших етапів опрацювання. Завдання 5. a2 + b ∙ c - d2 Для реалізації конвеєрного обчислення потрібно поділити функцію на такі кроки: 1. a2 b ∙ c d2  2.  a2 + b ∙ c   3.  a2 + b ∙ c - d2    Для реалізації ітераційного обчислення потрібно поділити функцію на такі кроки: * +,-  1. a2   2. b ∙ c   3.  a2 + b ∙ c  4. d2   5. a2 + b ∙ c - d2   Cхема конвеєрного обчислення виразу / Рис. 1. Схема конвеєрного обчислення VHDL-код реалізації системи Оскільки схема була розроблена за допомогою вбудованих елементів Xilinx та створеного елемента IPCore, то VHDL-код був згенерований автоматично. Cхема неконвеєрного обчислення виразу / Рис. 2. Схема неконвеєрного обчислення VHDL-код реалізації системи Оскільки схема була розроблена за допомогою вбудованих елементів Xilinx та створеного елемента IPCore, то VHDL-код був згенерований автоматично. Порівняння результатів синтезу обох варіантів Результат синтезу схеми конвеєрного обчислення виразу: ========================================================================= * Design Summary * ========================================================================= Top Level Output File Name : l_sh.ngc Primitive and Black Box Usage: ------------------------------ # BELS : 860 # GND : 4 # INV : 1 # LUT1 : 15 # LUT2 : 112 # LUT3 : 30 # LUT4 : 86 # MULT_AND : 108 # MUXCY : 240 # XORCY : 264 # FlipFlops/Latches : 160 # FD : 48 # FDCE : 112 # Clock Buffers : 1 # BUFGP : 1 # IO Buffers : 52 # IBUF : 36 # OBUF : 16 Device utilization summary: --------------------------- Selected Device : 6vlx75tff484-3 Slice Logic Utilization: Number of Slice Registers: 160 out of 93120 0% Number of Slice LUTs: 244 out of 46560 0% Number used as Logic: 244 out of 46560 0% Slice Logic Distribution: Number of LUT Flip Flop pairs used: 404 Number with an unused Flip Flop: 244 out of 404 60% Number with an unused LUT: 160 out of 404 39% Number of fully used LUT-FF pairs: 0 out of 404 0% Number of unique control sets: 9 IO Utilization: Number of IOs: 53 Number of bonded IOBs: 53 out of 240 22% Specific Feature Utilization: Number of BUFG/BUFGCTRLs: 1 out of 32 3% --------------------------- Partition Resource Summary: --------------------------- No Partitions were found in this design. --------------------------- ========================================================================= Timing Report NOTE: THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE. FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT GENERATED AFTER PLACE-and-ROUTE. Clock Information: ------------------ -----------------------------------+------------------------+-------+ Clock Signal | Clock buffer(FF name) | Load | -----------------------------------+------------------------+-------+ clk | BUFGP | 160 | -----------------------------------+------------------------+-------+ Asynchronous Control Signals Information: ---------------------------------------- No asynchronous control signals found in this design Timing Summary: --------------- Speed Grade: -3 Minimum period: 3.066ns (Maximum Frequency: 326.211MHz) Minimum input arrival time before clock: 0.721ns Maximum output required time after clock: 2.576ns Maximum combinational path delay: 2.358ns Timing Details: --------------- All values displayed in nanoseconds (ns) ========================================================================= Timing constraint: Default period analysis for Clock 'clk' Clock period: 3.066ns (frequency: 326.211MHz) Total number of paths / destination ports: 197364 / 128 ------------------------------------------------------------------------- Delay: 3.066ns (Levels of Logic = 22) Source: XLXI_4/Q_0 (FF) Destination: sec_inst (FF) Source Clock: clk rising Destination Clock: clk rising Data Path: XLXI_4/Q_0 to sec_inst Gate Net Cell:in->out fanout Delay Delay Logical Name (Net Name) ---------------------------------------- ------------ FDCE:C->Q 16 0.280 0.550 Q_0 (Q_0) end scope: 'XLXI_4:Q<0>' begin scope: 'XLXI_13:a<0>' begin scope: 'XLXI_13/blk00000001:A<0>' SEC:in->out 1 0.053 0.000 sec_inst (sec_net) SEC:in->out 1 0.219 0.000 sec_inst (sec_net) SEC:in->out 1 0.015 0.000 sec_inst (sec_net) SEC:in->out 1 0.015 0.000 sec_inst (sec_net) SEC:in->out 1 0.015 0.000 sec_inst (sec_net) SEC:in->out 1 0.015 0.000 sec_inst (sec_net) SEC:in->out 1 0.015 0.000 sec_inst (sec_net) SEC:in->out 1 0.015 0.000 sec_inst (sec_net) SEC:in->out 0 0.015 0.000 sec_inst (sec_net) SEC:in->out 1 0.180 0.357 sec_inst (sec_net) SEC:in->out 1 0.053 0.000 sec_inst (sec_net) SEC:in->out 1 0.219 0.000 sec_inst (sec_net) SEC:in->out 0 0.015 0.000 sec_inst (sec_net) SEC:in->out 1 0.180 0.357 sec_inst (sec_net) SEC:in->out 1 0.053 0.000 sec_inst (sec_net) SEC:in->out 1 0.219 0.000 sec_inst (sec_net) SEC:in->out 1 0.015 0.000 sec_inst (sec_net) SEC:in->out 1 0.015 0.000 sec_inst (sec_net) SEC:in->out 0 0.015 0.000 sec_inst (sec_net) SEC:in->out 1 0.180 0.000 sec_inst (sec_net) SEC:in -0.012 sec_inst ---------------------------------------- Total 3.066ns (1.801ns logic, 1.265ns route) (58.8% logic, 41.2% route) ========================================================================= Timing constraint: Default OFFSET IN BEFORE for Clock 'clk' Total number of paths / destination ports: 256 / 256 ------------------------------------------------------------------------- Offset: 0.721ns (Levels of Logic = 2) Source: clr (PAD) Destination: XLXI_4/Q_0 (FF) Destination Clock: clk rising Data Path: clr to XLXI_4/Q_0 Gate Net Cell:in->out fanout Delay Delay Logical Name (Net Name) ---------------------------------------- ------------ IBUF:I->O 112 0.003 0.398 clr_IBUF (clr_IBUF) begin scope: 'XLXI_4:CLR' FDCE:CLR 0.320 Q_0 ---------------------------------------- Total 0.721ns (0.323ns logic, 0.398ns route) (44.8% logic, 55.2% route)  Результат синтезу схеми неконвеєрного обчислення виразу: ========================================================================= Timing Report NOTE: THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE. FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT GENERATED AFTER PLACE-and-ROUTE. Clock Information: ------------------ -----------------------------------+------------------------+-------+ Clock Signal | Clock buffer(FF name) | Load | -----------------------------------+------------------------+-------+ N9(N9LogicTrst1:O) | BUFG(*)(XLXI_11/DQ_0) | 160 | N14(N14LogicTrst1:O) | BUFG(*)(XLXI_10/DQ_0) | 160 | CLK | BUFGP | 100 | -----------------------------------+------------------------+-------+ (*) These 2 clock signal(s) are generated by combinatorial logic, and XST is not able to identify which are the primary clock signals. Please use the CLOCK_SIGNAL constraint to specify the clock signal(s) generated by combinatorial logic. Asynchronous Control Signals Information: ---------------------------------------- No asynchronous control signals found in this design Timing Summary: --------------- Speed Grade: -3 Minimum period: 5.605ns (Maximum Frequency: 178.415MHz) Minimum input arrival time before clock: 0.538ns Maximum output required time after clock: 1.246ns Maximum combinational path delay: No path found Timing Details: --------------- All values displayed in nanoseconds (ns) ========================================================================= Timing constraint: Default period analysis for Clock 'N9' Clock period: 2.479ns (frequency: 403.454MHz) Total number of paths / destination ports: 128 / 32 ------------------------------------------------------------------------- Delay: 1.239ns (Levels of Logic = 3) Source: XLXI_11/RAM_MEM<15>_0 (LATCH) Destination: XLXI_11/DQ_0 (LATCH) Source Clock: N9 rising Destination Clock: N9 falling Data Path: XLXI_11/RAM_MEM<15>_0 to XLXI_11/DQ_0 Gate Net Cell:in->out fanout Delay Delay Logical Name (Net Name) ---------------------------------------- ------------ LDE_1:G->Q 1 0.277 0.592 XLXI_11/RAM_MEM<15>_0 (XLXI_11/RAM_MEM<15>_0) LUT5:I0->O 1 0.053 0.000 XLXI_11/Mmux_A[3]_RAM_MEM[15][31]_wide_mux_0_OUT<0>_4 (XLXI_11/Mmux_A[3]_RAM_MEM[15][31]_wide_mux_0_OUT<0>_4) MUXF7:I1->O 1 0.187 0.000 XLXI_11/Mmux_A[3]_RAM_MEM[15][31]_wide_mux_0_OUT<0>_3_f7 (XLXI_11/Mmux_A[3]_RAM_MEM[15][31]_wide_mux_0_OUT<0>_3_f7) MUXF8:I1->O 1 0.130 0.000 XLXI_11/Mmux_A[3]_RAM_MEM[15][31]_wide_mux_0_OUT<0>_2_f8 (XLXI_11/A[3]_RAM_MEM[15][31]_wide_mux_0_OUT<0>) LD:D -0.043 XLXI_11/DQ_0 ---------------------------------------- Total 1.239ns (0.647ns logic, 0.592ns route) (52.2% logic, 47.8% route) ========================================================================= Timing constraint: Default period analysis for Clock 'N14' Clock period: 2.257ns (frequency: 443.145MHz) Total number of paths / destination ports: 128 / 32 ------------------------------------------------------------------------- Delay: 1.128ns (Levels of Logic = 3) Source: XLXI_10/RAM_MEM<1>_0 (LATCH) Destination: XLXI_10/DQ_0 (LATCH) Source Clock: N14 rising Destination Clock: N14 falling Data Path: XLXI_10/RAM_MEM<1>_0 to XLXI_10/DQ_0 Gate Net Cell:in->out fanout Delay Delay Logical Name (Net Name) ---------------------------------------- ------------ LDE_1:G->Q 1 0.277 0.481 XLXI_10/RAM_MEM<1>_0 (XLXI_10/RAM_MEM<1>_0) LUT5:I1->O 1 0.053 0.000 XLXI_10/Mmux_A[3]_RAM_MEM[15][31]_wide_mux_0_OUT<0>_6 (XLXI_10/Mmux_A[3]_RAM_MEM[15][31]_wide_mux_0_OUT<0>_6) MUXF7:I0->O 1 0.186 0.000 XLXI_10/Mmux_A[3]_RAM_MEM[15][31]_wide_mux_0_OUT<0>_4_f7 (XLXI_10/Mmux_A[3]_RAM_MEM[15][31]_wide_mux_0_OUT<0>_4_f7) MUXF8:I0->O 1 0.131 0.000 XLXI_10/Mmux_A[3]_RAM_MEM[15][31]_wide_mux_0_OUT<0>_2_f8 (XLXI_10/A[3]_RAM_MEM[15][31]_wide_mux_0_OUT<0>) LD:D -0.043 XLXI_10/DQ_0 ---------------------------------------- Total 1.128ns (0.647ns logic, 0.481ns route) (57.3% logic, 42.7% route)   VHDL-код тестовго стенду Тестовий стенд для схеми конвеєрного обчислення виразу: LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.numeric_std.ALL; LIBRARY UNISIM; USE UNISIM.Vcomponents.ALL; ENTITY l_sh_l_sh_sch_tb IS END l_sh_l_sh_sch_tb; ARCHITECTURE behavioral OF l_sh_l_sh_sch_tb IS COMPONENT l_sh PORT( a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); ce : IN STD_LOGIC ; clk : IN STD_LOGIC ; clr : IN STD_LOGIC ; b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); c : IN STD_LOGIC_VECTOR (7 DOWNTO 0); d : IN STD_LOGIC_VECTOR (7 DOWNTO 0); ONE : IN STD_LOGIC; ZERO : IN STD_LOGIC; x : OUT STD_LOGIC_VECTOR (15 DOWNTO 0)); END COMPONENT; SIGNAL a : STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL ce : STD_LOGIC := '1'; SIGNAL clk : STD_LOGIC := '1'; SIGNAL clr : STD_LOGIC := '0'; SIGNAL b : STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL c : STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL d : STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL ONE : STD_LOGIC := '1'; SIGNAL ZERO : STD_LOGIC := '0'; SIGNAL x : STD_LOGIC_VECTOR (15 DOWNTO 0); constant clk_c : time :=10 ns; SIGNAL buf : integer :=0; BEGIN UUT: l_sh PORT MAP( a => a, ce => ce, clk => clk, clr => clr, b => b, c => c, d => d, ONE => ONE, ZERO => ZERO, x => x ); -- *** Test Bench - User Defined Section *** tb : PROCESS BEGIN a <= "00000010"; b <= "00000010"; c <= "00000010"; d <= "00000010"; for i in 0 to 10 loop clk <= '0'; wait for clk_c; buf <= buf + 1; clk <= '1'; wait for clk_c; a <= std_logic_vector(unsigned(a) + (1)); b <= std_logic_vector(unsigned(b) + (1)); c <= std_logic_vector(unsigned(c) + (1)); d <= std_logic_vector(unsigned(d) + (1)); end loop; END PROCESS; END;   Тестовий стенд для схеми неконвеєрного обчислення виразу: LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.numeric_std.ALL; LIBRARY UNISIM; USE UNISIM.Vcomponents.ALL; ENTITY sh2_sh2_sch_tb IS END sh2_sh2_sch_tb; ARCHITECTURE behavioral OF sh2_sh2_sch_tb IS COMPONENT sh2 PORT( a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); b : IN STD_LOGIC_VECTOR (7 DOWNTO 0); c : IN STD_LOGIC_VECTOR (7 DOWNTO 0); d : IN STD_LOGIC_VECTOR (7 DOWNTO 0); counter : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); Control : OUT STD_LOGIC_VECTOR (23 DOWNTO 0); CLK : IN STD_LOGIC; ZERO_bit : IN STD_LOGIC; CE : IN STD_LOGIC; res : OUT STD_LOGIC_VECTOR (31 DOWNTO 0)); END COMPONENT; SIGNAL a : STD_LOGIC_VECTOR (7 DOWNTO 0):=x"02"; SIGNAL b : STD_LOGIC_VECTOR (7 DOWNTO 0):=x"02"; SIGNAL c : STD_LOGIC_VECTOR (7 DOWNTO 0):=x"02"; SIGNAL d : STD_LOGIC_VECTOR (7 DOWNTO 0):=x"02"; SIGNAL counter : STD_LOGIC_VECTOR (3 DOWNTO 0); SIGNAL Control : STD_LOGIC_VECTOR (23 DOWNTO 0); SIGNAL CLK : STD_LOGIC; SIGNAL ZERO_bit : STD_LOGIC:='0'; SIGNAL CE : STD_LOGIC:='1'; SIGNAL res : STD_LOGIC_VECTOR (31 DOWNTO 0); constant clk_c : time := 5 ns; BEGIN UUT: sh2 PORT MAP( a => a, b => b, c => c, d => d, counter => counter, Control => Control, CLK => CLK, ZERO_bit => ZERO_bit, CE => CE, res => res ); CLC_process :process begin CLK <= '1'; wait for clk_c/2; CLK <= '0'; wait for clk_c/2; end process; -- *** Test Bench - User Defined Section *** tb : PROCESS BEGIN WAIT; -- will wait forever END PROCESS; -- *** End Test Bench - User Defined Section *** END;   Діаграма для схеми конвеєрного обчислення виразу: / Рис. 3. Діаграма для схеми конвеєрного обчислення виразу Діаграма для схеми неконвеєрного обчислення виразу: Приклад виконання ітерацій. * +,-  1. a2   2. b ∙ c   3.  a2 + b ∙ c  4. d2   5. a2 + b ∙ c - d2   / Рис. 4. Діаграма для схеми конвеєрного обчислення виразу / Рис. 5. Діаграма для схеми неконвеєрного обчислення виразу / Рис. 6. Таблиця прошиття Перевірка: a2 + b ∙ c - d2= 22 + 2 ∙ 2 - 22 = 4; Висновок: на цій лабораторній роботі я спроектував роботу спеціалізованого конвеєрного процесора (конвеєрним та неконвеєрним способом) під задану функцію, шляхом її розбиття на дрібніші кроки. Як виявилось, ітераційний метод реалізувати складніше за конвеєрний. До того ж він потребує більше апаратних, затрат ніж конвеєрний метод.
Антиботан аватар за замовчуванням

22.03.2018 19:03-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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