MAXvaLL 0 16 января, 2008 Опубликовано 16 января, 2008 · Жалоба Народ, помогите идеями и конструктивной критикой. У кого есть опыт разработки подобного, может поделитесь инфой. Извините за длинный пост. Итак, Задача - построение USB аудиокарты с максимально возможным качеством оцифровки за цену доступную для простых смертных. :) (допустим до 5000р.) Желательно без излишних извращений (читай усложнений схемы в цифровой части). Изначально планировалась только запись, но в перспективе хотелось бы и воспроизведение. ===================================================================== Почему? Готовые изделия нет желания использовать потому, что даже в дорогих устройствах используются далеко не самые лучшие АЦП и ЦАПы. Хорошие, но не лучшие. Экономят буржуи! А если где и используют the best, то цены совершенно заоблачные. Можно говорить что это идиотизм, но те кто работал со звуком меня поймут. ===================================================================== Идея от части моя, от части друга-радиолюбителя. Я сам лично довольно зелен еще, поэтому не удивляйтесь возможным несуразицам :05: Было предложено использовать АЦП PCM4222 Кратко о нем... смотрим даташит: Supports Linear PCM, 1-Bit Direct Stream Digital (DSD), and Multi-Bit Modulator Output Data – Supports PCM Output Sampling Rates from 8kHz to 216kHz – Select from Classic or Low Group Delay – Choose from 64x or 128x Oversampled Output Rates for DSD Linear Phase Digital Decimation Filtering Digital High-Pass Filtering Removes DC Offset PCM Audio Serial Port Interface Supports Left-Justified, I2S™, and TDM Data Formats Разрешение 16-24 бита. 2 канала. Как видно штука довольно продвинутая и стоит около 800р. (со слов друга) Планировалось юзать до 24b/192kHz x 2канала ===================================================================== Вопрос 1. Ваше мнение об этом АЦП. Какие возможны альтернативы (лучше/дешевле). ===================================================================== Пока только запись. Первые прикидки: Analog part -> ADC -> AVR -> USB-FIFO АЦП подключаю к spi МП Скорость потока: 192кГц*24Б*2 =~ 9.22Мбит/с что уже довольно не мало Соответственно USB FT245 и PDIUSBD12 c 1МБайт/с (8.4МБит) уже не подходят Смотрел ML60851E на 12Мбит/с но у него FIFO буфер какой-то маленький. Еще смотрел ISP1582 на 480МБит (в расчете и на воспроизведение 192 кГц), но больно уж он навороченный, видимо дорогой, и труднонаходимый. Воспроизведение: USB-FIFO -> AVR -> DAC -> Аналог ===================================================================== Вопрос 2. Какой USB конвертер посоветуете? ===================================================================== Вопросы 3 итд. Насколько вообще идиотично такое решение? Как сделать по-другому? ===================================================================== Мои прикидки про по-другому: 1. Использование ПЛИС для организации аудио потока вобход МП, а МП для управления. К сожалению в ПЛИС я пока 0 =( 2. Взять готовый USB-Audio Кодек/Конвертер с цифровыми входом/выходом. НО дело в том, что я пока видел только со встроенными АЦП и ЦАП (посредственного качества), которые не нужны. Иногда еще встроенный МП. Соответственно Вопрос №Очередной Посоветуйте USB-Audio Кодек/Конвертер без лишних наворотов и цифровыми вх/вых ===================================================================== Всем спасибо за посильную помощь! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ozelot 9 17 января, 2008 Опубликовано 17 января, 2008 · Жалоба Народ, помогите идеями и конструктивной критикой. У кого есть опыт разработки подобного, может поделитесь инфой. Извините за длинный пост. Итак, Задача - построение USB аудиокарты с максимально возможным качеством оцифровки за цену доступную для простых смертных. :) (допустим до 5000р.) Желательно без излишних извращений (читай усложнений схемы в цифровой части). Изначально планировалась только запись, но в перспективе хотелось бы и воспроизведение. ===================================================================== Почему? Готовые изделия нет желания использовать потому, что даже в дорогих устройствах используются далеко не самые лучшие АЦП и ЦАПы. Хорошие, но не лучшие. Экономят буржуи! А если где и используют the best, то цены совершенно заоблачные. Можно говорить что это идиотизм, но те кто работал со звуком меня поймут. ===================================================================== Идея от части моя, от части друга-радиолюбителя. Я сам лично довольно зелен еще, поэтому не удивляйтесь возможным несуразицам :05: Было предложено использовать АЦП PCM4222 Кратко о нем... смотрим даташит: Supports Linear PCM, 1-Bit Direct Stream Digital (DSD), and Multi-Bit Modulator Output Data – Supports PCM Output Sampling Rates from 8kHz to 216kHz – Select from Classic or Low Group Delay – Choose from 64x or 128x Oversampled Output Rates for DSD Linear Phase Digital Decimation Filtering Digital High-Pass Filtering Removes DC Offset PCM Audio Serial Port Interface Supports Left-Justified, I2S™, and TDM Data Formats Разрешение 16-24 бита. 2 канала. Как видно штука довольно продвинутая и стоит около 800р. (со слов друга) Планировалось юзать до 24b/192kHz x 2канала ===================================================================== Вопрос 1. Ваше мнение об этом АЦП. Какие возможны альтернативы (лучше/дешевле). ===================================================================== Пока только запись. Первые прикидки: Analog part -> ADC -> AVR -> USB-FIFO АЦП подключаю к spi МП Скорость потока: 192кГц*24Б*2 =~ 9.22Мбит/с что уже довольно не мало Соответственно USB FT245 и PDIUSBD12 c 1МБайт/с (8.4МБит) уже не подходят Смотрел ML60851E на 12Мбит/с но у него FIFO буфер какой-то маленький. Еще смотрел ISP1582 на 480МБит (в расчете и на воспроизведение 192 кГц), но больно уж он навороченный, видимо дорогой, и труднонаходимый. Воспроизведение: USB-FIFO -> AVR -> DAC -> Аналог ===================================================================== Вопрос 2. Какой USB конвертер посоветуете? ===================================================================== Вопросы 3 итд. Насколько вообще идиотично такое решение? Как сделать по-другому? ===================================================================== Мои прикидки про по-другому: 1. Использование ПЛИС для организации аудио потока вобход МП, а МП для управления. К сожалению в ПЛИС я пока 0 =( 2. Взять готовый USB-Audio Кодек/Конвертер с цифровыми входом/выходом. НО дело в том, что я пока видел только со встроенными АЦП и ЦАП (посредственного качества), которые не нужны. Иногда еще встроенный МП. Соответственно Вопрос №Очередной Посоветуйте USB-Audio Кодек/Конвертер без лишних наворотов и цифровыми вх/вых ===================================================================== Всем спасибо за посильную помощь! :) Если есть непреодолимое желание самостоятельной реализации USB-аудио устройства, то рекомендую посмотреть на TAS1020 или TUSB3200 (обе Texas Instruments). В паре с ними можете использовать любой аудио-кодек с IIS или AC97 интерфейсом. Щас уже не помню, но по моему реальный драйвер USB-аудио под Win не поддерживает разрядность более 16 (возможно я ошибаюсь, если да - напишите). Есть еще вариант драйвера USB ASIO ( http://www.usb-audio.com ). Ну и кстати, даже выбор самой продвинутой элементной базы не гарантирует высокого качества звука без правильной разводки и правильного питания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXvaLL 0 17 января, 2008 Опубликовано 17 января, 2008 · Жалоба Спасибо за совет! Буду смотреть... Ну и кстати, даже выбор самой продвинутой элементной базы не гарантирует высокого качества звука без правильной разводки и правильного питания. Оно и понятно, когда будет готова схема - обязательно выложу для критики. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXvaLL 0 17 января, 2008 Опубликовано 17 января, 2008 · Жалоба Уважаемая администрация! Возможно я не совсем корректно выбрал ветку для поста... Если так - перенесите пожалуйста куда подобает. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pole 0 18 января, 2008 Опубликовано 18 января, 2008 · Жалоба Качественные аудиокарты не зря стоят таких больших денег. Чтобы выжать из АЦП или ЦАП все его скажем 24 разряда должен быть очень низкий уровень джиттера, порядка 0.5 пс (RMS, при оцифровки малых частот), а чтобы этого добиться придется очень сильно попотеть. Плюс еще я так чувствую, что плата получиться не двухслойная, а это тоже не копейки будет стоить. Плюс еще ПО нужно будет писать, драйвера какие-нибудь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 45 18 января, 2008 Опубликовано 18 января, 2008 · Жалоба Если хотите именно 192к, то выбор не особо велик. АЦП надо проверять все доступные, т.к их шумность очень зависит от разводки, питания итд. Поэтому ИМХО строить надо отдельно USB контроллер АЦП и несколько модулей собственно АЦП ( с гальваническими развязками по цифровой шине, фильтрами шумов питания и прочими примочками). А контроллер имеет смысл выбирать из типов. Первый, классический USB2 на CY7C68013 и десериалайзер I2S на какой-либо небольшой плисине. Второй, более современный - на арме LPC2368 (246x) итд, у которых есть встроенный аппаратный I2S. К сожалению у первой ревизии LPC2368 не работал DMA с I2S, поэтому программирование этой штуки в условиях дефицита пропускной способности USB становилось не очень удобным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ig_z 0 18 января, 2008 Опубликовано 18 января, 2008 · Жалоба К сожалению у первой ревизии LPC2368 не работал DMA с I2S, поэтому программирование этой штуки в условиях дефицита пропускной способности USB становилось не очень удобным. А вы проверяли неработоспособность DMA с I2S, или это данные из даташита? Один мой коллега утверждает, что его LPC2368 первой ревизии работает с I2S через DMA просто замечательно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXvaLL 0 18 января, 2008 Опубликовано 18 января, 2008 · Жалоба Посмотрел TAS1020 и TUSB3200 Я так понял - они под кодеки заточены, а кодеки, как я понимаю восновном потребительского качества (довольно посредственные) обычно. Или я не прав? Качественные аудиокарты не зря стоят таких больших денег. Чтобы выжать из АЦП или ЦАП все его скажем 24 разряда должен быть очень низкий уровень джиттера, порядка 0.5 пс (RMS, при оцифровки малых частот), а чтобы этого добиться придется очень сильно попотеть. Плюс еще я так чувствую, что плата получиться не двухслойная, а это тоже не копейки будет стоить. Плюс еще ПО нужно будет писать, драйвера какие-нибудь. Почему, вместо того чтобы помочь, меня каждый второй пытается убедить что ничего не выйдет? :) Цитирую самого себя: "Гальваническая развязка, правильная аналоговая часть, правильное питание, правильная разводка и прочие извращения (даже в цифровоц части - тактирование например итд) - само сабой разумеется - я не вчера родился. Все прекрасно понимаю. Это дело схемотехника (друг мой). Будьте уверены, у него есть опыт работы со звуком! Мое дело - цифровая часть. И именно с ней я прошу помощи." Насчет джиттера абсолютно согласен! Но дело в том, что пока не будет выбрана архитектура цифровой части, нет смысла говорить об аналоге. Помилуйте, какое ПО? Зачем драйвера?! Стандартные дрова USBAudio (ASIO накрайняк) вас не устраивают? Если хотите именно 192к, то выбор не особо велик. АЦП надо проверять все доступные, т.к их шумность очень зависит от разводки, питания итд. Поэтому ИМХО строить надо отдельно USB контроллер АЦП и несколько модулей собственно АЦП ( с гальваническими развязками по цифровой шине, фильтрами шумов питания и прочими примочками). А контроллер имеет смысл выбирать из типов. Первый, классический USB2 на CY7C68013 и десериалайзер I2S на какой-либо небольшой плисине. Второй, более современный - на арме LPC2368 (246x) итд, у которых есть встроенный аппаратный I2S. К сожалению у первой ревизии LPC2368 не работал DMA с I2S, поэтому программирование этой штуки в условиях дефицита пропускной способности USB становилось не очень удобным. Блочная структура платы и прочие навороты - это да! Микрухи буду смотреть. ВСЕМ СПАСИБО! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 45 18 января, 2008 Опубликовано 18 января, 2008 · Жалоба А вы проверяли неработоспособность DMA с I2S, или это данные из даташита? Один мой коллега утверждает, что его LPC2368 первой ревизии работает с I2S через DMA просто замечательно. А на чем он его гонял? В какую сторону шла передача? Моно-стерео? Разрядность данных? Можно пример кода? У меня 2366 работет нестабильно. Пока проверял только на чтение с аудиодаков 16 бит. Автору темы. Если решитесь на АРМ, обратите внимание на http://www.standardics.nxp.com/support/doc....audio.demo.zip или искать по сайту NXP "i2s usb audio demo LPC2368" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXvaLL 0 18 января, 2008 Опубликовано 18 января, 2008 · Жалоба А на чем он его гонял? В какую сторону шла передача? Моно-стерео? Разрядность данных? Можно пример кода? У меня 2366 работет нестабильно. Пока проверял только на чтение с аудиодаков 16 бит. Автору темы. Если решитесь на АРМ, обратите внимание на http://www.standardics.nxp.com/support/doc....audio.demo.zip или искать по сайту NXP "i2s usb audio demo LPC2368" Спасибо огромное! Буду глядеть. PS А в какой среде под ARMы пишут? Я так понимаю IAR может, а есть что удобнее? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXvaLL 0 19 января, 2008 Опубликовано 19 января, 2008 (изменено) · Жалоба LPC2880; LPC2888; 16/32-bit ARM microcontrollers; 8 kB cache, up to 1MB flash, Hi-Speed USB 2.0 device, and SDRAM memory interface + аппаратный I2S I\O Вот то что мне надо! Вот только одна проблема у меня: для всех LPC начинвя с 2364 и заканчивая 2470 (все что с USB) в даташите написано про I2S подробно: The interface has separate input/output channels each of which can operate in master or slave mode. Capable of handling 8-bit, 16-bit, and 32-bit word sizes. The sampling frequency can range from 16 kHz to 48kHz (16, 22.05, 32, 44.1, 48 ) kHz. Т.е. 16/32 Бита нас устраивают Slave режим - отлично! А вот 48кГц МАЛО!!! А для LPC288* ХРЕН! Там даже раздела такого нет! Вот только это: 6.16 Analog I/O The analog I/O system includes an I2S input channel, an I2S output channel, a dual A/D converter, and a dual D/A converter. Each channel includes a separate 4 sample FIFO. 6.16.1 Features • I2S-bus input channel with a 4 sample FIFO for stereo Digital Analog Input (DAI). • I2S-bus output channel with a 4 sample FIFO for stereo Digital Analog Output (DAO). 6.20.4 PLLs The LPC2880/LPC2888 includes two PLLs: a low power PLL that may be used to provide clocks to most chip functions; a high-speed PLL that may be used to generate faster clocks for selected chip functions, if needed. Each PLL can be driven from several clock sources. These include the main oscillator (1 MHz to 20 MHz), the RTC oscillator (32 kHz), the bit clock or word select inputs of the I2S input channel, the clock input from the SD/MMC Card interface, or the output clock from the other PLL. Кто знает, какую скорость держат LPC2880/LPC2888 для I2S? Изменено 19 января, 2008 пользователем MAXvaLL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 45 19 января, 2008 Опубликовано 19 января, 2008 · Жалоба PS А в какой среде под ARMы пишут То что у NXP- под Keil. Хотя где-то встречал аудио аппликуху под IAR для AT91. Но там I2S делался извращенным методом на базе SSP А вот 48кГц МАЛО!!! Скорее всего там просто писатели даташита не вьехали- просто перечислили стандартные скорости. Тем более, что они получаются делением системного клока на цело, что бесполезно для аудио применений. Зато есть режим внешней синхронизации, который и использован в апппликации. А ограничения по скорости если и появляются, то обычно при битовых скоростях больших чем 1/8 системного клока ( стейт-машины начинают чудить). Это ИМХО, поскольку на I2S этого не проверял, зато нечто подобное вылазило с SPI. На 288х забете- с их BGA корпусами с мелким шагом и чувствительноти к разводке обязательна четырехслойная плата (а вернее 6) . Это уже притча во языцах- как Олимекс делал целый год девборду под этот проц и получилось нечто работоспособное только с 6 раза. Если купите модуль- то да, можно использовать, но самому разводить- nightmare/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXvaLL 0 19 января, 2008 Опубликовано 19 января, 2008 · Жалоба Скорее всего там просто писатели даташита не вьехали- просто перечислили стандартные скорости. Тем более, что они получаются делением системного клока на цело, что бесполезно для аудио применений. Зато есть режим внешней синхронизации, который и использован в апппликации. А ограничения по скорости если и появляются, то обычно при битовых скоростях больших чем 1/8 системного клока ( стейт-машины начинают чудить). Это ИМХО, поскольку на I2S этого не проверял, зато нечто подобное вылазило с SPI. Ну хорошо. Пусть 1/8 даже от 72МГц = 9МГц На выходе с АЦП имеем 192КГц*24Б*2канала = 9.2МГц Привет глюки? А есть еще тема, что возможно АЦП плюется не по 24 а по 32 (1 байт пуст) Тогда будет 12.2 - что вообще ни в какие ворота! Так что? Сожрет или нет? Жаль что на BGA придется забить :crying: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 45 19 января, 2008 Опубликовано 19 января, 2008 · Жалоба На выходе с АЦП имеем 192КГц*24Б*2канала = 9.2МГц Привет глюки? Да ктож его знает? При производстве чипов такого типа перефирия делается методом прицепливания к проекту стороннего IP core. Кто его производитель- ХЗ. Для самого процессора и перефирии удавалось отслеживать корреляцию глюков с ерратами на соответствующие IP core от АРМа. Только эти ерраты добыть трудно и неизвестно, какая ревизия IP core сидит в данном конкретном чипе. А кто производитель I2S IP core - я вообще без руля. В общем проверять надо. И глюк может быть не фатальным - ну например у SSP при тактовых в 30 Мгц фронт первого импульса полз на несколько наносекунд. Просто надо быть готовым к таким приключения. В общем проверять надо на реальном железе. Я для таких проверок хочу сейчас сделать симулятор ADC - ПЛИС с внешней памятью, который проигрывает WAV файл в I2S. А потом проверять, что записала винда уже внутри себя, после всех интерфейсов и драйверов. Был ли ресамплинг, была ли потеря байтов, интерполяция при несовпадении битовых скоростей итд. Загнать в память симулятора чистую цифровую синусоиду или двухтоналку и проверять весь тракт. Сам я сейчас вожусь именно с 236х в режиме оцифровки, но мне нужна еще и легкая предобработка сигнала в процессоре. так что АРМ используется еще и в качестве "легкого" DSP. А в сторону аудиокарты я смотрю с целью проверять качество своего аналогово тракта, используя аудиофильские (в хорошем смысле слова) программы типа RMAA или OscilloMeter- у них фурье весьма правильное и длина выборки неограничена почти ничем (у OscilloMeter кажется до 2^24). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAXvaLL 0 19 января, 2008 Опубликовано 19 января, 2008 · Жалоба Уважаемый khach! Буду вам крайне признателен, если вы поделитесь результатами (когда они будут). А может вообще забить на I2S в МК? Как по другому? SPI? (АЦП поддерживает вывод Left-Justified) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться