Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки
Національний університет „Львівська політехніка”
Кафедра EОМ
/
Звіт
з лабораторної роботи № 2
з дисципліни: “ ТЕСТУВАННЯ І ДІАГНОСТИКА
КІБЕРФІЗИЧНИХ СИСТЕМ ”
На тему “Тестування ОЗП”
Львів
2019
МЕТА РОБОТИ
Метою роботи є ознайомлення з загальною схемою тестування цифрової техніки. Засвоєння методів та засобів тестування цифрових схем із пам’яттю на прикладі оперативного запам’ятовуючого пристрою (ОЗП).
Завдання: Дана лабораторна робота виконується у середовищі Aldec Active HDL.
У даній роботі при тестуванні створюються 4 вузли.
1) Генератор тестових послідовностей;
2) Еталонний вузол;
3) Еталонний вузол з наперед заданою помилкою;
4) Вузол порівняння.
Потрібно змоделювати OЗП та протестувати його при різних помилках. Реалізувати відповідно до варіанту вузол генерування тестових послідовностей:
1) шини адреси;
2) шини даних;
3) перевірки на збереження інформації.
Виконання роботи:
Код Еталонного вузла:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;
ENTITY ram IS
GENERIC(
d_width : INTEGER := 8; --width of each data word
size : INTEGER := 8; --number of data words the memory can store
constant N: natural := 1
);
PORT(
oe_ena : IN STD_LOGIC; --output enable
wr_ena : IN STD_LOGIC; --write enable
rd_ena : IN STD_LOGIC; --read enable
addr : IN INTEGER RANGE 0 TO 7; --address to write/read
data_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); --input data to write
data_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --output data read
cs : IN STD_LOGIC); -- chip select
END ram;
ARCHITECTURE logic OF ram IS
TYPE memory IS ARRAY(size-1 DOWNTO 0) OF STD_LOGIC_VECTOR(d_width-1 DOWNTO 0); --data type for memory
SIGNAL ram : memory; --memory array
--internal address register
BEGIN
PROCESS(data_in, wr_ena, rd_ena, addr, cs)
BEGIN
IF(wr_ena = '1' and rd_ena = '0' and cs = '1') THEN
ram(addr) <= data_in;
END IF;
END PROCESS;
data_out <= ram(addr) WHEN wr_ena = '0' and rd_ena = '1' and oe_ena = '1';
END logic;
Змінений код Еталонного вузла:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;
ENTITY ram IS
GENERIC(
d_width : INTEGER := 8; --width of each data word
size : INTEGER := 8; --number of data words the memory can store
constant N: natural := 1
);
PORT(
oe_ena : IN STD_LOGIC; --output enable
wr_ena : IN STD_LOGIC; --write enable
rd_ena : IN STD_LOGIC; --read enable
addr : IN INTEGER RANGE 0 TO 7; --address to write/read
data_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); --input data to write
data_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --output data read
cs : IN STD_LOGIC); -- chip select
END ram;
ARCHITECTURE logic OF ram IS
TYPE memory IS ARRAY(size-1 DOWNTO 0) OF STD_LOGIC_VECTOR(d_width-1 DOWNTO 0); --data type for memory
SIGNAL ram : memory; --memory array
--internal address register
BEGIN
PROCESS(data_in, wr_ena, rd_ena, addr, cs)
BEGIN
IF(wr_ena = '1' and rd_ena = '0' and cs = '1') THEN
ram(addr) <= data_in;
data_out <= "ZZZZZZZZ";
ELSE
data_out <= ram(addr);
END IF;
END PROCESS;
END logic;
Код Вузла порівняння:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity Comparator is
port ( First : in std_logic_vector (7 downto 0);
Second : in std_logic_vector (7 downto 0);
Output : out std_logic
);
end Comparator;
architecture Arch_Comparator of Comparator is
begin
Output <= '1' when (First=Second) else '0';
end Arch_Comparator;
Код генератора тестових послідовностей:
LIBRARY ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY generator IS
PORT(
ADDR : OUT INTEGER RANGE 0 TO 7;
DATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
WR : OUT STD_LOGIC;
RD : OUT STD_LOGIC;
OE : OUT STD_LOGIC;
CS : OUT STD_LOGIC
);
END generator;
architecture logic of generator IS
BEGIN
PROCESS IS
BEGIN
for jj in 0 to 7 loop
for ii in 0 to 7 loop
CS <= '1';
WR <= '1';
OE <= '1';
RD <= '0';
ADDR <= ii;
DATA <= "00000000" ;
wait for 10 ns;
END loop;
ADDR <= jj;
DATA <= "11111111" ;
wait for 10 ns;
FOR aa IN 0 TO 7 LOOP
RD <= '1';
WR <= '0';
ADDR <= aa;
wait for 10 ns;
END loop;
END loop;
END PROCESS;
END logic;
Часова діаграма роботи системи:
/
Висновок: в даній лабораторній роботі я розробив програму тестування ОЗП, описав поведінку еталонного ОЗП, за результатами тестування ОЗП визначив несправні елементи досліджуваного пристрою, несправні контакти визначених елементів та тип несправності (обрив, закоротка).