Цитата(Beneton @ Feb 22 2007, 18:49)

Есть такая задачка:
Требуется написать драйвер для USB устройства, которое будет преобразовывать некий аналоговый сигнал(!стерео) в цифровой, гнать его в комп(со скоростью ~3 мбит/сек)
При чем тут драйвер? И зачем его вообще писать? Готовых же полно :-)
Цитата(Beneton @ Feb 22 2007, 18:49)

То есть схема такая:
аналоговый сигнал -> Девайс -> цифра (->?как) комп (->?как) девайс -> аналог -> выход
суть вопроса: как мне лучше передать цифровой правый и левый каналы с девайса на комп и обратно?
есть два варианта:
1. чередовать биты - правый - левый и т.д.
2. чередовать пакеты по n бит правого потом столько же левого
Т.е. нужно определиться с аппаратной частью. Это и есть главная печка, от которой следует плясать. Имеем задачу: преобразовать аналог с помощью АЦП, передать данные в комп, там обработать и получить обработанные данные обратно для выдачи их на ЦАП. Если речь идет о 3 Мбит/сек, т.е. примерно о 400 Кбайт/сек, то исходя из этих требований следует выбрать микросхему. IMHO, уложиться в USB 1.1 будет трудновато, да и под завязку (что почти всегда не хорошо). Поэтому представляется, что оптимальным выбором стала бы микросхема USB 2.0 (и, конечно, фирмы Сайпресс ;-)
Далее. Как передавать два канала. Трудно сказать... Но на первый взгляд представляется, что наиболее просто и естественно было бы передавать значения отсчетов обеих каналов параллельно, т.е. левый-правый, левый-правый и т.д.
Цитата(Beneton @ Feb 22 2007, 18:49)

написать можно и первым и вторым способом, но требуется довольно высокая скорость передачи т.к. подразумевается обработка цифрового сигнала на компе в реальном времени.
Значит, однозначно USB 2.0.
Цитата(Beneton @ Feb 22 2007, 18:49)

Какой алгоритм эффективней?
Алгоритм передачи? Хм... IMHO, лучше всего "в лоб", т.е. порождается отдельный тред, который получает данные и отправляет их на обработку. Нужно только тщательно продумать синхронизацию обрабатываемых данных (чтобы скорость обработки была достаточна с некоторым разумным запасом).
Цитата(Beneton @ Feb 22 2007, 18:49)

что можно почитать по этому вопросу?
По вопросу USB или по написанию драйверов? И то, и то - тяжелая задача... Из личного опыта могу сказать, что для решения вашей задачи ни того, ни другого изучать не требуется :-) Вам нужно передать данные туда и обратно. На сравнительно невысокой скорости. Это легко решается без всякого трудоемкого изучения литературы. IMHO, после выбора элементной базы USB следует просто изучить материалы изготовителя, аппноты, pdf'ы всякие... Думаю, этого будет вполне достаточно.
Ну а если имеется желание/потребность в изучении написания драйверов под USB - тут я пас...