Разработка цифрового автомата, имеющего два режима работы: М=0 – двоичный суммирующий счетчик, М=1 – двоично-десятичный суммирующий счетчик, страница 3

Благодаря картам Карно получаем следующие формулы:

Q0=/Q0;

Q1=/Q0*Q1+M*Q3*(Q1+Q2)+Q0*/Q1*(/M+/Q3);

Q2=Q2*(/Q0+/Q1*Q2)+Q0*Q1*/Q2;     

Q3=Q3*(/Q0+/M*/Q2+/M*Q0*/Q1)+Q0*Q1*Q2*(M+/M*/Q3);

Далее по этим формулам строим двухлистовую схему:

Page 1:

Помимо логики, построенной по формулам, в эту страницу (Page 1) добавлена логика для сброса счетчика в том случае, если производится переход из MODE=0 в MODE=1, и при этом его значение >=A и <=F.

Т.е. для корректной работы двоично-десятичного счетчика необходимо сбрасывать счет, если предыдущее значение выходило за пределы его допустимых значений (а это возможно только при переключении из M=0 в M=1).

Page 2:

Эта схема является также и схемой замещения для цифрового автомата(ЦА) в виде иерархического блока. А верхний уровень иерархии для ЦА выглядит так:

     В этой схеме так же находится иерархический блок с поведенческой DSL- моделью (следующий пункт).

     Вообще все последующие схемы верхнего уровня одинаковы (за исключением самих иерархических блоков), поэтому далее проводится не будут.

          Верификация схемы:

                        

     Проведен довольно большой эксперимент, чтобы показать полный обход счетчика при M=0 и M=1, а так же переключение из М=0 в М=1 при Q[3]=C.

        5. Проектирование поведенческой DSL-модели цифрового автомата.

Составлям DSL-модель:

PROCEDURE Counter_DSL (

          INPUT M, C, R ;

          OUTPUT Q0, Q1, Q2, Q3 CLOCKED_BY C RESET_BY R;

);

IF [(M*(Q1+Q2)*Q3)=1] THEN Q0=0; Q1=0; Q2=0; Q3=0;

ELSE

Q0=/Q0;

Q1=/Q0*Q1+M*Q3*(Q1+Q2)+Q0*/Q1*(/M+/Q3);

Q2=Q2*(/Q0+/Q1*Q2)+Q0*Q1*/Q2;     

Q3=Q3*(/Q0+/M*/Q2+/M*Q0*/Q1)+Q0*Q1*Q2*(M+/M*/Q3);

END IF;

END Counter_DSL;

          6. Разработка иерархических символов, поддерживаемых DSL-моделями и используемых в проекте.

В работе используются следующие элементы: НЕ, И2, ИЛИ2, И3, ИЛИ3, ИЛИ13, трехразрядный мультиплексор 2 в 1, D-триггеры, дешифратор 5 в 26, ПЗУ с организацией (27х9).

     Их внешний вид можно посмотреть в последующих пунктах задания, а DSL- модели приведены ниже:

------------------------------------------------------------------------------------------------------------------------------------

PROCEDURE INV_DSL (INPUT Q; OUTPUT Y);

  Y=/Q;

END INV_DSL;

------------------------------------------------------------------------------------------------------------------------------------

PROCEDURE AND2_DSL (INPUT Q0, Q1; OUTPUT Y);

  Y=Q0*Q1;

END AND2_DSL;

------------------------------------------------------------------------------------------------------------------------------------

PROCEDURE AND3_DSL (INPUT Q0, Q1, Q2; OUTPUT Y);

  Y=Q0*Q1*Q2;

END AND3_DSL;

------------------------------------------------------------------------------------------------------------------------------------

PROCEDURE OR2_DSL (INPUT Q0, Q1; OUTPUT Y);

  Y=Q0+Q1;

END OR2_DSL;

------------------------------------------------------------------------------------------------------------------------------------

PROCEDURE OR3_DSL (INPUT Q0, Q1, Q2; OUTPUT Y);

Y=Q0+Q1+Q2;

END OR3_DSL;

------------------------------------------------------------------------------------------------------------------------------------

PROCEDURE OR13_DSL (

              INPUT P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13 ;

              OUTPUT Y ;

);

Y=P1+P2+P3+P4+P5+P6+P7+P8+P9+P10+P11+P12+P13;

END OR13_DSL;

------------------------------------------------------------------------------------------------------------------------------------

PROCEDURE MUX2_3_DSL (