Дослідження режимів функціонування інтефейсу USB

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2010
Тип роботи:
Лабораторна робота
Предмет:
Інші

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра ЕОМ  Лабораторна робота №5-8 з Переферійних пристроїв на тему: «Дослідження режимів функціонування інтефейсу USB» МЕТА РОБОТИ: ознайомитися з процесом передачі даних через послідовний інтерфейс 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 м. Якщо ж пристрій не формулює особливих вимог до смуги пропускання, його можна підключити і неекранованим кабелем (який може бути тоншим і гнучкішим). Максимальна довжина кабелю для низькошвидкісних пристроїв - 5 м. Вимоги пристрою до живлення (діаметр провідників, споживана потужність) можуть зумовити необхідність використання кабелю меншої довжини. Із-за особливостей розповсюдження сигналу по кабелю число послідовно сполучених концентраторів обмежене шістьма (і сім'ю п'ятиметровими відрізками кабелю). Хост дізнається про підключення або відключення пристрою з повідомлення від концентратора (ця процедура називається опитом шини - bus enumeration). Потім хост привласнює пристрою унікальну адресу USB (1:127). Після відключення пристрою від шини USB його адреса стає доступною для інших пристроїв. Для індивідуального звернення до конкретних функціональних можливостей складеного пристрою застосовується 4-бітове поле кінцевої крапки. У низькошвидкісних пристроях за кожною функцією закріплюється не більше двох адрес кінцевих крапок: нульова кінцева крапка використовується для конфігурації і визначення стану USB, а також управління функціональним компонентом; а інша крапка - відповідно до функціональних можливостей компоненту. Пристрої з максимальною продуктивністю можуть підтримувати до 16 кінцевих крапок, резервуючи нульову крапку для завдань конфігурації і управління USB.Хост опитує всі пристрої і видає їм дозволу на передачу даних (розсилаючи для цього пакет-маркер - Token Packet). Таким чином, пристрої позбавлені можливості безпосереднього обміну даними - всі дані проходять через хост. Ця умова сильно заважала впровадженню інтерфейсу USB на ринок портативних пристроїв. В результаті в кінці 2001 року було прийнято доповнення до стандарту USB 2.0 - специфікація USB OTG (On-The-Go), призначена для з'єднання периферійних USB-устройств один з одним без необхідності підключення до хосту (наприклад, цифрова камера і фотопринтер). Пристрій, підтримуюче USB OTG, здатний частково виконувати функції хоста і розпізнавати, коли воно підключене до повноцінного хосту (на основі ПК), а коли - до іншого периферійного пристрою. Специфікація описує також протокол узгодження вибору ролі хоста при з'єднанні два USB. OTG-пристроїв. Дані на шині передаються транзакціями, інтервал між якими складає 1 мс. Передбачено чотири типи транзакцій. Передачі, що управляють, використовуються для конфігурації знов підключених пристроїв (наприклад, привласнення ним адреси USB) і їх компонентів. Пристрої з максимальною продуктивністю можуть бути налаштовані на роботу з конфігураційними повідомленнями завдовжки 8, 16, 32 або 64 байти (за умовчанням - 8 байт). Пристрої з низькою продуктивністю в змозі розпізнавати повідомлення, що управляють, завдовжки не більше 8 байт. Групова передача (bulk) використовується для адресної пересилки даних великого об'єму (до 1023 байт). Як приклад можна привести передачу даних на принтер або від сканера. Пристрої з низькою продуктивністю не підтримують цей режим. Передача даних переривання, наприклад, введених з клавіатури даних або відомостей про переміщення миші. Ці дані мають бути передані достатньо швидко для того, щоб користувач не відмітив ніякої затримки. Відповідно до специфікацій час затримки USB складає декілька мілісекунд. Ізохронні передачі (передачі в реальному масштабі часу). Пропускна спроможність і затримка доставки обмовляються до початку передачі даних. До ізохронних даних алгоритми корекції помилок непридатні (оскільки час на повторну їх ретрансляцію перевищує допустимий інтервал затримки). За один сеанс в такому режимі може бути передано до 1023 байт. Пристрої з низькою продуктивністю не підтримують цей режим. Слід також відзначити, що різними виробниками пропонувалися специфікації, що описують інтерфейс різних апаратних реалізацій контроллера USB. Фірмою Intel була запропонована специфікація UHCI (Universal Host Controller Interface), яка передбачає надзвичайно просту апаратну реалізацію контроллера USB. В рамках даної специфікації основні функції контролю і арбітражу шини покладаються на програмний драйвер. Альтернативна специфікація була запропонована компаніями Compaq, Microsoft і National Semiconductor - OHCI (Open Host Interface). Контроллери по специфікації OHCI володіють уніфікованим абстрактним інтерфейсом, що передбачає апаратну реалізацію більшості функцій, що управляють, що полегшує їх програмування. Схема USB:  Види роз'ємів USB  Розміщення провідників в USB Номер контакту Позначення Колір провідника  1 V BUS червоний  2 D- білий  3 D+ зелений  4 GND чорний   GND — ланцюг «корпусу» для живлення периферійних пристроїв, VBus — +5 В, також для ланцюгів живлення. Дані передаються по провідникам D+ і D− диференційно (стан 0 и 1 (в термінології офіційної документації diff0 и diff1 відповідно) визначаються по різниці потенціалів між лініями більше 0,2 В і при умові, що на одній із ліній (D− у випадку diff0 и D+ при diff1) потенціал відносно GND вище 2,8 В. Диференційний спосіб передачі є основним, проте не єдиним (наприклад, при иніціалізації пристрій повідомляє хосту про режим, що підтримується пристроєм (Full-Speed або Low-Speed), підтягуванням однієї із ліній данних до V_BUS через резистор 1.5 кОм (D− для режима Low-Speed і D+ для режима Full-Speed, пристрої, що працюють в режимі Hi-Speed, ведуть себе на цій стадії як пристрої в режимі Full-Speed). Також інколи навколо проводу присутня волокниста обмотка для захисту від фізичних пошкоджень. Флеш пам'ять Флеш пам'ять — це тип пам'яті, яка може на довготривалий час зберігати певну інформацію на своїй платі, зовсім не використовуючи живлення. В додаток можна сказати, що флеш пам'ять пропонує високу швидкість доступу до інформації (хоча вона не настільки висока як у DRAM) і кращий опір до кінетичного шоку, ніж у вінчестерах. Ці характеристики пояснюють популярність флеш пам'яті для приладів, що залежать від батарейок. Іншою приманкою флеш пам'яті є те, що коли вона скомпресована в суцільну «карту пам'яті», стає майже неможливо зруйнувати її стандартними фізичними методами, що дає змогу витримувати високий тиск і кип'ячу воду. Принцип дії Флеш пам'ять зберігає інформацію в масиві «комірок», кожна з яких традиційно зберігає по одному біту інформації. Кожна комірка - це транзистор із плаваючим затвором. Новіші пристрої (інколи їх ще називають багатозарядними пристроями) можуть містити більше, ніж 1 біт в комірці, використовуючи два чи більше рівні електричних зарядів, розташованих при плаваючому затворі комірки. У флеш пам'яті типу NOR кожна комірка схожа на стандартний MOSFET (оксидний напівпровідниковий польовий транзистор), але у ній є не один затвор, а два. Як і будь-який інший польовий транзистор, вони мають контрольний затвор (КЗ), а, окрім нього, ще й інший — плаваючий (ПЗ), замкнений всередині оксидного шару. ПЗ розташований між КЗ і підкладкою. Оскільки ПЗ відокремлений власним заізольованим шаром оксиду, будь-які електрони, що попадають на нього відразу потрапляють в пастку, що дозволяє зберігати інформацію. Захоплені плаваючим затвором електрони змінюють (практично компенсують) електричне поле контрольного затвору, що змінює порогову напругу (Vп) затвору. Коли з комірки «зчитують» інформацію, до КЗ прикладають певну напругу, в залежності від якої в каналі транзистора протікатиме або не протікатиме електричний струм. Ця напруга залежить від Vп комірки, яка в свою чергу контролюється числом захоплених плаваючим затвором електронів. Величина порогової напруги зчитується і передоковується в одиницю чи нуль. Якщо плаваючий затвор може мати кілька зарядових станів, то зчитування відбувається за допомогою вимірювання сили струму в каналі транзистора. Для запису інформації в комірку NOR необхідно зарядити плаваючий затвор. Цього досягають, пропускаючи через канал транзистора сильний струм, при якому виникають гарячі електрони, що мають достатню енергію для подолання оксидного шару. Для очищення плаваючого затвору від електронів (стирання інформації) до контрольного затвору прикладають значну напругу, яка створює сильне електричне поле. Захоплені плаваючим затвором електрони висмоктуються цим полем, тунелюючи через оксидний шар. У приладах з однотипною напругою (теоретично всі чіпи, які доступні нам на сьогоднішній день) ця висока напруга створюється генератором підкачки заряду. Більшість сучасних компонентів NOR пам'яті розділені на чисті сегменти, які часто називають блоками чи секторами. Всі комірки пам'яті в блоці повинні бути очищені одночасно. На жаль, метод NOR може в загальному випадку обробляти лише одну частину інформації типу byte чи word. NAND пам'ять використовує тунельну інжекцію для запису і тунельний випуск для вилучення. NAND'ова флеш пам'ять формує ядро легкого USB інтерфейсу запам'ятовуючих приладів, які також відомі як USB флешки. Тоді, коли розробники збільшують густину флеш приладів, індивідуальні комірки діляться і кількість електронів в будь-якій комірці стає дуже малою. Парування між суміжними плаваючими затворами може змінити характеристики запису комірки. Нові реалізації, такі як заряджені пастки флеш пам'яті, намагаються забезпечити кращу ізоляцію між суміжними комірками. Лабораторна робота № 5 Створення програми передавача даних через USB порт . МЕТА РОБОТИ: ознайомитися з процесом створення програми передавача даних через послідовний USB інтерфейс . Хід роботи Програма передавач даних через порт USB включає: Систему пошуку накопичувачів Систему відкриття текстових файлів Систему передачі текстових файлів Систему відображення графіка передачі даних закодовах в NRZI кодуванні  Рис. 1. Вікно програми передавача через USB Програма також відображає основні характеристики USB накописувача. Лабораторна робота № 6 Створення елементів програми для сканування USB-портів. МЕТА РОБОТИ: ознайомитися з процесом створення елементів програми для сканування USB-портів на наявність підключених пристроїв до послідовного USB інтерфейсу. Хід роботи Щоб створити елементи пошуку підключених пристроїв, я використав клас DriveInfo платформи .NET, а також його властивість DriveType, за допомогою яких визначаються підключені пристрої.  Код програми: listBox1.Items.Clear(); DriveInfo[] allDrives = DriveInfo.GetDrives(); foreach (DriveInfo d in allDrives) { if (d.DriveType.ToString() == "Removable") { listBox1.Items.Add(d.Name); } } Лабораторна робота № 7 Створення елементів програми для вибору, відкриття та запису даних черер USB-порт. МЕТА РОБОТИ: ознайомитися з процесом створення та налаштування основних параметрів програми передачі даних через послідовний USB інтерфейс. Хід роботи Щоб виконати, вибір, відкриття і запис даних використовується наступний програмний інтерфейс:  Лабораторна робота № 8 Відтворення передані посимвольних даних через USB порт у графічному вигляді. МЕТА РОБОТИ: ознайомитися з процесом формування та передачі постмвольних даних у графічному представленні в схемі кодування NRZI через послідовний USB інтерфейс. Хід роботи Метод кодування NRZI NRZI - Non Return to Zero Invertive (інверсне кодування без повернення до нуля) Цей метод є модифікованим методом Non Return to Zero (NRZ), де для подання 1 і 0 використовуються потенціали двох рівнів. У коді NRZ I також використовується 2 потенціалу, але його поточне значення залежить від попереднього. Якщо поточне значення біта "0", то отриманий потенціал повинен бути інверсією від попереднього, якщо значення біта "1" - такий же.  Оскільки код незахищений від довгих послідовностей "нулів" або "одиниць", то це може призвести до проблем синхронізації. Тому перед передачею, задану послідовність бітів рекомендується попередньо закодувати кодом передбачають скремблювання (скремблер призначений для додання властивостей випадковості переданої послідовності даних з метою полегшення виділення тактової частоти приймачем). Програма реалізує графік передачі даних закодованих за допомогою NRZI   Висновок: я ознайомився з процесом передачі даних через послідовний інтерфейс USB. Додаток using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using Zedgraph_using; using ZedGraph; namespace USB { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Zedgraph_using.Paint paint = new Paint(); double StartX; double top = 5; private void Form1_Load(object sender, EventArgs e) { StartX = paint.Paint_Start(0, zedGraphControl1, 6, -6); zedGraphControl1.Invalidate(); GraphPane pane = zedGraphControl1.GraphPane; pane.Title.Text = "USB 2.0"; pane.YAxis.Title.Text = "Рівень"; pane.XAxis.Title.Text = "Час"; } private void PaintMessage(ZedGraphControl zedGraphControl1, string Message) { char Pred = '1'; paint.Paint_Start(0, zedGraphControl1, 6, -6); GraphPane pane = zedGraphControl1.GraphPane; PointPairList LevelOne = new PointPairList(); for (double x = 0; x <= 1; x += 0.5) { LevelOne.Add(x, top); StartX = x; } LineItem LavelOne_line = pane.AddCurve("Start", LevelOne, Color.Black, SymbolType.None); for (int i = 0; i < 8; i++) { if (Pred == '1' && Message[i] == '1') { StartX = paint.One2One(StartX, zedGraphControl1); } if (Pred == '1' && Message[i] == '0') { StartX = paint.One2Zero(StartX, zedGraphControl1); } if (Pred == '0' && Message[i] == '1') { StartX = paint.Zero2One(StartX, zedGraphControl1); } if (Pred == '0' && Message[i] == '0') { StartX = paint.Zero2Zero(StartX, zedGraphControl1); } Pred = Message[i]; } zedGraphControl1.AxisChange(); zedGraphControl1.Invalidate(); } private string ACSII_2_NRZI(string ASCII) { string NRZI=""; char Pred = '1'; if (ASCII[0] == '1') { NRZI = NRZI + "1"; Pred = '1'; } else { NRZI = NRZI + "0"; Pred = '0'; } for (int i = 1; i < 8; i++) { if (ASCII[i] == '1') { NRZI = NRZI + Pred.ToString(); } else { if (Pred == '1') { NRZI = NRZI + "0"; Pred = '0'; } else { NRZI = NRZI + "1"; Pred = '1'; } } } return NRZI; } private void button1_Click(object sender, EventArgs e) { listBox1.Items.Clear(); DriveInfo[] allDrives = DriveInfo.GetDrives(); foreach (DriveInfo d in allDrives) { if (d.DriveType.ToString() == "Removable") { listBox1.Items.Add(d.Name); } } groupBox1.Enabled = true; } private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { if (listBox1.SelectedIndex != -1) { button4.Enabled = true; DriveInfo[] allDrives = DriveInfo.GetDrives(); foreach (DriveInfo d in allDrives) { if (d.DriveType.ToString() == "Removable" && listBox1.Items[listBox1.SelectedIndex].ToString() == d.Name) { textBox1.Text = d.Name; textBox2.Text = "USB Flash Drive"; if (d.IsReady == true) { textBox3.Text = d.VolumeLabel; textBox4.Text = d.DriveFormat; textBox5.Text = ((float)(d.TotalSize / 1073741824.0)).ToString() + " ГБ"; textBox6.Text = ((float)(d.TotalFreeSpace / 1073741824.0)).ToString() + " ГБ"; } if (textBox8.Text.IndexOf("txt") == -1) { textBox8.Text = d.Name; } else { textBox8.Text = textBox8.Text.Remove(0, textBox8.Text.IndexOf("\\") + 1); textBox8.Text = textBox8.Text.Insert(0, d.Name); } } } } } private void openFileDialog1_FileOk(object sender, System.ComponentModel.CancelEventArgs e) { if (listBox1.SelectedIndex != -1) textBox8.Text = listBox1.Items[listBox1.SelectedIndex].ToString(); textBox7.Text = openFileDialog1.FileName; textBox8.Text = textBox8.Text + openFileDialog1.FileName.Remove(0, openFileDialog1.FileName.LastIndexOf("\\") + 1); button2.Enabled = true; groupBox3.Enabled = true; groupBox4.Enabled = false; groupBox5.Enabled = false; } private void button4_Click(object sender, EventArgs e) { openFileDialog1.ShowDialog(); } private void button2_Click(object sender, EventArgs e) { textBox9.Text = ""; if (textBox7.Text != "") { Encoding enc = Encoding.GetEncoding(1251); string temp; FileStream fs1 = new FileStream(textBox7.Text, FileMode.Open, FileAccess.Read); StreamReader sr1 = new StreamReader(fs1, enc); while (!sr1.EndOfStream) { temp = sr1.ReadLine() + "\r\n"; textBox9.Text = textBox9.Text + temp; } sr1.Close(); } button5.Enabled = true; } private void button5_Click(object sender, EventArgs e) { File.Copy(textBox7.Text, textBox8.Text, true); groupBox4.Enabled = true; groupBox5.Enabled = true; comboBox1.Items.Clear(); for (int i = 0; i < textBox9.Text.Length; i++) { comboBox1.Items.Add(i); } comboBox1.Text = comboBox1.Items[0].ToString(); textBox10.Text = textBox9.Text[0].ToString(); textBox11.Text = paint.Convert_to_ASCII(textBox9.Text[0]); textBox12.Text = ACSII_2_NRZI(textBox11.Text); } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { textBox10.Text = textBox9.Text[comboBox1.SelectedIndex].ToString(); textBox11.Text = paint.Convert_to_ASCII(textBox9.Text[comboBox1.SelectedIndex]); textBox12.Text = ACSII_2_NRZI(textBox11.Text); } private void button6_Click(object sender, EventArgs e) { PaintMessage(zedGraphControl1, textBox12.Text); } } }
Антиботан аватар за замовчуванням

06.03.2013 23:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!