Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки
Національний університет „Львівська політехніка”
Кафедра EОМ
/
Звіт
з лабораторної роботи № 1
з дисципліни: “ ТЕСТУВАННЯ І ДІАГНОСТИКА
КІБЕРФІЗИЧНИХ СИСТЕМ ”
На тему:” Тестування АЛП”
Львів
2019
Мета роботи: метою роботи є ознайомлення з загальною схемою тестування цифрової техніки. Засвоєння методів та засобів тестування комбінаційних схем на прикладі арифметико-логічного пристрою (АЛП).
Завдання: дана лабораторна робота виконується у середовищі Aldec Active HDL. У даній роботі при тестуванні створюються 3 вузли.
1) Еталонний вузол;
2) Еталонний вузол з наперед заданою помилкою;
3) Вузол порівняння.
Потрібно змоделювати Арифметико-логічний пристрій та протестувати його при різних помилках. Арифметико-логічний пристрій повинен виконувати такі операції:
1) операція віднімання;
2) операція І;
3) операція АБО;
4) операція виключне АБО;
5) інкремент A;
6) інкремент B;
7) інверсія A;
8) інверсія B;
9) логічний зсув ліворуч A;
10) логічний зсув ліворуч B;
11) зсув праворуч A;
12) логічний зсув праворуч B;
13) декремент A;
14) декремент B;
15) константа 0.
Виконання роботи:
Код Еталонного вузла:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use ieee.NUMERIC_STD.all;
entity ALU is
generic (
constant N: natural := 1
);
Port (
A, B : in STD_LOGIC_VECTOR(7 downto 0);
ALU_Sel : in STD_LOGIC_VECTOR(3 downto 0);
ALU_Out : out STD_LOGIC_VECTOR(7 downto 0)
);
end ALU;
architecture Behavioral of ALU is
signal ALU_Result : std_logic_vector (7 downto 0);
signal tmp: std_logic_vector (8 downto 0);
begin
process(A,B,ALU_Sel)
begin
case(ALU_Sel) is
when "0000" =>
ALU_Result <= A - B ;
when "0001" =>
ALU_Result <= A AND B ;
when "0010" =>
ALU_Result <= A OR B;
when "0011" =>
ALU_Result <= A XOR B;
when "0100" =>
ALU_Result <= std_logic_vector(unsigned(A) sll N);
when "0101" =>
ALU_Result <= std_logic_vector(unsigned(B) sll N);
when "0110" =>
ALU_Result <= std_logic_vector(unsigned(A) srl N);
when "0111" =>
ALU_Result <= std_logic_vector(unsigned(B) srl N);
when "1000" =>
ALU_Result <= A + N;
when "1001" =>
ALU_Result <= B + N;
when "1010" =>
ALU_Result <= (NOT A);
when "1011" =>
ALU_Result <= (NOT B);
when "1100" =>
ALU_Result <= A - N;
when "1101" =>
ALU_Result <= B - N;
when "1110" =>
ALU_Result <= "00000000" ;
when others => ALU_Result <= "ZZZZZZZZ" ;
end case;
end process;
ALU_Out <= ALU_Result;
end Behavioral;
Змінений код Еталонного вузла:
begin
case(ALU_Sel) is
when "0000" =>
ALU_Result <= A - B ;
when "0001" =>
ALU_Result <= A NAND B ;
when "0010" =>
ALU_Result <= A NOR B;
when "0011" =>
ALU_Result <= A XOR B;
when "0100" =>
ALU_Result <= std_logic_vector(unsigned(A) sll N);
when "0101" =>
ALU_Result <= std_logic_vector(unsigned(B) sll N);
when "0110" =>
ALU_Result <= std_logic_vector(unsigned(A) srl N);
when "0111" =>
ALU_Result <= std_logic_vector(unsigned(B) srl N);
when "1000" =>
ALU_Result <= A - N;
when "1001" =>
ALU_Result <= B + N;
when "1010" =>
ALU_Result <= (NOT A);
when "1011" =>
ALU_Result <= (NOT B);
when "1100" =>
ALU_Result <= A + N;
when "1101" =>
ALU_Result <= B - N;
when "1110" =>
ALU_Result <= "00000000"
when others => ALU_Result <= "ZZZZZZZZ" ;
end case;
Код Вузла порівняння:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity Comparison is
port ( ALU_Out : in std_logic_vector (7 downto 0);
ALU_Out_B : in std_logic_vector (7 downto 0);
Output : out std_logic
);
end Comparison;
architecture Arch_Comparator of Comparison is
begin
Output <= '1' when (ALU_Out_B=ALU_Out) else '0';
end Arch_Comparator;
Часова діаграма роботи системи:
/
Висновок: в даній лабораторній роботі я розробив програму тестування АЛП, описав поведінку еталонного АЛП, за результатами тестування АЛП визначив несправні елементи досліджуваного пристрою, несправні контакти визначених елементів та тип несправності (обрив, закоротка).
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!