Создание модели и моделирование элементов дискретного устройства
Разработка нового технического оборудования. Изготовление и эксплуатация цифровых устройств. Модель элемента дискретного устройства. Алгоритм загрузки логического элемента из файла и процедуры моделирования. Используемые методы, процедуры и функции.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 24.06.2012 |
Размер файла | 306,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Министерство науки и образования, молодежи и спорта Украины
Севастопольский национальный технический университет
Кафедра: кибернетики и вычислительной техники
Пояснительная записка к курсовой работе
по дисциплине:
«Автоматизация проектирования вычислительных систем»
на тему:
«Создание модели и моделирование элементов дискретного устройства»
Выполнил: ст.гр. М-42д
Проверил: Шевченко В.И.
Севастополь
2012
Содержание
ВВЕДЕНИЕ
1. ПОСТАНОВКА ЗАДАЧИ
1.1 Входные данные
1.2 Выходные данные
2. ОПИСАНИЕ МЕТОДА РЕШЕНИЯ ЗАДАЧИ
2.1 Общие вопросы моделирования
2.2 Моделирование элементов.
2.3 Создание модели элемента ДУ
2.4 Описание работы логических элементов
2.5 Функциональная схема разрабатываемого модуля
3. ОПИСАНИЕ СТРУКТУР ДАННЫХ
3.1 Используемые переменные и типы
3.2 Используемые методы, процедуры и функции
4. ОПИСАНИЕ АЛГОРИТМА
4.1 Алгоритм загрузки элемента из файла
4.2 Алгоритм процедуры моделирования
5. РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ
6. ОПИСАНИЕ ПРОГРАММЫ
ЗАКЛЮЧЕНИЕ
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
ПРИЛОЖЕНИЕ
Текст программы
Введение
Автоматизация проектирования является важной составляющей современного научно-технического прогресса и призвана разрешить противоречие между ростом сложности технических систем и необходимостью их проектирования в сжатые сроки при ограниченных людских ресурсах. [1]
На заре развития электроники и схемотехники проектирование устройств и механизмов осуществлялось ”ручными”, трудоёмкими и не всегда эффективными методами. Это оправдывало себя при проектировании относительно несложных, малофункциональных приборов и устройств. Однако с открытием полупроводников и соответственно транзисторов стало возможным получение электронных устройств большой степени интеграции (БИС и СБИС). Соответственно сложность проектирования устройств, в первую очередь цифровых, возросла в десятки и сотни раз. Наряду с ростом сложности, прежде всего вычислительной техники, особенно остро встал вопрос упрощения проектирования, прежде всего в этой области.
С появлением более совершенной аппаратуры, и в первую очередь вычислительных машин, стало возможным осуществлять некоторые наиболее сложные этапы проектирования на различных вычислительных системах, т. е. возникло понятие “автоматизации” проектирования. Это упростило проектирование и в тоже время повысило его эффективность.
На современном этапе разработано множество разнообразных систем автоматизации проектирования, каждая из которых решает свой круг специфических задач: AutoCAD - для решения инженерно-конструкторских задач; PCAD, ELKAD - для автоматизации проектирования электронной аппаратуры; MathCAD, MatLab - для решения математических задач и выполнения расчетных работ, и т. д. Специфицированы все этапы разработки таких систем, предложены эффективные алгоритмы, предназначенные, прежде всего для программной реализации. В данное время в области разработки средств автоматизации проектирования не наблюдается каких-либо существенных нововведений теоретического плана. Создаются новые или усовершенствуются существующие САПР, построенные на уже открытых принципах, т. е. на сегодняшний день это достаточно стандартизированная область человеческих знаний.
Разработка САПР является достаточно сложной задачей в связи со специфичностью этого вида программного обеспечения. САПР требует использования значительных ресурсов: как вычислительной мощности системы, так и объема используемой памяти. В связи с этим на САПР в чрезвычайной степени накладываются требования по минимальным требованиям к ресурсам. С другой стороны, так как система является не автоматической, а автоматизированной, то особое внимание следует уделить разработке интерфейса. Для конкурентоспособности САПР ее интерфейс должен быть интуивно-понятным и надежным. Надежность заключается в предусмотрении подавляющего большинства ошибочных ситуаций, адекватном реагировании на них и выводе пользователю достаточно полных сообщениях об ошибках.
Одной из наиболее важных задач при разработке САПР, которая представлена в этой курсовой работе, является создания моделей логических элементов ДУ. Моделирование подразумевает получение корректного сигнала на выходе моделируемого логического элемента в зависимости от подаваемых на его входы воздействий. [2]
Цель данного курсового проекта - приобретение практических навыков разработки модуля системы автоматизированного проектирования, тестирование разработанного программного продукта, а также получение навыков работы в команде.
1. Постановка задачи
Задачей данного курсового проекта является разработка модуля САПР, выполняющий создание моделей элементов ДУ и моделирование их работы. В рамках данной работы будет выполнено проектирование модуля САПР, имитирующий работу логических элементов, таких как «И», «И-НЕ», «ИЛИ», «ИЛИ-НЕ» с различным количеством входов и элемент «НЕ».
По реализации процесса моделирования - событийное моделирование; по виду кодирования сигналов - троичным; модель на основе спецификаций.
Разрабатываемый модуль должен состоять из двух процедур:
1. Загрузка из текстового файла исходных данных - библиотеки элементов. Входными данными для процедуры служат описания элементов в текстовой форме. Процедура осуществляет создание в оперативной памяти структур данных, представляющих собой модели элементов дискретного устройства.
2. Моделирование элементов. Входными данными для процедуры являются идентификатор типа элемента, значения на входах элемента. Выходными данными является значение на выходе элемента.
1.1 Входные данные
Вся информация необходимая для создания модели логического элемента дискретного устройства хранится в текстовом файле, путь к которому задается в интерфейсе.
Текстовый файл, хранящий список типов элементов, представляющий собой библиотеку элементов. Данный файл содержит четыре строки с описанием логических элементов и имеет следующую структуру:
Element “название элемента” vxodov “количество входов” vixodov “количество выходов” zaderjka “задержка”
Пример:
Element and vxodov 2;3;4 vixodov 1 zaderjka 1
Входными данными для моделирования работы логических элементов является идентификатор элемента, количество входных контактов, а так же подаваемые на входные контакты сигналы полученные от модуля «Моделирование ДУ».
1.2 Выходные данные
Результатом работы модуля cоздание элемента ДУ является модель логического элемента в ОП. Результатом работы модуля моделирование элемента ДУ является значения сигнала на выходе моделируемого элемента.
2. Описание метода решения задачи
2.1 Общие вопросы моделирования
При изготовлении и эксплуатации цифровых устройств требуется иметь средства проверки правильности их функционирования. Одним из таких средств являются проверяющие тесты. При построении и анализе тестов широкое применение находит моделирование на логическом уровне.
Логическое моделирование заключается в построении математической модели исследуемого устройства - системы соотношений, описывающей поведение этого устройства с заданной точностью, и последующем анализе поведения этой модели по ее реакции на входные воздействия.
Существуют различные методы и алгоритмы моделирования. Основными характеристиками моделирования являются адекватность, быстродействие и объем памяти, необходимый при реализации. Под адекватностью понимается степень соответствия результатов моделирования истинному поведению исследуемого ДУ. Адекватность моделирования зависит в основном от принятой модели ДУ, моделей элементов и сигналов, способа учета временных соотношений между сигналами. Как правило, повышение степени адекватности связано со снижением быстродействия и увеличением требуемого объема памяти, поскольку усложнение модели ведет к увеличению объема и времени обработки. Наиболее быстрыми являются алгоритмы двоичного моделирования без учета задержек, где реальный порядок срабатывания элементов не принимается во внимание. Существенно ниже быстродействие алгоритмов двоичного моделирования с учетом номинальных задержек элементов. Во многих случаях необходимо принимать во внимание не только номинальные значения задержек, но и их разброс. Быстродействие таких алгоритмов, как правило, ниже. Поэтому выбор метода моделирования часто является результатом компромисса между различными требованиями и зависит от класса рассматриваемых ДУ, вида решаемой задачи, имеющихся в распоряжении вычислительных ресурсов и т.д.
При моделировании входным, выходным и внутренним переменным приписываются значения, которые называются символами. Совокупность различных символов, используемых при моделировании, называется алфавитом моделирования. Моделью сигналов называется соответствие между реальными сигналами и символами принятого алфавита. Простейшим и наиболее распространенным является двоичный алфавит {0, 1}. Для учета неоднозначности поведения устройства используется троичный алфавит {0, 1, x}, где символ x обозначает неизвестное или неопределенное значение. В некоторых задачах удобно ставить в соответствие символу x также безразличное значение сигнала. Другими словами, если некоторой переменной приписан символ x, сигнал на соответствующем полюсе устройства может быть равен 0, либо 1. При анализе состязаний используется алфавит либо троичный, либо с большим числом символов, позволяющий уточнить характер переходных процессов.
Необходимо отметить, что с ростом значности алфавита быстро увеличивается время моделирования, а также и требуемый объем памяти.
Элементом ДУ называется конструктивно и функционально законченная часть ДУ, не подлежащая дальнейшему расщеплению. Элементы ДУ представляются как структурными, так и функциональными моделями. Простейшие логические элементы (И, ИЛИ, И-НЕ и т.п.) практически всегда представляются функциональными моделями.
Простейшей моделью элемента комбинационного базиса, используемой при двоичном моделировании, является реализуемая им булева функция, заданная с помощью таблицы истинности или любым другим способом. При многозначном моделировании модель элемента задается с помощью многозначной таблицы истинности. В алгоритмах, учитывающих временные соотношения между сигналами, модели элементов могут иметь более сложный вид. Так, модель элемента может содержать сведения о значениях задержки при переключении из 0 в 1 и из 1 в 0 по какому входу (номинальные, минимальные, максимальные значения задержки, возможно, распределение вероятности значения задержки), об импульсной помехоустойчивости элемента и т.п.
Библиотека элементов.
В описании схемы для каждого элемента указывается только его тип, но не описывается функционирование. Это предполагает наличие в памяти ЭВМ специальной библиотеки, в которой для каждого типа элемента приведены сведения, необходимые при моделировании. При разработке структуры библиотеки элементов должно быть обеспечено удобство работы с ней (включение, исключение, замена элементов).
Элементы ЦУ обладают огромным разнообразием реализуемых функций. Для эффективной реализации моделирования таких элементов невозможно создать одну универсальную модель, поэтому используется несколько моделей представления функции.
Директивы моделирования служат для управления процессом моделирования, позволяя задавать алгоритм моделирования, начальные условия, форматы данных, параметры моделирования и т.д. Развитый язык директив значительно увеличивает ценность системы моделирования как инструмента разработчика аппаратуры. Например, директивы используется:
· для задания начального состояния схемы;
· для задания максимального числа итераций (тактов);
· для введения “нестандартных” неисправностей;
· для сравнения результатов моделирования с ожидаемыми результатами и выдачи сообщений о возможных расхождениях. [3]
2.2 Моделирование элементов
Задача моделирования заключается в следующем - по значениям на входах логических элементов определить значения на выходах и задержку переключения элементов. Есть несколько способов моделирования:
А) Использование моделей на основе функций инструментального языка программирования. В этом случае параметры процедуры - входные и выходные значения. Для этого на каждый тип элемента нужно писать свою функцию, что существенно увеличивает размер кода (использование библиотек и т.п).
Б) Использование моделей на основе таблиц. При таком способе функции элементов задаются в табличной форме. В этом случае можно использовать одну функцию для моделирования элементов. Однако описание элементов со сложными функциями значительно увеличивает размерность таблиц, к тому же поиск по большой таблице занимает много времени.
В) Использование моделей на основе спецификации. Этот способ похож на первый, но в нем одна функция выполняет моделирование группы однотипных элементов. Параметры, различные для разных элементов, описаны в специальном блоке данных, называемом спецификация.
В данной курсовой работе будет использована модель на основе спецификации.
Модель на основе спецификаций включает универсальную программу для некоторого множества однотипных элементов и спецификацию - набор данных, в котором указываются особенности моделируемого элемента. Преимущества такой модели в том, что создается одна процедура на группу элементов, что позволяет добавлять новые элементов без спецификации. [5]
2.3 Создание модели элемента ДУ
Модель элемента дискретного устройства предназначена для использования в процессе моделирования ДУ и содержит информацию о функционировании элемента.
Модель элемента ДУ должна содержать информацию о функции элемента, о временных характеристиках функционирования элемента.
Модель элемента дискретного устройства на основе спецификаций представляет собой универсальную процедуру, выполняющую моделирование некоторого множества однотипных элементов, отличающихся количеством входов, выходов, а также временными задержками.
К модели элемента дискретного устройства предъявляются такие требования:
1. Обеспечение заданной адекватности моделирования;
2. Минимальный объем памяти для представления модели;
3. Максимальное быстродействие обработки модели.
Для создания модели элемента необходимо указать его название, количество входных контактов, временные задержки переключения.
2.4 Описание работы логических элементов
Таблица 1. Обозначение элементов
1) Элемент «И» (AND) реализует конъюнкцию (логическое умножение) двух или более логических значений.
Единица на выходе схемы И будет тогда и только тогда, когда на всех входах будут единицы. Когда хотя бы на одном входе будет нуль, на выходе также будет нуль.Связь между выходом z этой схемы и входами х и у описывается соотношением z = х ^ у (читается как «х и у»). Операция конъюнкции на функциональных схемах обозначается знаком & (читается как «амперсэнд»), являющимся сокращенной записью английского слова and.
2) Элемент «И_НЕ» (NAND)
Ноль на выходе схемы И-НЕ будет тогда и только тогда, когда на всех входах будут единицы. Когда хотя бы на одном входе будет нуль, на выходе будет единица.
3) Элемент «ИЛИ» (OR)
Схема ИЛИ реализует дизъюнкцию (логическое сложение) двух или более логических значений.
Когда хотя бы на одном входе схемы ИЛИ будет единица, на ее выходе также будет единица. Знак «1» на схеме -- от устаревшего обозначения дизъюнкции как «>=!» (т.е. значение дизъюнкции равно единице, если сумма значений операндов больше или равна 1). Связь между выходом z этой схемы и входами х и у описывается соотношением z = х или у.
4) Элемент «ИЛИ-НЕ» (NOR)
Когда хотя бы на одном входе схемы ИЛИ-НЕ будет единица, на ее выходе будет ноль. Если ну входе все нули, то выходе будет единица.
5) Элемент «НЕ» (NOТ)
Схема НЕ (инвертор) реализует операцию отрицания.
Связь между входом х этой схемы и выходом z можно записать соотношением Z = , где х читается как «не х» или «инверсия. Если на входе схемы 0, то на выходе 1. Когда на входе 1 на выходе 0. [3]
2.5 Функциональная схема разрабатываемого модуля
Рисунок 1. Функциональная схема
1 - имя файла
2 - массив сигналов, содержащий переданные модулем моделирование значения
3 - ошибок не найдено, создание модели элемента в ОП
4 - тип моделируемого элемента
5 - если моделирование возможно возвращаем получаемое значение на выходе, иначе возвращаем «х»
3. Описание структур данных
3.1 Используемые переменные и типы
Еlement2: string[]Mod2: int[]Vix:int[]Zader: int[]Еlement: string[] |
массив содержащий типы элементов считанные из библиотеки элементов так как данные о типе представлены в текстовой форме - тип массива stringмассив содержащий количество входных контактов элементамассив содержащий количество выходных контактов элементамассив содержащий значение задержки элементамассив содержащий информацию о типе элементов считанную из jTextField1 |
||
mod: int |
массив содержащий количество входных контактов элемента считанных из jTextField2 |
||
fbib:Filevsign:int |
хранит путь у файлу с библиотекой элементов, выбранному с использованием filechooserпеременная содержащая значение выходного контакта элемента |
||
Bib: string |
хранит путь к файлу библиотеки элементов. |
||
Priznak: int |
переменная содержащая признак ошибки/выполнения создание элемента ДУ |
||
LBib: stringLin: intResult: BooleanVrem: string[]Vrem2: string[]Vsignal: stringSig: stringSignal: int[] |
для хранения строки считанной из файла с библиотекой элементовпеременная используемая для подсчета повторения операции считывания из файла содержащего библиотеку элементовпеременная используемая в filechooser, возвращает значение true если файл выбранмассив используется для временного хранения значения количества входных контактов элемента, для последующего разделения по символу «;»массив используется для временного хранения значения количества выходных контактов элемента, для последующего разделения по символу «;»переменная содержащая значение выходного контакта моделируемого элемента. Предназначенная для вывода в jTextField4переменная содержащая информацию о значении сигналах моделируемого элемента считанную из jTextField3массив содержащий значения сигналов моделируемого элемента |
3.2 Используемые методы, процедуры и функции
Метод otkr()Метод nalichie() |
Производит считывание данных из файла библиотеки элементов.Создает модель элементов ДУ. |
||
readLine()BufferedReader(new FileReader ())getText()length()endsWith()setFileFilter() |
Считывает построчно файл.Загружает заданный файл во входной поток данных.Считывает текст из указанного текстового поля.Возвращает значение длины заданного массива.функция которую использует filechooser для проверки типа файла выбранного пользователемМетод который использует filechooser для фильтрации типов файловФункция преобразует тип int в string |
Для удобства взаимодействия пользователя с разрабатываемым модулем предусмотрены следующие компоненты типа JButton:
jButton1(кнопка «моделирование») - предназначена для моделирование элемента с заданными характеристиками.
Также предусмотрены следующие компоненты типа jTextField:
jTextField1 - тeксовое поле содержащее одну строку, предназначено для ввода пользователем типа элемента.
jTextField2 - текстовое поле содержащее одну строку, предназначено для ввода пользователем количества контактов.
jTextField3 - текстовое поле содержащее одну строку, предназначено для ввода пользователем значений на входах элемента.
jTextField4 - текстовое поле содержащее одну строку, предназначено для вывода выходного значения полученного после моделирования.
4. Описание алгоритма
4.1 Алгоритм загрузки логического элемента из файла
1. Открыть файл с описанием элементов.
2. Считываем очередную строку.
3. Если конец файл - к п9.
4. Считываем название элемента.
5. Считываем количество возможных входных контактов.
6. Считываем задержку элемента.
7. Если ошибок не обнаружено п8, иначе выдать сообщение об ошибке.
8. Закрыть файл.
9. Конец.
Процесс поиска ошибок состоит из следующих этапов:
1. Считываем очередную строку.
· В массив содержащий типы элементов записываем второй элемент строки.
· Четвертый элемент строки разбиваем на символы разделённые знаком «;», если полученные символы не численные, выводим сообщение об ошибке - количество входов задано некорректно. Иначе полученные значения записываем в массив содержащий количество входных контактов элемента.
· Шестой элемент строки разбиваем на символы разделённые знаком «;», если полученные символы не численные, выводим сообщение об ошибке - количество выходов задано некорректно. Иначе полученные значения записываем в массив содержащий количество выходных контактов элемента.
· Если значение восьмого элемента строки не численное, выводим сообщение об ошибке - задержка задана некорректно. Иначе полученное значение записываем в массив содержащий задержки элемента.
2. Если какой либо из необходимых по структуре элемент строки отсутствует, выдаем сообщение об ошибке - введены некорректные данные.
4.2 Алгоритм процедуры моделирования
Модуль моделирование передает значение сигналов только в том случае если хотя бы одно из них не равно «х».
· Элемент «И»
1. Проверить значение всех сигналов. Если хоть один не соответствует трехзначной модели сигнала - выдать сообщение об ошибке.
2. Если хотя бы на одном входе будет ноль, на выходе также будет ноль. Если на всех входах будут единицы - на выходе схемы единица.
· Элемент «И-НЕ»
1. Проверить значение всех сигналов. Если хоть один не соответствует трехзначной модели сигнала - выдать сообщение об ошибке.
2. Если хотя бы на одном входе будет нуль, на выходе единица. Если на всех входах будут единицы - на выходе схемы ноль.
· Элемент «ИЛИ»
1. Проверить значение всех сигналов. Если хоть один не соответствует трехзначной модели сигнала - выдать сообщение об ошибке.
2. Если хотя бы на одном входе будет единица, на выходе также будет единица. Если на всех входах будут нули - на выходе схемы ноль.
· Элемент «ИЛИ-НЕ»
1. Проверить значение всех сигналов. Если хоть один не соответствует трехзначной модели сигнала - выдать сообщение об ошибке.
2. Если хотя бы на одном входе будет единица, на выходе будет нуль. Если на всех входах будут нули - на выходе схемы единица.
· Элемент «НЕ»
1. Проверить значение всех сигналов. Если хоть один не соответствует трехзначной модели сигнала - выдать сообщение об ошибке.
2. На выходе - инвертированное значение входного сигнала.
5. Результаты тестирования
При запуски разрабатываемого модуля видим следующий интерфейс:
Тестовый пример №1
Цель примера проверить правильность работы программы.
Входные данные:
Выходные данные:
Тестовый пример №2
Цель примера проверить правильность работы программы
Входные данные:
Выходные данные:
Тестовый пример №3
Цель примера проверить корректность работы программы на примере содержащем ошибки.
Входные данные:
Выходные данные:
Результаты всех тестовых примеров соответствуют ожидаемым, что свидетельствует о правильности работы программы.
6. Описание программы
цифровой устройство дискретный оборудование
Данная программа реализует класс, описывающий создание модели дискретного устройства.
Программа написана на языке Java.
Для написания использовалась среда разработки NetBeans IDE 6.9.1.
Главное достоинство данной версии то, что для разработки программ в учебных целях не требуется лицензии фирмы на среду разработки.
Целью данной программы являеться создание модели элементов ДУ в ОП, и моделирование логических элементов.
Текст программы приведен в Приложении А.
Заключение
На современном этапе автоматизация явилась главным выражением научно - технического прогресса, порождающего потребности во все более сложных технических системах, удовлетворяемые по мере развития методов и средств, как физической реализации систем, так и их проектирования. Дальнейшее развитие и совершенствование средств автоматизации проектирования технических систем даст возможность создания ещё более технически сложных и более функциональных устройств и механизмов.
Таким образом, можно заключить, что разработка нового технического оборудования неразрывно связана с процессом автоматизации проектирования и более того без использования совремменных САПР невозможно создание какой-либо современной сложной технической системы.
В ходе выполнения данной курсовой работы был реализован модуль создание модели элементов и моделирование ДУ. Модуль был объединён с модулем создание модели и моделирование ДУ и интегрирован в главный модуль учебного САПР. В результате совместного тестирования было выяснено, что разработанный модуль полностью соответствует поставленной задаче, работает адекватно и вполне может использоваться в учебных целях для демонстрации работы простейших САПР.
В ходе выполнения данной курсовой работы была достигнута главная цель данной курсовой работы - корректная и продуктивная работа в команде.
Библиографический список
1. И.П. Норенков, В.Б. Маничев. Системы автоматизированного проектирования электронной и вычислительной аппаратуры: Учеб. Пособие для вузов. - М.: Высш. Школа, 1983. - 272 с., ил.
2. Системы автоматизированного проектирования в радиоэлектронке: Справочник/Е. В. Авдеев, А. Т. Еремин, И. П. Норенков, М. И. Песков; Под ред. И. П. Норенкова. - М.: Радио и связь, 1986. - 368 с.: ил.
3. Автоматизированное проектирование цифровых устройств / С. С, Бадулин, Ю. М. Барнаулов, В. А. Бердышев и др.; Под ред. С. С. Бадулина. - М.: Радио и связь, 1981. - 240 с., ил. - ( Проектирование радиоэлектронной аппаратуры на интегральных микросхемах).
4. Методические указания к выполнению курсовой работы «Разработка модуля САПР СВТ» по дисциплине «Основы автоматизации проектирования средств вычислительной техники» для студентов специальности 7.091501 дневной и заочной форм обучения. Разработали: Тертычный А.И., Исаев В.А. - Севастополь: Издательство СевГТУ,2002.- 20с.
5. Лекции по дисциплине «Автоматизация проектирования вычислительных систем» за 7 учебный семестр.
Приложение
Tекст программы
package apvs_g;
import org.jdesktop.application.Action;
import org.jdesktop.application.ResourceMap;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.TaskMonitor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
import javax.swing.Icon;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
/**
* The application's main frame.
*/
public class APVS_GView extends FrameView {
public APVS_GView(SingleFrameApplication app) {
super(app);
initComponents();
// status bar initialization - message timeout, idle icon and busy animation, etc
ResourceMap resourceMap = getResourceMap();
int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");
messageTimer = new Timer(messageTimeout, new ActionListener() {
public void actionPerformed(ActionEvent e) {
statusMessageLabel.setText("");
}
});
messageTimer.setRepeats(false);
int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
for (int i = 0; i < busyIcons.length; i++) {
busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
}
busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {
public void actionPerformed(ActionEvent e) {
busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
}
});
idleIcon = resourceMap.getIcon("StatusBar.idleIcon");
statusAnimationLabel.setIcon(idleIcon);
progressBar.setVisible(false);
// connecting action tasks to status bar via TaskMonitor
TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());
taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
String propertyName = evt.getPropertyName();
if ("started".equals(propertyName)) {
if (!busyIconTimer.isRunning()) {
statusAnimationLabel.setIcon(busyIcons[0]);
busyIconIndex = 0;
busyIconTimer.start();
}
progressBar.setVisible(true);
progressBar.setIndeterminate(true);
} else if ("done".equals(propertyName)) {
busyIconTimer.stop();
statusAnimationLabel.setIcon(idleIcon);
progressBar.setVisible(false);
progressBar.setValue(0);
} else if ("message".equals(propertyName)) {
String text = (String)(evt.getNewValue());
statusMessageLabel.setText((text == null) ? "" : text);
messageTimer.restart();
} else if ("progress".equals(propertyName)) {
int value = (Integer)(evt.getNewValue());
progressBar.setVisible(true);
progressBar.setIndeterminate(false);
progressBar.setValue(value);
}
}
});
}
@Action
public void showAboutBox() {
if (aboutBox == null) {
JFrame mainFrame = APVS_GApp.getApplication().getMainFrame();
aboutBox = new APVS_GAboutBox(mainFrame);
aboutBox.setLocationRelativeTo(mainFrame);
}
APVS_GApp.getApplication().show(aboutBox);
}
//Моделирование элементов
int vsign=-1;int vse=0;
String element=jTextField1.getText();
String mod1=jTextField2.getText();
String sig=jTextField3.getText();
int mod=Integer.parseInt(mod1);
String sign[]=sig.split("");
int signal[]=new int [sig.length()];
for(int i=0;i<sig.length();i++)
{
signal[i]=Integer.parseInt(sign[i+1]);
if(signal[i]!=0) if(signal[i]!=1) if(signal[i]!=2) JOptionPane.showMessageDialog(null, "!Ошибка! Не возможный сигнал!","!Ошибка!", JOptionPane.ERROR_MESSAGE);
}
if(element.equals("and"))
for(int i=0;i<mod;i++)
{
if(signal[i]==0)
vsign=0;
if(signal[i]==1)
vse++;
if(vse==mod)
vsign=1;
}
if(element.equals("nand"))
for(int i=0;i<mod;i++)
{
if(signal[i]==0)
vsign=1;
if(signal[i]==1)
vse++;
if(vse==mod)
vsign=0;
}
if(element.equals("or"))
for(int i=0;i<mod;i++)
{
if(signal[i]==1)
vsign=1;
if(signal[i]==0)
vse++;
if(vse==mod)
vsign=0;
}
if(element.equals("nor"))
for(int i=0;i<mod;i++)
{
if(signal[i]==1)
vsign=0;
if(signal[i]==0)
vse++;
if(vse==mod)
vsign=1;
}
if(element.equals("not"))
if(signal[0]==1)
vsign=0;
if(signal[0]==0)
vsign=1;
String vsignal;
vsignal=String.valueOf(vsign);
jTextField4.setText(vsignal);// TODO add your handling code here:
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
private javax.swing.JPanel mainPanel;
private javax.swing.JMenuBar menuBar;
private javax.swing.JProgressBar progressBar;
private javax.swing.JLabel statusAnimationLabel;
private javax.swing.JLabel statusMessageLabel;
private javax.swing.JPanel statusPanel;
// End of variables declaration
private final Timer messageTimer;
private final Timer busyIconTimer;
private final Icon idleIcon;
private final Icon[] busyIcons = new Icon[15];
private int busyIconIndex = 0;
private JDialog aboutBox;
}
//Создание модели элементов
int nalichie()
{
String []element2=new String[5]; int zaderjka1[]=new int [4];
int [][]mod2=new int[4][4];String []vrem;String []mod3 = new String[4];
String bib = jTextField2.getText();
try
{
String line;int lin=0;
BufferedReader input = null;
if(fbib==null)input = new BufferedReader(new FileReader (bib));
else {input = new BufferedReader(new FileReader(fbib));}
while ((line = input.readLine())!=null)
{
vrem = line.split(" ");
element2[lin]=vrem[1];
for(int j=0;j<kolvo;j++)
mod3=vrem[3].split("\\;");
for(int i=0;i<4;i++)
{
mod2[lin][i]=Integer.parseInt(mod3[i]);
}
zaderjka1[lin]=Integer.parseInt(vrem[5]);
// if(zaderjka[lin]>5)JOptionPane.showMessageDialog(null, "!Ошибка! отеке элементов!","!Модель не создана!", JOptionPane.ERROR_MESSAGE); }
lin++;
}
}
catch (Exception e) {c=5;JOptionPane.showMessageDialog(null, "!Ошибка! Введите верный путь к библиотеке элементов!","!Модель не создана!", JOptionPane.ERROR_MESSAGE); }
Размещено на Allbest.ru
Подобные документы
Формализация задачи и применение численных методов. Классификация программных продуктов для моделирования технических устройств. Программный комплекс MatLab with simulink. Создание интерфейса модели электрогидравлического вихревого регулирующего элемента.
дипломная работа [694,9 K], добавлен 25.07.2012Исследование принципа работы основных логических элементов цифровых устройств. Описания вычислительных машин непрерывного и дискретного действия. Инверсия конъюнкции, дизъюнкции и равнозначности. Разработка программы, реализующей логические операции.
практическая работа [230,8 K], добавлен 25.03.2015Функционирование разрабатываемого элемента управления ActiveX, его свойства и методы. Создание внешнего вида элемента управления. Программирование событий инициализации и изменения размеров. Тестирование элемента на этапе проектирования и выполнения.
курсовая работа [1,4 M], добавлен 07.04.2014Разработка концептуальной модели, выявление основных элементов системы и элементарных актов взаимодействия. Создание алгоритма и написание программы. Планирование и проведение компьютерных экспериментов. Аналитическое и имитационное моделирование.
курсовая работа [784,0 K], добавлен 01.12.2012Сущность, принципы и описание методов и этапов имитационного моделирования. Процессы и применение дискретного и непрерывного алгоритма. Характеристика методов построения математических моделей для решения управленческих задач банковской системы.
курсовая работа [80,5 K], добавлен 29.05.2014Разработка интернет вещей как системы взаимосвязанных вычислительных устройств, механических, цифровых машин, предметов. Принцип взаимодействия элементов Умной Розетки. Тестирование устройства. Составление программы для мобильного устройства. Код Розетки.
контрольная работа [2,2 M], добавлен 20.10.2016Разработка алгоритма оптимизации коэффициентов дискретного регулятора с законом ПИД по минимуму интегрального квадратичного критерия. Расчёт оптимальных параметров регулятора на основе описанных алгоритмов. Анализ переходных процессов в замкнутой системе.
практическая работа [1,4 M], добавлен 25.12.2011Выбор элемента, который необходимо изменить в процессе моделирования. Изменение названия в окне Display Properties. Выбор элемента Parameters из библиотеки и добавление на рабочее поле. Ввод начального и конечного значений сопротивления, шагов модуляции.
лабораторная работа [1,4 M], добавлен 29.12.2014Имитационное моделирование кредитной системы коммерческого банка с применением экспоненциального, дискретного равномерного и нормального распределения. Создание и программная реализация математической модели на языке С++ и ее построение в MathCad.
курсовая работа [319,1 K], добавлен 13.02.2013Алгоритм добавления нового элемента в дерево и поиска по нему. Порядок разработки руководства пользователя. Принцип работы с экранным меню. Методика и этапы добавления нового элемента. Формирование и содержание инструкции системного программиста.
курсовая работа [411,8 K], добавлен 06.06.2014