МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИНАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІНСТИТУТ КОМП’ЮТЕРНОЇ ТЕХНІКИ АВТОМАТИКИ ТА МЕТРОЛОГІЇ
ЗВІТ ЛАБОРАТОРНИХ РОБІТ №5-8
З ПРЕДМЕТУ: «Периферійні пристрої»
ТЕМА: «Дослідження режимів функціонування інтерфейсу USB»
Львів – 2012
Мета роботи: ознайомитися з процесом передачі даних через послідовний інтерфейс USB.
Теоретичні відомості
USB (англ. Universal Serial Bus, абревіатура читається ю-ес-бі) — укр. універсальна послідовна шина, призначена для з'єднання периферійних пристроїв. Шина USB представляє собою послідовний інтерфейс передачі даних для середньошвидкісних та низькошвидкісних периферійних пристроїв. Для високошвидкісних пристроїв на сьогодні кращим вважається FireWire. USB-кабель представляє собою дві виті пари: по одній парі відбувається передача даних в кожному напрямку (диференціальне включення), а інша пара використовується для живлення периферійного пристрою (+5 В). Завдяки вбудованим лініям живлення, що запезпечують струм до 500 мА, USB часто дозволяє використовувати пристрої без власного блоку живлення (якщо ці пристрої споживають струм потужністю не більше 500 мА). До одного контролера шини USB можно під'єднати до 127 пристроїв через ланцюжок концентраторів (вони використовують топологію «зірка»). На відміну від багатьох інших стандартних роз’ємів, для USB характерні довговічність та механічна міцність. Інтерфейс USB є послідовною, напівдуплексною, двонаправленою шиною.| Шина дозволяє підключити до ПК до 127 фізичних пристроїв. Кожен фізичний пристрій може, у свою чергу, складатися з декількох логічних (наприклад, клавіатура з вбудованим манипулятором-трекболом). Кабельна розводка USB починається з вузла (host). Хост володіє інтегрованим кореневим концентратором (root hub), який надає декілька роз'ємів USB для підключення зовнішніх пристроїв. Потім кабелі йдуть до інших пристроїв USB, які також можуть бути концентраторами, і функціональних компонентів (наприклад, модем або акустична система). Концентратори часто вбудовуються в монітори і клавіатури (які є типовими складеними пристроями). Концентратори можуть містити до семи "витікаючих" портів. Для передачі сигналів шина USB використовує чотирипровідною інтерфейс. Одна пара провідників ("+5В" і "загальний") призначена для живлення периферійних пристроїв з навантаженням до 500 мА. Дані передаються по іншій парі ("D+" "D-"). Для передачі даних використовується диференціальна напруга до 3 В (з метою зниження впливу шуму) і схема кодування NRZI (що позбавляє від необхідності виділяти додаткову пару провідників під тактовий сигнал). Всі концентратори повинні підтримувати на своїх витікаючих портах пристрої обох типів, не дозволяючи високошвидкісному трафіку досягати низькошвидкісних пристроїв. Високопродуктивні пристрої підключаються за допомогою екранованого кабелю, довжина якого не повинна перевищувати 3 м.
USB 1.0
Версія представлена в січні 1995 року.
Технічні характеристики:
високошвидкісне з'єднання — 12 Мбіт/с
максимальна довжина кабеля для високошвидкісного з'єднання — 3 м
низькошвидкісне з'єднання — 1,5 Мбіт/с
максимальна довжина кабеля для низькошвидкісного з'єднання — 5 м
максимальна кількість пристроїв підімкнення (враховуючи) концентратори — 127
можливість підключення пристроїв з різними швидкостями обміну інформацією
напруга живлення для переферійних пристроїв — 5 В
максимальний струм споживання на один пристрій — 500 мA
USB 1.1
Випущено в вересні 1998. Виправлені проблеми виявлені у версії 1.0, в основному пов'язані з концентраторами. Інтерфейс USB 1.1 декларує два режими:1)низькошвидкісний підканал (пропускна спроможність - 1,5 Мбіт/с), призначений для таких пристроїв, як миші і клавіатури;
2)високопродуктивний канал, що забезпечує максимальну пропускну спроможність 12 Мбіт/с, що може використовуватися для підключення зовнішніх накопичувачів або пристроїв обробки і передачі аудио- і відеоінформації.
USB 2.0
Версія випущена в квітні 2000 року. USB 2.0 відрізняється від USB 1.1 лише швидкістю передачі, яка зросла та незначними змінами в протоколі передачі даних для режиму Hi-speed (480 Мбіт/сек). Існує три швидкості роботи пристроїв USB 2.0:
Low-speed 10—1500 Кбіт/c (використовується для інтерактивних пристроїв: клавіатури, мишки, джойстики)
Full-speed 0,5—12 Мбіт/с (аудіо/відео пристрої)
Hi-speed 25—480 Мбіт/с (відео пристрої, пристрої зберігання інформації)
Технологія USB On-The-Go розширює специфікації USB 2.0 для легкого з'єднання між собою переферійних USB-пристроїв безпосередньо між собою без задіяння комп'ютера. Прикладом застосування цієї технології є можливість підключення фотоапарату напряму до друкарки. Цей стандарт виник через об'єктивну потребу надійного з'єднання особливо поширених USB-пристроїв без застосування комп'ютера, який в потрібний момент може і не виявитися під руками.
Бездротовий USB
Офіційна специфікація протоколу була анонсована в травні 2005 року. Дозволяє організовувати бездротовий зв'язок з високою швидкістю передачі даних до 480 Мбіт/с на відстані 3 метрів та до 110 Мбіт/с на відстані 10 метрів. Для безпровідного USB часом використовують абревіатуру WUSB. Розробник протоколу USB-IF віддає перевагу практиці іменування протокол офіційно Certified Wireless USB.
USB 3.0
Протокол USB 3.0 знаходиться на стадії розробки і буде передавати сигнал за допомогою оптоволоконного кабелю USB 3.0 планується створити зворотно сумісним з USB 2.0 та USB 1.1
Створенням USB 3.0 займаються компанії: Intel, Microsoft, Hewlett-Packard, Texas Instruments, NEC и NXP Semiconductors.
Теоретична пікова пропускна здатність складає 4,8 Гбіт/с.
Види роз'ємів USB
Розміщення провідників в USB
Номер контакту
Позначення
Колір провідника
1
V BUS
червоний
2
D-
білий
3
D+
зелений
4
GND
чорний
Флеш пам'ять
Флеш пам'ять — це тип пам'яті, яка може на довготривалий час зберігати певну інформацію на своїй платі, зовсім не використовуючи живлення. В додаток можна сказати, що флеш пам'ять пропонує високу швидкість доступу до інформації (хоча вона не настільки висока як у DRAM) і кращий опір до кінетичного шоку, ніж у вінчестерах. Ці характеристики пояснюють популярність флеш пам'яті для приладів, що залежать від батарейок. Іншою приманкою флеш пам'яті є те, що коли вона скомпресована в суцільну «карту пам'яті», стає майже неможливо зруйнувати її стандартними фізичними методами, що дає змогу витримувати високий тиск і кип'ячу воду.
Принцип дії Флеш пам'ять зберігає інформацію в масиві «комірок», кожна з яких традиційно зберігає по одному біту інформації. Кожна комірка - це транзистор із плаваючим затвором.
NAND'ова флеш пам'ять формує ядро легкого USB інтерфейсу запам'ятовуючих приладів, які також відомі як USB флешки.
Транзакції
Всі обміни (транзакції) по USB складаються з трьох пакетів. Кожна транзакція планується і починається з ініціативи хост-контролера, який посилає маркер-пакет (тобто пакет типу token). Він описує тип і напрям передачі, адресу пристрою USB і номер кінцевої точки. У кожної транзакції можливий обмін тільки між пристроєм (його кінцевою точкою) і хостом. Адресується маркером пристрій розпізнає свою адресу і готується до обміну. Джерело даних, визначений маркером, передає пакет даних або повідомлення про відсутність даних, призначених для передачі. Після успішного прийому пакета приймач даних посилає пакет підтвердження (тобто пакет типу Handshake).
Де А - передача даних від хоста, Б - передача даних хосту.
Периферійний пристрій не може видавати на шину-яку інформацію за власною ініціативою і не може самостійно посилати запити переривань.
Специфікація USB визначає наступні типи транзакцій.
Передача команди:
хост посилає маркер SETUP, що містить номер функції і номер кінцевої точки, для якої призначена команда;
хост посилає вибраній кінцевій точці пакет даних зі скинутим бітом синхронізації (тобто пакет типу Data0), що містить 8-байтним код команди;
функція посилає хосту пакет підтвердження.
Ізохронна передача даних:
хост посилає маркер OUT, що містить номер функції і номер кінцевої точки, для якої призначені дані;
хост посилає вибраній кінцевій точці пакет даних зі скинутим бітом синхронізації (тобто пакет типу Data0).
Передача даних з підтвердженням:
хост посилає маркер OUT, що містить номер функції і номер кінцевої точки, для якої призначені дані;
хост посилає вибраній кінцевій точці пакет даних;
функція посилає хосту пакет підтвердження.
Ізохронний прийом даних:
хост посилає маркер IN, що містить номер функції і номер кінцевої точки, від якої запитуються дані;
обрана кінцева точка передає хосту пакет даних зі скинутим бітом синхронізації (тобто пакет типу Data0).
Прийом даних з підтвердженням:
хост посилає маркер IN, що містить номер функції і номер кінцевої точки, від якої запитуються дані;
обрана кінцева точка передає хосту пакет даних або пакет підтвердження (NAK - дані не готові, STALL - збій);
якщо хост отримав пакет даних, він посилає пакет підтвердження.
Хід роботи:
Створила програму для передачі даних через послідовний USB інтерфейс, яка має наступний вигляд (рис.1):
Рис.1.
Для того щоб почати передачу, спочатку потрібно знайти пристрій підключений через USB порт, його можна вибрати з випадаючого списку «Пошук драйвера». Після цього можна працювати з цим пристроєм. В даній програмі можна відкривати текстові файли та зберігати їх, натискаючи на кнопки «Відкрити» та «Зберегти» відповідно. Після натиснення на кнопку «Відкрити» вікно програми набуде наступного вигляду (рис.2):
Рис.2.
Помітно, що є можливість редагування тексту. Щоб закрити редактор потрібно натиснути на кнопку «Закрити» і після цього вікно програми набуде попереднього вигляду.
Також є можливість копіювання та переміщення файлів. Для того, щоб скопіювати файл потрібно натиснути на кнопку «Копіювати» (вікно програми набуде вигляду зображеного на рис.3.). Після цього потрібно вибрати звідки копіювати файл та який саме, а потім куди та яка буде його назва, для підтвердження копіювання натискаємо кнопку «Виконати копіювання». Для переміщення файлу – кнопка «Перемістити», вигляд вікна та послідовність дій для виконання цієї команди аналогічні, для підтвердження переміщення – кнопка «Виконати переміщення».
Рис.3.
Для виходу з програми потрібно натиснути на кнопку «Вихід».
Часові діаграми:
Символи і їх значення, за якими я побудувала часові діаграми:
П 1 1 0 0 1 1 1 1
е 1 1 1 0 0 1 0 1
т 1 1 1 1 0 0 1 0
р 1 1 1 1 0 0 0 0
у 1 1 1 1 0 0 1 1
н 1 1 1 0 1 1 0 1
я 1 1 1 1 1 1 1 1
к 1 1 1 0 1 0 1 0
П
е
т
р
у
н
я
к
Висновки: виконавши поставлене завдання, я ознайомилась з процесом передачі даних через послідовний інтерфейс USB; створила програму передавача даних через послідовний USB інтерфейс, в якій передбачено сканування USB-портів на наявність підключених пристроїв до послідовного USB інтерфейсу, налаштування основних параметрів програми передачі даних через послідовний USB інтерфейс; а також ознайомилася з процесом формування та передачі посимвольних даних у графічному представленні в схемі кодування NRZI через послідовний USB інтерфейс.
Додаток:
Лістинг програми:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ComCtrls, Vcl.FileCtrl;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Memo1: TMemo;
SpeedButton2: TSpeedButton;
Edit1: TEdit;
DriveComboBox1: TDriveComboBox;
SpeedButton3: TSpeedButton;
SpeedButton1: TSpeedButton;
SpeedButton4: TSpeedButton;
DirectoryListBox1: TDirectoryListBox;
FileListBox1: TFileListBox;
Edit2: TEdit;
DriveComboBox2: TDriveComboBox;
DriveComboBox3: TDriveComboBox;
DirectoryListBox2: TDirectoryListBox;
FileListBox2: TFileListBox;
Label1: TLabel;
SpeedButton5: TSpeedButton;
Label2: TLabel;
Label3: TLabel;
SaveDialog1: TSaveDialog;
SpeedButton6: TSpeedButton;
Label4: TLabel;
Label5: TLabel;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure FileListBox1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end; }
{procedure TForm1.SpeedButton2Click(Sender: TObject);
var FName: string;
begin
if OpenDialog1.Execute then
begin
FName:=Edit1.Text;
FName := OpenDialog1.FileName;
Memo1.Lines.LoadFromFile(FName);
end;
end; }
procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
OldErrorMode : Word;
OldDirectory : string;
begin
OldErrorMode := SetErrorMode(SEM_NOOPENFILEERRORBOX);
GetDir(0, OldDirectory);
i := 0;
while i <= DriveComboBox1.Items.count - 3 do begin {$I-} chdir(DriveComboBox1.Items[i][3] + ':\');
{$I+} if IoResult <>0 then DriveComboBox1.Items.delete(i) else inc(i);
end;
chdir(OldDirectory);
SetErrorMode(OldErrorMode);
end;
procedure TForm1.FileListBox1Click(Sender: TObject);
var FName: string;
begin
if OpenDialog1.Execute then
begin
FName:=Edit1.Text;
FName := OpenDialog1.FileName;
Memo1.Lines.LoadFromFile(FName);
end;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Label2.Visible:=true;
DriveComboBox2.Visible:=true;
DirectoryListBox1.Visible:=true;
FileListBox1.Visible:=true;
Edit1.Visible:=true;
Label3.Visible:=true;
DriveComboBox3.Visible:=true;
DirectoryListBox2.Visible:=true;
FileListBox2.Visible:=true;
Edit2.Visible:=true;
Label4.Visible:=true;
Label5.Visible:=True;
SpeedButton7.Visible:=true;
SpeedButton8.Visible:=false;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
var FName: string;
begin
SaveDialog1.FileName := 'lab_USB.txt';
if SaveDialog1.Execute then
begin
FName := SaveDialog1.FileName;
Memo1.Lines.SaveToFile(FName);
end;
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
Label2.Visible:=true;
DriveComboBox2.Visible:=true;
DirectoryListBox1.Visible:=true;
FileListBox1.Visible:=true;
Edit1.Visible:=true;
Label3.Visible:=true;
DriveComboBox3.Visible:=true;
DirectoryListBox2.Visible:=true;
FileListBox2.Visible:=true;
Edit2.Visible:=true;
Label4.Visible:=true;
Label5.Visible:=True;
SpeedButton8.Visible:=true;
SpeedButton7.Visible:=false;
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
var FName: string;
begin
Memo1.Visible:=true;
SpeedButton5.Visible:=true;
if OpenDialog1.Execute then
begin
FName:=Edit1.Text;
FName := OpenDialog1.FileName;
Memo1.Lines.LoadFromFile(FName);
end;
end;
procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
Memo1.Clear;
Memo1.Visible:=false;
SpeedButton5.Visible:=false;
end;
procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
CopyFile('f:\Текстові файли\lab_USB.txt', 'd:\POLITEX\lab_USB.txt', true);
end;
procedure TForm1.SpeedButton8Click(Sender: TObject);
begin
MoveFile('f:\Текстові файли\lab_USB.txt', 'd:\POLITEX\lab_USB.txt');
DeleteFile('f:\Текстові файли\lab_USB.txt');
end;
end.