ром для лінеаризації температурної характеристики, однак це потребуватиме додаткових

них розрахунків.

Оскільки звукова карта має стереовихід, то в показаних вище схемах можна підлозі чить максимум два керуючих напруги для зовнішніх пристроїв. Тим не менш, можна рас ширити кількість вихідних сигналів, керованих з лінійного виходу звукової карти. Для цього буде потрібно створити трохи більш складну схему такого інтерфейсу. Розробимо влаштуй ство, що дозволяє отримати з одного і того ж звукового сигналу 4 виходи управління.

Для цього скористаємося схемотехнічними рішенням, заснованим на застосуванні ак тивних фільтрів. Перш ніж коротко описати суть застосування активних фільтрів, трохи зупинимося на розкладанні безперервного періодичного сигналу на гармонійні зі складової, тобто на синусоїдальні і косінусоідальное складові. Цей метод називається ється розкладанням в ряд Фур’є і заснований на тому, що сигнал прямокутної форми містить безліч гармонік різної амплітуди, причому найбільшою амплітудою володітиме гармонійна складова на частоті імпульсів. Не заглиблюючись в теорію, вишеізложен ное можна сформулювати так: будь-який безперервний складний сигнал несинусоїдальної форми в загальному випадку включає нескінченне число гармонійних складових, амплітудою та й частота яких може бути визначена при розкладанні такого сигналу в ряд Фур’є.

Так, наприклад, послідовність прямокутних імпульсів, наступних з частотою

1000 Гц, буде, в загальному випадку, містити різні гармоніки сигналу, але найбільший внесок вноситиме складова на частоті 1000 Гц. Не вдаючись у деталі, для імпульсної послідовності f (x) одиничної амплітуди розкладання в ряд Фур’є можна представити сумою непарних гармонік синусоїдальних складових виду

4/π × [sin(x)/1 + sin(3x)/3 + sin(5x)/5 + . . . ]

З формули легко побачити, що найбільше значення амплітуди, рівне 4 / π, має ос новних гармоніка сигналу, наступна (на частоті, в 3 рази вище основної) має амплітуду в 3 рази менше і т. д.

Якщо, наприклад, прямокутні імпульсні сигнали частотою 1000 Гц подати на вхід

активного вузькосмугового фільтра, налаштованого для пропускання саме цієї частоти, то на його виході максимальну амплітуду матиме синусоїдальний сигнал з частотою 1000 Гц, в той час як інші складові будуть значно, або майже повністю, ослаблені. Іншими словами, на виході такого фільтра буде присутній синусоїда частоти 1000 Гц, і, можливо, невеликі сигнали вищих гармонік. Схема активного вузькосмугового фільтра для частоти 1000 Гц показана на рис. 5.19.

Це один з варіантів популярних фільтрів типу Салена Ки. Крім того, що дана схема виділяє з імпульсної послідовності синусоїдальний сигнал частотою 1000 Гц, вона і підсилює його в кілька раз (теоретичний коефіцієнт посилення цієї схеми при ідеальному узгодженні дорівнює 10, але реальний може бути дещо менше, до того ж вплив надає і швидкість наростання вихідного сигналу конкретного операційного підсилювача). Для розрахунку активних фільтрів є багато безкоштовних програм провідних фірм виробників (Texas Instrument, Microchip і т. д.), за допомогою яких, не вникаючи в досить складні математичні розрахунки, можна за заданими характеристиками опреде лити значення резисторів і конденсаторів активного фільтра.

Отриманий на виході фільтра синусоїдальний сигнал можна за допомогою діодного амп літудние детектора перетворити в сигнал постійного струму і використовувати для управління ня навантаженням, наприклад, включення / вимикання електродвигуна постійного струму. При заходів такої схеми управління показаний на рис. 5.20.

Рис. 5.19

Схема однополюсного вузькосмугового фільтра для частоти 1000 Гц

На рис. 6.8 показана багаторівнева структура програмного забезпечення шини USB. У цій схемі class (клас) являє собою групу пристроїв, що мають загальні харак теристики. Такі пристрої можуть контролюватися драйвером класу пристроїв. Примі рами класів пристроїв є запам’ятовуючі пристрої, комунікаційні та аудіопристрої, а також пристрої користувача. Можлива ситуація, коли один і той же устрій ство може належати відразу до декількох класів. Якщо у вашій системі є USB пристрій, що відноситься до якогось класу, то розробляти для нього драйвер немає необхідності. У цьому випадку може виникнути тільки необхідність використовувати яке або спеціальне властивість такого пристрою, що, можливо, зажадає написання драйві ра фільтра, який розташовуватиметься в стеку драйверів USB над драйверами нижнього рівня.

На самому нижньому рівні цієї моделі взаємодія здійснюється між хост кон троллером, підключеним до шини PCI, і шинним інтерфейсом фізичного пристрою USB. На другому рівні взаємодія здійснюється між системним програмним забезпе чением і логічним пристроєм, що представляє більш високий рівень абстракції. Нарешті, на третьому рівні здійснюється обмін даними між клієнтським програм ним забезпеченням і функцією, яка представляється цим пристроєм.

Фактично весь інформаційний потік проходить через фізичний канал на са

мом нижньому рівні, тому подання інформаційних потоків на двох верхніх

рівнях є віртуальним і виділено для того, щоб краще зрозуміти специфіку ин

формаційного обміну.

В операційних системах Windows нижній рівень інформаційної моделі представ льон групою драйверів пристроїв. У цю групу входить драйвер хост контролера (зазвичай це usbuhci.sys), драйвер кореневого концентратора (usbhub.sys) і бібліотека динамічного компонування usbui.dll, використовувана системою і клієнтськими драйверами (usbd.sys). Всі вме сте ці драйвери керують апаратними сполуками, створюючи можливості для реалі зації програмних каналів для взаємодії на більш високих рівнях.

Стандарт USB визначає чотири типи передачі даних:

Control – передача і прийом сигналів (використовується для конфігурує вання знову приєднаних пристроїв). Цей тип гарантує обмін даними без втрат, причому розмір даних може бути менше або дорівнює 8, 16, 32 або 64 байта;

Bulk – передача і прийом невеликих пакетів неструктурованих даних. Цей тип гарантує обмін даними без втрат, причому розмір даних може бути менше або дорівнює 8, 16, 32 або 64 байта. Обмін даними цього типу найчастіше здійснюється ється при роботі з принтерами або сканерами;

Interrupt – передача даних, що містять інформацію (наприклад, певні

символи), що дозволяє отримати відгук із заздалегідь відомими характеристиками. Цей тип гарантує обмін даними без втрат, причому розмір даних може бути менше або дорівнює 64 байтам;

Isochronous – передача або прийом великих обсягів неструктурованих блоків даних з певною, заздалегідь встановленою періодичністю. Цей тип не гаран тірует відсутність втрат при передачі даних, розмір даних може бути менше або дорівнює 1023 байта. Типовим прикладом даних цього типу є голосова інформація.

Кожен канал передачі даних працює тільки з одним із зазначених типів передавав

мих даних.

Коли користувальницький додаток відправляє або отримує дані через програм ний канал USB, то викликається відповідна функція Win API, яка за допомогою Менеджера введення виведення операційної системи звертається до драйвера пристрою. Менед жер введення виведення формує пакет запиту на ввід висновок (I / O Request Packet, IRP) і пере дає його драйверу. Основною функцією драйвера є передача даних через програм ний канал пристрою USB, при цьому дані одного з типів, розглянутих нами раніше, передаються як сукупність транзакцій.

Інформація у вигляді мікрокадров (microframes) кожні 125 мікросекунд передається по шині USB 2.0 (або кожну мілісекунду для USB 1.1). Кожна транзакція, в свою чергу, розбивається на фази (одну або більше). Кожна фаза може бути представлена ​​одним з пакетів:

маркерний пакет або просто маркер (token) – передається хост контролером всім сконфігурованим на шині пристроїв. Маркер включає в себе адресу влаштуй ства і, в багатьох випадках, номер вузла. Тільки пристрій, що розпізнав адресу як власний, буде продовжувати обмін даними;

пакет даних (data) – передається або від хост контролера пристрою (запис дан

них) або приймається від пристрою (читання даних);

квитирование (handshake) – пакет, в який записується статусна інформація (інформація про стан обміну) – поміщається на шину USB або хост контролле ром, або пристроєм. Наприклад, у випадку успішного прийому інформації пристрій поміщає на шину пакет типу ACK. Якщо пристрій зайнятий, поміщається пакет NAK. Якщо дані успішно прийняті, але з якихось причин порушена логіка обміну, то пристрій встановлює пакет STALL.

Схему однієї транзакції при обміні даними можна представити так, як показано на рис. 6.9.

Рис. 6.9

Схема однієї транзакції при обміні даних

Якщо уважно проаналізувати пакети квитирования, то можна виявити, що в них немає детального опису характеру помилки на шині. Хост контролер або пристрій USB не виконують детальний аналіз помилок – якщо така є, то це означає, що транзакцію слід виконати повторно.

Більш детальну інформацію за стандартом USB можна знайти в численних джерел ках в Інтернеті і в описі самого стандарту, а зараз ми розглянемо особливості про програмування пристроїв USB.

Джерело: Магда Ю. С. Комп’ютер в домашній лабораторії. – М.: ДМК Пресс, 2008. – 200 с.: Іл.