МП и МПС. Курсовой проект савенко (2)


Министерство образования и науки Российской Федерации
ФГОУ СПО «Новосибирский Авиационный Технический колледж»

Курсовой проект
по дисциплине «Микропроцессоры и микропроцессорные системы»
Проектирование ЦКА Миля (МПС)
Выполнил:
Савенко С.
Проверил:
Ю.М. Машуков
2010
Содержание
1 Исходные данные ГЦА3
2 Граф ЦКА3
3 Построение таблицы состояний и таблицы выходов4
4 Кодирование информации4
5 Перевод таблицы состояний и таблицы выходов в двоичный код с учетом кодирования5
6 Составление системы логических уравнений для выходных сигналов по таблице выходов5
7 Поиск min[Y1Y2] по таблице выходов6
8 Проектирование элементов памяти6
9 Составление таблицы возбуждения триггеров7
10 Поиск min[S1S2R1R2]7
11 Перевод п.2 к п9, базису «И-НЕ»8
12Логическая (функциональная) схема9
13 Синтез принципиальной схемы ИМС10
14 Электронная схема11
15 Тестирование схемной части12
16Тестирование программной части20

НАТК 252200.300 Лист
3
Изм. Лист № докумПодписьДата 1 Исходные данные ГЦА
Вершина ГЦА a1 a2 a3 a4
Сигнал Z1 W1 Z2 W2 Z3 W3 Z4 W4
Дуга из вершины 1234 1234 1234 1234 1234 1234 1234 1234
Индекс сигнала 3204 1203 0134 0342 4203 1304 4201 1304
Где ai – состояние ЦА;
Zi – входной сигнал;
Wi – выходной сигнал.
2 Граф ЦКА
4
3
2
1
Z4W1
Z2W3
Z4W3
Z1W4
Z2W3
Z3W4
Z1W3
Z3W4
Z4W1
Z2W2
Z4W2
a1
a2
a3
a4
Z3W1
ai
НАТК.252200.300 Лист
4
Изм. Лист № докумПодписьДата 3 Построение таблицы состояний и таблицы выходов по ГЦА
3.1 Таблица состояний - Тδвходной сигнал a1 a2 a3 a4
Z1 а3 а3
Z2 а2а4а1Z3 а1а4а2Z4 а4а1а3 а43.2 Таблица выходов - Тλвыходной сигнал a1 a2 a3 a4
Z1 w3 w4
Z2 w2 w3 w3
Z3 w1 w4 w4 Z4 w3 w2 w1 w1
4 Кодирование информации
{ai(Q1Q2); Zi(X1X2); Wi(Y1Y2)}
4.1 Кодирование состояний
состояние Q1 Q2
a1 0 0
a2 0 1
a3 1 0
a4 1 1
4.2 Кодирование входных сигналов
вх. сигнал X1 X2
Z1 0 0
Z2 0 1
Z3 1 0
Z4 1 1
НАТК.252200.300 Лист
5
Изм. Лист № докумПодписьДата 4.3 Кодирование выходных сигналов
вых. сигнал Y1 Y2
W1 0 0
W2 0 1
W3 1 0
W4 1 1
5 Перевод таблицы состояний и таблицы выходов в двоичный код с учетом кодирования
5.1 Перевод таблицы состояний в двоичный код с учетом кодирования
X1X2 Q1Q2
00 01 10 11
00 10 10
01 01 11 00
10 00 11 01 11 11 00 10 11
5.2 Перевод таблицы выходов в двоичный код с учетом кодирования
X1X2 Q1Q2
00 01 10 11
00 10 11
01 01 10 10
10 00 11 11 11 10 01 00 00
6 Составление системы логических уравнений для выходных сигналов по таблице выходов
Y1=X1X2Q1Q2˅ X1X2Q1Q2˅ X1X2Q1Q2˅ X1X2Q1Q2˅ X1X2Q1Q2˅ X1X2Q1Q2˅ X1X2Q1Q2;
Y2= X1X2Q1Q2˅ X1X2Q1Q2˅ X1X2Q1Q2˅ X1X2Q1Q2˅ X1X2Q1Q2;
НАТК.252200.300 Лист
6
Изм. Лист № докумПодписьДата 7 Поиск min[Y1Y2] по таблице выходов
7.1 Поиск minY1
00 01 11 10
00 X 1 1 X
01 X 1 1
11 1 10 1 X 1
minY1=f1∨f2∨f3∨f4= X2Q1˅ X2Q2˅ X1Q1˅ X1X2Q1Q2;
7.2 Поиск minY2
00 01 11 10
00 X 1 X
01 1 X 11 1 10 1 X 1
minY2=f1∨f2∨f3= X2Q1˅ X1Q1Q2˅ X1Q1Q2;
8 Проектирование элементов памяти
для SR триггеров – словарь переходов
SaRa
S
C
R
T
QQ
Qt→Qt+1НАТК.252200.300 Лист
7
Изм. Лист № докумПодписьДата S R Режим
0→00 ххранение «0»
0→11 0 запись «1»
1→00 1 запись «0»
1→1х0 хранение «1»
9 Составление таблицы возбуждения триггеров
X1X2 Q1 Q2 Q3 Q4
Q1 Q2 Q1 Q2 Q1 Q2 Q1 Q2
0 0 0 1 1 0 1 1
S1R1 S2R2 S1R1 S2R2 S1R1 S2R2 S1R1 S2R2
00 10 01 X0 01
01 0X 10 X0 10 01 01
10 0X 0X 10 X0 01 10 11 10 10 0X 01 X0 0X X0 X0
10 Поиск min[S1S2R1R2]
S1
00 01 11 10
00 1 X 01 X
11 1 X X
10 1 R1
00 01 11 10
00 01 X 1 11 X 10 X 1
minS1=f1∨f2= X1X2Q1˅ X2Q1Q2;
minR1=f1∨f2= X1X2Q1Q2˅ X1X2Q2;
НАТК.252200.300 Лист
8
Изм. Лист № докумПодписьДата S2
00 01 11 10
00
01 1 1
11 1 X
10 X 1
R2
00 01 11 10
00 1 1 01 1 11 1 X
10 X minS2=f1∨f2∨f3= X1X2Q2˅ X1X2Q1Q2˅X2Q1Q2;

minR2=f1∨f2∨f3= X1X2Q1Q2˅X1Q1Q2˅X1X2Q2;
11Перевод п. 2 к п. 9, базису «И-НЕ»
S1и-не= X1X2Q1˅ X2Q1Q2;
R1и-не= X1X2Q1Q2˅ X1X2Q2
S2и-не= X1X2Q2˅ X1X2Q1Q2˅X2Q1Q2;
R2и-не= X1X2Q1Q2˅X1Q1Q2˅X1X2Q2;
Y1и-не= X2Q1˅ X2Q2˅ X1Q1˅ X1X2Q1Q2;
Y2и-не= X2Q1˅ X1Q1Q2˅ X1Q1Q2;
НАТК.252200.300 Лист
9
Изм. Лист № докумПодписьДата 12 Логическая (функциональная) схема
1
&
1
&
&
&
&
Q1
R0
R1
C
TT1
Q1
Q2
S2
R0
R2
C
TT1
Y2
ГИ
Уст «0»
&
&
&
&
X1
X2
1
&
&
&
&
&
Y1
2
3
S1
Q2
S1
R1
S2
R2
&
&
&
&
&
&
&
&
&

НАТК.252200.300 Лист
10
Изм. Лист № докумПодписьДата 13 Синтез принципиальной схемы ИМС
1 вход – 2шт.;
2 входа- 6 шт.;
3 входа – 12 шт.;
4 входа – 5 шт.;
Триггер CRS – 2 шт.
К555ЛИ1(DD1)
1
1
1
1
1
1
1
2
4
6
3
5
8
9
11
10
12
13

К555ЛА3(DD2, DD3)
&
&
&
&
1
2
4
9
10
12
3
11
6
8
13
5

К555ЛА4(DD4, DD5, DD6, DD7)
&
2
1
13
&
4
3
5
&
10
9
11
121
6
8

К555ЛА1(DD8, DD9)
&
2
1
4
5
&
10
9
12
13
6
8

К555ТВ6(DD10)
Q2
J
R
C
K
TT1
Q2
1
4
12
13
3
2
Q2
J
R
C
K
TT1
Q2
8
9
11
10
5
6

НАТК.252200.300 Лист
PAGE \* MERGEFORMAT 2
Изм. Лист № докумПодписьДата 14 Электронная схема
1
&
&
&
&
&
&
&
&
1
&
&
&
&
Q1
R0
R1
C
TT1
Q1
Q2
S2
R0
R2
C
TT1
Y2
ГИ
Уст «0»
&
&
&
&
X1
X2
1
&
&
&
&
&
&
Y1
2
4
3
4
2
6
8
3
1
6
7
3
2
8
4
1
6
2
8
5
1
8
6
1
7
52
4
7
3
2
6
3
2
7
4
1
8
6
4
7
6
4
8
7
3
7
1
3
1
S1
Q2
DD10.1
DD1.1
DD1.2
DD2.1
DD2.2
DD2.3
DD2.4
DD3.1
DD3.2
DD3.3
DD3.4
DD4.1
DD4.2
DD4.3
DD5.1
DD5.2
DD5.3
DD6.1
DD6.2
DD6.3
DD7.1
DD8.1
DD8.2
DD9.1
DD9.2
DD10.2
1
3
2
4
1
4
5
2
9
12
132
10
1
13
2
1
2
3
5
4
9
11
10
1
13
2
3
5
4
4
5
9
10
12
13
1
2
6
8
12
3
6
8
12
6
6
8
11
3
1
4
12
13
8
9
11
10
3
2
5
9
11
10
1
13
2
3
5
4
9
11
10
1
13
2
4
5
9
10
12
13
6
8
12
6
8
1
2
4
5
6
6
8
11
12
9
10
12
13
8

НАТК.252200.300 Лист
12
Изм. Лист № докумПодписьДата 15 Тестирование схемной части
011
111
101
110
001
111
111
111
a100Z100Z201Z3102468111110110111136700100110101023810111100114010011268111111011158001001101167010010110457100000100S1=100R1=011S2=110R2=0001
0
0
1
0
1
=a4
=a2
=a1

НАТК.252200.300 Лист
PAGE \* MERGEFORMAT 23
Изм. Лист № докумПодписьДата 111
010
111
111
110
111
101
236101111001237100110000148011001111467110010110370010001700001013000110468111011111Y1=011Y2=101111

НАТК.252200.300 Лист
PAGE \* MERGEFORMAT 24
Изм. Лист № докумПодписьДата 110
110
111
101
111
111
100
111
a201Z100Z310Z4112468111001100010136700111011111123810000001014011110268110010010158000100100167011111111457101101001S1=001R1=010S2=000R2=0110
1
0
1
0
0
=a2
=a1
=a3

НАТК.252200.300 Лист
PAGE \* MERGEFORMAT 25
Изм. Лист № докумПодписьДата 110
111
100
001
111
111
111
236101001011237101001011148010110100467111111011370101111701111113011011468110110010Y1=110Y2=011110

НАТК.252200.300 Лист
PAGE \* MERGEFORMAT 26
Изм. Лист № докумПодписьДата 111
111
011
101
111
100
111
111
a310Z201Z310Z4112468100101010001136701001000110023811100101114001110268101001001158011111111167000100100457010110010S1=000R1=110S2=011R2=0000
1
0
0
1
1
=a1
=a2
=a4

НАТК.252200.300 Лист
PAGE \* MERGEFORMAT 27
Изм. Лист № докумПодписьДата 110
111
111
111
101
111
111
236110000010237110000010148001111101467000100000371000101700101013011011468001101001Y1=010Y2=001111

НАТК.252200.300 Лист
PAGE \* MERGEFORMAT 28
Изм. Лист № докумПодписьДата 111
111
111
110
111
111
111
010
a411Z100Z201Z3102468110010000100136700010101100123810011000014010011268110100000158010010110167001001101457111011111S1=000R1=001S2=000R2=1011
0
1
0
0
1
=a3
=a4
=a1

НАТК.252200.300 Лист
PAGE \* MERGEFORMAT 29
Изм. Лист № докумПодписьДата 111
111
110
111
111
101
111
236100110000237101111001148010000110467101001101370111011701011113000110468100000100Y1=010Y2=011101

НАТК.252200.300 Лист
20
Изм. Лист № докумПодписьДата 17 Тестирование программной части
Код программы:
//---------------------------------------------------------------------------
#include <vcl.h>
//---------------------------------------------------------------------------
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
//---------------------------------------------------------------------------
//inversiyainline bool inv(bool b)
{
return !b;
}
//---------------------------------------------------------------------------
//liniya (if s == 0 - gorizontal'naya; else - vertikalnaya)
void line(int x, int y, int dl, bool s = 0)
{
gotoxy(x,y);
if (!s)
for (int i = 0; i < dl; i++) cout<<"-";
else {
for (int i = y; i < y+dl; i++)
{
gotoxy(x,i);
cout<<"|";
}
}
}НАТК.252200.300 Лист
2 PAGE \* MERGEFORMAT 2
Изм. Лист № докумПодписьДата
//---------------------------------------------------------------------------
//dlina strokiunsigned length(char *str)
{
unsigned i;
for (i = 0; str[i]!=0; i++);
return i;
}
//---------------------------------------------------------------------------
//tablicavoid table(void)
{
unsigned x, y;
char *str[] = {"| ai","| Q1","| Q2","| Zi","| x1","| x2","| S1","| R1","| S2","| R2",
"| Q1(t+1)","| Q2(t+1)","| ai(t+1)","| y1","| y2","| Wi"};
x = 1; y = 2;
unsigned ix = x;
gotoxy(x,y);
line(x,y,17,1);
for (int i = 0; i < sizeof(str)/sizeof(str[1]); i++)
{
gotoxy(ix,y);
if (length(str[i]) > 4) ix += 9;
else ix += 4;
cout<<str[i];
line(ix,y,17,1);
}
bool x1 = 0, x2 = 0;НАТК.252200.300 Лист
22
Изм. Лист № докумПодписьДата
int counter1 = 0, counter2 = 0;
bool S1, R1, S2, R2, Q1, Q2, Qt1, Qt2, y1, y2;
int a = 1;
for (int i = 0; i < 16; i++)
{
gotoxy(11, y); cout<<"ai";
gotoxy(7, y); cout<<" ";
gotoxy(3, y); cout<<" ";
gotoxy(11, i+y+1); cout<<"a"<<a; //ai gotoxy(19, i+y+1); cout<<x1; //x1
gotoxy(23, i+y+1); cout<<x2; //x2
gotoxy(15, i+y+1);
if (!x1&&!x2) cout<<"Z1"; //Zi if (!x1&&x2) cout<<"Z2";
if (x1&&!x2) cout<<"Z3";
if (x1&&x2) cout<<"Z4";
switch (a)
{
case 1: Q1 = 0; Q2 = 0; break;
case 2: Q1 = 0; Q2 = 1; break;
case 3: Q1 = 1; Q2 = 0; break;
case 4: Q1 = 1; Q2 = 1; break;
default: break;
}
S1 =(inv(x1)&inv(x2)&inv(Q1)&inv(Q2))|(x1&x2&inv(Q1)&Q2);
R1=(inv(x1)&x2&inv(Q2))|(x1&inv(x2));
S2 =(inv(x1)&inv(Q1)&inv(Q2))|(x1&Q1&inv(Q2));
R2 =(x1&inv(Q1)&Q2)|(inv(x2)&Q1&Q2);
gotoxy(27, i+y+1); cout<<S1; //S1
gotoxy(31, i+y+1); cout<<R1; //R1
gotoxy(35, i+y+1); cout<<S2; //S2
gotoxy(39, i+y+1); cout<<R2; //R2
if (S1 && R1)
{
S1 = 0;
R1 = 0;
}
if (S2 && R2)
{
S2 = 0;
R2 = 0;
}
y1=(inv(x1)&x2&inv(Q1))|(inv(x1)&x2&Q2)|(x1&inv(x2)&inv(Q1))|(inv(x2)&inv(Q1)&Q2));
y2=(x2&Q2)|(x1&Q2)|(x1&x2)|(inv(x2)&inv(Q1)&inv(Q2));
gotoxy(70, i+y+1); cout<<y1;
gotoxy(74,i+y+1); cout<<y2;
if (!S1 & !Q1) Qt1 = 0;
if (S1 & !R1 & !Q1) Qt1 = 1;
if (!S1 & R1 & Q1) Qt1 = 0;
if (!R1 & Q1) Qt1 = 1;
gotoxy(43, i+y+1);
cout<<" "<<Qt1; //Qt1
if (!S2 & !Q2) Qt2 = 0;
if (S2 & !R2 & !Q2) Qt2 = 1;
if (!S2 & R2 & Q2) Qt2 = 0;
if (!R2 & Q2) Qt2 = 1;НАТК.252200.300 Лист
23
Изм. Лист № докумПодписьДата
// if(i==8)Qt2=1;
gotoxy(52, i+y+1);
cout<<" "<<Qt2 ; //Qt2
gotoxy(61, i+y+1); cout<<" a";
if ((S1|(inv(R1)&Q1))==0&&(S2|(inv(R2)&Q2)) == 0) cout<<"1";
if ((S1|(inv(R1)&Q1))==0&&(S2|(inv(R2)&Q2)) == 1) cout<<"2";
if ((S1|(inv(R1)&Q1))==1&&(S2|(inv(R2)&Q2)) == 0) cout<<"3";
if ((S1|(inv(R1)&Q1))==1&&(S2|(inv(R2)&Q2)) == 1) cout<<"4";
gotoxy(78, i+y+1); cout<<"W"; //Wi if (!y1&&!y2) cout<<"1";
if (!y1&&y2) cout<<"2";
if (y1&&!y2) cout<<"3";
if (y1&&y2) cout<<"4";
//---------------------------------------------------------//
counter1++;
counter2++;
if (i == 3) a = 2;
if (i == 7) a = 3;
if (i == 11) a = 4;
if (counter1 == 2) {x1 = 1; counter1 = -2;}
if (counter1 == 0) {x1 = 0; counter1 = 0;}
if (counter2 == 1) {x2 = 1; counter2 = -1;}
if (counter2 == 0) {x2 = 0; counter2 = 0;}
}
}
//---------------------------------------------------------------------------
int main()
{
clrscr();
//cout.setf(ios::right);НАТК.252200.300 Лист
24
Изм. Лист № докумПодписьДата
table();
getch();
return 0;
}
//---------------------------------------------------------------------------
Результат:НАТК.252200.300 Лист
25
Изм. Лист № докумПодписьДата


Приложенные файлы

  • docx 8981745
    Размер файла: 214 kB Загрузок: 0

Добавить комментарий