Разработка среды для имитационного моделирования операционного устройства

 

Оглавление


1. Исходные данные и общие требования к курсовой работе

.1 Исходные данные

1.2 Язык программирования и графический режим

1.3 Отчетные материалы к курсовому проекту

2. Авторская оценка соответствия качества проекта предъявляемым требованиям

3. Математическая постановка задачи

3.1 Основные признаки микропрограммы

.2 Описание структурной схемы ОУ

4. Описание процесса проектирования

4.1 Кодирование МО и ЛУ

4.2 Разметка состояний автомата

4.3 Проверка полноты переходов и построение обратной структурной таблицы автомата

4.4 Проектирование функций выходов и управление элементами памяти

5. Описание программной реализации

5.1 Требования к оборудованию и ОС

5.2 Использованная среда разработки и язык программирования

6. Описание пользовательского интерфейса и инструкция по инсталляции и запуску программы

Приложение 1. Листинг программы


1. Исходные данные и общие требования к курсовой работе


.1 Исходные данные

таблица интерфейс инсталляция программа

Исходными данными к курсовой работе являются:

микропрограмма выполнения арифметической операции в виде ГСА (см. Рис. 1);

требования к реализуемым уровням и режимам моделирования объекта;

требования к обязательным возможностям интерфейсных средств среды моделирования;

требования к оформлению пояснительной записки и особенностям программной реализации.

Операционное устройство считается состоящим из управляющего автомата (УА) и операционного автомата (ОА).

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

Форматы разрядных сеток для представления данных определены в каждой ГСА. Для представления этих данных в модели студент должен выбрать наиболее подходящие типы данных используемого языка программирования.

В интерактивной среде моделирования реализуются два уровня моделирования ОУ:

моделирование на уровне микропрограммы;

моделирование на уровне взаимодействия УА и ОА;

Моделирование ОУ на уровне микропрограммы.

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

В результате такого моделирования ОУ можно проверить правильность микропрограммы выполнения арифметической операции.

Моделирование ОУ на уровне взаимодействия УА и ОА.

Модель УА строится на основании результатов проектирования УА как автомата Мили на жесткой логике.

Модель УА формирует вектор Y управляющих сигналов, детализирующий команды для ОА до уровня микроопераций. Модель ОА в результате анализа состояния вектора Y вызывает процедуры выполнения указанных вектором микроопераций и затем вычисляет вектор X значений выходных сигналов, поступающих на вход УА.

В модели этого режима запрещается закладывать в программу какую-либо последовательность вызовов процедур моделирования микроопераций. Каждая такая процедура может быть вызвана только как следствие обнаружения конкретного (например, единичного) состояния определенной компоненты вектора Y.

Модель УА должна выделять такие его компоненты, как:

память состояний (ПС) УА на D триггерах;

дешифратор кодов (ДК) состояний УА (это необязательный структурный компонент УА);

комбинационные схемы (КС), формирующие вектор выходных сигналов Y, и вектор D сигналов управления состояниями разрядов ПС УА,

память на D триггерах для запоминания некоторых компонент вектора логических условий.

Модели КС строятся на функциональном уровне, т.е. как последовательность булевых выражений, вычисляющих компоненты векторов Y и D.

В интерактивной среде на каждом из уровней моделирования реализуются два режима моделирования ОУ:

пошаговый режим выполнения микропрограммы;

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

В первом из режимов предполагается наличие на форме кнопки с надписью типа «Такт». Каждое нажатие такой кнопки должно вызывать продвижение по микропрограмме на 1 такт. Причем, этот такт должен соответствовать понятию такта работы ОУ при проектировании УА на основе модели цифрового управляющего автомата типа Мили.

В автоматическом режиме предполагается наличие на форме кнопки с надписью типа «Выполнить МП». При нажатии на эту кнопку микропрограмма выполняется с начала до конца без вмешательства со стороны пользователя, то есть автоматически.

Интерфейсные средства среды моделирования должны позволять:

наблюдать на экране ГСА, размеченную состояниями автомата модели Мили;

выбирать любой из описанных выше уровней и режимов моделирования:

задавать начальные значения операндов операции;

просматривать процесс выполнения микропрограммы по шагам (по тактам) с отображением на форме всех используемых в микропрограмме кодов;

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

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

при моделировании на уровне взаимодействия УА и ОА отображать на форме состояния векторов, задающих все входные, выходные и внутренние векторы УА в предположении, что УА спроектирован как автомат модели Мили на жесткой логике с элементами памяти на D триггерах, а так же отображать на ГСА графическую метку, задающую текущее состояние УА.

Рис. 1. ГСА

1.2 Язык программирования и графический режим


Программная часть курсового проекта выполняется с использованием среды C# или среды какого-либо иного языка программирования высокого уровня, предназначенной для создания Windows приложений. Использованный графический режим должен быть не хуже, чем TrueColor с пространственным разрешением 1024*768 пикселей.


.3 Отчетные материалы к курсовому проекту


В качестве результата выполнения курсового проекта представляются:

какой либо носитель информации;

пояснительная записка.

Носитель информации должен содержать:

исходные тексты всех разработанных программных единиц;

комплект файлов, достаточный для запуска программы из соответствующей операционной системы (ОС) и среды разработки;

«бумажную» и электронную версии пояснительной записки, выполненную в текстовом процессоре Word версии 2000 или выше с соблюдением требований ГОСТов на оформление технических текстов;

файл readme с информацией об авторе, языке программирования и об ОС.

Пояснительная записка должна:

отображать процесс проектирования программного продукта;

содержать описание программной реализации;

содержать инструкции пользователю с описанием интерфейсных средств.


2. Авторская оценка соответствия качества проекта предъявляемым требованиям


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

Программирование осуществлялось в среде, соответствующей общим требованиям к курсовому проекту с использованием принципов объектно-ориентированного программирования. Модель на проведенных тестах вела себя адекватно реальному автомату.


3. Математическая постановка задачи


.1 Основные признаки микропрограммы


Математическая постановка задачи заключалась в создании программной реализации модели УА на основе автомата Мили на жесткой логике на D-триггерах.

Микропрограмма данной курсовой работы осуществляет операцию деления без восстановления остатка.

А(15:0) - делимое, представленное в прямом коде;

Разрядная сетка: 16 бит;

В(16:0) - делитель, представленный в прямом коде;

Разрядная сетка: 17 бит;

С(16:0) - частное, представленное в прямом коде;

Разрядная сетка: 17 бит;

СЧ(3:0) - счетчик циклов;

Разрядная сетка: 4 бита;

ПП - признак переполнения.

Описание особенностей алгоритма, заданного в виде ГСА:

. В МП предусмотрен исход «Переполнение разрядной сетки». Переполнение фиксируется, если делитель принимает значение, равное нулю. Также переполнение фиксируется, если ïAï³ïBï. Это означает, что частное должно быть по модулю строго меньше 1. Операнды A и B так же должны быть по модулю строго меньше 1.

. В МП предусмотрен ускоренный вариант получения частного в случае, когда делимое равно 0.

. В МП операнды предполагаются представленными в прямом коде.

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

. В МП реализован алгоритм деления без восстановления остатка.


.2 Описание структурной схемы ОУ


Рис. 2. Структурная схема ОУ


Операционное устройство состоит из операционного автомата (ОА) и управляющего автомата (УА). Структура ОА при этом не рассматривается.

На структурной схеме (см. рис. 2) представлены следующие компоненты УА:

память состояний (ПС) УА на D триггерах, которая предназначена для хранения состояний. Входными данными для ПС являются выходные данные КС D.

- дешифратор кодов (ДШ) состояний УА;

комбинационные схемы (КС), формирующие вектор выходных сигналов Y, и вектор D сигналов управления состояниями разрядов ПС УА;

память на D триггерах для запоминания некоторых компонент вектора логических условий.

Поскольку УА является автоматом Мили, необходимо было добавить память логических условий (ПЛУ) для условий, которые обозначены на ГСА метками X2, X3. Если бы это не было сделано, ОА выполнял бы МО из одной ветви алгоритма, а УА мог перейти в состояние по другой ветви. Выделять память для хранения каждого конкретного условия нужно только в том случае, если в МП за этим условием следует блок МО, который может изменить состояние данного условия.

Для X0, X1, X4, X5,X6 выделение памяти не требуется ввиду сказанного выше. Выделение памяти требуется для условий X2 и X3 т. к. на ГСА следом за блоками проверки условий X2 и X3 находятся блоки, изменяющие содержимое C. Если не запоминать значения X2, X3, может возникнуть ситуация, когда ОА выполнит изменение C, и изменится значение X2 и (или) X3, и в пределах этого же такта КС D будет работать с уже измененными X2 и X3. В результате УА перейдет в некорректное состояние.

Формирование управляющих сигналов выполняет комбинационная схема «КС Y». Формирование сигналов для перехода к следующему состоянию выполняет комбинационная схема «КС D».

КС Y и КС D в качестве входных данных, используют выходные сигналы ПС и сигналы, указывающие состояние логических условий: X0, X1, X'2, X'3, X4, X5 и X6. X'2 и X'3 - выходы ПЛУ. Они соответствуют значениям X2 и X3 на момент начала такта (до выполнения МО).


4. Описание процесса проектирования


.1 Кодирование МО и ЛУ


Таблица 1. Кодирование МО

№МОМК1Выполненоy02C:=A(14:0)y13А(14:0):=B(14:0)y24C:=C+11.A?(14:0)+1y35C:=C+A(14:0)y46ПП:=1y57C:=L1(C.0)y68СЧ:=0y79B(15:0):=0y810B(15:0):=L1(B(15:0).C?(16))y911СЧ:=СЧ-1y1012С:=B(15:0)y1113C(16:1):=C(16:1)+1y1214C(16):=1y13

Таблица 2. Кодирование ЛУ.

№ЛУКод ЛУ1Пускx02A(14:0)=0x13C=0 x24C(16)=1 x35СЧ=0x46B(0)x57A(15) + B(16)x6

Выполнив кодирование, разметим исходную ГСА (Рис. 1).


4.2 Разметка состояний автомата


Рис. 3. Разметка состояний автомата


4.3 Проверка полноты переходов и построение обратной структурной таблицы автомата


Таблица 3. Обратная структурная таблица автомата.

№amkamaskasXamasYamasFamasTamas1a00000a00000x?0-0a0x?0 2a11100x?1x2y0a1x?1x23a91001x?5x?6y0a9x?5x?64a101010x?6y0a10x?65a1100011y0a116a00000a11100x0y1,y2D3,D2a0x07a11100a20010x?1x?2y3D1a1x?1x?28a20010a30011x3y4D1,D0a2x39a30011a401011y6,y7,y8D2,D0a310a40101a501001y3D2a411a81000x?4y3a8x?412a50100a601101y9D2,D1a513a60110a70111x3y4D2,D1,D0a6x314a60110a81000x?3y6,y10D3a6x?315a701111y6,y10a716a81000a91001x4y11D3,D0a8x417a91001a101010x5y12D3,D1a9x518a11100a110001x1y5D0a1x119a20010x?3y5a2x?320a91001x?5x6y13a9x?5x621a101010x6y13a10x6

После этого производится кодирование состояний:

ka0 -0000;1 -1100;2 -0010;3 -0011;4 -0101;5 -0100;6 -0110;7 -0111;8 -1000;9 -1001;10 -1010;11 -0001;

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


4.4 Проектирование функций выходов и управление элементами памяти


y0= a1x?1x2 v a9x?5x?6 v a10x?6 v a111 = y2 = a0x0

y3 = a1x?1x?2 v a8x?4 v a44 = a2x3 v a6x3 = (a2 v a6) x35 = a1x1 v a2x?36= a3 v a6x?3 v a7

y7= y8= a39 = a5

y10 = a6x?3 v a7

y11= a8x4

y12= a9x5

y13= a9x?5x6 v a10x6

D0=a1x1 v a2x?3va9x?5x6v a10x6v a8x4v a6x3v a3 v a2x3= a1x1 v a2 v a3v a6x3v a8x4va9x?5x6v a10x6

D1=a1x?1x?2 v a2x3 v a5 v a9x5 v a6x3

D2= a0x0 v a3 v a5 v a4 v a8x?4 v a6x3

D3=a0x0v a6x?3 v a7 v a8x4 v a9x5

В режиме моделирования взаимодействия УА и ОА операционное устройство представляется в виде набора компонентов, взаимодействующих между собой по определенному алгоритму. Рассмотрим это взаимодействие на примере обработки одного синхроимпульса:

Срабатывают компоненты ПС и ПЛУ, которые являются синхронизируемыми, т.е. переключаются в следующее состояние только под воздействием синхроимпульса; в результате, на выходе ПС появляется код, сформированный на предыдущем такте компонентом КСD, а на выходе ПЛУ фиксируются компоненты вектора X (вектор флагов условий), соответствующие X2 и X3;

Срабатывают комбинационные схемы, а именно:

Дешифратор Decoder- формирует следующее состояние автомата;

КСY - на основании вектора X и состояния A формирует вектор Y, который определяет набор микроопераций, выполнение которых требуется на данном шаге выполнения;

Вектор Y обрабатывается ОА, который инициирует выполнение тех МО, для которых компонента вектора Y равна 1, после выполнения всех МО обновляется вектор X (точнее его компоненты X1-X6, X0 не вычисляется, т.к. он равен 1 на протяжении всего процесса моделирования);

КСD - на основании вектора X и состояния A формирует код D, который определяет следующее состояние автомата.

Примечание:

Для исключения влияния последовательности выполнения МО, перед срабатыванием ОА регистры AM и BM запоминаются в буферные регистр R с которым и производятся действия, затем их значения восстанавливаются в исходные регистры.

Вектор X используемый компонентами КСD и КСY отличается от вектора X на выходе ОА тем, что к нему добавляется компонента X0 и компоненты из ПЛУ (X2 и X3);

5 Описание программной реализации


.1 Требования к оборудованию и ОС


Для функционирования программы необходим IBM - совместимый ПК класса Pentium (с тактовой частотой от 1000 МГц) и выше, видеорежим - VGA (минимум 16 бит), оптимальное разрешение экрана 1024х768 точек (или больше), с установленной ОС Windows 2000 - 8.


.2 Использованная среда разработки и язык программирования


При написании программы использовалась интегрированная среда разработки приложений VisualStudio, язык реализации - C#.


.3 Описание структуры программы


Программа состоит из методов:

//Автоматическое выполнениеbtAuto_Click(object sender, EventArgs e)

//Выполнение по тактамbtStep_Click(object sender, EventArgs e)

//Очистка формыbtClear_Click(object sender, EventArgs e)

//Операционный автомат[] OA(byte[] Y)

//Дополнительный регистр для выполнения нескольких операций с одним операндом за один тактSetDopReg(UInt16 Per)

//Память на D-триггерах[] StateMemory(bool Sync, byte D0, byte D1, byte D2, byte D3)

//Память логических условий[] LogicMemoryCond(bool Sync, bool[] X)

//ДешифраторDecoder(byte[] DTr)

//Комбинационная схема векторов D[] KSD(byte Ai, bool[] Xx)

//Комбинационная схема векторов Y[] KSY(byte Ai, bool[] Xi)

//Реализация счетчикаCounter(refushort Count)

//Уровень операционного устройстваOAandYA()

//Уровень микропрограммыMicroprogram()

Подробное описание этих методов представлено в Приложении 1.


6. Описание пользовательского интерфейса и инструкция по инсталляции и запуску программы


Для запуска программы необходим только exe-файл (Project.exe).

Для ввода исходных данных служат две таблицы, отображающих разрядные сетки чисел А(делимое) и В(делитель). Знак вводится самым первым символом (0 - + или 1 - -). Справа от поля ввода показываются значения A, B в десятичном коде. Для изменения значения разряда необходимо щелкнуть по нему левой кнопкой мыши.

Для выполнения программы в пошаговом режиме необходимо выполнять программу по кнопке «Шаг». Для автоматического выполнения МП нужно нажать кнопку «Автоматическое выполнение».

Режим моделирования на уровне микропрограммы или на уровне операционного устройства зависит выбранной вкладки на панели.

На закладке "Микропрограмма" расположена ГСА. В режиме моделирования на уровне микропрограммы на ГСА галочкой показывается состояние на котором находится автомат.

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

Также в программе присутствует кнопка «Сброс», которая обнуляет значения всех регистров и позволяет запустить МП с другими входными данными.


Рисунок 1.Окно программы


Приложение 1


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

//Автоматическое выполнениеbtAuto_Click(object sender, EventArgs e)

{= true;= true;(!EndY)

{(rbOAandYA.Checked)

{();

}

{();

}

}_Ai = 0;(State_Ai);

}

//Выполнение по тактамbtStep_Click(object sender, EventArgs e)

{= true;= true;(!EndY)

{(rbOAandYA.Checked)

{();

}

{();

}

}

}

//Очистка формыbtClear_Click(object sender, EventArgs e)

{= 0;= false;= 0;= 0;= 0;[0] = 0;[1] = 0;[2] = 0;[3] = 0;

_X3 = false;

_X2 = false; = 0;= "";= "";_Ai = 0;.Text = "";.Text = "";.Text = "";= false;[0, 0].Value = 0;(RegC, 0, tbOutC);(lvVarA, 0);(lvVarB, 0);

}

//Операционный автомат[] OA(byte[] Y)

{(int i = 0; i < 14; i++)

{(Y[i] != 0)

{(i)

{0:_END();;1:();;2:();;3:();;4:();;5:();;6:();;7:();;8:();;9:();;10:();;11:();;12:();;13:();;

}[0] = X0();[1] = X1();[2] = X2();[3] = X3();[4] = X4();[5] = X5();[6] = X6();X;

}

#region Логические условияX0()

{(isStart);;

}X1()

{

//A(14:0)=0((A & 0x7FFF) == 0);

}X2()

{

//C=0 ((C & 0xF) == 0);

}X3()

{

//C(16)=1 ((C & (UInt32)(0x10000)) == (UInt32)(0x10000));

}X4()

{(Count == 0) returntrue;;

}X5()

{

//B(0)((B & 0x1) == 1);

}X6()

{

//A(15) xor B(16)(((A>>15)) != (B>>16));

}

#endregion

#region МикрооперацииY1()

{

//C:=A(14:0)(A);= (UInt32)((Registr & 0x7FFF));(RegC, C, tbOutC);

}Y2()

{

//А(14:0):=B(14:0)= (UInt16)((A & 0x8000) + (B & 0x7FFF));(lvVarA, A);

}Y3()

{

//C:=C+11. A?(14:0)+1= (UInt32)(C + (((UInt16)(~A) | 0x18000) + 1)); (RegC, C, tbOutC);

}Y4()

{

//C:=C+A(14:0)= (UInt32)(C + (A & 0x7FFF));(RegC, C, tbOutC);

}Y7()

{= 0;

}

Y6()

{

//C:=L1(C.0) = C << 1;(RegC, C, tbOutC);

}Y5()

{= true;= true;[0, 0].Value = 1;

}Y8()

{

//B(15:0):=0= B & 0x10000;(lvVarB, B);

}Y10()

{

//Cч = Сч-1(ref Count);(Count);

}Y11()

{

//С:=B(15:0)= (UInt32)(B & 0xFFFF);(RegC, C, tbOutC);

}Y9()

{

//B(15:0):=L1(B(15:0).C?(16))= (UInt32)((B & 0x10000) + ((B << 1) + ((~C >> 16) & 0x1) & 0xFFFF));(lvVarB, B);

}Y12()

{

//С(16:1) := С(16:1) + 1= C + 2;(RegC, C, tbOutC);

}Y13()

{

//C(16) = 1;= (UInt32)(C | 0x10000);(RegC, C, tbOutC);

}

Y0_END()

{= true;

}

#endregion

//Допол. регистр для выполнения нескольких операций с одним операндом за один тактSetDopReg(UInt16 Per)

{= Per;

}

//Память на D-триггерах[] StateMemory(bool Sync, byte D0, byte D1, byte D2, byte D3)

{(Sync)

{[0] = D0;[1] = D1;[2] = D2;[3] = D3;

}DTr;

}

//Память логических условий[] LogicMemoryCond(bool Sync, bool[] X)

{[] Xi = newbool[7];(Sync)

{[0] = true;

_X3 = X[3];

_X2 = X[2];

}Xi;

}

//ДешифраторDecoder(byte[] DTr)

{State_Ai = (byte)(DTr[0] + DTr[1] * 2 + DTr[2] * 4 + DTr[3] * 8);

}

//Комбинационная схема векторов D[] KSD(byte Ai, bool[] Xx)

{[] NotX = newbyte[7];[] X = newbyte[7];[] A = newbyte[12];_X3_ = 0;Not_X3_ = 0;_X2_ = 0;Not_X2_ = 0;(int i = 0; i < 7; i++)

{(Xx[i]) X[i] = 1;X[i] = 0;

}(int i = 0; i < 7; i++)

{(Xx[i]) NotX[i] = 0;NotX[i] = 1;

}(Ai)

{0:[0] = 1;;1:[11] = 1;;2:[2] = 1;;3:[3] = 1;;4:[5] = 1;;5:[4] = 1;;6:[6] = 1;;7:[7] = 1;;8:[8] = 1;;9:[9] = 1;;10:[10] = 1;;12:[1] = 1;;

}[0] = (byte)((A[1] & X[1]) | (A[2] & Not_X3_) | (A[2] & _X3_) | (A[9] & NotX[5] & X[6]) | (A[10] & X[6]) | (A[8] & X[4]) | (A[6] & _X3_) | (A[3]));[1] = (byte)((A[1] & NotX[1] & Not_X2_) | (A[2] & _X3_) | (A[5]) | (A[9] & X[5]) | (A[6] & _X3_));[2] = (byte)((A[0] & X[0]) | (A[3]) | (A[4]) | (A[5]) | (A[8] & NotX[4]) | (A[6] & _X3_));[3] = (byte)((A[0] & X[0]) | ((A[6] & Not_X3_)) | (A[7]) | (A[8] & X[4]) | (A[9] & X[5]));DTr;

}

//Комбинационная схема векторов Y[] KSY(byte Ai, bool[] Xi)

{[] NotX = newbyte[7];[] X = newbyte[7];[] A = newbyte[12];_X3_ = 0;Not_X3_ = 0;(Ai)

{0:[0] = 1;;1:[11] = 1;;2:[2] = 1;;3:[3] = 1;;4:[5] = 1;;5:[4] = 1;;6:[6] = 1;;7:[7] = 1;;8:[8] = 1;;9:[9] = 1;;10:[10] = 1;;12:[1] = 1;;

}(int i = 0; i < 7; i++)

{(Xx[i]) X[i] = 1;X[i] = 0;

}(int i = 0; i < 7; i++)

{(Xx[i]) NotX[i] = 0;NotX[i] = 1;

}[0] = (byte)((A[1] & NotX[1] & X[2]) | (A[9] & NotX[5] & NotX[6]) | (A[10] & NotX[6]) | (A[11]));[1] = (byte)(A[0] & X[0]);[2] = Y[1];[3] = (byte)((A[1] & NotX[1] & NotX[2]) | (A[4]) | (A[8] & NotX[4]));[4] = (byte)((A[2] & _X3_) | (A[6] & _X3_));[5] = (byte)((A[1] & X[1]) | (A[2] & Not_X3_));[6] = (byte)((A[6] & Not_X3_) | (A[7]) | (A[3]));[7] = A[3];[8] = A[3];[9] = A[5];[10] = (byte)((A[6] & Not_X3_) | (A[7]));[11] = (byte)((A[8] & X[4]));[12] = (byte)((A[9] & X[5]));[13] = (byte)((A[9] & NotX[5] & X[6]) | (A[10] & X[6]));Y;

}

//Реализация счетчикаCounter(refushort Count)

{(Count == 0) Count = 15;Count--;

}

//Уровень операционного устройстваOAandYA()

{= StateMemory(Sync, DTr[0], DTr[1], DTr[2], DTr[3]);(DTr[0], DTr[1], DTr[2], DTr[3]);= LogicMemoryCond(Sync, X);_Ai = Decoder(DTr);(State_Ai);= KSY(State_Ai, X);(Y);= OA(Y);(X);= KSD(State_Ai, X);(DTr[0], DTr[1], DTr[2], DTr[3]);

}

//Уровень микропрограммыMicroprogram()

{(State_Ai)

{0: //A0 (X0())

{();();_Ai = 12;

}

{_Ai = 0;

};1: //A11 _END();_Ai = 0; ;2: //A2 (X3())

{();_Ai = 3;

}

{();_Ai = 1;

};3: //A3 ();();();_Ai = 5;;4: //A5 ();_Ai = 6; ;5: //A4();_Ai = 4; ;6: //A6(X3())

{();_Ai = 7;

}

{_Ai = 7;

};7: //A7();();_Ai = 8;;8: //A8(X4())

{();_Ai = 9;

}

{();_Ai = 4;

};9: //A9(X5())

{();_Ai = 10;

}

{_Ai = 10;

};10: //A10(X6())

{();_Ai = 1;

}

{_Ai = 1;

};12: //A1(X1())

{();_Ai = 1;

}

{(X2())

{_Ai = 1;

}

{();_Ai = 2;

};

}(State_Ai);

}

//При клике на регистр AlvVarA_ColumnClick(object sender, ColumnClickEventArgs e)

{(lvVarA.Items[0].SubItems[e.Column].Text == "0").Items[0].SubItems[e.Column].Text = "1";.Items[0].SubItems[e.Column].Text = "0";();

}

//Ввод данных с формыCollectString()

{= "";= "";perem = "";perem2 = "";(int i = 1; i < +lvVarA.Items[0].SubItems.Count; i++)

{+= lvVarA.Items[0].SubItems[i].Text;

}(lvVarA.Items[0].SubItems[0].Text == "1")

{= "-";

}(int i = 1; i < +lvVarB.Items[0].SubItems.Count; i++)

{+= lvVarB.Items[0].SubItems[i].Text;

}(lvVarB.Items[0].SubItems[0].Text == "1")

{= "-";

}(perem, perem2);

}

//При клике на регистр BlvVarB_ColumnClick(object sender, ColumnClickEventArgs e)

{(lvVarB.Items[0].SubItems[e.Column].Text == "0").Items[0].SubItems[e.Column].Text = "1";.Items[0].SubItems[e.Column].Text = "0";();

}

//Получаем десятичные значения A и BSetVars(string param, string param2)

{rab = 0;res = 0;= Convert.ToUInt16(firstVar, 2);(int col = 0; col < 15; col++)

{+= Math.Pow(2, 0 - col-1) * Double.Parse(firstVar[col].ToString());

}= Convert.ToUInt16(firstVar, 2);(param == "-") A += 32768;= Math.Round(res, 5);.Text = param + res.ToString("0.#####");= 0;(int col = 0; col <16; col++)

{+= Math.Pow(2, 0 - col-1) * Double.Parse(secondVar[col].ToString());

}= Convert.ToUInt32(secondVar, 2);= Math.Round(res, 6);.Text = param2 + res.ToString("0.######");(param2 == "-") B += 65536;

}

//Вывод в регистр счетчика на формуRegCh(ushort C)

{Rab = 0;= C;(Rab % 2 == 1) RegCH[3, 0].Value = 1;RegCH[3, 0].Value = 0;= (ushort)(Rab / 2);(Rab % 2 == 1) RegCH[2, 0].Value = 1;RegCH[2, 0].Value = 0;= (ushort)(Rab / 2);(Rab % 2 == 1) RegCH[1, 0].Value = 1;RegCH[1, 0].Value = 0;= (ushort)(Rab / 2);(Rab % 2 == 1) RegCH[0, 0].Value = 1;RegCH[0, 0].Value = 0;

}

//Вывод в регистр АSetA(ListView L, UInt32 Ch)

{(int i = 15; i >= 0; i--)

{(Ch % 2 == 0) L.Items[0].SubItems[i].Text = "0";L.Items[0].SubItems[i].Text = "1";= Ch / 2;

}

//Вывод в регистр BSetB(ListView L, UInt32 Ch)

{(int i = 16; i >= 0; i--)

{(Ch % 2 == 0) L.Items[0].SubItems[i].Text = "0";L.Items[0].SubItems[i].Text = "1";= Ch / 2;

}

//Вывод результата в регистр результата СSetsResult(ListView L, UInt32 Ch, TextBox T)

{res = 0;valX = Ch;(Ch != 0)

{(int i = 16; i >= 0; i--)

{(Ch % 2 == 0) L.Items[0].SubItems[i].Text = "0";L.Items[0].SubItems[i].Text = "1";= (UInt32)(Ch / 2);

}(int col = 1; col <=16; col++)

{+= Math.Pow(2, 0 - col) * Double.Parse(L.Items[0].SubItems[col].Text);

}= Math.Round(res, 6);.Text = res.ToString("0");(L.Items[0].SubItems[0].Text == "1").Text = T.Text.Insert(0, "-");

}

//Вывод A на формуstateChanged(UInt16 a_in)

{.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;.Checked = false;(a_in)

{0:.Checked = true;.Checked = true;.Checked = true;;1:.Checked = true;.Checked = true;;2:.Checked = true;.Checked = true;;3:.Checked = true;.Checked = true;;4:.Checked = true;.Checked = true;;5:.Checked = true;.Checked = true;;6:.Checked = true;.Checked = true;;7:.Checked = true;.Checked = true;;8:.Checked = true;.Checked = true;;9:.Checked = true;.Checked = true;;10:.Checked = true;.Checked = true;;12:.Checked = true;.Checked = true;;

}

// Вывод X на формуshowX(bool[] X)

{(int i = 0; i < X.Length; i++)

{(i)

{0: chkBxOUx0_mem.Checked = X[i];;1: chkBxOUx1_mem.Checked = X[i];;2: chkBxOUx2_mem.Checked = _X2;;3: chkBxOUx3_mem.Checked = _X3;;4: chkBxOUx4_mem.Checked = X[i];;5: chkBxOUx5_mem.Checked = X[i];;6: chkBxOUx6_mem.Checked = X[i];;

}

//Вывод Q на формуshowQ(int Q0, int Q1, int Q2, int Q3)

{.Checked = (Q0 != 0);.Checked = (Q1 != 0);.Checked = (Q2 != 0);.Checked = (Q3 != 0);

}

//Вывод D на формуshowD(int D0, int D1, int D2, int D3)

{.Checked = (D0 != 0);.Checked = (D1 != 0);.Checked = (D2 != 0);.Checked = (D3 != 0);

}

//Вывод Y на формуshowY(byte[] Y)

{(int i = 0; i < Y.Length; i++)

{(i)

{1: chkBxOUy1.Checked = (Y[i] != 0);;2: chkBxOUy2.Checked = (Y[i] != 0);;3: chkBxOUy3.Checked = (Y[i] != 0);;4: chkBxOUy4.Checked = (Y[i] != 0);;5: chkBxOUy5.Checked = (Y[i] != 0);;6: chkBxOUy6.Checked = (Y[i] != 0);;7: chkBxOUy7.Checked = (Y[i] != 0);;8: chkBxOUy8.Checked = (Y[i] != 0);;9: chkBxOUy9.Checked = (Y[i] != 0);;10: chkBxOUy10.Checked = (Y[i] != 0);;11: chkBxOUy11.Checked = (Y[i] != 0);;12: chkBxOUy12.Checked = (Y[i] != 0);;13: chkBxOUy13.Checked = (Y[i] != 0);;

}


Оглавление 1. Исходные данные и общие требования к курсовой работе .1 Исходные данные 1.2 Язык программирования и графический режим 1.3 Отчетные

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ