Федеральное агенство по образованию ГОУ ВПО

«Саратовский государственный технический университет»

Кафедра «Технической кибернетики и информатики»

Лабораторная работа №3 по дисциплине

«Вычислительные машины, системы и сети» на тему

«Разработка тестопригодных цифровых логических схем»

Выполнил:

Студент группы УИТ-31

Проверил:

Саратов 2010

Цель работы:

Изучить методику разработки тестопригодных цифровых логических схем. Оценить показатели тестопригодности цифровой схемы.

Задание на разработку цифровой системы

В данной лабораторной работе мы должны были разработать тестопригодную цифровую логическую схему сумматора ИМ6. Его принципиальная схема приведена ниже.

Теоретическая оценка коэффициентов управляемости и наблюдаемости устройства

Чтобы рассчитать коэффициенты управляемости, воспользуемся следующей формулой:

CTF= | N(0) - N(1) |/| N(0) + N(1) |, где N(0) – число всех способов установки логического 0 на выходе устройства, N(1) – число всех способов установки логической 1 на выходе устройства. В нашем устройстве несколько выходов, следовательно, коэффициентов управляемости будет столько же, сколько и выходов в нашем устройстве.

Взглянув на временные диаграммы, построенные программой GTKWave, мы можем определить, что:

CTF1=|96-416|/512=0,625

CTF2=|419-93|/512=0,6367

CTF3=|492-20|/512=0,9218

CTF4=|448-64|/512=0,75

CTF5=|256-256|/512=0

Теперь рассчитаем коэффициенты управляемости, используя формулу:

OTF(I-Q)=N(PDC:I-Q) / (N(PDC:I-Q) + N(NPDC:I-Q)), где N(PDC:I-Q) – суммарное число активизируемых путей от входа I к выходу Q;  N(NPDC:I-Q) -  суммарное число не активизируемых путей.

НЕ нашли? Не то? Что вы ищете?

Возьмём 5 логических элементов, располагающихся непосредственно перед выходами устройства. Так как некоторые из этих элементов одинаковы, OTF для них будет, соответственно, одинаковым: OTF2=OTF3=OTF4=OTF5.

OTF1

OTF2

OTF(A-Z)=0.2

OTF(A-Z)=0.5

OTF(B-Z)=0.2

OTF(C-Z)=0.2

OTF(B-Z)=0.5

OTF(D-Z)=0.2

OTF(E-Z)=0.2


Программная модель цифровой системы

Ниже приведена программная модель сумматора ИМ6 (summator_im6.vhdl), а так же модель тестирующего устройства для него (summator_im6_tb. vhdl).

summator_im6.vhdl

library std;

library ieee;

USE ieee. std_logic_1164.all;

use std. standard. all;

entity summator_im6 is

       port (

       INP: in bit_vector (0 to 8);

       OUTP: out bit_vector (0 to 4)

       );

end summator_im6;

architecture device of summator_im6 is

begin

       p_0 : process (INP)

       begin

               OUTP(0)<=((INP(0) or INP(1))) or (not (INP(2) or INP(3)) and not (INP(0) or INP(1))) or (not (INP(4) or INP(5)) and not (INP(0) or INP(1)) and not (INP(2) or INP(3))) or (not (INP(6) or INP(7)) and not (INP(0) or INP(1)) and not (INP(2) or INP(3)) and not (INP(4) or INP(5))) or (not (INP(0) or INP(1)) and not (INP(2) or INP(3)) and not (INP(6) or INP(7)) and (not INP(8)));

               OUTP(1)<=(not (INP(0) or INP(1)) and (INP(0) or INP(1))) xor not ((INP(2) or INP(3)) or (not (INP(4) or INP(5)) and not (INP(2) or INP(3))) or (not (INP(6) or INP(7)) and not (INP(2) or INP(3)) and not (INP(4) or INP(5))) or (not (INP(2) or INP(3)) and not (INP(4) or INP(5)) and not (INP(6) or INP(7)) and (not INP(8))));

               OUTP(2)<=(not (INP(2) or INP(3)) and (INP(2) or INP(3))) xor not ((INP(4) or INP(5)) or ((INP(6) or INP(7)) and not (INP(4) or INP(5))) or (not (INP(4) or INP(5)) and not (INP(6) or INP(7)) and (not INP(8))));

               OUTP(3)<=(not (INP(4) or INP(5)) and (INP(4) or INP(5))) xor not ((INP(6) or INP(7)) or (not (INP(6) or INP(7)) and not INP(8)));

               OUTP(4)<=(not (INP(6) or INP(7)) and (INP(6) or INP(7))) xor INP(8);

       end process p_0;

end device;

summator_im6_tb. vhdl

library std;

library ieee;

USE ieee. std_logic_1164.all;

use std. standard. all;

entity summator_im6_tb is

end summator_im6_tb;

architecture behav of summator_im6_tb is

       component summator_im6

               port (

               INP: in bit_vector (0 to 8);

               OUTP: out bit_vector (0 to 4)

               );

       end component;

       

       for summator_im6_0: summator_im6 use entity mmator_im6;

       

       signal INP : bit_vector (0 to 8);                

       signal OUTP : bit_vector (0 to 4);                

                       

       

       begin

               

               summator_im6_0: summator_im6 port map (INP => INP, OUTP => OUTP);

               

               process

               

               begin

               

               INP<="000000000";

               for i in 0 to 511 loop

                       if (INP(0) = '1') then

                               INP(0)<='0';

                       else

                               INP(0)<='1';

                       end if;

                       if (i mod 2 = 0) then

                               if (INP(1) = '1') then

                                       INP(1)<='0';

                               else

                                       INP(1)<='1';

                               end if;

                       end if;

                       if (i mod 4 = 0) then

                               if (INP(2) = '1') then

                                       INP(2)<='0';

                               else

                                       INP(2)<='1';

                               end if;

                       end if;

                       if (i mod 8 = 0) then

                               if (INP(3) = '1') then

                                       INP(3)<='0';

                               else

                                       INP(3)<='1';

                               end if;

                       end if;

                       if (i mod 16 = 0) then

                               if (INP(4) = '1') then

                                       INP(4)<='0';

                               else

                                       INP(4)<='1';

                               end if;

                       end if;

                       if (i mod 32 = 0) then

                               if (INP(5) = '1') then

                                       INP(5)<='0';

                               else

                                       INP(5)<='1';

                               end if;

                       end if;

                       if (i mod 64 = 0) then

                               if (INP(6) = '1') then

                                       INP(6)<='0';

                               else

                                       INP(6)<='1';

                               end if;

                       end if;

                       if (i mod 128 = 0) then

                               if (INP(7) = '1') then

                                       INP(7)<='0';

                               else

                                       INP(7)<='1';

                               end if;

                       end if;

                       if (i mod 256 = 0) then

                               if (INP(8) = '1') then

                                       INP(8)<='0';

                               else

                                       INP(8)<='1';

                               end if;

                       end if;

                       

                       wait for 10 ns;

               end loop;

               

               

       end process;

end behav;

Ниже приведена программная модель сумматора ИМ6 (summator_im6.vhdl), а так же модель тестирующего устройства для него (summator_im6_tb. vhdl).

Временной анализ верификации VHDL модели в среде GHDL

Реализовав тестопригодную цифровую логическую схему сумматора ИМ6, мы провели тестирование данной схемы с помощью программы summator_im6_tb. vhdl, затем получили наглядный результат при помощи программы GTKWave:

Вывод:

В ходе работы мы изучили методику разработки тестопригодных цифровых логических схем, а также оценили показатели тестопригодности цифровой схемы. Предварительно произведя теоретический расчёт коэффициентов управлении и наблюдаемости схемы, мы сравнили эти данные с данными, полученными экспериментальным путём, и сделали вывод, что они соответствуют результатам, полученным «теоретическими» вычислениями.

Вопросы для самопроверки

1.  Поясните термин «тестопригодность»

Тестопригодность – учет всех факторов, влияющих на разработку схемы так, что последующие процессы тестового диагностирования становятся выполнимыми и разрешимыми.

2.  Дайте оценку коэффициента управляемости

Коэффициент передачи управляемости - CTF

CTF= | N(0) - N(1) |/| N(0) + N(1) |

N(0) – число всех способов установки логического 0 на выходе устройства; N(1) – число всех способов установки логической 1 на выходе устройства; указывает на неуправляемость выходного состояния, коэффициент CTF выхода является мерой, характеризующей  степень различия способности устройством генерировать на данном выходе значение 1 от  способности генерировать значение 0. Для устройств с несколькими выходам каждый выход будет характеризоваться своим собственным значением CTF и в общем случае эти значения не будут одинаковыми.

3.  Дайте оценку коэффициента наблюдаемости

Коэффициент передачи наблюдаемости - OTF(I-Q)

OTF(I-Q)=N(PDC:I-Q) / (N(PDC:I-Q) + N(NPDC:I-Q))

N(PDC:I-Q) – суммарное число активизируемых путей от входа I к выходу Q;  N(NPDC:I-Q) -  суммарное число неактивизируемых путей.

Коэффициент передачи наблюдаемости OTF является количест-венной мерой, характеризующей уменьшение значения наблюдаемости входного устройства по мере продвижения к выходу

вдоль активизированного пути при условии, что другие входные узлы устройства управляемы. Этот коэффициент определяет способность устройства передавать изменения логического состояния одного входа на определенный выход.

4.  Приведите оценку тестопригодности схемы

  Простая мера тестпригодности узла ТY может быть получена в результате умножения значений его управляемости и наблюдаемости  TY= CY * OY

На уровне интуитивного восприятия это соответствует тому, что если имеет, скажем, 50% - ную управляемость и 50% - ную наблюдаемость, то его тестопригодность вероятнее всего равна только 25%. Это связано с тем, что управляемость и наблюдаемость независимые величины; если управлять узлом на «50% сложнее» и наблюдать его значаение на «50% сложнее», то в результате тестопригодность в какой-то степени должна быть меньше 50%. Показатель тестпригодности всей схемы должен быть мерой средней

трудоемкости получения теста узла схемы TY(схемы)=(∑(TY:узлов))/(число узлов).

5.  Поясните термин «логическая избыточность»

«Логическая избыточность» - это когда в схеме присутствует большое количество логических элементов, которые можно заменить на другие логические элементы, но в меньшем количестве, однако результат изменяться не будет.

6.  Объясните необходимость разрыва цепей обратной связи при диагностировании

Если обратная связь разрывается, то выходной сигнал может быть не предсказуем, т. е. система может потерять управление и появится большая погрешность выходного сигнала.

7.  Поясните необходимость буферирования входов, чувствительных к фронту

При необходимости можно восстановить входной сигнал.

8.  Поясните преимущества синхронных схем по сравнению с асинхронными при диагностировании

В синхронных схемах существует синхросигнал, с помощью которого выходные сигналы

упорядочиваются по времени, так как сигнал далеко не всегда проходит одинаковый путь в схеме. В асинхронных такого сигнала нет. Схема будет работать правильно, но из-за задержек сигнала, на выход они будут поступать по мере прохождения всей схемы, а это не будет являться правильным.