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

Звіт

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

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

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

Рік:
2016
Тип роботи:
Лабораторна робота
Предмет:
Проектування комп'ютерних систем та мереж

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ  Звіт з лабораторних робіт №1-3 з дисципліни: «Проектування комп'ютерних систем та мереж, частина 1» Лабораторна робота №1 САПР Xilinx WebPack Мета: Опанувати методами роботи в САПР Xilinx WebPack. Дослідити властивості, поведінку та варіанти використання базового примітивного елементу ПЛІС, що отримав назву функційної таблиці (в оригіналі – Look-Up Table (LUT)). Завдання: В САПР WebPack/ModelSim імплементувати в ПЛІС Virtex-II власні модифікації наданого базового проекту «Функційна таблиця». Запропоновані імплементування верифікувати. Скласти звіт з виконання лабораторних досліджень та захистити його. Виконання: Створення проекту my_lab  Вибір ПЛІС та симулятора  Згенероване резюме проекту  У щойно створеному проекті автоматично генерується файл з кодом опису роботи створюваного пристрою. Після редагування даного файлу він матиме наступний вигляд до нього додано поведінку роботи пристрою: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity my_lab2 is Port ( a : in STD_LOGIC; b : in STD_LOGIC; c : out STD_LOGIC); end my_lab2; architecture Behavioral of my_lab2 is begin c <=(a and b); end Behavioral; Источник: http://12fan.ru/3217856884.html  На етапі синтезу створено звіт і технологічну схему. ========================================================================= * Final Report * ========================================================================= Final Results RTL Top Level Output File Name : my_lab2.ngr Top Level Output File Name : my_lab2 Output Format : NGC Optimization Goal : Speed Keep Hierarchy : NO Design Statistics # IOs : 3 Cell Usage : # BELS : 1 # LUT2 : 1 # IO Buffers : 3 # IBUF : 2 # OBUF : 1 ========================================================================= Device utilization summary: --------------------------- Selected Device : 2v40fg256-5 Number of Slices: 1 out of 256 0% Number of 4 input LUTs: 1 out of 512 0% Number of IOs: 3 Number of bonded IOBs: 3 out of 88 3% Технологічна схема проекту:  Вікно утиліти Floorplaner. Видно які контакти ПЛІС та під які сигнали задіяв автомат розведення.  Енергоспоживання проекту my_lab1  Еквівалентне подання функційною схемою наповнення функційної таблиці проекту my_lab2  Функціональна таблиця і карта Карно  Добавив TestBench tb  Часова діаграма  12) Часове симулювання табличної реалізації функції «І» на два входи  Топологія табличної реалізації логічної функції and2 на ПЛІС Virtex-2  Лабораторна робота №2 Імплементування VHDL моделей операційного та керуючого пристроїв (автоматів) Мета роботи: опанування технікою VHDL проектування основних комп’ютерних автоматів Хід роботи: Для початку промодельовано базову модель операційного пристрою: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity comst_alu is port (OPCODE : in STD_LOGIC_VECTOR(2 downto 0); A, B : in STD_LOGIC_vector(3 downto 0); OP_OUT : out STD_LOGIC_vector(3 downto 0)); end comst_alu; architecture Behavioral of comst_alu is constant ZERO : STD_LOGIC_VECTOR (2 downto 0) := "000"; constant A_AND_B: STD_LOGIC_VECTOR (2 downto 0) := "001"; constant A_OR_B : STD_LOGIC_VECTOR (2 downto 0) := "010"; constant ONE : STD_LOGIC_VECTOR (2 downto 0) := "111"; constant A_PL_B : STD_LOGIC_VECTOR (2 downto 0) := "011"; constant A_MI_B : STD_LOGIC_VECTOR (2 downto 0) := "100"; constant A_SRL : STD_LOGIC_VECTOR (2 downto 0) := "101"; constant A_SLL : STD_LOGIC_VECTOR (2 downto 0) := "110"; begin process (OPCODE, A, B) begin if (OPCODE = A_AND_B) then OP_OUT <= A and B; elsif (OPCODE = A_OR_B) then OP_OUT <= A or B; elsif (OPCODE = A_PL_B) then OP_OUT <= A + B; elsif (OPCODE = A_MI_B) then OP_OUT <= A - B; elsif (OPCODE = A_SRL) then OP_OUT <= '0' & A(3 downto 1); elsif (OPCODE = A_SLL) then OP_OUT <= A(2 downto 0) & '0'; elsif (OPCODE = ONE) then OP_OUT <= x"f"; else OP_OUT <= x"0"; end if; end process; end Behavioral; Для моделювання роботи необхідно створити test-bench файл з наступним вмістом (після доповнення): OPCODE <= "100" after 200ns; A <= "1111" after 150ns; B <= "0111" after 220ns;  Рис. 1 Моделювання стандартної моделі операційного пристрою. Для виконання лабораторної роботи необхідно змінити виконувану операцію. Для цього операцію віднімання заміняємо на операцію множення. До:  elsif (OPCODE = A_MI_B)  then  OP_OUT <= A - B; Після:   elsif (OPCODE = A_MI_B)  then OP_OUT <= A * B; Також проведемо моделювання зміненої моделі (рис. 2).  Рис. 2 Моделювання зміненої моделі операційного пристрою. Як бачимо все працює правильно. До зміни операції: 1111 – 0111 = 1000 (8) після: 1111 * 0111 = 1001 (9) Єдиним недоліком є те, що втрачається старший розряд результату. Автомат Мура Завдання: Засобами САПР Xilinx ISE WebPack/ModelSim імплементувати проект «Автомат Мура» на основі дослідження і розширення наданої базової (прототипної) моделі. Далі подамо прототипну VHDL модель автомата Мура, що містить три процеси, а саме:  синхропроцес, що зростаючим фронтом тактового імпульсу змінює поточний внутрішній стан автомата на наступний,  процес формування функції переходів, тобто, комбінаційного обчислення наступного стану автомата в залежності від поточного стану та поточного вхідного сигналу,  процес формування вихідної функції, що залежить в автоматі Мура виключно від поточного внутрішнього стану. Хід роботи: Для роботи з автоматом використано наступну модель: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity my_avt_moore is port ( clk, reset, x1 : IN std_logic; outp : OUT std_logic); end my_avt_moore; architecture Behavioral of my_avt_moore is type state_type is (s1,s2,s3,s4); signal state, next_state: state_type ; begin synchro_process: process (clk,reset) begin if (reset ='1') then state <=s1; elsif (clk='1' and clk'Event) then state <= next_state; end if; end process synchro_process; transition_function_process : process (state, x1) begin begin case state is when s1 => if x1='1' then next_state <= s2; else next_state <= s3; end if; when s2 => next_state <= s4; when s3 => next_state <= s4; when s4 => next_state <= s1; end case; end process transition_function_process; output_function_process : process (state) begin case state is when s1 => outp <= '1'; when s2 => outp <= '1'; when s3 => outp <= '0'; when s4 => outp <= '0'; end case; end process output_function_process; end Behavioral; Спершу сигнал х1 ставився в значення «1», результ моделювання при цьому показаний на рис. 3. Потім сигнал х2 ставився в значення «0», результат показаний на рис. 4.  Рис. 3 Моделювання при х1 = ‘1’   Рис. 4 Моделювання при х1 = ‘0’  Як видно з результатів на вихід подається різна комбінація («110» при першому варіанті, і «100» при другому). Це вказує на те, що автомат працює так, як задумувалось при розробці. Лабораторна робота №3а Імплементування VHDL моделей двохнаправленої шини та LVDS шини Мета роботи: Опанувати техніку використання шин в системних проектах на ПЛІС Хід роботи: Реалізація тристабільної двонаправленої шини даних наведена нижче: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity tristate is port ( clk: in STD_LOGIC; rstn: in STD_LOGIC; read_state: out std_logic; write_state: out std_logic; bus_out: out STD_LOGIC_VECTOR (7 downto 0); z_bus: inout STD_LOGIC_VECTOR (7 downto 0)); end tristate; architecture Behavioral of tristate is signal chronometer: std_logic_vector(7 downto 0); signal bus_register: std_logic_vector(7 downto 0); signal write_to_bus, read_from_bus : std_logic; begin write_to_bus <= '1' when chronometer > "00000011" and chronometer < "00010000" else '0'; -- multiplexor read_from_bus <= '1' when chronometer > "00011111" and chronometer < "00111111" else '0'; -- multiplexor z_bus <= "01110111" when write_to_bus = '1' else (others => 'Z'); -- multiplexor, write cycle bus_out <= bus_register; -- out from chip write_state <= write_to_bus; -- write-gate signal, chip output read_state <= read_from_bus; -- read-gate signal, chip output U1: process (clk, rstn, read_from_bus) -- reading from tristate bus begin if rstn ='0' then bus_register <= (others => '0'); elsif read_from_bus='1' then if clk'event and clk='1'then bus_register <= z_bus; -- read cycle else null; end if; else null; end if; end process; U2: process (clk, rstn) begin if rstn ='0' then chronometer <= (others => '0'); elsif clk'event and clk='1' then chronometer <= chronometer + '1'; else null; end if; end process; end Behavioral; Результат симулювання наведено на рисунку 1. Як видно з діаграми в момент запису на шину, шина виходить зі стану Z. І на неї записується код. Коли відкриті ворота читання, виконується читання на шину bus_out починаючи з 420 ns. Ці дані будуть на шині поки будуть відкриті ворота читання. Для симулювання використано наступне доповнення:  Рис. 1. Моделювання роботи тристабільної двохнаправленої шини. Шина LVDS Текст модуля реалізації даної шини наведено нижче: library IEEE; Library UNISIM; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; use UNISIM.vcomponents.all; entity lvds is Port ( i : in std_logic; ib : in std_logic; tri: in std_logic; o : out std_logic; ob : out std_logic); end lvds; architecture Behavioral of lvds is component IBUFDS_LVDS_25 port( I : in std_logic; IB : in std_logic; O : out std_logic ); end component; component OBUFTDS_LVDS_25 port( I : in std_logic; T : in std_logic; O : out std_logic; OB : out std_logic ); end component; signal wire_in : std_logic; signal wire_out : std_logic; begin U0: wire_in <= not wire_out; U1: IBUFDS_LVDS_25 port map ( I => i, -- P-Channel input to LVDS in_buffer IB => ib, -- N-Channel input to LVDS in_buffer O => wire_out); -- Output to FPGA fabric U2: OBUFTDS_LVDS_25 port map ( I => wire_in, -- Input from FPGA fabric T => tri, -- 3-State control input to LVDS out-buffer O => o, -- P-Channel Output of LVDS buffer OB => ob -- N-Channel Output of LVDS buffer ); end Behavioral; У тест бенч були внесені зміни: i <= not i after 50ns; ib <= not ib after 50ns; ……….. wait for 200 ns; tri <= '0'; wait for 300 ns; tri <= '1';  Рис.2 Часове симулювання функціонування LVDS шини.  Рис. 3. Розміщення LVDS-шини на кристалі. Лабораторна робота №3б Синтез та дослідження DLL/DCM тактування проектів на ПЛІС Мета: Опанувати технікою тактування поектів на ПЛІС Хід роботи: Текст модуля наведено нижче: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; --library UNISIM; --use UNISIM.VComponents.all; entity dll_standard is port (CLKIN : in std_logic; RESET : in std_logic; CLK0 : out std_logic; CLK2X : out std_logic; LOCKED: out std_logic); end dll_standard; architecture Behavioral of dll_standard is component IBUFG port( O : out STD_ULOGIC; I : in STD_ULOGIC); end component; component IBUF port( O : out STD_ULOGIC; I : in STD_ULOGIC); end component; component CLKDLL port ( CLKIN : in std_ulogic := '0'; CLKFB : in std_ulogic := '0'; RST : in std_ulogic := '0'; CLK0 : out std_ulogic := '0'; CLK90 : out std_ulogic := '0'; CLK180 : out std_ulogic := '0'; CLK270 : out std_ulogic := '0'; CLK2X : out std_ulogic := '0'; CLKDV : out std_ulogic := '0'; LOCKED : out std_ulogic := '0'); end component; component BUFG port( O :out STD_ULOGIC; I :in STD_ULOGIC); end component; component OBUF port( O : out STD_ULOGIC; I : in STD_ULOGIC); end component; signal CLKIN_w, RESET_w, CLK0_dll, CLK0_g, CLK2X_dll, LOCKED_dll : std_logic; begin clkpad : IBUFG port map (I=>CLKIN, O=>CLKIN_w); rstpad : IBUF port map (I=>RESET, O=>RESET_w); dll : CLKDLL port map (CLKIN=>CLKIN_w, CLKFB=>CLK0_g, RST=>RESET_w,CLK0=>CLK0_dll, CLK90=>open, CLK180=>open, CLK270=>open, CLK2X=>CLK2X_dll, CLKDV=>open, LOCKED=>LOCKED_dll); clkg : BUFG port map (I=>CLK0_dll, O=>CLK0_g); clk2xg : BUFG port map (I=>CLK2X_dll, O=>CLK2X); lckpad : OBUF port map (I=>LOCKED_dll, O=>LOCKED); CLK0 <= CLK0_g; end Behavioral; Автоматично згенерована схема проекту наведена на рисунку 1  Рис. 1 RTL – схема проекту.  Рис. 2 Часова діаграма симуляції проекту за допомогою TEST-BENCH. Як видно з часової діаграми сигнал CLK0 повністю повторює вхідний сигнал синхронізації. А сигнал CLK2X формується з частотою, вдвічі швидчою ніж попередній, отже модуль працює правильно. Висновок: На даних лабораторних роботах я дослідив властивості поведінку та варіанти базового примітивного елементу PLIS, опанував техніку VHDL проектування основних комп’ютерних автоматів, використання шин в системних проектах на ПЛІС, тактування проектів на ПЛІС.
Антиботан аватар за замовчуванням

11.05.2016 20:47

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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