Русские документы
Ежедневные компьютерные новости RSS rusdoc.ru  Найти :
• Новости
• Последние поступления
• Книжный магазин
  Hardware:
• Видеоустройства
• Системные платы
• Процессоры
• Мобильные устройства
• Аудиосистема
• Охлаждение системы
• Накопители информации
• КПК и ноутбуки
• Телефоны и связь
• Периферия
• Система
• Сети
• Разные устройства
 
  Programming:
• Web-разработка
• Языки программирования
• Технологии и теория
• Разработка игр
• Программная инженерия
 
  Software:
• Операционные системы
• Windows 7
• Базы данных
• Обзоры программ
• Графика и дизайн
   
  Life:
• Компьютерная жизнь
• Разные материалы
   
• Партнеры
• Публикация
• Правовая информация
• Реклама на сайте
• Обратная связь
• Экспорт в RSS Экспорт в RSS2.0
    Читать в Яндекс.Ленте



Как я делал USB устройство

Раздел: Hardware / Система @ 19.10.2010 | Ключевые слова: usb устройство usb версия для печати

Автор: nckma
Источник: habrahabr

Где-то когда-то я читал, что создатели первой спецификации USB намеревались сделать этот стандарт простым для реализации в железе за счет усложнения программного обеспечения. Таким образом цель была максимально удешевить производство и сделать USB устройства очень доступными. Сейчас можно сказать, что чипмейкерам это удалось, но так ли уж прост для реализации в железе этот стандарт? Боюсь, что ответ не очевиден.



Предположим мне нужно сделать свое простое USB устройство. Какие у меня есть варианты?

Вариантов несколько:

1. Использование внешних специальных микросхем, например, преобразователей USB-to-Serial. Уж пользоваться последовательным портом могут все. Компания FTDI выпускает такие микросхемы. Это и FT232R USB-UART и FT245R USB-FIFO. Использование этих микросхем делает разработку устройства очень простой, но немного увеличивает его стоимость.

2. Использование микроконтроллеров с встроенным интерфейсом USB. Такие микросхемы выпускает например Atmel (например микросхема AT90USB82). Хорошее решение, требует знания системы команд AVR и вообще микропроцессора AVR.

3. Использование микроконтроллеров AVR с программной эмуляцией USB интерфейса. Это знаменитая библиотека V-USB.

Нужно заметить, что выбирая любой из этих трех путей мы сильно упрощаем себе жизнь и на самом деле остаемся в неведении: «Трудно ли реализовать USB в железе?»

Здесь, под реализацией «в железе» я подразумеваю самый низкий уровень проектирования — схемотехнику.

Мне захотелось проверить саму возможность реализвации USB в «домашних условиях». Дело оказалось сильно не простым, но получилось!



Для своей реализации USB я взял плату Марсоход с ПЛИС Altera EPM240T100C5 (240 логических элементов). Ее схема вот.
Среда разработки Altera Quartus II v9.

Были написаны на языке Verilog: модуль приемника и передатчика, ядро USB — модуль решающий когда и что посылать. Все пакеты и дескрипторы были размещены во встроенной флеш памяти чипа CPLD.

Для своего устройства я взял idVendor=0x9FB компании Альтера (надеюсь они меня простят?) и idProduct=0x60A5 (с потолка).

Драйвер для Windows я не писал — взял из комплекта Microsoft Windows Driver Developer Kit пример драйвера BULKUSB.SYS и просто откомпилировал его. А вот INF файл пришлось менять — указывать свои ID производителя и ID продукта.

Программу для работы с устройством конечно пришлось писать.



Она может читать из устройства один байт и писать в устройство один байт. На плате Марсоход есть 8 светодиодов — теперь я могу их зажигать програмно. Еще на плате есть 4 кнопочки — теперь я могу программно читать из устройства их состояние. Немного, правда? Но эта штука уже реально может заменить, например, параллельный или последовательный порт — можно подключить какую нибудь самодельную «лампу настроения» или еще что-то.

Все исходные тексты программ, драйвера и проект для CPLD можно взять здесь.

Итого, мое простое устройство заняло в чипе CPLD 215 логических элементов.

Конечно, я не слишком следовал стандарту USB — я не делал проверку контрольных сумм принятых пакетов или проверку четности toggle. Тем не менее испытания показали вполне стабильную работу устройства в течении длительного времени.

Более подробная информация есть на сайте платы Марсоход.

Это интересно:








версия для печатиРаспечатать статью


Вернуться в раздел: Hardware / Система


Реклама:
Читать наc на:

Add to Google
Читать в Яндекс.Ленте






Rambler's Top100
© Copyright 1998-2012 Александр Томов. All rights reserved.