База знаний студента. Реферат, курсовая, контрольная, диплом на заказ

курсовые,контрольные,дипломы,рефераты

Построение ОВС для решения формулы — Информатика, программирование

Содержание

1. Выбор варианта

1.1 Вычисление числа К

1.2 Выбор параметров варианта

2. Структура вычислительного процесса алгоритмы вычислений

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

2.2 Последовательность обработки операндов

2.2.1 Обработка числа А

2.2.2 Обработка числа В

2.2.3 Обработка числа С

3. Схемы ОВС

3.1 Обозначения на схемах

3.1 Схема участка ОВС для вычисления числа А

3.2 Схема участка ОВС для вычисления числа В

3.3 Схема участка ОВС для вычисления числа С

4. Временные диаграммы

4. Временные диаграммы

4.1 Таблицы временных диаграмм

5. Программирование ОВС

5.1 Коды команд ОЭ

5.2 Схема цепей программирования

Заключение


1. Выбор варианта

1.1 Вычисление числа К

Для предупреждения повторов, определение варианта проводится по формуле, которая учитывает количество групп на потоке и количество человек в группе. Формула выглядит следующим образом:

К= (n-1) ×30+m (1.1.1)

где n - номер группы студента, а m - номер студента в группе.

К= (2-1) ×30+12=30+12=42.

1.2 Выбор параметров варианта

Для решения задачи необходимы начальные условия, а именно:

формула вычисления С;

системы счисления для операндов А и В;

код, в котором происходят вычисления;

направления входа и выхода чисел;

максимальное количество тактов программирования.

Формула вычисления определяется параметром X. Параметр Х равен остатку от деления числа К на 11, т.е.

Х=К mod 11 (1.2.1)

Для К=42, Х=9. Так как Х=9, то согласно табл.1 число С вычисляется по формуле C=7|A-B|/4.


Y=K mod 3 (1.2.2) Z=K mod 7 (1.2.3)

Системы счисления для операндов А и В зависят от параметров Y и Z, вычисляемые по формулам (1.2.2) и (1.2.3) соответственно. Следовательно, по таблицам 2 и 3 можно определить Y и Z. Для выше упомянутого варианта Y=0 и Z=0, т.е. операнд А поступает на вход устройства кодированый в двоично-пятиричной системе счисления, а операнд В - в двоично-девятиричной.

Таблица 1.                     Таблица 2.                              Таблица 3.

Х Формула вычисления С  Y Система счисления  Z Система счисления
0  3|A/2-B/4| 0  2-5  0  2-9
1  |3A/4-B| 1  2-6  1  2-10
2  |A-5B/4| 2  2-7  2  2-11
3  |3A-B|/4  3  2-12
4  |3A-4B|  4  2-13
5  |5A-3B|/2  5  2-14
6  5|A-2B|/4  6  2-15
7  |5A/2-2B|
8  |7A/4-2B|
9  7|A-B|/4
10  |6A-5B|

В связи с тем, что в формуле используется вычитание необходимо проводить вычисления в обратном или в дополнительном кодах. Так как К - чётное число, вычитание проводится в дополнительно коде [1].

При помощи параметра V, определяются направления входов операндов и выхода результата.

Для этого используется формула (1.2.4), причём число V представляется в двоичном коде.

V=K mod 64 (1.2.4)

Для сорок второго варианта V=42=1010102, причём следует учесть, что направления движения чисел читаются с право налево, т.е. V=10 10 102, и 00-это юг, 01-запад, 10-север, 11-восток. С В А

Устройство должно выполнить вычисление за минимальное время, т.е. за минимальное количество тактов. Частично этого можно достичь, сократив время программирования ОЭ.

Т£ (X+Y+Z+6) ×16 (1.2.5)

При К=42, накладывается следующее ограничение тактов программирования:

T£ (9+0+0+6) ×16=15×16= 240.

Из предыдущих вычислений следует, что С вычисляется по формуле С=7|A-B|/4, число А двоично-пятиричное и поступает с севера, В - двоично-девятиричное и так же поступает с севера, вычитание производится в дополнительном коде, результат выдаётся на север и количество тактов программирования не превышает двухсот сорока.


2. Структура вычислительного процесса алгоритмы вычислений

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


В ОВС вычисления могут производиться ОЭ как последовательно, так и параллельно. В дальнейшем будут использоваться оба способа. Поэтому для наглядности происходящих процессов ниже на рис.1 приведена структура вычислительного процесса.

Рис.1.

2.2 Последовательность обработки операндов

2.2.1 Обработка числа А

Обработка числа заключается в том, что необходимо число перевести из двоично-кодированного вида в двоичный, а так же преобразовать его в дополнительный код, В таком виде оно пригодно для дальнейшего использования.

В начальных условиях указано, что операнд А можно считать положительным числом, а это означает, что прямой код числа совпадает с дополнительным.

Таким образом, обработка числа А состоит в выделении старшей тетрады, выделении младшей тетрады, умножении H на пять и сложении с L. Подробно эти действия представляет алгоритм на рис.2.

Число А2-5 поступает с севера. Выделение старшей тетрады производится путём логического умножения А2-5 на константу вида 111100002 или F016. Это наглядно иллюстрирует пример:

Рис.2

Младшая тетрада выделяется аналогичным способом:


Двоичное число находится по формуле (2.2.1 1)

 

A2=Hn×S+L (2.2.1 1)


где S-система счисления двоично-кодированного числа, L-его младшая тетрада, а Hn-нормализированная старшая тетрада двоично-кодированного числа:

а8 а7 а6 а5 0 0 0 0=H

0 0 0 0 а8 а7 а6 а5=Hn

Для сорок второго варианта формула (2.2.1 1) выглядит следующим образом: А2=5×Hn+L

Процедура умножения старшей тетрады на пять может быть представленной в виде: 5Hn=Hn+4Hn

2.2.2 Обработка числа В

Операнд В обрабатывается аналогично операнду А, за исключением некоторых особенностей.


Рис.3


Число В поступает кодированное в двоично-девятиричной системе счисления, поэтому старшая тетрада умножается на девять, причём, поступающее число В отрицательно и его прямой код не совпадает с дополнительным. Следовательно, операнд В необходимо перевести в дополнительный код. Это осуществляется путём вычитания единицы с последующим инвертированием. Вычесть единицу можно путем сложения числа с константой вида 1 1 1 1 1 1 1 12 [1].

Всё выше перечисленное показано на рис.3.

2.2.3 Обработка числа С

Для получения числа С необходимо модуль разности чисел А2 и В2 умножить на семь и разделить на четыре. Сумма чисел Адп и Вдп даст результат так же в дополнительном коде. Получить прямой код результата, который будет равен разности чисел А2 и В2, можно при помощи арифметического сложения Сдп с его же знаковыми разрядами:



Вычисление прямого кода из обратного производится путём сложения по модулю два числа Соб так же с его знаковыми разрядами:



Умножение на семь осуществляется следующим способом: 7C= 4C+2C+C. А деление на четыре путём логического умножения на константу 1 1 1 1 1 1 0 02 и задержкой на два такта.

Рисунок 4 представляет схему алгоритма вычисления числа С.

Схема алгоритма вычисления числа С


Рис.4.


3. Схемы ОВС

3.1 Обозначения на схемах

Для удобства применения и простоты восприятия, операции условно обозначаются значками:

&-логическое умножение;

&Ø-логическое умножение с инверсией;

½-логическое сложение;

Å-сумма по модулю два;

+-арифметическое сложение;

T-условное запоминание;

GC-генерация константы;

DD-задержка на девять тактов.

Кроме этого, пунктирной линией показаны транзиты, стрелками-направления движения чисел. Так же указываются такты задержки и такты выходов первых бит чисел.

Номера ОЭ состоят из двух цифр: первая-номер микросхемы, вторая-номер ОЭ в микросхеме.

3.2 Схема участка ОВС для вычисления числа А

На схеме ОВС непосредственно указывается, как будут работать ОЭ.

На рис.5 представлена схема ОВС для вычисления двоичного числа А.

Число А2-5 поступает на двенадцатый элемент, он выполняет операцию логического умножения константы F016 и А2-5, а так же транзит числа на запад с задержкой на два такта.

Тринадцатый элемент складывает число само с собой и задерживает его на два такта, таким способом достигается задержка числа на три такта.



Рис.5


L

 
Элементы четырнадцать и пятнадцать позволяют умножить старшую тетраду на пять, при этом используется свойство двоичных чисел при умножении на константу вида 2:

Взяв число на два такта раньше, получается число умноженное на четыре. Аналогично происходит умножение на два, восемь, шестнадцать и т.д. .

На шестнадцатом элементе происходит выделение младшей тетрады. Девятнадцатый ОЭ производит сложение старшей и младшей тетрад и выдаёт двоичный результат на запад. Одиннадцатый и тридцать четвёртый ОЭ генерируют константы.


3.3 Схема участка ОВС для вычисления числа В

Участок ОВС для обработки числа В работает аналогично участку, обрабатывающему число А, за исключением трёх ОЭ, позволяющих переводить двоичное число в дополнительный код.


Рис.6.


На Рис.6 перевод числа в дополнительный код осуществляется на трёх ОЭ. Тридцать первый ОЭ генерирует константу FF16, а тридцать второй складывает её с двоичным чсислом. Тридцать пятый ОЭ выполняет операцию логического умножения, причём, число умножается само на себя, чем достигается сохранение его начального значения, затем инвертирует его. Таким образом совершается перевод числа в дополнительный код в ОВС.

3.4 Схема участка ОВС для вычисления числа С


Рис.7

Тридцать восьмой ОЭ складывает поступающие числа А и В. Тридцать девятый ОЭ производит задержку числа на девять тактов и подаёт на юг тридцать шестого ОЭ. В тот такт, когда на тридцать шестой ОЭ поступает число Сдп с юга, с запада появляются знаковые разряды числа Сдп. Таким образом выполняется арифметическое сложение числа с его знаковыми разрядами. Такая операция может быть совершена благодаря свойству ОВС что, после чиса (после седьмого бита) следуют знаковые разряды этого числа, т.е. восьмой, девятый, десятый и т.д. биты знаковые разряды.

Аналогичным способом происходит сложение по модулю два числа Соб с его знаковыми разрядами на сорок четвёртом и сорок седьмом ОЭ. На сорок первом, сорок втором, сорок пятом и сорок восьмом ОЭ выполняется умножение числа Спр на семь. А сорок шестой и сорок девятый позволяют делить число на четыре.


Рис.8



4. Временные диаграммы

4.1 Таблицы временных диаграмм

Временные диаграммы приводятся для входов ОВС и для всех использующихся выходов ОЭ. В столбцах указываются такты, в строках-номера ОЭ и имена выходов ОЭ, а так же код направления выхода.

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


Таблица 4.

Временная диаграмма для участка ОВС обрабатывающего число А

 Номер ОЭ  Направление  Номер вых (вх) Такты
 1  2  3  4  5  6  7  8  9 10 11  12  13  14  15  16 17 18 19 20  21  22  23  24  25  26  27
11 11  1 1 1 0 0 0 0 1 1 1  1 1 0 0 0 0 1 1 1  1  
 12  (10)  (2)   а1  а2  а3  а4  а5  а6  а7  а8
 12  00  3  0  0  0  0  а5  а6  а7  а8  0  0  0  0
 12  11  8 а1  а2  а3  а4  а5  а6  а7  а8
 13  00  9 а1  а2  а3  а4  а5  а6  а7  а8
 34  01  11 1 1 1 0 0 0 0 1 1 1  1 1 0 0 0 0 1 1 1  1 1 0 0 0 0
 15  01  4  0  а5  а6  а7  а8  0  0  0
 14  11  5  0  0  а5  а6  а7  а8  0  0
 15  00  6  а5  а6  Х  Х  Х  Х  Х  Х
 18  01  7  а5  а6  Х  Х  Х  Х  Х  Х
 16  00  10 а1  а2  а3  а4 1 0 0 0 0
 19  01  12  А1  А2  А3  А4  А5  А6  А7  А8
 37  01  13  А1  А2  А3  А4  А5  А6  А7  А8

Таблица 5.

Временная диаграмма для участка ОВС обрабатывающего число В

 Номер ОЭ  Направление  Номер вых (вх) Такты
 1  2  3  4  5  6  7  8  9 10 11  12  13  14  15  16 17 18 19 20  21  22  23  24  25  26  27
21 11 15 1 1 0 0 0 0 1 1 1  1 1 0 0 0 0 1 1 1  1  
 22  (10)  (14)   в1  в2  в3  в4  в5  в6  в7  в8
 22  00  16  0  0  0  0  в5  в6  в7  в8  0  0  0  0
 22  11  17 в1  в2  в3  в4  в5  в6  в7  в8
 25  01  19  0  0  в5  в6  в7  в8  0  0
 24  11  20  0  0  0  в5  в6  в7  в8  0
 25  00  21  в5  в6  в7  Х  Х  Х  Х  Х
 27  11  22 0 0 1 1 1  1 1 0 0 0 0 1 1 1  1 1 0 0 0 0
 28  11  23 1 1 1  1 1 0 0 0 0
 29  10  24 1 1 1  1 1 0 0 0 0
 23  00  18 в1  в2  в3  в4  в5  в6  в7  в8
 26  00  25 в1  в2  в3  в4 1 0 0 0 0
 29  01  26 в1  в2  в3  в4 1 0 0 0 0
 28  00  27 В1  В2  В3  В4  В5  В6  В7  В8
 31  01  28 1 1 1  1 1 1 1  1 1 1 1  1 1 1 1  1 1 1 1  1 1 1 1  1
 32  00  29

 

в1

 в2

 в3

 в4

 в5

 в6

 в7

 в8

 35  00  30

 

 

в1  в2  в3  в4  в5  в6  в7  в8

Временные диаграммы позволяют удобно приводить константу к первому такту, а так же эффективно контролировать работу всей ОВС и каждого ОЭ в отдельности.

В табл.4. обычным шрифтом указаны разряды двоичнокодированного числа. Прописные буквы символизируют готовый двоичный результат.

В табл.5. обозначения идентичны, только разряды выделенные курсивом представляют результат, полученный при сложении двоичного числа с константой FF16. В обоих таблицах кресты обозначают неизвестные, но имеющие значение, разряды чисел.

Таблица 6.

Временная диаграмма для участка ОВС обрабатывающего число С

 Номер ОЭ  Направление  Номер вых (вх) Такты
 20 21 22  23  24  25  26 27 28 29 30  31  32  33  34  35 36 37 38 39  40  41  42  43  44  45  46
38 10 31 с1  с2  с3  с4  с5  с6  с7  Зн  
 35  11  32   с1  с2  с3  с4  с5  с6  с7  Зн Зн  Зн Зн  Зн Зн  Зн Зн  Зн Зн  Зн Зн  Зн Зн  Зн Зн Зн  Зн Зн
 36  00  33 с1  с2  с3  с4  с5  с6  с7  Зн
 39  10  34 с1  с2  с3  с4  с5  с6  с7  Зн
 36  11  35

с1

 с2

 с3

 с4

 с5

 с6

 с7

 Зн

Зн

 Зн

Зн

 Зн

Зн

 Зн

 Зн

 44  00  36  

 с1

 с2

 с3

 с4

 с5

 с6

 с7

 Зн

 47  10  37

 с1

 с2

 с3

 с4

 с5

 Номер ОЭ  Направление  Номер вых (вх) Такты
 42 43 44  45  46  47  48 49 50 51 52  53  54  55  56  57
47 10 37

 с1

 с2

 с3

 с4

 с5

 с6

 с7

 Зн

 44  11  38  

 с1

 с2

 с3

 с4

 с5

 с6

 с7

 Зн

 45  00  39

 

 с1

 с2

 с3

 с4

 с5

 с6

 с7

 Зн

 48  10  40

 0

 с1

 с2

 с3

 с4

 с5

 с6

 с7

 

 42  10  43

 0

 с1

 с2

 с3

 с4

 с5

 с6

 с7

 

 

 

 

 41  11  44

 0

 0

 с1

 с2

 с3

 с4

 с5

 с6

 

 

 

 42  00  42

 с1

 с2

 Х

 Х

 Х

 Х

 Х

 Х

 45  11  45

 с1

 Х  Х  Х  Х  Х  Х  Х
 49  10  46 1 1  0  0 1 1 1  1 1 1  0  0
 46  10  47  с1  с2  с3  с4  с5  с6  с7 c8
 43  10  48  с1  с2  с3  с4  с5  с6  с7 c8

В табл.6. обычный шрифт обозначает число в дополнительном коде. Знаки Зн обозначают знаковые разряды числа С в дополнительном коде. Аналогично для курсива, который символизирует обратный код. Жирный шрифт определяет число в прямом коде. Подчёркнутый шрифт представляет конечный результат работы ОВС.

Таблица 7.

Приведение константы FC16

 Номер ОЭ  Направление Такты
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
 49  10  1 1 1  0  0 1 1 1  1 1 1  0  0 1 1 1  1 1 1  0  0 1 1 1  1 1 1  0  0 1
 49 10 1 1  1 1 1  0  0 1 1 1  1 1 1  0  0 1 1 1  1 1 1  0  0

5. Программирование ОВС

5.1 Коды команд ОЭ

Для того, чтобы ОЭ могли выполнять нужные операции, необходимо их запрограммировать. В коды команд ОЭ включаются: код операции, производимой ОЭ, код задержки выдачи результата, три кода направлений входов операндов и три кода выходов ОЭ.

Код операции-трёх разрядное двоичное число, определяемое следующими операциями:

0002-логическое умножение;

0012-логическое умножение с инверсией;

0102-логическое сложение;

0112-сумма по модулю два;

1002-арифметическое сложение;

1012-условное запоминание;

1102-генерация константы или задержка на девять тактов.

Код задержки вычисляется так:

Если ОЭ после операции задерживает число на один такт, то Y=0. Если на два. То Y=1. Кроме этого Y влияет и на операцию. Если Y=0, то операция 1102 выполняет генерацию константы, а если Y=1, то выполняется операция задержки на девять тактов.

Коды входов А1 и А2 управляют направлением входов операндов:

002-юг;

012-запад;

102-север;

112-восток.

Код А3 управляет направлением входа транзита.

Код А4 управляет направлением выхода результата, а А5 и А6 выходами транзитов с задержкой в два и один такт соответственно.

Таблица 8.

 Номер ОЭ

16-чный

код

К О П Y А 1 А 2 А 3 А 4 А 5 А 6
11 С3С3 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1
12 098D 0 0 0 0 1 0 0 1 1 0 0 0 1 1 0 1
13 958F 1 0 0 1 0 1 0 1 1 0 0 0 1 1 1 1
14 E5EB 1 1 1 0 0 1 0 1 1 1 1 0 1 0 1 1
15 8989 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1
16 1BCF 0 0 0 1 1 0 1 1 1 1 0 0 1 1 1 1
17 E000 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
18 E083 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1
19 8930 1 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0
21 C3C3 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1
22 098D 0 0 0 0 1 0 0 1 1 0 0 0 1 1 0 1
23 EA63 1 1 1 0 1 0 1 0 0 1 1 0 0 0 1 1
24 E5EF 1 1 1 0 0 1 0 1 1 1 1 0 1 0 1 1
25 8986 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0
26 08CF 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1
27 C03F 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1
28 8B47 1 0 0 0 1 0 1 1 0 1 0 0 0 1 1 1
29 95AD 1 0 0 1 0 1 0 1 1 0 1 0 1 1 0 1
31 C3FF 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1
32 894F 1 0 0 0 1 0 0 1 0 1 0 0 1 1 1 1
33 FFFF 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
34 61E1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1
35 2907 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 1
36 8478 1 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0
37 E043 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1
38 8920 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0
39 D802 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0
41 EAEB 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1
42 8409 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1
43 EF3E 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 0
44  6478 0 1 1 0 0 1 0 0 0 1 1 1 1 0 0 0
45 8872 1 0 0 0 1 0 0 0 0 1 1 1 0 0 1 0
46 04EF 0 0 0 0 0 1 0 0 1 1 1 0 1 1 1 1
47 D802 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0
48 E082 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0
49 C3CE 1 1 0 0 0 0 1 1 1 1 0 0 1 1 1 0

5.2 Схема цепей программирования

Программа ОВС

На время программирования наложено ограничение в двести сорок тактов. Код программы одного ОЭ занимает шестнадцать тактов, т.е. одна цепь программирования может программировать 240/16=15 ОЭ. Для того, чтобы соблюсти это условие необходимо разбить ОВС на несколько цепей программирования. Распределение цепей программирования по ОВС показано на рис.9.

Первая цепь программирует ОЭ второй микросхемы в такой последовательности: 21-22-23-24-25-26-27-28-29.

Вторая программирует части первой, третьей и четвёртой микросхем: 11-12-13-31-32-33-41-42-43-14-15-16-34-35-36.

Третья оставшиеся ОЭ: 17-18-19-37-38-39-47-48-49-44-45-46.

Программу ОВС представляют таблицы 9-11.



Рис.9

Таблица 9.                     Таблица 10.                  Таблица 11.

Номер ОЭ Код команды Номер ОЭ Код команды Номер ОЭ Код команды
21 C3C3 11 С3С3 17 E000
22 098D 12 098D 18 E083
23 EA63 13 958F 19 8930
24 E5EF 31 C3FF 37 E043
25 8986 32 894F 38 8920
26 08CF 33 FFFF 39 D802
27 C03F 41 EAEB 47 D802
28 8B47 42 8409 48 E082
29 95AD 43 EF3E 49 C3CE
14 E5EB 44  6478
15 8989 45 8872
16 1BCF 46 04EF
34 61E1
35 2907
36 8478

Заключение

Построена ОВС для решения формулы С=7|A-B|/4 на четырёх микросхемах. Поставленная задача выполняется за двести девяносто семь тактов, из которых двесте сорок тактов программирования. Приведены схемы цепей программирования и коды команд для практического использования. Так же представлены временные диаграммы для контроля ОЭ.

Содержание 1. Выбор варианта 1.1 Вычисление числа К 1.2 Выбор параметров варианта 2. Структура вычислительного процесса алгоритмы вычислений 2.1 Структура вычислительного процесса 2.2 Последовательность обработки операндов 2.

 

 

 

Внимание! Представленная Курсовая работа находится в открытом доступе в сети Интернет, и уже неоднократно сдавалась, возможно, даже в твоем учебном заведении.
Советуем не рисковать. Узнай, сколько стоит абсолютно уникальная Курсовая работа по твоей теме:

Новости образования и науки

Заказать уникальную работу

Похожие работы:

Построение параметрической модели детали в среде программирования
Построение программы ведения электронной документации кадрового отдела
Построение реалистичного изображения методом обратной трассировки лучей
Построение чертежа детали с использованием системы автоматизированного проектирования общего назначения Автокад
Построитель вопросительных предложений
Почта
Представление текстовой и графической информации в электронном виде
Преобразование звуковой информации
Преобразователь кода (ПК)
Приближенное вычисление значений определенного интеграла

Свои сданные студенческие работы

присылайте нам на e-mail

Client@Stud-Baza.ru