Будь умным!


У вас вопросы?
У нас ответы:) SamZan.ru

Контрольная работа По дисциплине Автоматизация проектирования вычислительных средств

Работа добавлена на сайт samzan.ru: 2016-06-20


Министерство образования и науки Украины

Севастопольский национальный технический университет

Кафедра кибернетики и

вычислительной техники

Контрольная работа

По дисциплине «Автоматизация проектирования вычислительных средств»

Выполнил: ст. группы М-51з

Белоус Р.В.

   номер зач.кн.  

  051022

Проверил:

Севастополь

2009


Содержание:

[1]
Задание №1

[2]
Задание №2

[3]
Задание №3

[4] Задание №4


Задание №1

Задана схема цифрового устройства (рис.1 или 2). Выполнить синтез теста для неисправности ≡ 0 и ≡1 на контакте отмеченым “Х”.

Номер варианта

Задание 1

№ схемы     № контакта

2

2                    1

Решение:

Выполним нумерацию элементов схемы сверху вниз слева на право, начиная с 1.

Проведем активацию одномерного пути через элемент №1 (Э1) при неисправности ≡ 0. Для формирования обратного ошибке сигнала - 1 на выходе Э1 необходимо подать хотя бы один ноль на вход Э1. Эта неисправность распространяется на Э3 и Э4. Т.к. на вход Э4 пришла 1 то второе значение нам не важно. В результате неисправности на выходе элемента f мы получим 0. Эти же размышления касаются и Э3. На выходе элемента Э3 мы получаем 0. Путь активирован при этом значение сигнала e безразлично.

Тестовые наборы: 00XXX выход f = 0.

Проведем активацию одномерного пути через элемент №1 (Э1) при неисправности ≡ 1. Для формирования обратного ошибке сигнала - 0 на выходе Э1 необходимо подать на его входы две единицы т.е. a=1, b=1. Для того чтобы передать этот сигнал дальше необходимо на второй вход Э4 подать 0. Для этого на входе Э3 должна быть хотя бы одна единица. Т.к. на первый вход Э3 пришел 0 то на втором должна быть 1. Этот сигнал приходит с Э2. Поэтому на входах Э2 должны быть 0(с=0, d=0). Путь активирован при этом значение сигнала e безразлично.

Тестовый набор: 1100X, выход f = 1.


Задание №2

Задана схема цифрового устройства (схема 3 или 4). Выполнить синтез теста для неисправностей ≡0 и ≡1 на заданном контакте.

Номер варианта

Задание 2

№ схемы    № контакта

2

   2                      1

Решение:

Выполним нумерацию элементов схемы сверху вниз слева на право, начиная с 1.

Разорвем обратную связь с выхода Э5 на вход Э4.

Неисправность ≡0:

Проведем активацию одномерного пути через Э4 при неисправности ≡0. Для того чтобы получить сигнал 1 (сигнал обратный нашей неисправности) на выходе Э1 необходимо подать на его вход нулевые сигналы т.е. a=0, b=0. Подадим на остальные два входа Э4 - 1, для этого на входы Э3 подадим нулевые значения – d=0, e=0. Будем считать, что сигнал обратной связи равен 1. В данной ситуации в случае ошибки на выходе Э4 формируется 1. Чтобы провести сигнал через Э5, на второй вход Э5 подадим 1. Для его формирования необходимо на входы Э2 подать хотябы один 0. Т.к. b = 0, то значение сигнала c – не имеет значения c=X. На выходе Э5 мы увидим 0, а так как на выходе Э3 сигнал 1 путь проходит через Э6 на выход f.

Тестовый набор: 00X00.

Для формирования 1 на выходе Э5 в предыдущий момент времени. Необходимо чтобы на выходе Э5 был сформирован сигнал 1, для этого нужно подать на один из входов Э5 – «0». Подадим этот сигнал с выхода Э2. Для того чтобы сформировать такой сигнал подадим на входы Э2 – 1, т.е. b=1, c=1, при этом другие сигналы значения не имеют. Установочная последовательность: X11XX.  

Неисправность ≡1:

Проведем активацию одномерного пути через Э4 при неисправности - 1. Для формирования обратного ошибке сигнала – 0 на выходе Э1 необходимо подать на его входы хотя бы одну 1, т.е. a=1, b=X или a=X, b=1 или a=1, b=1. Выберем для примера a=X, b=1. Подадим на два оставшихся входа Э4 – 1, для этого на входы Э3 подадим нулевые значения – d=0, e=0. Будем считать, что сигнал обратной связи = 1. Тогда в случае ошибки на выходе Э4 формируется 0. Чтобы провести сигнал через Э5, на второй вход Э5 подадим 1, для этого подадим на вход  c – 0 (так как b=1). На выходе Э5 будет 1, а так как на выходе Э3 сигнал 1 путь проходит через Э6 на выход f=0.

Тестовый набор: X1000.

Т.к. на выходе Э5 мы должны получить 1, то возьмем установочную последовательность для предыдущей неисправности: X11XX.


Задание №3

Для  заданной   схемы    (задание    1)    выполнить моделирование работы схемы на 5-ти тестовых наборах (из результата выполнения задания 1) методом указанным в варианте (2 - синхронное с задержками).  При  моделировании  использовать  троичные   сигналы {0,1,X}.

Решение:

Для моделирования нам необходимо выбрать шаг моделирования, то есть такое время, в которое будут переключаться логические элементы схемы. Задержка элементов серии К155 составляет приблизительно 22 нс при переключении с 0 в 1 и приблизительно 15 нс из 1 в 0, следовательно, принимаем время шага моделирования как НОК этих двух чисел, это приблизительно 7,5 нс. Таким образом, мы будем проводить моделирование с шагом в 7,5 нс. По условию задания нам необходимо произвести синхронное моделирование с задержками, следовательно, все элементы будут переключаться синхронно через определенное количество тактов.  Так для заданной схемы самый длинный путь составляет 3 элемента. Следовательно, при условии, что каждый элемент выполнит свое переключение за 3t, то (3+1)*3=12 тактов, то переходной процесс в схеме будет занимать не более 9t. Отметим что время перехода из 1 в 0 = 3t, 0 в 1 = 2t, X в 1/0 = 3t, 1/0 в X = 3t.

Выполним нумерацию элементов схемы сверху вниз слева на право, начиная с 1.

Промоделируем работу приведенной схемы на первом входном наборе равном 11000.

1

2

3

4

5

6

7

8

9

10

11

12

a

1

1

1

1

1

1

1

1

1

1

1

1

b

1

1

1

1

1

1

1

1

1

1

1

1

c

0

0

0

0

0

0

0

0

0

0

0

0

d

0

0

0

0

0

0

0

0

0

0

0

0

e

0

0

0

0

0

0

0

0

0

0

0

0

Э1

X

X

X

0

0

0

0

0

0

0

0

0

Э2

X

X

X

1

1

1

1

1

1

1

1

1

Э3

X

X

X

X

X

X

0

0

0

0

0

0

Э4

X

X

X

X

X

X

X

X

X

1

1

1

Э5

X

X

X

1

1

1

1

1

1

1

1

1

Промоделируем работу приведенной схемы на входном наборе равном 11101.

1

2

3

4

5

6

7

8

9

10

11

12

a

1

1

1

1

1

1

1

1

1

1

1

1

b

1

1

1

1

1

1

1

1

1

1

1

1

c

1

1

1

1

1

1

1

1

1

1

1

1

d

0

0

0

0

0

0

0

0

0

0

0

0

e

1

1

1

1

1

1

1

1

1

1

1

1

Э1

X

X

X

0

0

0

0

0

0

0

0

0

Э2

X

X

X

0

0

0

0

0

0

0

0

0

Э3

X

X

X

X

X

X

1

1

1

1

1

1

Э4

X

X

X

X

X

X

X

X

X

0

0

0

Э5

X

X

X

X

X

X

X

X

X

0

0

0

Промоделируем работу приведенной схемы на входном наборе равном 00101.

1

2

3

4

5

6

7

8

9

10

11

12

a

0

0

0

0

0

0

0

0

0

0

0

0

b

0

0

0

0

0

0

0

0

0

0

0

0

c

1

1

1

1

1

1

1

1

1

1

1

1

d

0

0

0

0

0

0

0

0

0

0

0

0

e

1

1

1

1

1

1

1

1

1

1

1

1

Э1

X

X

X

1

1

1

1

1

1

1

1

1

Э2

X

X

X

0

0

0

0

0

0

0

0

0

Э3

X

X

X

X

X

X

1

1

1

1

1

1

Э4

X

X

X

X

X

X

0

0

0

0

0

0

Э5

X

X

X

X

X

X

X

X

X

1

1

1

Промоделируем работу приведенной схемы на входном наборе равном 10101.

1

2

3

4

5

6

7

8

9

10

11

12

a

1

1

1

1

1

1

1

1

1

1

1

1

b

0

0

0

0

0

0

0

0

0

0

0

0

c

1

1

1

1

1

1

1

1

1

1

1

1

d

0

0

0

0

0

0

0

0

0

0

0

0

e

1

1

1

1

1

1

1

1

1

1

1

1

Э1

X

X

X

1

1

1

1

1

1

1

1

1

Э2

X

X

X

0

0

0

0

0

0

0

0

0

Э3

X

X

X

X

X

X

0

0

0

0

0

0

Э4

X

X

X

X

X

X

0

0

0

0

0

0

Э5

X

X

X

X

X

X

X

X

X

1

1

1


Задание №4

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

Решение:

Программа была разработана на языке Java.

Моделирование схемы происходит после запуска програмы. При этом, поочередно опрашиваются все элементы схемы и на основе анализа их типа и значения входных сигналов формируется выходная цепь элемента. Данные об элементах схемы хранятся в отдельном массиве, также  в отдельном массиве хранятся данные о цепях объединяющих их.

Классы используемые для проектирования. Главный класс Это Shema.

  public class Shema

  {

       public Connections cons;

       public Elements msx;

       public void AddPin(string name, int ne, int np)

       public void setcon(int ne, byte val)

       public void setdelaycon(int ne, byte val)

}

Данный  класс представляет модель схемы в текущем состоянии, cons объект инкапсулирующий информацию о цепях схемы, elements   объект содержащий информацию об всех элементах схемы. Метод addPin добавляет в именованную цепь контакт указанного элемента, setcon и setdelaycon соответственно обновление цепи с задержкой и без неё.

Class Element

{

LinkedList<Byte> pins;

     int outlink;

     byte output;

     String type;

     int T;

}

Этот класс предназначен для хранении информации об элементе.

public class Processor

{

public void modeling(ref Shema  ms ,string ip)

}

Класс выполняющий непосредственно моделирование при вызове метода modeling.

public class Protocol

{

       public Protocol(Shema ms)

       public void header()

       public void AddLine()

}

Класс позволяющий визуализировать состояние. Конструктор класса принимает в качестве параметров ссылку на модель. Метод header создает заголовок отчета о состоянии, а метод AddLine добавляет строку характеризующую текущее состояние модели.

Приведем пример работы программы. Промоделируем работу схемы на следующей последовательности входных наборов: 01100,11000. Представим результатов работы программы в виде снимков окон программы.

 

01100

11000

import java.util.HashMap;

import java.util.LinkedList;

import java.util.Map;

public class Main

{

   public static void main( String [] argc )

   {

       Main m = new Main();

       m.run();

   }

   private void run()

   {

       Shema mss;

       Processor prc;

       Protocol prt;

       mss = new Shema();

       prc = new Processor();

       prt = new Protocol(mss);

       //Элементы схемы

       mss.msx.Addms("i1", new byte[1]);//0

       mss.msx.Addms("i2", new byte[1]);//1

       mss.msx.Addms("i3", new byte[1]);//2

       mss.msx.Addms("i4", new byte[1]);//3

       mss.msx.Addms("i5", new byte[1]);//4

       mss.msx.Addms("f", new byte[1]);//5

       mss.msx.Addms("or", new byte[3]);//6

       mss.msx.Addms("and", new byte[3]);//7

       mss.msx.Addms("or", new byte[3]);//8

       mss.msx.Addms("and", new byte[4]);//9

       mss.msx.Addms("and", new byte[3]);//10

       mss.msx.Addms("and", new byte[3]);//11

       //Цепи

       mss.AddPin("ia", 0, 0);        mss.AddPin("ia", 6, 0);        mss.AddPin("ib", 1, 0);

       mss.AddPin("ib", 6, 1);        mss.AddPin("ib", 7, 0);        mss.AddPin("ic", 2, 0);

       mss.AddPin("ic", 7, 1);        mss.AddPin("id", 3, 0);        mss.AddPin("id", 8, 0);

       mss.AddPin("ie", 4, 0);        mss.AddPin("ie", 8, 1);        mss.AddPin("D1", 6, 2);

       mss.AddPin("D1", 9, 0);        mss.AddPin("D2", 7, 2);        mss.AddPin("D2", 10, 1);

       mss.AddPin("D3", 8, 2);        mss.AddPin("D3", 9, 1);        mss.AddPin("D3", 11, 1);

       mss.AddPin("D4", 9, 3);        mss.AddPin("D4", 10, 0);        mss.AddPin("D5", 10, 2);

       mss.AddPin("D5", 9, 2);        mss.AddPin("D5", 11, 0);        mss.AddPin("D6", 11, 2);

       mss.AddPin("D6", 5, 0);

       prt.header();

       prc.modeling(mss, "11000");

       prt.AddLine();

   }

   public class Pin    {        public int ne, np;    }

   public class Link    {

       public String name;

       public byte level;

       public LinkedList<Pin> pinss;

       public Link()

       {

           pinss = new LinkedList<Pin>();

       }

   }

   //Цепи схемы

   public class Connections

   {

       public LinkedList<Link> links;

       public Connections()

       {

           links = new LinkedList<Link>();

       }

       int findlink(String name)

       {

           for(int i=0;i<links.size();i++)

           {

               if (links.get( i ) != null && links.get( i ).name.equals(name) )

                   return i;

           }

           return -1;

       }

       void AddLink(String name)

       {

           if (findlink(name)==-1)

           {

               Link link = new Link();

               link.name = name;

               link.level = 2;

               links.add( link );

           }

       }

       public int AddPin(String name, int ne, int np)

       {

           AddLink(name);

           int i = findlink(name);

           if (i < 0) i = 0;

           Pin pin = new Pin();

           pin.ne = ne;

           pin.np = np;

           links.get( i ).pinss.add( pin );

           return i;

       }

   }

   public class Element

   {        

       public LinkedList<Byte> pins;

       public int outlink;

       public byte output;

       public String type;

       public int T;

   }

   public class Elements

   {

       public LinkedList<Element> mslog;

       public void Addms(String type, byte[] pins)

       {

           Element[] tmp;

           if (mslog == null)

           {

               mslog = new LinkedList<Element>();

           }

           Element el = new Element();

           el.pins = new LinkedList();

           el.output = 2;

           el.type = type;

           el.T = 0;

           for (int i = 0; i < pins.length; i++)

               el.pins.add( (byte)2 );//X

           mslog.add( el );

       }

       public void ControlPin(int ms,byte pins, int ol)

       {

           byte[] tmp;

           if ((mslog.get( ms ).pins.size() -1)==pins) mslog.get( ms ).outlink = ol;

           if (mslog.get( ms ).pins != null)

           {

               if (mslog.size() > pins) return;

               tmp = new byte[ms + 1];

               int j = 0;

               for( byte l : mslog.get( ms ).pins )

               {

                   tmp[j] = l;

               }

           }

           else tmp = new byte[1];

           mslog.get( ms ).pins.add( (byte)0 );

           for (int i = 0; i < mslog.get( ms ).pins.size(); i++) mslog.get( ms ).pins.set( i, (byte)2 );//X*/

       }

   }

   public class Shema

   {

       public Connections cons;

       public elements msx;

       public Shema()

       {

           cons = new Connections();

           msx = new elements();

       }

       public void AddPin(String name, int ne, int np)

       {

           msx.ControlPin((byte)ne, (byte)np,cons.AddPin(name, ne, np) );

       }

       public void setcon(int ne, byte val)

       {

           cons.links.get( msx.mslog.get( ne ).outlink ).level = val;

           for (int i = 0; i < cons.links.get( msx.mslog.get( ne ).outlink ).pinss.size(); i++)

           {

              int n= cons.links.get( msx.mslog.get( ne ).outlink ).pinss.get( i ).ne;

              int k = cons.links.get( msx.mslog.get( ne ).outlink ).pinss.get( i ).np;

              while(msx.mslog.get( ne ).pins.size() <= k)

              {

                  msx.mslog.get( ne ).pins.add( (byte)0 );                   

              }

              msx.mslog.get( ne ).pins.set( k, val );

           }

       }

       public void setdelaycon(int ne, byte val)

       {

           if (val != msx.mslog.get( ne ).output)

           {

               int tt=0;

               if((msx.mslog.get( ne ).output==0)&&(val==1)) tt=2;

               if((msx.mslog.get( ne ).output==1)&&(val==0)) tt=3;

               if((msx.mslog.get( ne ).output==2)||(val==2)) tt=3;

               msx.mslog.get( ne ).output = val;

               msx.mslog.get( ne ).T = tt;

           }

           if (msx.mslog.get( ne ).T > 0) { msx.mslog.get( ne ).T--; return; }

           cons.links.get( msx.mslog.get( ne ).outlink ).level = val;

           for (int i = 0; i < cons.links.get( msx.mslog.get( ne ).outlink ).pinss.size(); i++)

           {

               int n = cons.links.get( msx.mslog.get( ne ).outlink ).pinss.get( i ).ne;

               int k = cons.links.get( msx.mslog.get( ne ).outlink ).pinss.get( i ).np;

               msx.mslog.get( ne ).pins.set( k, val );

           }

       }

   }

   public class Processor

   {

       Map<String, Integer> maps;

       public Processor()

       {

           maps = new HashMap<String, Integer>();

           maps.put( "i1", 1 );            maps.put( "i2", 2 );            maps.put( "i3", 3 );

           maps.put( "i4", 4 );            maps.put( "i5", 5 );            maps.put( "or", 6 );

           maps.put( "and", 7 );            maps.put( "f", 8 );

       }

       public void modeling( Shema ms ,String ip)

       {

           for (int i = 0; i < ms.msx.mslog.size(); i++)

           {

           switch (maps.get( ms.msx.mslog.get( i ).type ))

           {

               case 1:

                   {                        ms.setcon( i, Byte.decode(ip.substring( 0, 1 ) ) );                        break; }

               case 2:

                   {                        ms.setcon( i, Byte.decode(ip.substring( 1, 2 ) ) );                        break; }

               case 3:

                   {                ms.setcon( i, Byte.decode(ip.substring( 2, 3 ) ) );                        break;                    }

               case 4:

                   {                        ms.setcon( i, Byte.decode(ip.substring( 3, 4 ) ) );                        break; }

               case 5:

                   {                        ms.setcon( i, Byte.decode(ip.substring( 4, 5 ) ) );                        break; }

               case 6:

                   {

                       int ed = 0;

                       int ix = 0;

                       for (int n = 0; n < (ms.msx.mslog.get( i ).pins.size() - 1); n++)

                       {

                           if (ms.msx.mslog.get( i ).pins.get( n ) == 1) { ed++; break; }

                           if (ms.msx.mslog.get( i ).pins.get( n ) == 2) ix++;

                       }

                       if (ed > 0) ms.setdelaycon(i, (byte)0);

                       else if (ix > 0) ms.setdelaycon(i, (byte)2);

                       else ms.setdelaycon(i, (byte)1);

                       break;

                   }

               case 7:

                   {

                       int zero = 0;

                       int ix = 0;

                       for (int n = 0; n < (ms.msx.mslog.get( i ).pins.size() - 1); n++)

                       {

                           if (ms.msx.mslog.get( i ).pins.get( n ) == 0) { zero++; break; }

                           if (ms.msx.mslog.get( i ).pins.get( n ) == 2) ix++;

                       }

                       if (zero > 0) ms.setdelaycon(i, (byte)1);

                       else if (ix > 0) ms.setdelaycon(i, (byte)2);

                       else ms.setdelaycon(i, (byte)0);

                       break;

                   }

           }

           }

       }

   }

   public class Protocol

   {

       Shema sx;

       int step;

       public Protocol( Shema ms )

       {

           sx = ms;

           step = 1;

       }

       public void header()

       {

           String tmp=" ШАГ  ";

           String tmp1 = "------";

           for (int i = 0; i < sx.cons.links.size(); i++)

           {

               tmp += " "+sx.cons.links.get( i ).name + " ";

               tmp1 += "----";

           }

           System.err.println(tmp);

           System.err.println(tmp1);

       }

       public void AddLine()

       {

           String tmp = "" + step;

           //tmp = tmp.PadLeft(6, ' ');

           step++;

           for (int i = 0; i < sx.cons.links.size(); i++)

               if (sx.cons.links.get( i ).level<2) tmp += "  " + sx.cons.links.get( i ).level + " ";

               else tmp += "  X ";

           System.err.println(tmp);

       }

   }

}




1. Крах релятивизма Лоренца Эйнштейна
2. Экономика труда после этого работала в секторе промышленности и строительства Центральной научноисследов
3. тематичних наук Київ 2001 Дисертація є рукописом1
4. Тема 1 Загальні проблеми доктрини адміністративного права України 1
5. а и ldquo;Нильсборийrdquo; Ns
6. территориальная реформа политика белорусизации репрессии на Беларуси
7. Тема- Монополия и ее виды.
8. реферату- Вплив діяльності людини на довкілляРозділ- Екологія Вплив діяльності людини на довкілля В умова
9. Верность долгу (по повести «Обелиск»)
10. 20 року слідчий посада найменування органу ініціали п
11. это способность человека выполнять двигательные действия в минимальный для данных условий отрезок времени
12. Источники и Историография по истории древнего мира Источники бывают вещественные и письменные.html
13. Реферат- Формирование характера
14. задание Формула полной вероятности
15. Вариант 9 для студентов номера зачетных книжек которых оканчиваются цифрой 9 Задача 1 Имеются следую
16. Национальный исследовательский ядерный университет МИФИ г.
17. Реферат- Административное принуждение, его формы
18. Однородное поле
19. варіанті. Вступ можна писати пізніше коли буде точно відомо що студент отримав у своїй роботі
20. Вариант 466 На предприятии расположенном в центральной части Челябинской обл