Стенд для изучения и исследования контроллера приоритетных прерываний
Выбор и обоснование направления проектирования. Каскадное включение контроллеров. Интерфейс программы, шифратор приоритетов. Неадресуемый конец прерывания. Расчет затрат на оборудование и материалы, отчислений на страховые взносы, на заработную плату.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 29.12.2013 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Оглавление
Введение
1. Общая часть
1.1 Контроллер прерываний
1.2 Приказы инициализации
1.3 Рабочие приказы
1.4 Каскадное включение контроллеров
1.5 Выбор и обоснование направления проектирования
2. Специальная часть
2.1 Интерфейс программы
2.2 Определение структуры
2.3 Инициализация
2.4 Регистр IRR
2.5 Шифратор приоритетов
2.6 Слово управления OCW2
2.6.1 Неадресуемый конец прерывания
2.6.2 Адресуемый конец прерывания
2.6.3 Установка приоритета
2.6.4 Автоцикл
2.6.5 Адресуемый цикл
3. Экономическая эффективность проекта
3.1 Расчет затрат на проектирование
3.1.1 Расчет затрат на оборудование и материалы
3.1.2 Расчет затрат на амортизацию
3.1.3 Расчет затрат на заработную плату проектировщиков
3.1.4 Расчет отчислений на страховые взносы
3.1.5 Расчет накладных расходов
3.1.6 Расчет затрат на электроэнергию
3.1.7 Расчет прочих затрат
3.1.8 Смета проектных затрат
3.2 Расчет затрат на монтаж
3.2.1 Расчет затрат на заработную плату монтирующего персонала
3.2.2 Расчет отчислений на страховые взносы
3.2.3 Расчет затрат на накладные и прочие расходы
3.2.4 Смета затрат на монтаж
3.3 Расчет годовых эксплуатационных затрат
3.3.1 Расчет затрат на оборудование
3.3.2 Расчет затрат на заработную плату персоналу
3.3.3 Расчет отчислений на страховые взносы
3.3.4 Расчет затрат на накладные расходы
3.3.5 Расчет затрат на электроэнергию
3.3.6 Расчет прочих затрат
3.3.7 Смета затрат
3.4 Экономическая эффективность проекта
4. Безопасность и экологичность дипломного проекта
4.1 Анализ условий труда
4.1.1 Микроклимат помещений
4.1.2 Искусственное освещение
4.1.3 Нормирование шума
4.1.4 Вибрация
4.1.5 Электробезопасность
4.2 Эргономичность
4.3 Пожарная безопасность
4.4 Пожаробезопасность электрооборудования
4.5 Экологичность проекта
4.6 Чрезвычайные ситуации
4.6.1 Поведение людей в случае землетрясения
4.6.2 Действия в случае совершения теракта(взрыва)
4.6.3 Действия при захвате заложников
Заключение
5. Управление качеством
5.1 Системный анализ технических требований
5.2 Ресурсное обеспечение качества
5.3 Контроль и оценка качества
5.4 Затраты на создание качества системы
5.4.1 Расчет затрат на силовую электроэнергию, затраченную при составлении методики.
5.4.2 Расчет материальных затрат
Заключение
Список использованных источников
Листинг программы
Введение
Одним из широко используемых способов обмена информацией между микропроцессорной системой и внешними устройствами является обмен в режиме прерывания. Он отличается высокой производительностью, так как микропроцессор отвлекается от выполнения основной программы и переходит к выполнению подпрограммы обслуживания внешнего устройства только тогда, когда внешнее устройство будет готово к обмену информацией. Устройство, обеспечивающее работу в данном режиме, называется контроллером прерываний.
Целью данной дипломной работы является создание лабораторного стенда, направленного на изучение данного устройства.
1. Общая часть
1.1 Контроллер прерываний
В литературе достаточно подробно описан блок приоритетных прерываний КР580ВН59, являющийся советским аналогом контроллера прерываний i8259. По этой причине в качестве основы стенда выбран именно КР580ВН59. Ниже приведена его структурная схема, описание режимов работы, слова управления и инициализации.
Контроллер обеспечивает управление 8-уровневыми векторными приоритетными прерываниями, число которых может быть легко расширено до 64. Допускается программное маскирование (запрещение) прерываний. Прибор может быть запрограммирован на следующие режимы работы.
Вложенные прерывания. Каждому из 8 входов запросов прерываний IR7-0 назначается фиксированный приоритет в порядке возрастания, и запрос с большим приоритетом прерывает обслуживание прерываний с меньшими приоритетами.
Круговой (циклический) приоритет. Как и в предыдущем режиме, каждому входу IR7-0 назначается приоритет, но теперь после запроса прерывания и выполнения соответствующей подпрограммы обслуживания приоритеты изменяются в круговом порядке таким образом, что последний обслуженный вход будет иметь низший приоритет. Этот режим характерен для таких применений, в которых периферийные устройства имеют одинаковый приоритет и ни одному из них нельзя отдать предпочтения.
Адресуемые приоритеты. Режим аналогичен второму режиму, но допускает программное определение входа IR, которому назначается низший приоритет.
Режим опроса. В этом режиме прерывания процессора запрещаются, а требующее обслуживания периферийное устройство идентифицируется с помощью считывания состояния контроллера.
При запросе прерывания от периферийного устройства выполняются следующие действия:
на одной или нескольких входных линиях IR7-0 формируется переход от низкого уровня к высокому, сигнализирующий о готовности устройства к вводу или выводу;
контроллер воспринимает запросы, учитывает их приоритеты и формирует сигнал INT прерывания процессора;
процессор завершает текущую команду и, если прерывания разрешены (INTE = 1), выдает в контроллер импульс подтверждения прерывания ;
контроллер по шине данных вводит в процессор код операции команды CALL вызова подпрограммы;
код операции CALL заставляет процессор сформировать два дополнительных импульса , которые осуществляют ввод в процессор двух байт адресной части команды CALL, представляющие начальный адрес подпрограммы обслуживания запрашивающего устройства;
управление передается выбранной подпрограмме, а после ее завершения возвращается прерванной программе.
На рисунке 1 приведена блок-схема контроллера и его программная модель. Основу контроллера составляют следующие узлы: регистр запросов прерываний IRR, регистр обслуживаемых прерываний ISR, регистр маски прерываний IMR, шифратор приоритетов PR, схема каскадирования, буфер шины данных и схемы управления.
Рисунок 1 - Структурная схема (а) и программная модель (б) микросхемы КР580ВН59
Запросы прерываний обрабатываются тремя взаимосвязанными регистрами. Регистр IRR фиксирует все запросы прерываний, регистр ISR хранит обслуживаемые прерывания, а регистр IMR идентифицирует маскируемые (запрещаемые) входы прерываний. Шифратор приоритетов анализирует содержимое этих трех регистров и определяет, необходимо или нет генерировать сигнал INT прерывания процессора.
Входные цепи сигналов IR7-0 рассчитаны на восприятие фронта сигнала и сохранение высокого уровня до подтверждения запроса первым импульсом .
Пусть действует всего один сигнал запроса прерывания и других обслуживаемых прерываний нет. Тогда контроллер сразу формирует сигнал INT, а процессор, реагируя на прерывание, после завершения текущей команды отвечает импульсом . После получения со стороны микропроцессора сигнала подтверждения прерывания , ПКП вырабатывает вектор прерывания, т. е. начальный адрес подпрограммы обслуживания того устройства, которое вызвало выдачу INT. Это осуществляется путем посылки в микропроцессор трехбайтовой команды CALL. Происходит это следующим образом. При получении сигнала КР580ВН59 посылает кодовую комбинацию 11001101 (т.е. код команды CALL в микропроцессорном комплекте серии КР580) на 8-разрядную шину данных. Этот код команды CALL инициирует еще два сигнала , которые должны поступить на ПКП со стороны процессора.
Последние два сигнала позволяют микросхеме КР580ВН59 послать сформированный адрес подпрограммы на шину данных: сначала младшие восемь разрядов адреса, а затем старшие восемь разрядов адреса. Так завершается выдача трехбайтовой команды CALL на шину данных системы.
Если какой-либо вход IR замаскирован, сигнал IR зафиксируется в регистре IRR, но установленный бит регистра IMR не пропустит его в шифратор приоритетов. Когда выполняемая программа сбрасывает бит IMR, шифратор приоритетов распознает активный запрос и контроллер генерирует прерывание INT. Маскирование входа с некоторым приоритетом не запрещает прерывания от входов с меньшими приоритетами.
Восьмибитный двунаправленный буфер шины данных с тристабильными каскадами используется для интерфейса с системной шиной данных по линиям D7-0. Через него передаются управляющие слова (приказы), информация о состоянии контроллера и команда CALL.
Схемы управления выбирают адресуемые внутренние регистры контроллера, участвующие в его программировании. В них входят регистры приказов инициализации, рабочих приказов и регистр состояния.
Схема каскадирования позволяет объединить несколько контроллеров для расширения числа входов запросов прерываний. При этом один из контроллеров работает как ведущий (управляющий), а до 8 контроллеров - как ведомые (управляемые).
Контроллер имеет следующие управляющие сигналы (рисунок 2):
(выбор кристалла) - L-активный входной сигнал, разрешающий связь контроллера с шиной данных;
(запись) - L-активный сигнал загрузки информации с шины данных в адресуемый регистр контроллера;
(считывание) - L-активный вход, инициирующий передачу на шину данных информации о состоянии контроллера;
INT (прерывание) - выходной Н-активный сигнал, который подается на вход прерывания процессора;
(подтверждение прерывания) - входной L-активный сигнал от процессора, на который контроллер реагирует выдачей команды CALL;
Рисунок 2 - Интерфейс контроллера с системной шиной
А0 (адрес) - входной сигнал, адресующий внутренний регистр контроллера при загрузке приказов и считывании состояния; обычно подключается к младшей линии А0 шины адреса;
CAS2-0 (линии каскадирования) - при наличии в системе нескольких контроллеров образуют локальную шину и являются выходными линиями ведущего контроллера и входными - ведомых контроллеров;
(ведомый) - линия определения контроллера как ведущего (=1) или ведомого (=0).
Контроллер воспринимает две разновидности приказов: приказы инициализации ICW и рабочие приказы OCW.
1.2 Приказы инициализации
После включения питания каждый контроллер необходимо инициализировать двумя или тремя приказами ICW, которые определяют наличие в системе одного или нескольких контроллеров, начальный адрес подпрограмм обслуживания прерываний и размещение подпрограмм в памяти через 4 или 8 байт.
Последовательность инициализации определяется первым приказом ICW1, и для каждого контроллера ее необходимо закончить до поступления от периферийных устройств запросов прерываний. Во время инициализации, которая выполняется с запрещенными прерываниями процессора, сбрасываются схемы фиксации переходов сигналов IR, регистры ISR и IMR, а также триггеры специальной маски и считывания состояния. Входу IR7 автоматически присваивается низший приоритет, а входу IR0 -- высший.
С каждым входом IR ассоциируется, адрес памяти, который выдается на шину данных в ответ на импульсы после выдачи кода операции CALL. Адреса для всех IR расположены равномерно через 4 или 8 байт и обычно содержат таблицу переходов (команды JMP) к соответствующим подпрограммам. Для каждого контроллера 32- или 64-байтные области памяти (иногда называемые страницами) могут находиться в любом месте памяти, начиная с четной границы. Биты A15-6 адреса передаются в ICW, а младшие биты A7-0 формируются в контроллере. Значение А5 зависит от заданного интервала и для 4-байтного интервала программируется в ICW1, а для 8-байтного интервала устанавливается контроллером. Формат младшего байта адреса для каждого входа IR приведен в таблице 1.
Таблица 1 - Формат младшего байта адреса
Вход |
Интервал 4 байта |
Интервал 8 байт |
|||||||||||||||
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
||
IR7 |
A7 |
A6 |
A5 |
1 |
1 |
1 |
0 |
0 |
A7 |
A6 |
1 |
1 |
1 |
0 |
0 |
0 |
|
IR6 |
A7 |
A6 |
A5 |
1 |
1 |
0 |
0 |
0 |
A7 |
A6 |
1 |
1 |
0 |
0 |
0 |
0 |
|
IR5 |
A7 |
A6 |
A5 |
1 |
0 |
1 |
0 |
0 |
A7 |
A6 |
1 |
0 |
1 |
0 |
0 |
0 |
|
IR4 |
A7 |
A6 |
A5 |
1 |
0 |
0 |
0 |
0 |
A7 |
A6 |
1 |
0 |
0 |
0 |
0 |
0 |
|
IR3 |
A7 |
A6 |
A5 |
0 |
1 |
1 |
0 |
0 |
A7 |
A6 |
0 |
1 |
1 |
0 |
0 |
0 |
|
IR2 |
A7 |
A6 |
A5 |
0 |
1 |
0 |
0 |
0 |
A7 |
A6 |
0 |
1 |
0 |
0 |
0 |
0 |
|
IR1 |
A7 |
A6 |
A5 |
0 |
0 |
1 |
0 |
0 |
A7 |
A6 |
0 |
0 |
1 |
0 |
0 |
0 |
|
IR0 |
A7 |
A6 |
A5 |
0 |
0 |
0 |
0 |
0 |
A7 |
A6 |
0 |
0 |
0 |
0 |
0 |
0 |
Форматы всех приказов инициализации приведены на рисунке 3. Значение входа А0 указывается явно, оно должно быть определено при выполнении команды OUT, загружающей приказ в контроллер. В приказе ICW1 бит F (формат) определяет интервал адресов, а бит S идентифицирует наличие в системе одного или нескольких контроллеров. Поле А7-5 содержит биты загружаемого начального адреса. Приказ ICW2 содержит старший байт начального адреса области памяти. В системе с несколькими контроллерами для ведущего и всех ведомых контроллеров необходим третий приказ ICW3, определяющий их взаимодействие и зависящий от физического подключения контроллеров.
Рисунок 3 - Форматы приказов инициализации
После инициализации контроллер готов воспринимать запросы на входах IR7-0 в режиме вложенных прерываний. Входы IR7-0 имеют фиксированные приоритеты: IR0 - высший, IR7 - низший. При подтверждении прерывания идентифицируется запрос с наибольшим приоритетом и его вектор выдается на шину данных. Кроме того, устанавливается соответствующий бит в ISR, что блокирует восприятие прерываний от этого входа и всех входов с меньшими приоритетами. Запросы от входов с большими приоритетами генерируют сигналы INT, которые подтверждаются, если прерывания процессора разрешены командой EI в текущей подпрограмме. (Напомним, что процессор автоматически запрещает прерывания при восприятии сигнала INT, а после команды EI выполняет следующую команду, даже если на входе INT действует высокий уровень). Каждая подпрограмма обслуживания в режиме вложенных прерываний должна информировать контроллер о своем завершении посредством загрузки в него приказа неадресуемого конца прерывания EOI. Этот приказ выдается с А0=0 и D7-0=20Н и сбрасывает установленный бит регистра ISR с максимальным приоритетом.
При наличии в системе нескольких контроллеров каждый из них инициализируется автономно. Последовательность инициализации определяет адреса подпрограмм для всех входов IR и взаимодействия ведущего и ведомых контроллеров. Эту функцию выполняет приказ ICW3; он сообщает ведущему контроллеру, какие его входы IR подключены к ведомым контроллерам, а каждому ведомому - к какому входу IR ведущего контроллера подключен его выход INT. Данный вход представлен полем идентификации ID2-0 в приказе ICW3 ведомого контроллера. Отметим, что каждый ведомый контроллер может быть запрограммирован на работу в любом режиме.
1.3 Рабочие приказы
Приказами инициализации без всякой дополнительной информации любой из контроллеров программируется для работы в режиме вложенных прерываний. Для задания других режимов работы в контроллер необходимо загрузить дополнительные рабочие приказы OCW, форматы которых приведены на рисунке 4.
Рисунок 4 - Форматы рабочих приказов
С помощью приказа OCW1, который загружается после инициализации со значением А0=1, в любой момент времени программно можно установить и сбросить отдельные биты регистра масок прерываний IMR. Состояния триггеров этого регистра действуют на выходы регистра IRR, поэтому даже при маскировании входа IR, сигнал запроса может установить соответствующий бит IRR, но прерывание процессора не генерируется. После снятия маски запомненный запрос может привести к формированию сигнала INT.
С помощью приказа OCW2 можно задать пять операций, приведенных в таблице 2. Приказ неадресуемого конца прерывания EOI дает возможность сбросить установленный бит регистра ISR с наибольшим приоритетом, а код адресуемого EOI позволяет сбросить бит ISR, определяемый полем L2-0. Первый из них рекомендуется для режима вложенных прерываний, а второй - для всех остальных режимов, что упрощает отладку системы.
Таблица 2 - Варианты приказа OCW2
Приказ |
A0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Операция |
|
Неадресуемый EOI |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
Сброс бита ISR с максимальным приоритетом |
|
Адресуемый EOI |
0 |
0 |
1 |
1 |
0 |
0 |
L2 |
L1 |
L0 |
Сброс бита ISR определяемого полем L2-0 |
|
Установка приоритета |
0 |
1 |
1 |
0 |
0 |
0 |
L2 |
L1 |
L0 |
Назначение входу IR, определяемому полем L2-0, низшего приоритета |
|
Автоцикл |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
Сброс бита ISR с максимальным приоритетом и назначение соответствующего входу низшего приоритета |
|
Адресуемый цикл |
0 |
1 |
1 |
1 |
0 |
0 |
L2 |
L1 |
L0 |
Сброс бита ISR, определяемого полем L2-0, и назначение ему низшего приоритета |
Приказ установки приоритета позволяет программно задать устройство (вход IR) с низшим приоритетом независимо от EOI, т. е. без изменения регистра ISR. Поле L2-0 определяет вход IR, которому назначается низший приоритет, а приоритеты остальных входов назначаются в круговом порядке.
Приказ автоцикла сбрасывает бит ISR с наибольшим приоритетом и входу IR, соответствующему только что сброшенному биту, назначает низший приоритет. Приоритеты остальных входов IR модифицируются также в круговом порядке.
Наконец, приказ адресуемого цикла обеспечивает сброс в конце подпрограммы обслуживания бита ISR, адресуемого полем L2-0. Дополнительно соответствующему входу IR назначается низший приоритет, а приоритеты остальных входов упорядочиваются также в круговом порядке.
В таблице 3 приведена сводка приказов OCW3. Первый дополнительный режим называется режимом специальной маски SMM. Пусть в некоторой подпрограмме обслуживания имеется фрагмент, когда необходимо разрешить все прерывания, даже от входов с меньшими приоритетами. Этого можно достичь приказом EOI сброса соответствующего бита ISR. Однако сброс бита ISR необратим и прерывания от устройств с меньшими приоритетами остаются разрешенными и после окончания фрагмента, в котором они допустимы. Для временного прекращения действия бита ISR служит приказ установки режима SMM. Когда задан этот режим, он действует до его сброса специальным приказом. Установка режима специальной маски относится ко всем замаскированным входам. Если, например, возникает запрос IR1, когда установлен режим специальной маски, а затем подпрограмма маскирует его, то запросы IR2 и IR3 с меньшими приоритетами будут разрешены.
Следующий приказ OCW3 относится к режиму опроса, в котором для идентификации периферийного устройства, запрашивающего обслуживания, процессор опрашивает не сами устройства, а контроллер, который может работать в любом режиме. Приказ опроса с установленным битом Р (D2=1) выдается в контроллер командой OUT. Следующий импульс , генерируемый при выполнении команды IN, выдает на шину данных слово состояний прерываний. В этом слове старший бит D7(I) фиксирует наличие прерывания, биты D6-3 не используются, а биты D2-0 (поле W2-0) идентифицируют код имеющегося запроса прерывания с наибольшим приоритетом.
Таблица 3 - Варианты приказа OCW3
Приказ |
А0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Операция |
|
Установка SMM |
0 |
X |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
Установка режима специальной маски |
|
Сброс SMM |
0 |
X |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
Сброс режима специальной маски |
|
Режим опроса |
0 |
X |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
Опрос по следующему импульсу |
|
Считывание ISR |
0 |
X |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
Считывание ISR по следующему импульсу |
|
Считывание IRR |
0 |
X |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
Считывание IRR по следующему импульсу |
Обслуживание запросов устройств осуществляется программной дешифрацией считанного слова и переходом к соответствующей подпрограмме. Перед считыванием всегда необходимо загрузить приказ OCW3. В том случае, когда прерывания отсутствуют, считанное слово содержит I=0 и W2-0=111. Режим опроса может оказаться удобным в системах с большим числом контроллеров, каждый из которых должен быть правильно инициализирован (начальные адреса в приказах ICW могут быть фиктивными).
Последняя функция OCW3 - считывание состояния контроллера, представленного содержимым регистров IRR, ISR и IMR. Регистры считываются при загрузке соответствующего приказа OCW3 с последующим выполнением команды IN или подаче импульса .
Не требуется записывать OCW3 перед каждым считыванием состояния, если считывается тот же регистр, что и в предыдущей операции. Для считывания содержимого регистра IMR не нужен приказ OCW3, так как на линиях данных D7-0 контроллера находится это содержимое, если =0 и А0= 1.
1.4 Каскадное включение контроллеров
Схема контроллера обеспечивает простое увеличение числа запросов прерываний до 64. На рисунке 5 показана конфигурация с одним ведущим и двумя ведомыми контроллерами, имеющая 22 входа запросов прерываний. Ведущий контроллер определяется высоким уровнем сигнала на входе , а у ведомых приборов этот вход заземлен. Выходы INT ведомых контроллеров подключаются ко входам IR ведущего контроллера. Все линии CAS2-0 соединяются параллельно и являются выходными у ведущего и входными у ведомых контроллеров. Сигналами на этих линиях ведущий контроллер выбирает соответствующий ведомый контроллер, который передает в процессор адрес подпрограммы.
Рисунок 5 - Сопряжение трех контроллеров прерываний
Когда на входе IR ведомого прибора появляется сигнал запроса прерывания, приоритет которого выше обслуживаемого им прерывания, на выходе INT формируется высокий уровень. С учетом приоритета прерывания, обслуживаемого ведущим контроллером, на его выходе INT появляется сигнал прерывания процессора. В ответ на первый импульс INTA от процессора ведущий контроллер выдает на шину данных код операции CALL, а на линии CAS2-0 - идентификатор ID2-0 прерывающего ведомого контроллера. Поэтому на второй и третий импульсы ведомый прибор выдает запрограммированный начальный адрес подпрограммы обслуживания. Кроме того, устанавливаются соответствующие прерывающим входам биты регистров ISR обоих контроллеров. Следовательно, при завершении подпрограммы обслуживания необходимо выдать два приказа EOI: по одному для ведущего и ведомого контроллеров.
При наличии в системе нескольких контроллеров каждый из них инициализируется специальной последовательностью приказов. В таблице 4 приведена последовательность инициализации контроллеров, соединенных в соответствии с рисунком 5. Таблица переходов ведущего контроллера начинается по адресу 100Н, ведомого контроллера А - по адресу 120Н, ведомого контроллера В - по адресу 140Н, и все имеют 4-байтный интервал. Приказ ICW3 ведущего контроллера показывает наличие ведомых контроллеров на входах IR3 и IR6, а поля ID2-0 в приказах ICW3 ведомых контроллеров содержат 011 и 110.
Таблица 4 - Инициализация ведущего и ведомого контроллеров
Контроллер |
Приказ |
A0 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
Ведущий |
ICW1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
|
ICW2 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
||
ICW3 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
||
Ведомый А |
ICW1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
|
ICW2 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
||
ICW3 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
||
Ведомый В |
ICW1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
|
ICW2 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
||
ICW3 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
Разработка подпрограмм обслуживания прерываний для системы с несколькими контроллерами ставит ряд проблем. Пусть ведущий контроллер и ведомый контроллер А отреагировали на запрос прерывания (то есть установлены биты и ISR3) и формируется прерывание на входе . Ведомый контроллер А сформирует сигнал INT, но ведущий контроллер не воспримет его из-за установленного в регистре ISR бита ISR3 до получения приказа EOI. Этим нарушается вложенность прерываний, так как приоритет запроса по входу выше приоритета обслуживаемого запроса .
Для решения этой проблемы подпрограмма обслуживания периферийного устройства, сигнал прерывания которого подключен к ведомому контроллеру, должна замаскировать у ведущего контроллера входы IR с меньшим приоритетом (в данном случае IR7-4), а затем выдать в ведущий контроллер приказ EOI того входа, к которому подключен ведомый контроллер. Этими действиями обеспечивается восприятие ведущим контроллером прерываний с большим приоритетом (в рассматриваемом примере ). Если входы ведущего контроллера с меньшими приоритетами не замаскировать, он будет реагировать на запросы IR7-4, так как бит ISR3 сброшен приказом EOI.
Подпрограмма должна также сохранять информацию о том, какой вход ведомого прибора с наименьшим приоритетом обслуживается. Маски входов ведущего контроллера должны сбрасываться при завершении подпрограммы обслуживания прерывания с наименьшим приоритетом ведомого контроллера. Если обслуживается только прерывание от входа , то маски должны сбрасываться соответствующей ему подпрограммой обслуживания. Но в рассмотренном выше примере подпрограмма входа возвращается к подпрограмме обслуживания прерывания . Следовательно, подпрограмма, инициированная прерыванием , должна не сбрасывать маски, а дать возможность сбросить их подпрограмме обслуживания . Это реализуется считыванием и временным запоминанием содержимого регистра IMR ведущего контроллера при вызовах подпрограмм прерываний ведомого контроллера с последующим восстановлением содержимого IMR.
1.5 Выбор и обоснование направления проектирования
Так как выбранный контроллер приоритетных прерываний КР580ВН59 является одной из микросхем микропроцессорного комплекта КР580, то целесообразно в качестве остального оборудования также использовать микросхемы этого комплекта или смежных. Однако, у стенда, спроектированного на данных элементах, есть существенный недостаток - элементы этого комплекта больше не производятся, что затрудняет их использование.
По этой причине более рациональным будет создание стенда по изучению контроллера прерываний в виде программной модели. Для обеспечения наглядности стенда и облегчения проектирования программу следует писать в визуально ориентированной среде разработки. Наиболее подходящим средством разработки, отвечающим данному требованию, является Borland C++ Builder. Он выгодно отличается от аналогично продукта Microsoft Visual C++ простотой освоения и доступной литературой.
2. Специальная часть
2.1 Интерфейс программы
Средства разработки C++ Builder позволяют компоновать элементы управления и индикации до написания кода программы. На рисунке 6 изображен интерфейс программной модели стенда.
Рисунок 6 - Интерфейс стенда
Интерфейс стенда выполнен в виде структурной схемы контроллера прерываний с рисунка 1а.
Органы управления и индикации:
1. Линии запросов прерываний.
2. Индикаторы приоритетов линий запроса прерываний.
3. Регистр запросов прерываний.
4. Переключатель запрета прерываний процессором.
5. Кнопка запуска шифратора прерываний.
6. Регистр маскирования линий запросов прерываний.
7. Индикатор выполнения текущей программы.
8. Регистр обрабатываемых запросов прерываний.
9. Формирователь слова инициализации 1.
10. Формирователь слова инициализации 2.
11. Кнопка записи слов инициализации.
12. Формирователь слова управления 2.
13. Кнопка записи слова управления 2.
14. Переключатель режима специальной маски.
15. Индикатор старшего байта адреса.
16. Индикатор младшего байта адреса.
17. Кнопка повторной инициализации контроллера.
18. Кнопка вызова инструкции по работе с программой.
2.2 Определение структуры
Программирование начинается с определения структуры Prior.
struct Prior
{ int prior,nom; //переменные приоритета и номера канала запроса прерываний
TCheckBox *irq,*ocw1,*ocw2,*icw1,*icw2;
TLabel *isr,*irr,*prior1,*highbyte,*lowbyte; };
Также определяем два экземпляра структуры.
Prior tmp, vozr[8], teksost[8];
Получается, что все члены данных структуры связаны с каждым элементом этих двух массивов.
Далее необходимо для каждого элемента массива teksost[8], отвечающего за связь канала запросов прерываний с соответствующими регистрами маски, запросов прерываний, обрабатываемых прерываний, приоритета канала и т.д., определить начальные параметры.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
teksost[0].prior=10;
teksost[0].irq=CheckBox1;
teksost[0].ocw1=CheckBox9;
teksost[0].ocw2=CheckBox17;
teksost[0].irr=Label1;
teksost[0].isr=Label9;
teksost[0].nom=0;
teksost[0].prior1=Label18;
teksost[0].icw2=CheckBox34;
teksost[0].highbyte=Label26;
teksost[0].icw1=CheckBox26;
teksost[0].lowbyte=Label34;
teksost[7].prior=80;
teksost[7].irq=CheckBox8;
teksost[7].ocw1=CheckBox16;
teksost[7].ocw2=CheckBox24;
teksost[7].irr=Label8;
teksost[7].isr=Label16;
teksost[7].nom=7;
teksost[7].prior1=Label25;
teksost[7].icw2=CheckBox41;
teksost[7].highbyte=Label33;
teksost[7].icw1=CheckBox33;
teksost[7].lowbyte=Label41;
}
2.3 Инициализация
Перед началом работы с контроллером его необходимо инициализировать двумя словами инициализации ICW1 и ICW2, позволяющими задать начальный адрес подпрограмм обработки прерываний, а также интервал между адресами в 4 или 8 байт. Во время инициализации работа контроллера блокируется функцией UnEnable1 и становится возможной после нажатия кнопки «Запись», при этом, с помощью функции AllDefault, регистры IRR, ISR и IMR будут сброшены, а низший приоритет присвоен входу IRQ7.
void UnEnable1()
{
int i;
for(i=0;i<8;i++)
{
teksost[i].irq->Enabled=false;
teksost[i].ocw1->Enabled=false;
teksost[i].ocw2->Enabled=false;
}
Form1->CheckBox25->Enabled=false;
Form1->Button1->Enabled=false;
Form1->Button2->Enabled=false;
Form1->Button4->Enabled=false;
}
void AllDefault()
{
int i;
for (i=0;i<8;i++)
{
if((teksost[i].irq->Checked)==true)
teksost[i].irq->Checked=false;
if((teksost[i].ocw1->Checked)==true)
teksost[i].ocw1->Checked=false;
if(teksost[i].isr->Caption=="1")
teksost[i].isr->Caption="0";
if(teksost[i].lowbyte->Caption=="1")
teksost[i].lowbyte->Caption="0";
if(teksost[i].highbyte->Caption=="1");
teksost[i].highbyte->Caption="0";
}
if(Form1->CheckBox25->Checked==true)
Form1->CheckBox25->Checked=false;
}
2.4 Регистр IRR
При появлении на одной из линий IRQ запроса прерывания, соответствующий бит регистра запросов прерываний IRR должен выставляться в «1», а при исчезновении обратно в «0». Данную операцию производит функция SetIRR.
void SetIRR()
{
int i;
for(i=0;i<8;i++)
{
if(teksost[i].irq->Checked)
{
teksost[i].irr->Caption="1";
}
else
teksost[i].irr->Caption="0";
}
}
2.5 Шифратор приоритетов
Если на одной или нескольких линиях IRQ появляется запрос на прерывание, то по нажатию кнопки «Шифратор приоритетов» произойдет сравнение приоритетов незамаскированных каналов и будет выделен канал с наибольшим приоритетом. Если обрабатываемых прерываний нет или их приоритет ниже приоритета, канала запрашивающего прерывание то формируются старший и младший байты адреса подпрограммы обработки прерывания этого канала, устанавливается в «1» соответствующий бит регистра ISR, а также выводится уведомление о выполнении новой подпрограммы. В противном случае ничего не произойдет.
Если включен режим специальной маски, то прерывания будут разрешены от замаскированных, а также каналов с меньшим приоритетом.
Все вышеперечисленное действительно, если не задействован переключатель «Запрет прерываний», иначе запросы на прерывания обрабатываться не будут.
На рисунке 7 представлена блок-схема алгоритма обработки запросов прерываний. Также ниже представлен код обработки события нажатия на кнопку «Шифратор приоритетов».
Рисунок 7 - блок-схема алгоритма обработки запросов прерываний
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i,j,num;
bool flag=false;
if(!(CheckBox42->Checked)) //Проверка включения запрета прерываний
{
if(!(CheckBox25->Checked)) //Проверка включения специальной маски
{
GetMasPrior();
for (i=0;i<8;i++)
{
if((vozr[i].irq->Checked)&&(!(vozr[i].ocw1->Checked)))
{
for(j=0;j<i;j++)
{
if(vozr[j].isr->Caption=="1") //Проверяется наличие уже обрабатываемых
flag=true; //прерываний с большим приоритетом
}
if(!flag)
{
vozr[i].isr->Caption="1";
num=teksost[i].nom;
SetHighbyte();
SetLowbyte(num);
}
break;
}
}
}
else
{
for(i=0;i<8;i++)
{
if(teksost[i].ocw1->Checked)
teksost[i].prior=0;
}
GetMasPrior();
for (i=0;i<8;i++)
{
if(vozr[i].irq->Checked)
{
for(j=0;j<i;j++)
{
if(vozr[j].isr->Caption=="1")
flag=true;
}
if(!flag)
{
vozr[i].isr->Caption="1";
num=teksost[i].nom;
SetHighbyte();
SetLowbyte(num);
}
break;
}
}
}
}
CheckTekProg();
ShowPrior();
}
Функция GetMasPrior используется сортировки массива teksost[8] по приоритету в сторону его уменьшения. На рисунке 8 представлена блок-схема данной функции.
Рисунок 8 - Блок-схема функции GetMasPrior
void GetMasPrior()
{
int i,j;
for (i=0;i<8;i++)
{
vozr[i]=teksost[i];
}
for (i=0;i<8;i++)
{
for (j=0;j<8;j++)
{
if(vozr[j].prior>vozr[i].prior)
{
tmp=vozr[j];
vozr[j]=vozr[i];
vozr[i]=tmp;
}
if(vozr[j].prior==0)
{
tmp=vozr[j];
vozr[j]=vozr[i];
vozr[i]=tmp;
}
}
}
}
Функция ShowPrior показывает текущее состояние приоритетов каналов запроса прерываний.
Функция CheckTekProg выводит уведомления о выполняющейся в данный момент подпрограмме обработки прерывания. На рисунке 9 приведена ее блок-схема.
Рисунок 9 - Блок-схема функции CheckTekProg
void CheckTekProg()
{
int tek=0;
int i;
bool run=false;
GetMasPrior();
for(i=0;i<8;i++)
{
if(vozr[i].isr->Caption=="1")
{
tek=vozr[i].nom;
run=true;
break;
}
}
if(run)
{
Form1->Label17->Caption="Выполняется подпрограмма
обслуживания IRQ"+IntToStr(tek);
}
else Form1->Label17->Caption="Выполняется основная программа";
}
Функции SetHighbyte и SetLowbyte используются для формирования соответственно старшего и младшего байта адреса подпрограммы обработки прерывания. Старший байт адреса формируется полностью из слова инициализации ICW2. Младший же байт формируется, в зависимости от интервала между адресами подпрограмм в 4 или 8 байт, соответственно тремя или двумя старшими битами слова инициализации ICW1, а также двоичным кодом номера канала запроса прерывания. Блок схема функции SetHighbyte представлена на рисунке 10, функции SetLowbyte на рисунке 11.
Рисунок 10 - Блок-схема функции SetHighbyte
void SetHighbyte()
{
int i;
for(i=0;i<8;i++)
{
if(teksost[i].icw2->Checked)
teksost[i].highbyte->Caption="1";
else
teksost[i].highbyte->Caption="0";
}
}
Рисунок 11 - Блок-схема функции SetLowbyte
void SetLowbyte(int num)
{
int i;
if(teksost[5].icw1->Checked)
{
for(i=0;i<3;i++)
{
if(teksost[i].icw1->Checked)
teksost[i].lowbyte->Caption="1";
else
teksost[i].lowbyte->Caption="0";
}
teksost[5].lowbyte->Caption=num%2;
teksost[4].lowbyte->Caption=(num/2)%2;
teksost[3].lowbyte->Caption=(num/4)%2;
}
else
{
for(i=0;i<2;i++)
{
if(teksost[i].icw1->Checked)
teksost[i].lowbyte->Caption="1";
else
teksost[i].lowbyte->Caption="0";
}
teksost[4].lowbyte->Caption=num%2;
teksost[3].lowbyte->Caption=(num/2)%2;
teksost[2].lowbyte->Caption=(num/4)%2;
teksost[5].lowbyte->Caption="0";
}
}
2.6 Слово управления OCW2
Слово управления OCW2 имеет пять модификаций и указывает вид конца обслуживания прерывания, а также вид установки дна и дно приоритетного кольца.
Слово управления вступает в силу после нажатия кнопки «Запись».
2.6.1 Неадресуемый конец прерывания
Формируется установкой в «1» бита 5 и сбрасывает бит ISR, соответствующий последнему обслуженному запросу. Блок-схема алгоритма неадресуемого конца прерывания представлена на рисунке 12.
Рисунок 12 - Блок-схема алгоритма неадресуемого конца прерывания
int i,nom,pri,num;
//Неадресуемый EOI
if((!(CheckBox17->Checked))&&(!(CheckBox18->Checked))
&&((CheckBox19->Checked)))
{
GetMasPrior();
for (i=0;i<8;i++)
{
if(vozr[i].isr->Caption=="1")
{
vozr[i].isr->Caption="0";
break;
}
}
CheckTekProg();
}
2.6.2 Адресуемый конец прерывания
Данный приказ устанавливает в нулевое состояние бит регистра ISR, номер которого указан двоично-десятичным кодом в разрядах 2-0, при этом разряды 6 и 5 также должны быть выставлены в «1». На рисунке 13 представлена блок-схема этого алгоритма.
Рисунок 13 - Блок-схема алгоритма адресуемого конца прерывания
if((!(CheckBox17->Checked))&&((CheckBox18->Checked))
&&((CheckBox19->Checked)))
{
nom=GetAddr();
for (i=0;i<8;i++)
{
if(teksost[i].nom==nom)
teksost[i].isr->Caption="0";
}
CheckTekProg();
}
В данном алгоритме использована функция GetAddr для перевода номера канала запроса из двоичной системы в десятичную.
int GetAddr()
{
int a1,a2,a3,res;
if(Form1->CheckBox22->Checked)a1=1; else a1=0;
if(Form1->CheckBox23->Checked)a2=1; else a2=0;
if(Form1->CheckBox24->Checked)a3=1; else a3=0;
res=a1*4+a2*2+a3;
return res;
}
2.6.3 Установка приоритета
Приказ установки приоритета позволяет задать вход IRQ с низшим приоритетом без выполнения операции конца прерывания. Разряды 7 и 6 должны быть выставлены в «1», а поле 2-0 определяет вход, которому будет назначен низший приоритет, приоритеты остальных входов назначаются в круговом порядке.
На рисунке 14 представлена блок-схема алгоритма установки приоритета.
Рисунок 14 - Блок-схема алгоритма установки приоритета
if(((CheckBox17->Checked))&&((CheckBox18->Checked))
&&(!(CheckBox19->Checked)))
{
nom=GetAddr();
DefaultPrior();
SetBottomPrior(nom);
}
Функция DefaultPrior служит для установки приоритетов входов в стандартное положение (IRQ8 - минимальный, IRQ0 - максимальный).
void DefaultPrior()
{
int i;
for (i=0;i<8;i++)
{
teksost[i].prior=(i+1)*10;
}
}
Функция SetBottomPrior устанавливает дно приоритетного кольца для входа, указанного в переменной nom. Блок-схема алгоритма этой функции показана на рисунке 15.
Рисунок 15 - Блок-схема функции SetBottomPrior
void SetBottomPrior(int nom)
{
int i,pri;
pri=teksost[nom].prior;
for(i=7;i>nom;i--)
{
teksost[i].prior=teksost[i].prior-pri;
}
for (i=0;i<nom;i++)
{
teksost[i].prior=teksost[i].prior+(80-pri);
}
teksost[nom].prior=80;
}
Правильная работа функции возможна только при стандартном распределении приоритетов ((IRQ8 - минимальный, IRQ0 - максимальный), поэтому она должна работать в связке с функцией DefaultPrior.
2.6.4 Автоцикл
Данная команда вводит вид установки приоритета по последнему обслуженному запросу. По этой команде устанавливается в нулевое состояние бит ISR, соответствующий последнему обслуженному запросу, и этому же номеру запроса присваивается низший уровень приоритета (дно приоритетного кольца).
На рисунке 16 изображена блок-схема алгоритма автоцикла.
Рисунок 16 - Блок-схема алгоритма автоцикла
bool check;
check=false;
if(((CheckBox17->Checked))&&(!(CheckBox18->Checked))
&&((CheckBox19->Checked)))
{
GetMasPrior();
for (i=0;i<8;i++)
{
if(vozr[i].isr->Caption=="1")
{
vozr[i].isr->Caption="0";
num=vozr[i].nom;
check=true;
break;
}
}
if(check==true)
{
DefaultPrior();
SetBottomPrior(num);
}
CheckTekProg();
}
2.6.5 Адресуемый цикл
Команда вводит вид установки статуса приоритетов по указанию, с выполнение обычного конца прерывания. По этой команде присваивается дно тому входу IRQ, номер которого, в виде двоично-десятичного кода, указан в разрядах 2-0 этой команды, при этом устанавливается в нулевое состояние соответствующий разряд ISR. Биты 7, 6 и 5 также должны быть выставлены в единичное положение.
Блок-схема алгоритма показана на рисунке 17.
Рисунок 17 - Блок-схема алгоритма адресуемого цикла
bool check1=false;
if(((CheckBox17->Checked))&&((CheckBox18->Checked))
&&((CheckBox19->Checked)))
{
nom=GetAddr();
for (i=0;i<8;i++)
{
if((teksost[i].nom==nom)&&(teksost[i].isr->Caption=="1"))
{
teksost[i].isr->Caption="0";
check1=true;
break;
}
}
if(check1==true)
{
DefaultPrior();
SetBottomPrior(nom);
}
CheckTekProg();
}
3. Экономическая эффективность проекта
В данной части дипломного проекта рассматриваются:
а) проектные затраты, включающие в себя затраты времени, заработной платы участников дипломного проекта, затраты на материалы, энергетические затраты;
б) затраты на внедрение и эксплуатацию создаваемой системы;
в) расчет эффективности созданной системы.
В данном дипломном проекте рассматривается создание лабораторного стенда для исследования и изучения контроллера приоритетных прерываний.
План предстоящих работ представим в таблице 5.
Таблица 5 -- План предстоящих работ
№ этапа |
Наименование этапа |
Срок исполнения, дни |
Исполнитель |
Коэф. загрузки |
|
1 |
Постановка задачи |
3 |
Руководитель проекта |
0,9 |
|
Инженер-разработчик |
0,1 |
||||
2 |
Обзор литературы |
8 |
Руководитель проекта |
0,2 |
|
Инженер-разработчик |
0,8 |
||||
3 |
Составление плана работы |
2 |
Руководитель проекта |
0,8 |
|
Инженер-разработчик |
0,2 |
||||
4 |
Обзор стендов кафедры АЭП и ПЭ |
7 |
Инженер-разработчик |
1 |
|
5 |
Обзор языков программирования и программного обеспечения |
5 |
Инженер-разработчик |
1 |
|
6 |
Разработка интерфейса программы |
9 |
Руководитель проекта |
0,1 |
|
Инженер-разработчик |
0,9 |
||||
7 |
Разработка алгоритмов обработки запросов на прерывание |
20 |
Руководитель проекта |
0,1 |
|
Инженер-разработчик |
0,9 |
||||
8 |
Отладка программы |
5 |
Инженер-разработчик |
1 |
|
9 |
Технико-экономическое обоснование проекта |
14 |
Консультант по эк. части |
0,2 |
|
Инженер-разработчик |
0,8 |
||||
10 |
Безопасность и экологичность проекта |
11 |
Консультант по экол. части |
0,2 |
|
Инженер-разработчик |
0,8 |
||||
11 |
Оформление пояснительной записки и графической части |
10 |
Руководитель проекта |
0,2 |
|
Инженер-разработчик |
0,8 |
||||
12 |
Подготовка доклада по проекту |
2 |
Руководитель проекта |
0,2 |
|
Инженер-разработчик |
0,8 |
Таким образом, занятость в разработке проекта составила 96 рабочих дней.
3.1 Расчет затрат на проектирование
В состав затрат на создание проекта лабораторного стенда для исследования и изучения контроллера приоритетных прерываний включается стоимость всех расходов для реализации комплекса работ, составляющих создание данной разработки.
Расчет затрат на проектирование осуществляется по формуле 1:
((1)
где -- затраты на оборудование, руб.;
-- затраты на амортизацию, руб.;
-- затраты на заработную плату, руб.;
-- отчисления на социальные взносы, руб.;
-- затраты на накладные расходы, руб.;
-- затраты на электроэнергию, руб.;
-- прочие затраты, руб.
3.1.1 Расчет затрат на оборудование и материалы
Затраты на оборудование и материалы складываются из затрат на приобретение оборудования и материалов для проектирования. В затраты также включаются транспортные и монтажные расходы на это оборудование:
, (2)
где - стоимость оборудования и материалов, руб;
- затраты на транспортировку оборудования, руб.;
- затраты на монтаж оборудования, руб.
Затраты на транспортировку составляют 0,7% от стоимости оборудования:
(3)
Стоимость монтажа составляет 0,5 % от стоимости оборудования:
(4)
Необходимое оборудование и материалы для разработки системы представим в таблице 6.
Таблица 6 -- Перечень оборудования и материалов, затраты на него
№ |
Наименование |
Цена за ед., руб. |
Кол-во, шт. |
Стоимость |
||||
общая, руб. |
трансп-ки, руб. |
монтажа, руб. |
балансо-вая, руб. |
|||||
1 |
Компьютер AMD A-XP 2700+(2,3Ghz)/ 1,28GB/Radeon X1650Pro 512MB/440GB/ DVD±RW |
20821,9 |
1 |
20821,9 |
145,8 |
104,1 |
21071,8 |
|
2 |
Монитор Samsung SyncMaster 940BF 2мс 19'' |
10079,0 |
1 |
10079,0 |
70,6 |
50,4 |
10199,9 |
|
3 |
Клавиатура BTC-5137 Black PS/2 |
224,0 |
1 |
224,0 |
1,6 |
1,1 |
226,7 |
|
4 |
Мышь проводная Logitech MX400, лазерная USB+PS/2 |
1220,0 |
1 |
1220,0 |
8,5 |
6,1 |
1234,6 |
|
5 |
Принтер Brother HL-2035R(A4 2400x600dpi 18ppm 8MB USB2.0) |
3250,0 |
1 |
3250,0 |
22,7 |
16,2 |
3289,0 |
|
6 |
Бумага для копировальных аппаратов Снегурочка А4, 500 листов |
160,0 |
1 |
160,0 |
1,1 |
0,8 |
161,9 |
|
Итого: |
35754,9 |
250,3 |
178,7 |
36183,9 |
3.1.2 Расчет затрат на амортизацию
Затраты на амортизацию оборудования рассчитываются по формуле 5:
, (5)
где - норма амортизации, %;
- балансовая стоимость оборудования, руб.;
- срок использования оборудования, дни;
- число дней в году.
Таблица 7 -- Затраты на амортизацию оборудования
№ |
Наименование |
Балансовая pуб. |
Норма |
Размер |
|
1 |
Компьютер AMD A-XP 2700+(2,3Ghz)/ 1,28GB/Radeon X1650Pro 512MB/440GB/ DVD±RW |
21071,8 |
15 |
805,3 |
|
2 |
Монитор Samsung SyncMaster 940BF 2мс 19'' |
10199,9 |
15 |
389,8 |
|
3 |
Клавиатура BTC-5137 Black PS/2 |
226,7 |
15 |
8,7 |
|
4 |
Мышь проводная Logitech MX400, лазерная USB+PS/2 |
1234,6 |
15 |
47,2 |
|
5 |
Принтер Brother HL-2035R(A4 2400x600dpi 18ppm 8MB USB2.0) |
3289,0 |
15 |
125,7 |
|
Итого: |
1376,7 |
3.1.3 Расчет затрат на заработную плату проектировщиков
Затраты на заработную плату рассчитываются на каждом этапе проекта и зависят от коэффициента загрузки работника на этапе, длительности этапа и оклада инженера-проектировщика и руководителя проекта. Так как расчет заработной платы осуществляется на 96 дня, расчет ведем через стоимость среднедневной оплаты труда.
Среднедневная оплата труда рассчитывается по формуле 6:
(6)
(руб./день)
(руб./день)
(руб./день)
Фонд заработной платы исполнителей дипломного проекта при восьмичасовом рабочем дне с учетом коэффициента загрузки каждого составит:
(7)
Общие затраты на заработную плату проектировщиков составит:
(8)
= 3334,46+22070,07+1477,25=26881,78
3.1.4 Расчет отчислений на страховые взносы
Отчисления на страховые взносы составляют 34% от заработной платы и состоят из отчислений в пенсионный фонд 26%, в федеральный фонд обязательного медицинского страхования (ФФОМС) 5,1%, и в фонд социального страхования (ФСС)2,9%.
(9)
3.1.5 Расчет накладных расходов
Накладные расходы принимаем в размере 7% от суммы фонда з/п и отчисления на страховые взносы:
. (10)
3.1.6 Расчет затрат на электроэнергию
Затраты на электроэнергию:
(11)
где Р -- мощность токоприемника, кВт;
Т -- время работы i-го токоприемника, ч;
-- коэффициент загрузки токоприемника по времени;
-- коэффициент загрузки токоприемника по мощности;
-- стоимость электроэнергии (одного ).
Так как компьютер используется на этапах 5 - 12, то общее время его использования составляет 76 дней. Продолжительность рабочего дня - 8 часов. Принтер используется на этапах 9, 10, 11, 12 и необходим только на заключительных стадиях, поэтому будем считать, что общее время его использования составит 10 дней. Причем продолжительность работы в день - около 20 минут.
Таблица 8 -- Затраты на электроэнергию
№ |
Наиме-нование |
Мощ-ность, кВт |
Время использо-вания, ч |
Цена за 1 руб. |
Коэф. загрузки по мощности |
Коэф. загрузки по времени |
Затраты на электро-энергию, руб. |
|
1 |
Компьютер AMD A-XP 2700+ (2,3Ghz)/ 1,28GB/ Radeon X1650Pro 512MB /440GB/ DVD±RW |
0,45 |
608 |
1,5 |
0,9 |
1 |
369,4 |
|
2 |
Монитор Samsung SyncMaster 940BF 2мс 19'' |
0,038 |
608 |
1,5 |
0,9 |
1 |
31,2 |
|
3 |
Принтер Brother HL-2035R(A4 2400x600dpi 18ppm 8MB USB2.0) |
0,45 |
80 |
1,5 |
1 |
0,04 |
2,2 |
|
Итого: |
402,8 |
3.1.7 Расчет прочих затрат
Прочие затраты принимаем 2% от суммы всех предшествующих затрат, кроме накладных:
(12)
3.1.8 Смета проектных затрат
Смету проектных затрат на разработку системы представим в таблице:
Таблица 9-- Смета затрат на проект
№ |
Наименование затрат |
Единица |
Значение |
|
1 |
Затраты на оборудование |
руб. |
36183,9 |
|
2 |
Затраты на амортизацию |
руб. |
1376,7 |
|
3 |
Затраты на заработную плату |
руб. |
26881,78 |
|
4 |
Отчисления на страховые взносы |
руб. |
9139,74 |
|
5 |
Накладные расходы |
руб. |
2521,5 |
|
6 |
Затраты на электроэнергию |
руб. |
402,8 |
|
7 |
Прочие затраты |
руб. |
1479,7 |
|
Итого: |
руб. |
77986,12 |
3.2 Расчет затрат на монтаж
Затраты на монтаж рассчитываются по формуле 13:
(13)
где _ затраты на заработную плату, руб.;
- отчисления на страховые взносы, руб.;
- затраты на накладные расходы, руб.;
- затраты на прочие расходы, руб.
3.2.1 Расчет затрат на заработную плату монтирующего персонала
В данном проекте введение лабораторного стенда в работу предусматривается установкой спроектированной программы на персональный компьютер. Для установки нового программного обеспечения потребуется учебный мастер. Средняя заработная учебного мастера составляет 5200 руб (оклад+30% районный коэффициент). Тогда часовая тарифная ставка учебного мастера:
Работы по созданию и установке планируется выполнить за 5 рабочих дней, то есть Тогда затраты на заработную плату персонала, участвующего в работах, составят:
3.2.2 Расчет отчислений на страховые взносы
Отчисления на страховые взносы составляют 34% заработной платы:
3.2.3 Расчет затрат на накладные и прочие расходы
Затраты на накладные расходы примем равными 10% от суммы затрат на заработную плату и страховые взносы:
Затраты на прочие расходы составляют 3% от суммы всех затрат, кроме накладных расходов:
3.2.4 Смета затрат на монтаж
Смета затрат на монтаж оформлена в таблице 10.
Таблица 10 - Смета затрат на монтаж
№ п/п |
Статья затрат |
Единица измерения |
Сумма затрат |
|
1 |
Затраты на заработную плату |
руб. |
1181,6 |
|
2 |
Страховые взносы |
руб. |
401,74 |
|
3 |
Затраты на накладные расходы |
руб. |
158,33 |
|
4 |
Затраты на прочие расходы |
руб. |
47,5 |
|
Итого: |
руб. |
1789,17 |
3.3 Расчет годовых эксплуатационных затрат
Годовые эксплуатационные затраты рассчитываются по формуле 14:
(14)
где - затраты на оборудование, руб;
- годовые затраты на амортизацию оборудования, руб;
- затраты на заработную плату обслуживающего персонала, руб;
- отчисления на страховые взносы, руб;
- накладные расходы, руб;
- годовые затраты на электроэнергию, руб;
- прочие затраты, руб.
3.3.1 Расчет затрат на оборудование
Так как лабораторный стенд выполнен в виде программной модели, устанавливаемой на персональный компьютер кафедры, то дополнительного оборудования не требуется. Следовательно, затраты на оборудование и его амортизацию будут равны 0.
3.3.2 Расчет затрат на заработную плату персоналу
Рассчитаем затраты на заработную плату () лаборанту, обслуживающему стенд. Стенд работает каждый рабочий день, то есть 160 часов в месяц.
Оклад лаборанта СибГИУ составляет 3631 рублей. Рассчитаем месячную заработную плату лаборанта, учитывая районный коэффициент - 1,3. Тогда заработная плата лаборанта в месяц, с учетом поправки на районный коэффициент, составляет:
Годовой фонд заработной платы составит:
3.3.3 Расчет отчислений на страховые взносы
Отчисления на страховые взносы составляют 34% от фонда заработной платы:
3.3.4 Расчет затрат на накладные расходы
Накладные расходы принимаем 7% от фонда заработной платы и страховых взносов:
3.3.5 Расчет затрат на электроэнергию
Если стенд будет работать каждый рабочий день, то получится 160 часов в месяц, а за год 1920 часов. По формуле (11) рассчитаем годовые затраты на электроэнергию.
3.3.6 Расчет прочих затрат
Прочие затраты принимаем в размере 2% от суммы всех предшествующих затрат, кроме накладных.
3.3.7 Смета затрат
Таблица 11 - Смета годовых эксплуатационных затрат
№ |
Наименование затрат |
Ед. измерения |
Значение показателя |
|
1 |
Затраты на оборудование |
руб. |
0 |
|
2 |
Годовые затраты на амортизацию |
руб. |
0 |
|
3 |
Затраты заработную плату |
руб. |
56643,6 |
|
4 |
Страховые взносы |
руб. |
19258,8 |
|
5 |
Затраты на накладные расходы |
руб. |
5313,2 |
|
6 |
Затраты на электроэнергию |
руб. |
Подобные документы
Проектирование механизма обработки прерываний. Контроллер прерываний Intel 82C59A. Ввод-вывод по прерыванию. Программируемый контроллер интерфейса Intel 82C55A. Роль процессора в обработке прерывания ввода-вывода. Обзор алгоритма обработки прерывания.
контрольная работа [8,0 M], добавлен 19.05.2010Обработка прерываний - сигналов о совершении некоторых событий в компьютере. Механизм обработки прерываний. Обработка исключений, описание реакции программы на ошибки выполнения. Общее понятие и виды исключительных ситуаций во время выполнения программы.
реферат [192,2 K], добавлен 10.11.2014Основные особенности функционирования программируемых логических контроллеров (ПЛК). Инструментальные средства построения методического процесса изучения ПЛК. Создание учебно-демонстрационного стенда на базе контроллеров Fatek и лабораторного практикума.
дипломная работа [4,0 M], добавлен 26.06.2012Проведение исследования опыта взаимодействия в сети. Методы улучшения согласования с пользователем web-сервиса. Особенность проектирования онлайн-приложения. Изучение разработки контроллеров и моделей. Характеристика создания интерфейса программы.
дипломная работа [1,3 M], добавлен 11.08.2017Разработка архитектуры специализированного микрокомпьютера, проектирование его основных структурных компонентов. Внутренний интерфейс, микропрограммное обеспечение. Включение системы прерываний в схему устройства управления, формат микрокоманды.
курсовая работа [2,4 M], добавлен 24.06.2012Прерывание и его природа. Контролер прерываний. Обработка прерываний в реальном режиме. Характеристики реального режима работы микропроцессора. Схема обработки прерываний в реальном режиме. Написание собственного прерывания. Разработка в общем случае.
доклад [347,0 K], добавлен 22.09.2008Принципы организации и особенности обработки прерываний на основе контроллера 8259A. Общая характеристика аппаратных средств системы прерываний PIC (Programmable Interrupt Controller). История разработки и порядок работы с технологией Plag and Play.
курсовая работа [305,1 K], добавлен 29.07.2010Применение, функции и элементы контроллеров. Функциональная структура системы управления движением поездов. Этапы проектирования контроллера для модели железной дороги на основе микропроцессора. Реализация машинной модели, блок-схема и листинг программы.
курсовая работа [744,6 K], добавлен 08.11.2009Принципы и алгоритмы обработки прерываний. Набор действий по реализации этапов обработки прерываний микропроцессора. Разработка структуры и алгоритма резидентной программы. Реализация программы на языке Ассемблер, методы её отладки и тестирования.
курсовая работа [348,7 K], добавлен 22.12.2014Создание и компиляция программ на ассемблере. Структура программ, использование специальных директив резервирования и инициализации данных. Организация ввода-вывода на ассемблере и организация вычислений. Команды передачи управления и обработки строк.
методичка [104,8 K], добавлен 02.12.2009