Тестування цифрового автомата

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

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

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

Рік:
2019
Тип роботи:
Лабораторна робота
Предмет:
Тестування та діагностика кіберфізичних систем

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” КАФЕДРА ЕОМ / Звіт з лабораторної роботи №3 з дисципліни «Тестування та діагностика кіберфізичних систем» на тему” Тестування цифрового автомата” Львів – 2019 1 МЕТА РОБОТИ Метою роботи є ознайомлення з загальною схемою тестування цифрової техніки. Засвоєння методів та засобів тестування цифрових схем з пам’яттю на прикладі цифрового автомата (ЦА). 2 Очікуваний результат роботи Необхідно розробити програму тестування ЦА, описати поведінку еталонного ЦА (створити еталон), за результатами тестування ЦА знайти прояви помилки, визначити тип несправності (неправильне формування вихідних сигналів, неправильний перехід до наступного стану), визначити причину несправності (обрив або закоротка вхідного чи вихідного сигналу). 3 ТЕОРЕТИЧНА ЧАСТИНА Особливості тестування цифрових автоматів. Цифровий автомат є прикладом пристрою із пам’яттю. Цифровий автомат характеризується: набором вхідних сигналів {X}; набором вихідних сигналів {Y}; набором внутрішніх станів {A}; початковим станом a0; правилом формування вихідних сигналів; правилом формування наступного внутрішнього стану. Існують такі способи завдання автоматів, які описують залежність, відповідно, наступного стану автомата і його виходу від теперешнього стану автомата і його входів: табличний - задаються дві таблиці: станів (переходів) і виходів; за допомогою часових діаграм; аналітичний, в тому числі на мовах опису апаратної частини цифрових вузлів – Hardware Discription Language (HDL); за допомогою графа алгоритму роботи автомата; за допомогою графа автомата (рис. 3.6); опис на звичайній мові. Цифрові автомати поділяються на автомати: Мура, в яких вихідні сигнали залежать тільки від стану автомата; Мілі, в яких вихідні сигнали залежать як від стану автомата, так і від вхідних сигналів. Здебільшого цифрові автомати бувають синхронними, тобто зміна стану автомата здійснюється по фронту синхроімпульсів. На рис. 3.1 представлений граф синхронного автомата Мура, який має: вісім внутрішніх станів (S0, …, S7), які кодуються трьома розрядами (s0, …, s2); три вхідних сигнала (pusk, x0, x1); два вихідних сигнала (y0, y1); Даний автомат переводиться до початкового стану за допомогою асинхронного сигналу скиду (Reset). Синхроімпульси на графі не показані. Основний принцип тестування цифрових автоматів полягає в перевірці того, що автомат: здійснює усі позначені стрілочками на графі переходи і не здійснює не позначених; формує усі позначені на графі вихідні сигнали в потрібних станах і не формує не позначених. Для перевірки усіх цих вимог потрібно декілька разів повертати автомат до початкового стану і повторно проводити його перевірку з іншою послідовністю вхідних сигналів. / 4 Характеристика робочого місця У даній роботі використовується еталон у вигляді табличної моделі, тобто у файлі SIMUL.CMD у вигляді таблиці зберігаються результати роботи об’єкта при подачі йому на вхід деякого обмеженого набору тестових даних. Робоче місце моделюється за допомогою пакета Foundation Series v2.1i [2] ф.Xilinx, призначеного для проектування програмованих логічних інтегральних схем (ПЛІС) і описується набором файлів відповідного формату (таблиця 4.1). Таблиця 4.1 Розширення файлів РОЗШИРЕННЯ ПРИЗНАЧЕННЯ ФАЙЛА  .SCH схема електрична принципова  .ABL опис роботи бібліотечного елемента (моделі, на мові ABEL)  .CMD програма моделювання досліджуваного пристрою   Структурно модель робочого місця (рис. 4.1 – State_st1.SCH) складається з: досліджуваного пристрою (мікросхема D3); стенда; Досліджуваний пристрій може бути або еталонним (state_s), алгоритм його роботи (рис. 3.6) знаходиться у файлі state_s.asf. / Стенд складається з: зовнішнього генератора тестових послідовностей та еталонних результатів (файл SIMUL.CMD); схеми порівняння еталонних результатів та реальних (елемент D16 COMP5); вхідних (IBUF) та вихідних (OBUF) буферів, а також контактів (IPAD, OPAD). може виконуватися практично без обмежень. Рис. Схема досліджуваного пристрою. Рис. Результат роботи досліджуваного пристрою. Висновки: під час цієї лабораторної роботи, я вивчив принципи тестування пристроїв, моделюючи ці пристрої за допомогою мови VHDL. Код програми standart.vhd library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; use IEEE.std_logic_signed.all; entity standart is port ( clk: in STD_LOGIC; enable: in STD_LOGIC; pusk: in STD_LOGIC; reset: in STD_LOGIC; x0: in STD_LOGIC; x1: in STD_LOGIC; k0: out STD_LOGIC; k1: out STD_LOGIC; k2: out STD_LOGIC; y0: out STD_LOGIC; y1: out STD_LOGIC); end standart; architecture standart_arch of standart is -- SYMBOLIC ENCODED state machine: Sreg0 type Sreg0_type is ( S1, S2, S3, S4, S5, S6, S7, S8 ); -- attribute ENUM_ENCODING of Sreg0_type: type is ... -- enum_encoding attribute is not supported for symbolic encoding signal Sreg0, NextState_Sreg0: Sreg0_type; -- Declarations of pre-registered internal signals begin -- FSM coverage pragmas -- Aldec enum Machine_Sreg0 CURRENT=Sreg0 -- Aldec enum Machine_Sreg0 NEXT=NextState_Sreg0 -- Aldec enum Machine_Sreg0 INITIAL_STATE=S1 -- Aldec enum Machine_Sreg0 STATES=S2,S3,S4,S5,S6,S7,S8 -- Aldec enum Machine_Sreg0 TRANS=S1->S1,S1->S2,S2->S3,S2->S6,S3->S3,S3->S4,S4->S5,S4->S8,S5->S6,S6->S7,S7->S3,S7->S8,S8->S1,S8->S8 -- concurrent signals assignments -- Diagram ACTION ---------------------------------------------------------------------- -- Machine: Sreg0 ---------------------------------------------------------------------- ------------------------------------ -- Next State Logic (combinatorial) ------------------------------------ Sreg0_NextState: process (pusk, x0, x1, Sreg0) begin NextState_Sreg0 <= Sreg0; -- Set default values for outputs and signals y0 <= '0'; y1 <= '1'; k0 <= '0'; k1 <= '0'; k2 <= '0'; case Sreg0 is when S1 => y0<='0'; y1<='1'; k0<='0'; k1<='0'; k2<='0'; if pusk='1' then NextState_Sreg0 <= S2; elsif pusk='0' then NextState_Sreg0 <= S1; end if; when S2 => y0<='1'; y1<='0'; k0<='1'; k1<='0'; k2<='0'; if x0='1' then NextState_Sreg0 <= S3; elsif x0='0' then NextState_Sreg0 <= S6; end if; when S3 => y0<='1'; y1<='0'; k0<='0'; k1<='1'; k2<='0'; if x0='0' then NextState_Sreg0 <= S4; elsif x0='1' then NextState_Sreg0 <= S3; end if; when S4 => y0<='1'; y1<='0'; k0<='1'; k1<='1'; k2<='0'; if x1='0' then NextState_Sreg0 <= S5; elsif x1='1' then NextState_Sreg0 <= S8; end if; when S5 => y0<='0'; y1<='0'; k0<='0'; k1<='0'; k2<='1'; NextState_Sreg0 <= S6; when S6 => y0<='0'; y1<='1'; k0<='1'; k1<='0'; k2<='1'; NextState_Sreg0 <= S7; when S7 => y0<='0'; y1<='0'; k0<='0'; k1<='1'; k2<='1'; if x1='1' then NextState_Sreg0 <= S8; elsif x1='0' then NextState_Sreg0 <= S3; end if; when S8 => y0<='0'; y1<='0'; k0<='0'; k1<='0'; k2<='0'; if pusk='0' then NextState_Sreg0 <= S1; elsif pusk='1' then NextState_Sreg0 <= S8; end if; --vhdl_cover_off when others => null; --vhdl_cover_on end case; end process; ------------------------------------ -- Current State Logic (sequential) ------------------------------------ Sreg0_CurrentState: process (clk) begin if clk'event and clk = '1' then if reset='1' then Sreg0 <= S1; else if enable = '1' then Sreg0 <= NextState_Sreg0; end if; end if; end if; end process; end standart_arch; diagram.vhd library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; use IEEE.std_logic_signed.all; entity diagram is port ( clk: in STD_LOGIC; enable: in STD_LOGIC; pusk: in STD_LOGIC; reset: in STD_LOGIC; x0: in STD_LOGIC; x1: in STD_LOGIC; k0: out STD_LOGIC; k1: out STD_LOGIC; k2: out STD_LOGIC; y0: out STD_LOGIC; y1: out STD_LOGIC); end diagram; architecture diagram_arch of diagram is -- SYMBOLIC ENCODED state machine: Master type Master_type is ( S1, S2, S3, S4, S5, S6, S7, S8 ); -- attribute ENUM_ENCODING of Master_type: type is ... -- enum_encoding attribute is not supported for symbolic encoding signal Master, NextState_Master: Master_type; -- Declarations of pre-registered internal signals begin -- FSM coverage pragmas -- Aldec enum Machine_Master CURRENT=Master -- Aldec enum Machine_Master NEXT=NextState_Master -- Aldec enum Machine_Master INITIAL_STATE=S1 -- Aldec enum Machine_Master STATES=S2,S3,S4,S5,S6,S7,S8 -- Aldec enum Machine_Master TRANS=S1->S1,S1->S2,S2->S3,S2->S6,S3->S3,S3->S4,S4->S5,S4->S8,S5->S6,S6->S7,S7->S3,S7->S8,S8->S1,S8->S8 -- concurrent signals assignments -- Diagram ACTION ---------------------------------------------------------------------- -- Machine: Master ---------------------------------------------------------------------- ------------------------------------ -- Next State Logic (combinatorial) ------------------------------------ Master_NextState: process (pusk, x0, x1, Master) begin NextState_Master <= Master; -- Set default values for outputs and signals y0 <= '0'; y1 <= '0'; k0 <= '0'; k1 <= '0'; k2 <= '0'; case Master is when S1 => y0<='0'; y1<='0'; k0<='0'; k1<='0'; k2<='0'; if pusk='1' then NextState_Master <= S2; elsif pusk='0' then NextState_Master <= S1; end if; when S2 => y0<='1'; y1<='0'; k0<='1'; k1<='0'; k2<='0'; if x0='1' then NextState_Master <= S3; elsif x0='0' then NextState_Master <= S6; end if; when S3 => y0<='1'; y1<='0'; k0<='0'; k1<='1'; k2<='0'; if x0='1' then NextState_Master <= S3; elsif x0='0' then NextState_Master <= S4; end if; when S4 => y0<='1'; y1<='0'; k0<='1'; k1<='1'; k2<='0'; if x1='1' then NextState_Master <= S8; elsif x1='0' then NextState_Master <= S5; end if; when S5 => y0<='0'; y1<='0'; k0<='0'; k1<='0'; k2<='1'; NextState_Master <= S6; when S6 => y0<='0'; y1<='1'; k0<='1'; k1<='0'; k2<='1'; NextState_Master <= S7; when S7 => y0<='0'; y1<='0'; k0<='0'; k1<='1'; k2<='1'; if x1='0' then NextState_Master <= S3; elsif x1='1' then NextState_Master <= S8; end if; when S8 => y0<='1'; y1<='0'; k0<='1'; k1<='1'; k2<='1'; if pusk='0' then NextState_Master <= S1; elsif pusk='1' then NextState_Master <= S8; end if; --vhdl_cover_off when others => null; --vhdl_cover_on end case; end process; ------------------------------------ -- Current State Logic (sequential) ------------------------------------ Master_CurrentState: process (clk) begin if clk'event and clk = '1' then if reset='1' then Master <= S1; else if enable = '1' then Master <= NextState_Master; end if; end if; end if; end process; end diagram_arch; comparator.vhd library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity Comparator is port ( k0 : in std_logic; k1 : in std_logic; k2 : in std_logic; y0 : in std_logic; y1 : in std_logic; k0s : in std_logic; k1s : in std_logic; k2s : in std_logic; y0s : in std_logic; y1s : in std_logic; Output : out std_logic ); end Comparator; architecture Arch_Comparator of Comparator is begin Output <= '0' when (k0=k0s and k1=k1s and k2=k2s and y0=y0s and y1=y1s) else '1'; end Arch_Comparator;
Антиботан аватар за замовчуванням

23.10.2019 21:10-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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