Описание принципиальной схемы




Принципиальная схема содержит 15 микросхем. Схема приведена в приложении. Микропроцессор К1810ВМ88 работает в максимальном режиме. Его выводы, включая сигнал переключения режима, обозначены в соответствий с этим режимом. Тактовые сигналы для процессора вырабатываются генератором К1810ГФ84 с частотой 5МГц.

Микропроцессор подключен к 8-разрядной шине данных с помощью одной 8-разрдной БИС шинного формирователя КА580ВА86. Шина адреса 20- разрядная, организуется с помощью трёх 8-разрдных регистров-защёлок К580ИР82. Для получения емкости ПЗУ 4Кбайт, применено наращивание памяти двумя микросхемами КР566РТ18. Управление регистрами адреса, шинным формирователем и памятью производится с помощью контроллера шины К1810ВГ88 по сигналам состояния с микропроцессора.

7. Основные результаты разработки.

Аппаратурные затраты: 15 микросхем.

Длина программы в байтах: 6 190 байт.

Время выполнения программы (1 проход): 574 тактов.

Расчёт времени выполнения программы Таблица 3

Мнемоника Вид адресации Число тактов на выполнение программы
XOR AX,AX Регистровая  
MOV X1,AX Прямая  
MOV X2,AX Прямая  
MOV X3,AX Прямая  
MOV X4,AX Прямая  
MOV X5,AX Прямая  
MOV X,AX Прямая  
CWD  
MOV SP,DX Регистровая  
ADD AX,AX Регистровая  
ADC DX,DX Регистровая  
MOV AX,8000H Регистровая  
MOV Yn,AX Прямая  
JMP NEXT  
MOV AX,4CH Регистровая  
INT 21H  

 

8. Отладка программы.

При X>0 (X=100) Таблица 4

             
Xn            
Yn AA          
  Xn=100 Xn=100 Xn=100 Xn=100 Xn=100 Xn=100
  Xn-1=0 Xn-1=100 Xn-1=100 Xn-1=100 Xn-1=100 Xn-1=100
  Xn-2=0 Xn-2=0 Xn-2=100 Xn-2=100 Xn-2=100 Xn-2=100
  Xn-3=0 Xn-3=0 Xn-3=0 Xn-3=100 Xn-3=100 Xn-3=100
  Xn-4=0 Xn-4=0 Xn-4=0 Xn-4=0 Xn-4=100 Xn-4=100
  Xn-5=0 Xn-5=0 Xn-5=0 Xn-5=0 Xn-5=0 Xn-5=100
  Yn=AA Yn=122 Yn=166 Yn=177 Yn=155 Yn=100

 

При X<0 (X=-100) Таблица 5

             
Xn FF00 FF00 FF00 FF00 FF00 FF00
Yn FF56 FEDE FE9A FE89 FEAB FF00
  Xn= FF00 Xn= FF00 Xn= FF00 Xn= FF00 Xn= FF00 Xn= FF00
  Xn-1= 0 Xn-1= FF00 Xn-1= FF00 Xn-1= FF00 Xn-1= FF00 Xn-1= FF00
  Xn-2=0 Xn-2= 0 Xn-2= FF00 Xn-2= FF00 Xn-2= FF00 Xn-2= FF00
  Xn-3=0 Xn-3=0 Xn-3= 0 Xn-3= FF00 Xn-3= FF00 Xn-3= FF00
  Xn-4=0 Xn-4=0 Xn-4=0 Xn-4= 0 Xn-4= FF00 Xn-4= FF00
  Xn-5=0 Xn-5=0 Xn-5=0 Xn-5=0 Xn-5= 0 Xn-5= FF00
  Yn=FF56 Yn= FEDE Yn= FE9A Yn= FE89 Yn= FEAB Yn= FF00

 

При положительном переполнении (X=8000) Таблица 6

             
Xn            
Yn AAAB          
  Xn= 8000 Xn= 8000 Xn= 8000 Xn= 8000 Xn= 8000 Xn= 8000
  Xn-1= 0 Xn-1= 8000 Xn-1= 8000 Xn-1= 8000 Xn-1= 8000 Xn-1= 8000
  Xn-2=0 Xn-2= 0 Xn-2= 8000 Xn-2= 8000 Xn-2= 8000 Xn-2= 8000
  Xn-3=0 Xn-3=0 Xn-3= 0 Xn-3= 8000 Xn-3= 8000 Xn-3= 8000
  Xn-4=0 Xn-4=0 Xn-4=0 Xn-4= 0 Xn-4= 8000 Xn-4= 8000
  Xn-5=0 Xn-5=0 Xn-5=0 Xn-5=0 Xn-5= 0 Xn-5= 8000
  Yn=AAAB Yn= 8000 Yn= 8000 Yn= 8000 Yn= 8000 Yn= 8000

 

При отрицательном переполнении (X=7FFF) Таблица 7

             
Xn 7FFF 7FFF 7FFF 7FFF 7FFF 7FFF
Yn   7FFF 7FFF 7FFF 7FFF 7FFF
  Xn= 7FFF Xn= 7FFF Xn= 7FFF Xn= 7FFF Xn= 7FFF Xn= 7FFF
  Xn-1= 0 Xn-1= 7FFF Xn-1= 7FFF Xn-1= 7FFF Xn-1= 7FFF Xn-1= 7FFF
  Xn-2=0 Xn-2= 0 Xn-2= 7FFF Xn-2= 7FFF Xn-2= 7FFF Xn-2= 7FFF
  Xn-3=0 Xn-3=0 Xn-3= 0 Xn-3= 7FFF Xn-3= 7FFF Xn-3= 7FFF
  Xn-4=0 Xn-4=0 Xn-4=0 Xn-4= 0 Xn-4= 7FFF Xn-4= 7FFF
  Xn-5=0 Xn-5=0 Xn-5=0 Xn-5=0 Xn-5= 0 Xn-5= 7FFF
  Yn=5554 Yn= 7FFF Yn= 7FFF Yn= 7FFF Yn= 7FFF Yn= 7FFF

 

При положительном переполнении и X=8009>Xmax Таблица 8

             
Xn AAB1          
Yn            
  Xn= 8009 Xn= 8009 Xn= 8009 Xn= 8009 Xn= 8009 Xn= 8009
  Xn-1= 0 Xn-1= 8009 Xn-1= 8009 Xn-1= 8009 Xn-1= 8009 Xn-1= 8009
  Xn-2=0 Xn-2= 0 Xn-2= 8009 Xn-2= 8009 Xn-2= 8009 Xn-2= 8009
  Xn-3=0 Xn-3=0 Xn-3= 0 Xn-3= 8009 Xn-3= 8009 Xn-3= 8009
  Xn-4=0 Xn-4=0 Xn-4=0 Xn-4= 0 Xn-4= 8009 Xn-4= 8009
  Xn-5=0 Xn-5=0 Xn-5=0 Xn-5=0 Xn-5= 0 Xn-5= 8009
  Yn=AAB1 Yn= 8000 Yn= 8000 Yn= 8000 Yn= 8000 Yn= 8009

 

Листинг программы

Turbo Assembler Version 4.1 13/05/11 19:04:49 Page 1

filter.ASM

1;Программа вычисления Yn=(10Xn+7Xn-1+4Xn-2+Xn-3-2Xn-4-5Xn-5)/15

2 0000.model small;модель памяти SMALL

3 0000.stack 64;модель стека 64

4 0000.data;начало сегманта данных

5 0000 0000 xn dw 0;резервирование

6 0002 0000 xn1 dw 0;места в памяти

7 0004 0000 xn2 dw 0;под переменные

8 0006 0000 xn3 dw 0;xn,xn1,xn2,xn3

9 0008 0000 xn4 dw 0;xn4

10 000A 0000 xn5 dw 0;xn5

11 000C 0000 yn dw 0;yn

12;******************************************************************************

13;

14;Константы для деления и выявления переполнения

15;

16 =7FF1 r1m equ 7ff1h;константа r1m примет значение k(+ymax)мл

17 =0007 r1c equ 0007h;константа r1c примет значение k(+ymax)ст

18 =8000 r2m equ 8000h;константа r2m примет значение k(-ymax)мл

19 =FFF8 r2c equ 0fff8h;константа r2c примет значение k(-ymax)ст

20 =000F k equ 15;делитель

21;******************************************************************************

22;

23;Программа вычисления выражения

24;

25 000E.code;начало кодового сегмента

26 0000 filtr proc;начало процедуры filtr

27 0000 B8 0000s mov ax,@data;указание регистра DS

28 0003 8E D8 mov ds,ax;сегмент двнных

29;******************************************************************************

30;

31;Сброс переменных xn,xn1,xn2,xn3,xn4,xn5,yn

32 0005 2B C0 sub ax,ax;сброс аккумулятора AX

33 0007 A3 0000r mov xn,ax;сброс xn

34 000A A3 0002r mov xn1,ax;сброс xn1

35 000D A3 0004r mov xn2,ax;сброс xn2

36 0010 A3 0006r mov xn3,ax;сброс xn3

37 0013 A3 0008r mov xn4,ax;сброс xn4

38 0016 A3 000Ar mov xn5,ax;сброс xn5

39 0019 A3 000Cr mov yn,ax;сброс yn

40;******************************************************************************

41;

42;Вычисление W1=10xn

43 001C A1 0000r M1: mov ax,xn;запись xn в AX

44 001F 99 cwd;расширение слова до двойного слова

45 0020 03 C0 add ax,ax;получим 2Xnмл и сохраним в AX

46 0022 13 D2 adc dx,dx;получим 2Xnст и сохраним в DX

47 0024 8B F8 mov di,ax;запомним 2Xnмл в DI

48 0026 8B F2 mov si,dx;запомним 2Xnст в SI

49 0028 03 C0 add ax,ax;вычисление 4Xnмл и запись в AX

50 002A 13 D2 adc dx,dx;вычисление 4Xnст и запись в DX

51 002C 03 C0 add ax,ax;вычисление 8Xnмл и запись в AX

52 002E 13 D2 adc dx,dx;вычисление 8Xnст и запись в DX

53 0030 03 C7 add ax,di;вычисление 10Xnмл и запись в AX

54 0032 13 D6 adc dx,si;вычисление 10Xnст и запись в DX

55 0034 8B D8 mov bx,ax;сохранение

56 0036 8B EA mov bp,dx;результатов в BP:BX

57;******************************************************************************

Turbo Assembler Version 4.1 13/05/11 19:04:49 Page 2

filter.ASM

58;

59;Вычисление W2=W1+7xn1

60 0038 A1 0002r mov ax,xn1;запись xn1 в аккумулятора

61 003B 99 cwd;расширение xn1 до двойного слова

62 003C 8B F8 mov di,ax;запомним Xn1мл в DI

63 003E 8B F2 mov si,dx;запомним Xn1ст в SI

64 0040 03 C0 add ax,ax;вычисление 2Xn1мл и сохраним в AX

65 0042 13 D2 adc dx,dx;вычисление 2Xn1ст и сохраним в DX

66 0044 03 C0 add ax,ax;вычисление 4Xn1мл и запись в AX

67 0046 13 D2 adc dx,dx;вычисление 4Xn1ст и запись в DX

68 0048 03 C0 add ax,ax;вычисление 8Xn1мл и запись в AX

69 004A 13 D2 adc dx,dx;вычисление 8Xn1ст и запись в DX

70 004C 2B C7 sub ax,di;вычисление 7Xn1мл и запись в AX

71 004E 1B D6 sbb dx,si;вычисление 7Xn1ст и запись в DX

72 0050 03 D8 add bx,ax;вычисление младшей части 10xn+7xn1

73 0052 13 EA adc bp,dx;вычисление старшей части 10xn+7xn1

74;******************************************************************************

75;

76;Вычисление W3=W2+4xn2

77 0054 A1 0004r mov ax,xn2;запись xn2 в аккумулятора

78 0057 99 cwd;расширение xn2 до двойного слова

79 0058 03 C0 add ax,ax;вычисление 2Xn2мл и сохраним в AX

80 005A 13 D2 adc dx,dx;вычисление 2Xn2ст и сохраним в DX

81 005C 03 C0 add ax,ax;вычисление 4Xn2мл и запись в AX

82 005E 13 D2 adc dx,dx;вычисление 4Xn2ст и запись в DX

83 0060 03 D8 add bx,ax;вычисление младшей части 10xn+7xn1+4xn2

84 0062 13 EA adc bp,dx;вычисление старшей части 10xn+7xn1+4xn2

85;******************************************************************************

86;

87;Вычисление W4=W3+1xn3

88 0064 A1 0006r mov ax,xn3;запись xn3 в аккумулятора

89 0067 99 cwd;расширение xn3 до двойного слова

90 0068 03 D8 add bx,ax;вычисление младшей части 10xn+7xn1+4xn2+1xn3

91 006A 13 EA adc bp,dx;вычисление старшей части 10xn+7xn1+4xn2+1xn3

92;******************************************************************************

93;

94;Вычисление W5=W3-2xn4

95 006C A1 0008r mov ax,xn4;запись xn4 в аккумулятора

96 006F 99 cwd;расширение xn4 до двойного слова

97 0070 03 C0 add ax,ax;вычисление 2Xn4мл и сохраним в AX

98 0072 13 D2 adc dx,dx;вычисление 2Xn4ст и сохраним в DX

99 0074 2B D8 sub bx,ax;вычисление младшей части 10xn+7xn1+4xn2+1xn3-2xn4

100 0076 1B EA sbb bp,dx;вычисление старшей части 10xn+7xn1+4xn2+1xn3-2xn4

101;******************************************************************************

102;

103;Вычисление W6=W5-5xn5

104 0078 A1 000Ar mov ax,xn5;запись xn5 в аккумулятора

105 007B 99 cwd;расширение xn5 до двойного слова

106 007C 8B F8 mov di,ax;запомним Xn5мл в DI

107 007E 8B F2 mov si,dx;запомним Xn5ст в SI

108 0080 03 C0 add ax,ax;вычисление 2Xn5мл и сохраним в AX

109 0082 13 D2 adc dx,dx;вычисление 2Xn5ст и сохраним в DX

110 0084 03 C0 add ax,ax;вычисление 4Xn5мл и запись в AX

111 0086 13 D2 adc dx,dx;вычисление 4Xn5ст и запись в DX

112 0088 03 C7 add ax,di;вычисление 5Xn5мл и запись в AX

113 008A 13 D6 adc dx,si;вычисление 5Xn5ст и запись в DX

114 008C 2B D8 sub bx,ax;вычисление младшей части 10xn+7xn1+4xn2+1xn3-2xn4-5xn5

Turbo Assembler Version 4.1 13/05/11 19:04:49 Page 3

filter.ASM

115 008E 1B EA sbb bp,dx;вычисление старшей части 10xn+7xn1+4xn2+1xn3-2xn4-5xn5

116;******************************************************************************

117;

118 0090 8B C3 mov ax,bx;передача делимого W6

119 0092 8B D5 mov dx,bp;в DX:AX

120 0094 3D 7FF1 cmp ax,r1m;сравнение ax с r1m

121 0097 83 DA 07 sbb dx,r1c;сравнение dx с r1c

122 009A 79 17 jns m2;переход на метку m2 если W5>15(+ymax)

123 009C 8B D5 mov dx,bp;восстановить DX

124 009E 3D 8000 cmp ax,r2m;сравнить ax c r2m

125 00A1 83 DA F8 sbb dx,r2c;сравнить dx с r2c

126 00A4 78 16 js m3;переход на метку m3 если W5<15(-ymax)

127;******************************************************************************

128;

129;Деление DX:AX на k=15

130 00A6 8B D5 mov dx,bp;восстановить dx

131 00A8 BE 000F mov si,k;запись делителя k в si

132 00AB F7 FE idiv si;ax <- dx:ax/si

133 00AD A3 000Cr mov yn,ax;запись результата деления в yn

134 00B0 EB 13 90 jmp m4;перход на метку m4

135 00B3 C7 06 000Cr 7FFF m2: mov yn,7FFFh;запись в yn константы 7FFFh

136 00B9 EB 0A 90 jmp m4;перход на метку m4

137 00BC C7 06 000Cr 8000 m3: mov yn,8000h;запись в yn константы 8000h

138 00C2 EB 01 90 jmp m4;перход на метку m4

139;******************************************************************************

140;

141;Формирование очереди

142 00C5 m4:

143 00C5 A1 0008r mov ax,xn4;передать xn4

144 00C8 A3 000Ar mov xn5,ax;на место xn5

145 00CB A1 0006r mov ax,xn3;передать xn3

146 00CE A3 0008r mov xn4,ax;на место xn4

147 00D1 A1 0004r mov ax,xn2;передать xn2

148 00D4 A3 0006r mov xn3,ax;на место xn3

149 00D7 A1 0002r mov ax,xn1;передать xn1

150 00DA A3 0004r mov xn2,ax;на место xn2

151 00DD A1 0000r mov ax,xn;передать xn

152 00E0 A3 0002r mov xn1,ax;на место xn1

153 00E3 E9 FF36 jmp M1;переход на метку M1

154;******************************************************************************

155;

156;Окончание программы

157 00E6 B4 4C mov AH,4CH;функция DOS

158 00E8 CD 21 int 21H;выход из программы

159 00EA filtr ENDP;конец процедуры filtr

160 END filtr;конец программы

Turbo Assembler Version 4.1 13/05/11 19:04:49 Page 4

Symbol Table

Symbol Name Type Value

??DATE Text "13/05/11"

??FILENAME Text "filter "

??TIME Text "19:04:49"

??VERSION Number 040A

@32BIT Text 0

@CODE Text _TEXT

@CODESIZE Text 0

@CPU Text 0101H

@CURSEG Text _TEXT

@DATA Text DGROUP

@DATASIZE Text 0

@FILENAME Text FILTER

@INTERFACE Text 000H

@MODEL Text 2

@STACK Text DGROUP

@WORDSIZE Text 2

FILTR Near _TEXT:0000

K Number 000F

M1 Near _TEXT:001C

M2 Near _TEXT:00B3

M3 Near _TEXT:00BC

M4 Near _TEXT:00C5

R1C Number 0007

R1M Number 7FF1

R2C Number FFF8

R2M Number 8000

XN Word DGROUP:0000

XN1 Word DGROUP:0002

XN2 Word DGROUP:0004

XN3 Word DGROUP:0006

XN4 Word DGROUP:0008

XN5 Word DGROUP:000A

YN Word DGROUP:000C

Groups & Segments Bit Size Align Combine Class

DGROUP Group

STACK 16 0040 Para Stack STACK

_DATA 16 000E Word Public DATA

_TEXT 16 00EA Word Public CODE


Заключение

В результате выполнения курсовой работы на основе МП 1810ВМ88, работающего в максимальном режиме, произведена разработка микропроцессорной системы, выполняющей функцию цифровой фильтрации.

Построен алгоритм выполнения ЦФ и реализован на языке Assembler. Характеристики ЦФ исследованы в режиме отладки. Рассчитано время выполнения программы в числе тактов. Приведена функциональная схема МПС.

Разработанная МПС удовлетворяет требованиям задания, в частности, условию минимализации длины программы и времени вычисления.

 

 




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: