Matlab  |  Mathcad  |  Maple  |  Mathematica  |  Statistica  |  Другие пакеты Поиск по сайту
Internet-класс  |  Примеры  |  Методики  |  Банк задач  |  Консультации & Форум  |  Download  |  Ссылки  |  Конкурсы
Научно-практический журнал "Exponenta Pro. Математика в приложениях". Вышел 1/2004 номер журнала
 
Дискретная математическая модель понижающей схемы
выполнили: Сидоров Илья, Гарин Сергей, 3 курс
Пензенский Государственный Университет
Кафедра вычислительной техники
2002

archive.gif (75 bytes) Архив разработки (107 кб, Mathcad, MathConnex)

 

Моделирование арифметико-логического устройства

Цель работы: разработка и моделирование функций арифметико-логического устройства (АЛУ) на базе микросхемы КР1533ИП3 без детализации его внутренней структуры.

 

При создании АЛУ использовался компонент ConnexScript. К данному компоненту были добавлены условное графическое изображение, три входа и три выхода.

  1. Первому входу соответствуют 4 входа АЛУ: SE 0,..,SE3, комбинация сигналов на которых определяет тип операции.
  2. Второму входу компонента ConnexScript соответствуют 8 входов АЛУ: A0,B0,..,A3,B3, на которые подаются поразрядно операнды A и B.
  3. Третьему входу соответствуют 2 входа АЛУ: MO (MO="1" - выполняется логическая операция, МО="0" - выполняется арифметическая операция), CRn - перенос для возможности каскадирования микросхем.
  4. Первому выходу соответствуют 3 выхода АЛУ: Y- выход распространения переноса, CRn+4 - выход переноса для четвёртого разряда каскада, X - выход образования переноса.
  5. Второму выходу соответствуют 4 выхода АЛУ: F0,..,F3 - четырёхразрядный результат.
  6. Третьему выходу соответствует 1 выход АЛУ - A=B.

Таким образом, одному выводу компонента ConnexScript ставится в соответствие несколько выводов АЛУ. Другими словами, сигналы на входах и выходах компонента ConnexScript представляются в векторной форме. Это связано с тем, что у компонента ConnexScript можно задать только 4 входа и 4 выхода.

На следующем этапе была написана программа на языке ConnexScript, описывающая работу АЛУ. Ниже представлены фрагменты данной программы.

function Add(CRn,a,b) //функция сложения; CRn - перенос, a,b- //четырёхразрядные векторы (операнды 1 и 2)

a0=a[0];a1=a[1];a2=a[2];a3=a[3];

b0=b[0];b1=b[1];b2=b[2];b3=b[3];

G = {1, 1, 1, 1, 1}

G[0]=(~a0&~b0&CRn)|(~a0&b0&~CRn)|(a0&~b0&~CRn)|(a0&b0&CRn);

CRn0=(a0&CRn)|(a0&b0)|(b0&CRn);

G[1]=(~a1&~b1&CRn0)|(~a1&b1&~CRn0)|(a1&~b1&~CRn0)|(a1&b1&CRn0);

CRn1=(a1&CRn0)|(a1&b1)|(b1&CRn0);

G[2]=(~a2&~b2&CRn1)|(~a2&b2&~CRn1)|(a2&~b2&~CRn1)|(a2&b2&CRn1);

CRn2=(a2&CRn1)|(a2&b2)|(b2&CRn1);

G[3]=(~a3&~b3&CRn2)|(~a3&b3&~CRn2)|(a3&~b3&~CRn2)|(a3&b3&CRn2);

G[4]=(a3&CRn2)|(a3&b3)|(b3&CRn2);

Add=G;

end

// приём информации со входов:

SE=in0[0]*1+in0[1]*2+in0[2]*4+in0[3]*8; // перевод из двоичной системы в десятичную(для //удобства)

a0=in1[0];a1=in1[2];a2=in1[4];a3=in1[6];

b0=in1[1];b1=in1[3];b2=in1[5];b3=in1[7];

MO=in2[0];CRn=in2[1];

//если выполняется логическая операция

if(MO==1)

// выполнение логической операции F=~A

if(SE==0)

f0=~a0;

f1=~a1;

f2=~a2;

f3=~a3;

end

// выполнение логической операции F=~(A&B)

if(SE==1)

f0=~(a0&b0);

f1=~(a1&b1);

f2=~(a2&b2);

f3=~(a3&b3);

end

// выполнение логической операции F=(~A)|B

if(SE==2)

f0=(~a0)|b0;

f1=(~a1)|b1;

f2=(~a2)|b2;

f3=(~a3)|b3;

end

// выполнение логической операции F=1

if(SE==3)

f0=1;

f1=0;

f2=0;

f3=0;

…………………..

…………………..

…………………..

// выполнение логической операции F=A

if(SE==15)

f0=a0;

f1=a1;

f2=a2;

f3=a3;

end

end

//если выполняется арифметическая операция

if(MO==0)

// выполнение арифметической операции F=A-1

if(SE==0)

b0=1;b1=1;b2=1;b3=1;

A = { a0, a1, a2, a3 }

B = { b0, b1, b2, b3 }

F=Add(CRn,A,B);

f0=F[0];

f1=F[1];

f2=F[2];

f3=F[3];

CRn4=F[4];

end

// выполнение арифметической операции F=A&B-1

if(SE==1)

A = { a0&b0, a1&b1, a2&b2, a3&b3 }

b0=1;b1=1;b2=1;b3=1;

B = { b0, b1, b2, b3 }

F=Add(CRn,A,B);

f0=F[0];

f1=F[1];

f2=F[2];

f3=F[3];

CRn4=F[4];

end

…………………..

…………………..

…………………..

// выполнение арифметической операции F=A

if(SE==15)

f0=a0;

f1=a1;

f2=a2;

f3=a3;

CRn4=0;

end

end

//вывод результатов

out1={f0;f1;f2;f3}

out0={0;CRn4;0}

out2=0

Ниже представлена таблица истинности АЛУ:

Выбор функции

MO=H; Логич.

функция

MO=L; Арифметическая операция

SE3 SE2 SE1 SE0 ~CRn=L(без переноса) ~CRn=H(с переносом)
L

L

L

L

L

L

L

L

H

H

H

H

H

H

H

H

L

L

L

L

H

H

H

H

L

L

L

L

H

H

H

H

L

L

H

H

L

L

H

H

L

L

H

H

L

L

H

H

L

H

L

H

L

H

L

H

L

H

L

H

L

H

L

H

F=~A

F=~(A&B)

F=(~A)|B

F=1

F=~(A|B)

F=~B

F=~(AxorB)

F=A|(~B)

F=(~A)&B

F= AxorB

F=B

F=A|B

F=0

F=A&(~B)

F=A&B

F=A

F=A-1

F=A&B-1

F=A&(~B)-1

F=-1

F=A+(A|(~B))

F=A&B+( A|(~B))

F=A-B-1

F=A|(~B)

F=A+(A|B)

F=A+B

F=A&(~B)+(A|B)

F=A|B

F=A+A

F=A&B+A

F=A&(~B)+A

F=A

F=A

F=A&B

F=A&(~B)

F=0

F=A+(A|(~B))+1

F=A&B+( A|(~B))+1

F=A-B

F=A|(~B)+1

F=A+(A|B)+1

F=A+B+1

F=A&(~B)+(A|B)+1

F=A|B+1

F=A+A+1

F=A&B+A+1

F=A&(~B)+A+1

F=A+1

После отладки полученного модуля, схема была собрана и промоделирована. При этом, помимо АЛУ в неё были включены следующие элементы:

  • универсальный регистр, настроенный на параллельный занос информации;
  • генератор прямоугольных импульсов, предназначенный для периодической смены
  • уровня сигнала на входе МО;

    - два шинных формирователя векторных сигналов.

Библиотечные модули названных элементов (регистр, генератор, формирователи) взяты из

работы Макарычева П.П., Золотова Е.Г "Технология разработки виртуальных лабораторий",

представленной на образовательном математическом сайте www.exponenta.ru.

Пример моделирования АЛУ

В начало

Карта сайта | На первую страницу | Поиск |О проекте |Сотрудничество |
Exponenta Pro | Matlab.ru

Наши баннеры


Copyright © 2000-2003. Компания SoftLine. Все права защищены.

Дата последнего обновления информации на сайте: 11.05.04
Сайт начал работу 1.09.00

Программное обеспечение Microsoft, Macromedia, VERITAS, Novell, Borland, Symantec, Oracle и др.