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

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

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

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

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

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

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

Міністерство освіти та науки України Національний університет «Львівська політехніка» Звіт з лабораторної роботи №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:06

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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