back next

3. Разработка програмного обеспечения синтеза тестов на базе VHDL и FPGA

3.1. VHDL - программа анализатора теста в режиме формирования тестовой таблицы истинности

При создании анализатора тестов будем использовать стандартные библиотеки LE, ZE который содержат элементы инверторы, триггеры, конъюнкцию и дизъюнкцию. Эти библиотеки разработаны давно и широко используются при обучении студентов. Сначала необходимо создать VHDL программу JK тригера с асинхронными входами R и S, потому что построение регистров на этом триггере существенно упрощает схему анализатора. VHDL - программа триггера, предъявлена ниже.

library IEEE;
use IEEE. std_logic_1164. all;
entity JK is
	port (
		S: in STD_LOGIC;
		J: in STD_LOGIC;
		CLK: in STD_LOGIC;
		K: in STD_LOGIC;
		R: in STD_LOGIC;
		NQ: out STD_LOGIC;
		Q: out STD_LOGIC
	);
end JK;
--}} End of automatically maintained section
architecture JK of JK is
begin
process (S, J, CLK, K, R)
variable QT: STD_LOGIC: ='U';
variable NQT: STD_LOGIC: ='U';
begin
	IF (S='0' AND R='0') THEN
		Q <= 'U';
		NQ <= 'U';
		QT:='U';
		NQT:='U';
	ELSE
		IF (S='0') THEN
			Q <= '1';
			NQ <= '0';
			QT:='1';
			NQT:='0';
		ELSE
			IF (R='0') THEN
				Q <= '0';
				NQ <= '1';
				QT:='0';
				NQT:='1';
			ELSE
				IF (CLK'Event AND CLK='1') THEN
					IF (J='1') THEN
						IF (K='0') THEN
							Q <= '1';
							NQ <= '0';
							QT:='1';
							NQT:='0';
						ELSE
							IF (K='1') THEN
								IF (QT='1') THEN
									Q <= '0';
									NQ <= '1';
									QT:='0';
									NQT:='1';
								ELSE
									Q <= '1';
									NQ <= '0';
									QT:='1';
									NQT:='0';
								END IF;
							END IF;	
						END IF;
					ELSE
						IF (K='1') THEN
							Q <= '0';
							NQ <= '1';
							QT:='0';
							NQT:='1';
						END IF;
					END IF;
				END IF;
			END IF;
		END IF;
	END IF;	
end process;
end JK;

Данная программа работает в соответствии с правилами функционирования классического JK-тригера. VHDL - код анализатора теста, при условии моделирования десяти неисправностей, приведен в приложении.

Схемная реализация АТ в режиме ТТ? изображенна на рисунке 3.1.


Рисунок 3.1 - Схемная реализация АТ в режиме ТТI.

3.2. Построение детерминированого теста без ограничений на число неисправностей

Работая в режиме построения детерминированого теста без ограничений на число неисправностей, АТ использует внутренние регистры с разрядностью k, где k - количество неисправностей в схеме. Он отслеживает появление новых значений на выходах тестируемости ОД и выдает сигнал WRITE при активизации новой неисправности. VHDL - код АТ, при моделировании десяти неисправностей, приведен в приложении.

Схемная реализация данного типа АТ отличается наличием регистра сохранения вектора который генерируется тестом и схемой выдачи сигнала записи в память.

3.3. Построение детерминированого теста для конкретно назначенных неисправностей

Данный режим анализатора теста отличается от предыдущих тем, что при создании VHDL - кода АТ необходимо на входи регистра сохранения положения шины Т предъявлять только номера интересующих нас неисправностей. Данный режим необходим для построения теста при исключении эквивалентных и доминирующих неисправностей. Пусть нам необходимо построить тест для неисправностей с номерами 5, 7, 23, 45, 66, 76, 88, 121, тогда VHDL - программа АТ отличается от предыдущего режима в блоке описания внутренней структуры схемы:

- - - - Component instantiations - - - -
U0: JK
port map (
CLK => CLK,
J => T (5),
K => C0,
Q => Q (0),
R => INIT,
S => C1
);
U1: JK
port map (
CLK => CLK,
J => T (7),
K => C0,
Q => Q (1),
R => INIT,
S => C1
);
U2: JK
port map (
CLK => CLK,
J => T (23),
K => C0,
Q => Q (2),
R => INIT,
S => C1
);
U3: JK
port map (
CLK => CLK,
J => T (45),
K => C0,
Q => Q (3),
R => INIT,
S => C1
);
U4: JK
port map (
CLK => CLK,
J => T (66),
K => C0,
Q => Q (4),
R => INIT,
S => C1
);
U5: JK
port map (
CLK => CLK,
J => T (76),
K => C0,
Q => Q (5),
R => INIT,
S => C1
);
U6: JK
port map (
CLK => CLK,
J => T (88),
K => C0,
Q => Q (6),
R => INIT,
S => C1
);
U7: JK
port map (
CLK => CLK,
J => T (121),
K => C0,
Q => Q (7),
R => INIT,
S => C1
);

3.4. Построение детерминированого теста для фиксированного количества неисправностей

В этом режиме анализатор теста генерирует тест для фиксированного числа неисправностей, при этом используются стандартные наборы неисправностей {0..10, 0..20, 0..30, 0..40, 0..50, 0..60, 0..70, 0..80, 0..90}. Данный подход облегчает получение статистической информации из теста и позволяет использовать стандартные наборы VHDL - программ, что можно подготовить предварительно. Реализация данного режима практически не отличается от предыдущего. Схемная реализация данного режима отображена на рисунке 3.2.


Рисунок 3.2 - Функциональная схема АТ в режиме генерации теста для фиксированного количества неисправностей

3.5. Программа настройки на конкретный объект диагностики

В предыдущих разделах мы рассмотрели четыре типа АТ, в их структуре используются одинаковые блоки элементов, что позволяет создавать VHDL - программы с меньшими временными затратами. Но стоит учитывать тот факт, что мы рассмотрели в примерах только случай с десятью неисправностями, а в реальных схемах их значительно больше. Поэтому, была создана программа, которая позволяет генерировать текст VHDL - программ в автоматическом режиме. При работе с этой программой человеку необходимо знать только число неисправностей в схеме, или номера конкретных неисправностей.

Данная программа написана с использованием Borland C++ версия 3.01, она не нуждается в наличие Windows95/98/2000. Программа умеет генерировать VHDL - код для 4-х режимов работы АТ, в ней существует ограничение на максимальное количество неисправностей в схеме и на использование библиотек логических элементов, но в случае пнеобходимости ее можно легко модифицировать. Результаты работы программы записываются в файл с именем atr*. vhd, на месте символа находится номер выбраного режима работы АТ. Потом данный файл можно подключить в любой системе работающей с языком VHDL.

Блок - схема программы, изображена на рисунке 2.6, а подпрограма оптимизации количества элементов в схемах генерирующих сигналы STOP и WRITE, на рисунке 2.7.


Рисунок 3.3 - Алгоритм программы построения АТ


Рисунок 3.4 - Подпрограмма оптимизации количества элементов в схеме

3.6 Разработка библиотеки логических элементов ориентированных на Т-модель

3.6.1 Построение примитивного Т-элемента

Для построения Т-модели любого объекта диагностики необходимо сначала разработать елементную базу, ориентированную на Т - модель. Элементы, построены с использованием принципов Т-модели, кроме выполнения свойственных им функций (конъюнкции, дизъюнкции, суммы по модулю два и т.д.) выполняют еще ряд дополнительных функций.

Построим примитивный Т-элемент на основе элемента "или" с тремя входами. Обычный элемент "или" изображенный на рисунке 3.5.


Рисунок 3.5 - Элемент "или"

Данный элемент реализует такую функцию над входами х: Y=x1+x2+x3.

Пометим глобальную наблюдаемость входа xi на входе схемы символом hi, а локальную наблюдаемость входа xi -Dhi. Для того чтобы наблюдать на выходе элемента Y вход х1 нужно, чтобы другой вход равнялся в данном случае нулю (аналогично для входа х2). Следовательно, функции локальных наблюдаемостей выражаются формулами: Dh1=not(х2),Dh2=not(х1)

Функции глобальных нагляда≤мостей выражаются такими формулами: h1=E&not(x2), h2=E&not(x1)

Также есть выходы наблюдаемости константних неисправностей Y=1, Y=0. Формулы для них такие: Y=0 =E&Y, Y=1 =E&Y

Назовем разработанный элемент TOR2, построим для него VHDL-описание:

- - ##### Element TOR2 ########
Library ieee;
use ieee. std_logic_1164. all;
use ieee. numeric_std. all;
entity TOR2 is
 port (X1, X2, E: std_logic; H1, H2, DH1, DH2, Y0, Y1, Y: out std_logic);
end TOR2;

architecture behavior of TOR2 is
 signal L42: std_logic;
 signal P31: std_logic;
 signal P32: std_logic;
 signal P42: std_logic;
begin
 Y <= X1 or X2;
 P42 <= X1 or X2;
 L42 <= not (P42);
 Y1 <= E and L42;
 Y0 <= P42 and E;
 DH2 <= not (X1);
 DH1 <= not (X2);
 P32 <= not (X1);
 P31 <= not (X2);
 H2 <= P32 and E;
 H1 <= E and P31;
end behavior;

Внутренняя структура элемента изображенная на рисунке 3.6, а условное графическое обозначение на рисунке 3.7.


Рисунок 3.6 - Внутренняя структура элемента TOR2


Рисунок 3.7 - УГО элемента TOR2

back next