- •Оглавление
- •Организация системы ввода-вывода вычислительной системы ...... 10
- •Способы обмена информацией между устройствами
- •Аппаратные интерфейсы вычислительных систем ..................................... 68
- •Интерфейс rs-485 ........................................................................................... 175
- •Введение
- •Организация системы ввода-вывода вычислительной системы
- •Основы архитектурной организации вычислительной системы
- •1.1.2 Достоинства и недостатки Принстонской архитектуры
- •1.1.1 Принципы Фон-Неймановской архитектуры
- •1.1.3 Достоинства и недостатки Гарвардской архитектуры
- •Организация вычислительной системы. Элементы вычислительного ядра и системы ввода-вывода
- •1.2.1 Процессор и память
- •1.2.2 Контроллер ввода-вывода
- •1.2.3 Процессор ввода-вывода
- •1.2.4 Интерфейс и протокол
- •1.2.5 Порт ввода-вывода
- •1.2.5.1 Адресное пространство портов ввода-вывода: единое с оперативной памятью и раздельное
- •1.2.5.2 Организация конфигурируемых параллельных портов вводавывода
- •Принципы организации систем ввода-вывода
- •1.3.1 Организация свв универсальных эвм
- •1.3.2.1 Порты ввода-вывода
- •1.3.2.2 Дискретные порты ввода-вывода
- •1.3.2.3 Однонаправленные порты
- •1.3.2.4 Двунаправленные порты и порты с альтернативной функцией
- •1.3.2.7 Устройства сопряжения с объектом (усо) управляющих эвм
- •Способы обмена информацией между устройствами вычислительной системы
- •Программно управляемые:
- •В режиме прямого доступа (без участия центральных процессоров).
- •Синхронный обмен данными
- •Асинхронный обмен данными с программной проверкой готовности
- •Асинхронный обмен данными с аппаратной проверкой готовности
- •2.3.1 Система прерываний
- •2.3.4 Аппаратный полинг
- •2.3.5 Характеристики систем прерываний
- •2.3.6 Контроллер прерываний 8259a
- •Организация обмена в режиме прямого доступа
- •2.4.1 Общие принципы организации пдп
- •Аппаратные интерфейсы вычислительных систем
- •Характеристики аппаратных интерфейсов
- •Функции аппаратных интерфейсов
- •Классификация аппаратных интерфейсов
- •Системные интерфейсы.
- •Стандартные периферийные интерфейсы.
- •Малые периферийные интерфейсы.
- •Понятие интерфейсных систем
- •Реализация аппаратных интерфейсов: проблемы и технические решения
- •3.5.1 Электромагнитные помехи
- •3.5.2 Характеристики линии связи
- •3.5.3.1 Коаксиальный кабель
- •3.5.3.2 Витая пара
- •3.5.3.3 Плоский кабель
- •3.5.3.4 Полосковые линии связи
- •3.5.5 Симметричная и несимметричная схема передачи сигналов
- •3.5.5.1 Дифференциальный сигнал
- •3.5.5.3 Симметричная передача сигнала
- •3.5.6.1 Потенциальный код без возвращения к нулю
- •3.5.6.2 Метод биполярного кодирования с альтернативной инверсией
- •3.5.6.3 Потенциальный код с инверсией при единице
- •3.5.6.4 Биполярный импульсный код
- •3.5.6.5 Манчестерский код
- •3.5.6.6 Потенциальный код 2b1q
- •3.5.7 Приемопередатчик последовательного интерфейса
- •3.5.8 Особенности параллельных интерфейсов
- •3.5.9 Мультиплексирование, конвейеризация, блочная передача
- •3.5.10.2 Реализация гальванической изоляции дискретного выхода модуля ввода-вывода sdx-09
- •3.5.10.3 Реализация гальванической изоляции дискретного входа модуля ввода-вывода sdx-09
- •3.5.10.4 Реализация гальванической изоляции rs-232 в контроллере sdk-1.1
- •3.5.10.5 Технология iCoupler фирмы Analog Devices
- •3.5.11 Горячее подключение и автоконфигурирование
- •3.5.11.1 Горячее подключение
- •3.6 Внутрисистемный интерфейс amba
- •3.6.3 Периферийный интерфейс amba apb
- •Idle – устройство не готово, шина находится в исходном состоянии.
- •3.7 Системные интерфейсы
- •3.7.1 Интерфейс pci
- •3.7.2 Интерфейс pci Express
- •3.8 Стандартные периферийные интерфейсы
- •3.8.1 Интерфейс scsi
- •3.8.1.8 Команды scsi
- •3.8.3 Сравнение sas и параллельного scsi
- •3.8.4 Сравнение sas и sata
- •3.9 Малые периферийные интерфейсы
- •3.9.1 Интерфейс rs-232
- •3.9.1.1 Сигнальные линии последовательного интерфейса
- •3.9.1.2 Управление потоком
- •3.9.1.3 Разъемы и кабели
- •3.9.1.4 Формат последовательной передачи данных
- •3.9.1.5 Работа с последовательным каналом
- •3.9.2.1 Типы подключения к шине spi
- •3.9.2.2 Режимы работы шины spi
- •3.9.2.3 Достоинства шины spi
- •3.9.2.4 Недостатки шины spi 1. Больше линий, чем в i2c.
- •3.9.3 Интерфейс Centronics
- •3.9.4.1 Физический интерфейс Serial ata
- •3.10 Контроллерные сети
- •3.10.1 Интерфейс rs-485
- •3.10.1.1 Согласование и конфигурация линии связи
- •3.10.1.2 Защитное смещение
- •(Верхняя диаграмма), передача данных (средняя диаграмма), приѐм данных от устройства (нижняя диаграмма).
- •3.10.3 Интерфейс i2c
- •3.10.3.1 Концепция шины i2c
- •3.10.3.2 Реализация монтажного и и монтажного или
- •3.10.3.3 Принцип работы шины i2c
- •3.10.3.5 Подтверждение
- •3.10.3.6 Синхронизация
- •3.10.3.7 Форматы обмена данными по шине i2c (7-битный адрес)
- •3.10.3.8 Арбитраж
- •3.10.3.9 Достоинства шины i2c
- •3.10.4.1 Модель передачи данных
- •3.10.4.2 Протокол
- •3.11 Сети передачи данных систем обработки данных. Беспроводные сенсорные сети
- •3.11.1 Сети передачи данных
- •3.11.2 Беспроводные сенсорные сети
- •Приложение а. Система ввода-вывода учебного лабораторного стенда sdk-1.1
- •А.2 Состав стенда
- •А.3 Вычислительное ядро и система ввода-вывода
- •А.3.5.1 Матричная клавиатура
- •А.3.5.2 Жидкокристаллический индикатор
- •А .3.5.3 Светодиодные индикаторы
- •А.3.5.4 Звукоизлучатель
- •А.3.5.5 Дискретные входы-выходы
- •Приложение б. Комплекс лабораторных работ для учебного лабораторного стенда sdk-1.1 б.1 Лабораторная работа № 1 «Дискретные порты ввода-вывода»
- •Б.2 Лабораторная работа № 2 «Таймеры. Система прерываний»
- •Б.2.3.2 Пояснения для вариантов заданий с использованием звукового излучателя
- •(Слева) на принципиальной электрической схеме контроллера sdk-1.1
- •Б.3 Лабораторная работа № 3 «Последовательный интерфейс rs-232. Uart»
- •Б.4 Лабораторная работа № 4 «Клавиатура»
- •Б.5 Лабораторная работа № 5 «Жидкокристаллический индикатор»
- •Б.6 Лабораторная работа № 6 «Последовательный интерфейс i2c»
- •Приложение в. Проектирование и разработка программы
- •Приложение г. Требования к оформлению программ на языке Си г.1 Соглашения по идентификаторам
- •Г.2 Соглашения по самодокументируемости программ
- •Г.3 Соглашения по читаемости программ
- •Литература
Приложение г. Требования к оформлению программ на языке Си г.1 Соглашения по идентификаторам
Г.1.1 Подбор идентификаторов
А. Все идентификаторы должны выбираться из соображений читаемости и максимальной семантической нагрузки. Например:
const float Eps = 0.0001; // точность
unsigned short Sum; // сумма
unsigned char Message[ 20 ]; // сообщение
Неудачными можно считать идентификаторы:
const float UU = 0.0001; // точность unsigned short Kk; // сумма unsigned char Zz[ 20 ]; // сообщение
Б. Идентификаторы рекомендуется подбирать из слов английского языка. Например:
// выдает звуковой сигнал заданной частоты и длительности void Beep( unsigned short Hertz, unsigned short MSec ); // выдает True (1), если файл с именем FName существует unsigned char ExistFile( unsigned char* FName ); // признак окончания работы с программой unsigned char Done;
// размеры изделия (ширина, высота) unsigned short Width, Height;
Не очень удачными можно считать идентификаторы:
// выдает звуковой сигнал заданной частоты и длительности void Zvuk(unsigned short Chast, unsigned short Dlit ); // выдает True (1), если файл с именем Im существует unsigned char EstFile(unsigned char* Im ); // признак окончания работы с программой unsigned char Konec;
// размеры изделия (ширина, высота) unsigned short Shirina, Vysota;
Г.1.2 Написание идентификаторов
Существует два основных способа написания идентификаторов.
А. В любых идентификаторах каждое слово, входящее в идентификатор, писать, начиная с большой буквы, остальные буквы – маленькие.
Например:
-
float NextX, LastX;
// следующая и предыдущая итерация
char BeepOnError;
// подавать ли звуковой сигнал при
// неправильном вводе пользователя?
unsigned char FileName[ 20 ];
// стандартная функция модуля Graph; выдает описание
// ошибки использования графики по ее коду unsigned char* GraphErrorMsg( short ErrCode );
Б. В любых идентификаторах каждое слово, входящее в идентификатор, разделять символом ―_‖, при этом все буквы – маленькие.
Например:
-
float next_x, last_x;
// следующая и предыдущая итерация
char beep_on_error;
// подавать ли звуковой сигнал при
// неправильном вводе пользователя?
unsigned char file_name[ 20 ];
// стандартная функция модуля Graph; выдает описание
// ошибки использования графики по ее коду unsigned char* graph_error_msg( short err_code );
Г.2 Соглашения по самодокументируемости программ
Г.2.1 Комментарии
А. Комментарии в теле программы следует писать на русском языке и по существу так, чтобы программист, не участвовавший в разработке программы (но имеющий опыт работы на языке Си), мог без особого труда разобраться в логике программы, и, при необходимости, сопровождать данный программный продукт.
Б. Рекомендуется комментарии к программе писать после символов //, а /* и */ использовать при отладке программы как "заглушки" участков программного кода.
Г.2.2 Спецификация функций Для каждой пользовательской функции должна быть описана в виде комментария спецификация, содержащая следующую информацию [95]:
Назначение функции;
Описание семантики параметров-значений (параметров, передаваемых по значению).
Описание семантики параметров-переменных (параметров, передаваемых по ссылке).
Описание семантики возвращаемого значения.
Например:
/////////////////////////Gauss////////////////////////////// // Решение системы линейных алгебраических уравнений
// методом Гаусса.
// Вход:
// A - матрица коэффициентов системы; // B - столбец свободных членов системы; // Eps - точность вычислений.
// Выход:
// X - вектор решения;
// HasSolution - флаг, устанавливаемый в True, если
-
//
решение системы существует, и в False
//
во всех остальных случаях;
//
NumOfRoots
- число корней в решении системы, может
//
принимать значения:
//
0 - если решение системы не
//
существует,
//
MaxN - если решение системы
//
существует и единственно,
//
MaxInt - если существует бесконечное
//
множество решений;
//
Det
- значение определителя матрицы A;
//
AForReverse
- нижняя треугольная матрица,
//
полученная из A в результате
//
выполнения прямого хода алгоритма
//
Гаусса;
//
BForReverse
- столбец свободных членов, полученный
//
из B в результате выполнения
//
прямого хода алгоритма Гаусса.
// Результат: 0 - успешно,1 – ошибка.
//////////////////////////////////////////////////////////////
unsigned char Gauss( Matrix A, Vector B, float Eps, Vector* X, char* HasSolution, short* NumOfRoots, float* Det, Matrix* AForReverse,
Vector* BForReverse )
{ … return 0; … return 1;
}
Замечание:
Если функция реализует какой-либо вычислительный метод (например: нахождение площади фигуры методом трапеций, поиск минимума функции методом Ньютона и т.п.), рекомендуется в теле функции поместить комментарий с кратким описанием метода, либо ссылку на источник, где описан метод [95].
Г.2.3 Спецификация программного файла или модуля
Программный
файл или модуль должен начинаться со
спецификации в виде комментария,
содержащего следующую информацию [95]:
Идентификация проекта, к которому
принадлежит файл.
Назначение (название) и имя файла.
Версия файла.
Фамилия автора.
Описание модуля.
История изменений модуля.
Например:
/*--------------------------------------------------------------
Проект: ABC-1.0
Название: Математические расчеты
Файл: primes.c
Версия: 1.0.2
Автор: Иванов И.И.
Описание: Подсчет количества простых чисел.
Изменения:
----------------------------------------------------------------
N Дата Версия Автор Описание
---------------------------------------------------------------- 1 01.03.07 1.0.1 Иванов И.И. Расчет в промежутке [1..200].
2 05.07.07 1.0.2 Иванов И.И. Расчет в заданном пользователем промежутке.
--------------------------------------------------------------*/
Замечание:
После спецификации программного файла рекомендуется поместить комментарий с указаниями по запуску программы и работе с ней (указаниями по использованию модуля другими программистами) или ссылку на источник, который использован при составлении программы (модуля).
