Звіт

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

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

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

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

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ  Звіт з лабораторних робіт №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:05-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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