3 Руководство пользователя

реклама
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ
имени академика С.П. КОРОЛЁВА (СГАУ)»
Факультет информатики
Кафедра информационных систем и технологий
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе на тему:
Редактор логических и интегральных схем
Выполнил: студент группы 6201
Артамонов Ю.С.
Проверил: Симонова Е.В.
Самара 2010
Задание
Редактор логических и интегральных схем
Реализовать программу - редактор логических схем ТТЛ логики, позволяющий собрать
схему из базовых элементов и провести её тестирование с различными входными сигналами,
результаты выполнения должны быть представлены в виде диаграммы сигналов на выбранных
элементах схемы. Программа должна позволять создание сложных элементов на основе
собранных схем, которые в дальнейшем можно использовать в других схемах в качестве
составляющих.
2
РЕФЕРАТ
Курсовая работа.
Пояснительная записка: 37 с., 12 рис., 1 таблица, 1 приложение, 1 источник.
ЛОГИЧЕСКИЕ ЭЛЕМЕНТЫ ТТЛ ЛОГИКИ, ПОСТРОЕНИЕ ЛОГИЧЕСКИХ СХЕМ,
ПЕРЕДАЧА СИГНАЛОВ В СХЕМЕ, СЕРИАЛИЗАЦИЯ СХЕМЫ И СОСТАВНЫХ
ЭЛЕМЕНТОВ. ДИЗАЙНЕР МИКРОСХЕМ.
Разработана программа для создания логических схем, позволяющая создавать схемы и
проводить их запуск с выводом результатов выполнения в виде диаграммы сигналов. В
программу входит редактор сложных элементов, который создаёт составные элементы для
последующего их использования в схемах.
Язык программирования – C#, XML. Операционные системы: MS Windows, Linux 2.6.30.
Платформы выполнения: .Net 2.0, Mono 2.0.
3
Содержание
Задание.............................................................................................................................. 2
РЕФЕРАТ ......................................................................................................................... 3
1
Обоснование и выбор метода решения ................................................................... 5
2
Описание программы ................................................................................................ 6
3
2.1
Общие сведения .................................................................................................. 6
2.2
Функциональное назначение ............................................................................. 6
2.3
Описание логической структуры программы .................................................. 7
2.4
Описание физической структуры программы ................................................. 7
2.1
Основные алгоритмы программы ..................................................................... 9
Руководство пользователя...................................................................................... 11
3.1
Структура и подготовка входных данных ..................................................... 11
3.2
Выполнение программы................................................................................... 11
3.3
Описание пользовательского интерфейса ...................................................... 13
3.4
Описание структуры выходных данных ........................................................ 14
3.5
Пример работы программы ............................................................................. 14
Список использованных источников .......................................................................... 18
Приложение А................................................................................................................ 19
4
1 Обоснование и выбор метода решения
В работе были опробованы три алгоритма передачи сигналов между элементами в
логических схемах:
1. Функциональный (событийный) алгоритм – основывается на немедленном
срабатывании элемента после изменения входных сигналов. Позволяет хорошо
моделировать функциональные схемы. Главный недостаток алгоритма состоит в
невозможности реализации элементов с памятью.
2. Волновой алгоритм – все элементы выполняют свои функции итеративно.
Главный недостаток – необходимость прохода элементов, не выполняющих никаких
функций: узлов и проводов.
3. Гибридный (событийно-волновой) – алгоритм, последовательно выполняющий
выполнение работы и отправку сигналов на функциональных элементах, пока состояние
схемы не прекратит меняться, а элементы-соединения отправляют сигналы по
срабатыванию событий.
В качестве алгоритма выполнения схем был выбран гибридный алгоритм, который
совмещает достоинства волнового и событийного алгоритмов. Он позволяет организовывать
схемы любой сложности: с памятью, составными элементами, генераторами сигналов и
соединителями. Он совмещает в себе требуемую универсальность и скорость. Требования по
скорости: менее 1 с на 1024 такта по 20 условных наносекунд, итого 20480 проходов цикла
выполнения.
5
2 Описание программы
2.1 Общие сведения
Наименование программного средства: MicroDesigner - дизайнер логических схем.
Программное обеспечение, необходимое для его функционирования:
 Операционная система MS Windows, платформа .Net 2.0 и выше
 Операционная система Linux 2.6.30, платформа Mono 2.0 и выше
Аппаратное обеспечение, необходимое для функционирования программы:
 IBM совместимый компьютер
 1000 MHz процессор и выше
 256 MiB оперативной памяти
 Видеокарта с 128 MiB памяти
 Монитор
 Клавиатура
 Мышь
Объём программы и ресурсов: 2 MiB
2.2 Функциональное назначение
Программа позволяет осуществить весь цикл создания и выполнения логических схем,
включая сохранение схем и разработку новых элементов.
Дизайнер схемы имеет набор инструментов, для создания схемы, соединения элементов,
выделения их и добавления подписей на схему. После создания схемы необходимо задать
список наблюдения и запустить выполнение схемы.
Максимально возможно 1024 такта выполнения, ограничение выставлено для
фиксированного размера источников сигнала. Максимальная глубина такта - 512 условных
наносекунд, она ограничена для скорости выполнения такта. Ограничения возникают из-за
использования прекомпилируемого языка C#.
Схема и новые элементы сохраняются в xml файлы, которые могут быть просто
использованы другими программами при необходимости. Для примера создан шаблон XSLT,
позволяющий представить любой файл элемента в виде HTML страницы.
2.3 Описание логической структуры программы
Рисунок 2.1 - Схема базовых типов
Четыре уровня логики:
 BaseElement - базовый элемент для расположения на схеме
 CircuitElement - элементы, имеющие соединения
 RealElement - функциональные элементы с задержками
 CompositeElement - составные элементы, включающие в себя схемы
Целесообразность выбора такой структуры обусловлена следующим:
 Максимальная абстракция, что позволяет добавлять элементы как плагины к
программе.
 Все элементы наследуют один класс, это делает простым обращение к свойствам
элементов на холсте рисования.
 Простое добавление функциональных элементов: необходимо создать файл
разметки пинов и в классе элемента реализовать функцию ComputeSignal.
2.4 Описание физической структуры программы
Логически программа разделена на 3 библиотеки и 1 исполняемый модуль:
 BaseObjects - библиотека базовых объектов схемы
Содержит объекты: Схема (ObjectManager), Базовый объект (BaseObject), пин (PIN),
провод (Wire), элемент с пинами (CircuitElement), реальный элемент (RealElement),
составной элемент (CompositeElement)
 DrawingsLib - библиотека с формами и инструментами рисования, формы
свойств элементов и дизайнера схем.
7
Содержит: инструменты рисования (MoveTool, WireTool, TextTool, RegionTool),
специальные объекты рисования (RegionObject, TextObject), формы свойств объектов
(CanvasPropertiesForm, ContainerEditorForm, ObjPropertyWindow, SignalsEditorForm,
WatchListForm), менеджер панели инструментов (ToolBoxObejct), форма запуска схемы
(StartItForm)
 ObjectsLib - базовые функциональные элементы для построения схемы
Содержит: функциональные элементы (NAND2, NOR2, INV, и тд), основные схемы
(CinRS, DC, JK-триггер и тд)
 MicroDesigner - исполняемый модуль
Также в составе программы есть простая платформа для выполнения тестов над
элементами. Позволяет выполнить тест и выгрузить диаграмму результата в выбранную
директорию.
Библиотека элементов ObjectsLib подключается динамически, все элементы,
наследующие CircuitElement, добавляются на панель инструментов (для этого используется
рефлексивный анализ сборки на типы, включённые в неё). Библиотека может отсутствовать,
или же могут быть подключены другие модули с различными элементами.
8
2.1 Основные алгоритмы программы
Алгоритм запуска схемы, эмулирует работу схемы при подаче на входы сигналов.
Начало
Обновить состояние схемы
Создать фильтры:
 Эффективные элементы
 Неподключенные входы
Подготовить контейнеры
для результирующих
сигналов
Запуск идёт
Сгенерировать сигналы на
источниках
Конец
Передать сигнал
инициализации на
неподключённые входы
Выполняется
работа
Отправить сигналы в схеме
Выполнить работу
Собрать результирующие
сигналы
Рис 2.5 Алгоритм запуска схемы
9
Описание алгоритма:
1. Обновление состояния - все элементы схемы приводятся в первоначальное
состояние для последующего запуска
2. Фильтры создаются для более эффективного обращения к группам элементов.
Эффективные элементы - элементы, выполняющие работу и изменяющие сигнал,
проходящий через них. К ним не относятся провода, узлы и специальные объекты
рисования.
3. Запуск выполняется до тех пор, пока в схеме выполняется работа на каких либо
элементах. За каждый проход выполнения элемент единожды выполняет работу и
отправляет сигнал.
4. На неподключённые входы подаётся сигнал инициализации, выбранный
пользователем. В ТТЛ логике неподключённый вход расценивается, как пин с сигналом
единица.
5. Перед выходом из прохода собирается информация с наблюдаемых элементов,
на основе этих данных строится диаграмма результатов.
10
3 Руководство пользователя
3.1 Структура и подготовка входных данных
Входными данными в программе может быть как ранее созданная схема, так и новая
логическая схема. Для её создания служит визуальный редактор.
Рис. 3.1 Созданная логическая схема.
Рисование выполняется при помощи инструментов:
 Функциональных элементов
 Микросхем
 Проводов
3.2
Выполнение программы
Выполнение программы - запуск моделирования схемы. Для выполнения необходимо
задать опции выполнения, сигналы генераторов и список наблюдаемых элементов.
11
Рис. 3.2.1 Опции запуска схемы
Рис. 3.2.2 Диаграмма сигналов
12
3.3
Описание пользовательского интерфейса
Помимо редактора схемы программа содержит формы:
 Свойства элемента - служит для редактирования свойств элементов схемы.
Рис. 3.3.1 Форма свойств элемента
 Редактор элемента - служит для создания разметки и сохранения новой
микросхемы
Рис. 3.3.2 Редактор разметки элемента
13
 Список наблюдений - задаёт выводы, с которых необходимо собирать
информацию.
Рис. 3.3.3 Список наблюдения
3.4
Описание структуры выходных данных
Все схемы и элементы сохраняются в формате XML. Такой формат выбран для удобного
представления иерархических данных схемы.
Результат работы программы - временную диаграмму можно сохранить в виде
изображения.
3.5
Пример работы программы
Для описания примера работы рассмотрим сборку D-триггера. Его работа заключается в
следующем: он получает то состояние, которое было на его входе в момент спада
синхроимпульса.
Для сборки схемы нам понадобятся: синхронный RS триггер, генератор входных
сигналов, генератор синхроимпульсов, инвертер и соединительные провода.
Начнём сборку цепи с размещения микросхемы синхронного RS триггера.
14
Рис. 3.5.1 Размещение RS триггера
Добавим остальные элементы и соединим их:
Рис. 3.5.2 Схема для моделирования
Теперь необходимо задать входные сигналы на генераторе сигналов и параметры
генератора импульсов.
15
Рис. 3.5.3 Редактор генераторов
Рис. 3.5.3 Редактор импульсных генераторов
Теперь мы можем задать элементы для наблюдений в специальном диалоге:
Рис.3.5.4 Диалог наблюдений
Остался последний этап - настройка параметров запуска.
16
Рис. 3.5.5 Параметры запуска
И для получения результата остаётся только запустить моделирование схемы.
Рис. 3.5.6 Временная диаграмма D-триггера
Вот так просто мы продемонстрировали работу с разработанной системой моделирования.
17
Список использованных источников
1. Пшеничников Ю.В. Основы цифровой электроники СГАУ 2009. - 47 c.
2. Агуров П.В. Разработка компонентов в MS Visual Studio 2008 bhv - Спб. 2008. - 478 с.
3. RSDN, Property Grid FAQ http://www.rsdn.ru/article/dotnet/PropertyGridFAQ.xml
18
Приложение А
Листинг алгоритма для моделирования схемы:
void RunScheme()
{
//Переводим все элементы в начальное состояние
Refresh();
// Создаём фильтр с эффективными элементами
List<CircuitElement> PElements = new List<CircuitElement>();
// Создаём фильтр с неподключёнными входными пинами для подачи на них
Initial Signal
List<PIN> NotConnectedInputs = new List<PIN>();
for (int i = 0; i < _Elements.Count; i++)
{
if (!(_Elements[i] is Node) &&
!(_Elements[i] is Wire) &&
(_Elements[i] is CircuitElement) &&
(!(_Elements[i] is ISignalGenerator) || (_Elements[i] is
CompositeElement)) )
{
CircuitElement ce = _Elements[i] as CircuitElement;
PElements.Add(ce);
//Просматриваем пины
foreach (PIN p in ce.PINs)
{
if ((p.Type == PINType.In) && (p.FriendPIN == null))
NotConnectedInputs.Add(p);
}
}
}
//инициализация контейнеров для сбора информации
for (int watch = 0; watch < _Watches.Count; watch++)
{
_Watches[watch].Capacity = _TactCount * _TicPerTact;
}
bool[] marks = new bool[PElements.Count];
bool[] sends = new bool[PElements.Count];
//цикл генерации сигналов
for (int tact = 0; tact < _TactCount; tact++)
{
for (int i = 0; i < _TicPerTact; i++)
{
//генерируем новые сигналы
for (int gi = 0; gi < Generators.Count; gi++)
Generators[gi].GenerateSignal(i, tact);
//генерируем сигналы на отключенных входных пинах
foreach (PIN in_pin in NotConnectedInputs)
in_pin.Recieve(_InitialSignal);
//только один эффективный send и perform на каждом такте
bool perform = true;
for (int n = 0; n < PElements.Count; n++)
{
marks[n] = false;
sends[n] = false;
}
//пока есть полезная работа, выполняем передачу и обработку
сигналов в схеме
while (perform)
{
19
perform = false;
//цикл передачи данных
for (int pi = 0; pi < PElements.Count; pi++)
if (!sends[pi])
{
sends[pi] = PElements[pi].SendData(); ;
}
//цикл выполнения работы
for (int pi = 0; pi < PElements.Count; pi++)
if (!marks[pi])
{
marks[pi] = PElements[pi].PerformAction();
perform = perform | marks[pi];
}
}
//Секция сбора данных
for (int watch = 0; watch < _Watches.Count; watch++)
{
_Watches[watch].Signals[tact * _TicPerTact + i] =
(_Watches[watch].Source as PIN).Signal;
}
}
}
}
Весь исходный код проекта можно получить на сайте проекта. Он распространяется на
условиях лицензии GNU GPL v3.
Сайт проекта: http://code.google.com/p/microdesigner/
20
Скачать