реклама на сайте
подробности

 
 
10 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Проектирование USB аудиокарты, Высокоточный АЦП
MAXvaLL
сообщение Jan 16 2008, 21:26
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Народ, помогите идеями и конструктивной критикой.
У кого есть опыт разработки подобного, может поделитесь инфой.
Извините за длинный пост.

Итак,
Задача - построение USB аудиокарты с максимально возможным качеством оцифровки за цену доступную для простых смертных. smile.gif (допустим до 5000р.) Желательно без излишних извращений (читай усложнений схемы в цифровой части). Изначально планировалась только запись, но в перспективе хотелось бы и воспроизведение.
=====================================================================

Почему?
Готовые изделия нет желания использовать потому, что даже в дорогих устройствах используются далеко не самые лучшие АЦП и ЦАПы. Хорошие, но не лучшие. Экономят буржуи!
А если где и используют the best, то цены совершенно заоблачные.
Можно говорить что это идиотизм, но те кто работал со звуком меня поймут. biggrin.gif
=====================================================================

Идея от части моя, от части друга-радиолюбителя. Я сам лично довольно зелен еще, поэтому не удивляйтесь возможным несуразицам 05.gif

Было предложено использовать АЦП 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 Кодек/Конвертер без лишних наворотов и цифровыми вх/вых
=====================================================================

Всем спасибо за посильную помощь! smile.gif
Go to the top of the page
 
+Quote Post
Ozelot
сообщение Jan 17 2008, 07:00
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 115
Регистрация: 6-06-05
Из: Ukraine
Пользователь №: 5 764



Цитата(MAXvaLL @ Jan 17 2008, 01:26) *
Народ, помогите идеями и конструктивной критикой.
У кого есть опыт разработки подобного, может поделитесь инфой.
Извините за длинный пост.

Итак,
Задача - построение USB аудиокарты с максимально возможным качеством оцифровки за цену доступную для простых смертных. smile.gif (допустим до 5000р.) Желательно без излишних извращений (читай усложнений схемы в цифровой части). Изначально планировалась только запись, но в перспективе хотелось бы и воспроизведение.
=====================================================================

Почему?
Готовые изделия нет желания использовать потому, что даже в дорогих устройствах используются далеко не самые лучшие АЦП и ЦАПы. Хорошие, но не лучшие. Экономят буржуи!
А если где и используют the best, то цены совершенно заоблачные.
Можно говорить что это идиотизм, но те кто работал со звуком меня поймут. biggrin.gif
=====================================================================

Идея от части моя, от части друга-радиолюбителя. Я сам лично довольно зелен еще, поэтому не удивляйтесь возможным несуразицам 05.gif

Было предложено использовать АЦП 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 Кодек/Конвертер без лишних наворотов и цифровыми вх/вых
=====================================================================

Всем спасибо за посильную помощь! smile.gif


Если есть непреодолимое желание самостоятельной реализации USB-аудио устройства, то рекомендую посмотреть на TAS1020 или TUSB3200 (обе Texas Instruments). В паре с ними можете использовать любой аудио-кодек с IIS или AC97 интерфейсом.
Щас уже не помню, но по моему реальный драйвер USB-аудио под Win не поддерживает разрядность более 16 (возможно я ошибаюсь, если да - напишите).
Есть еще вариант драйвера USB ASIO ( http://www.usb-audio.com ).

Ну и кстати, даже выбор самой продвинутой элементной базы не гарантирует высокого качества звука без правильной разводки и правильного питания.
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Jan 17 2008, 14:10
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Спасибо за совет! Буду смотреть...

Цитата(Ozelot @ Jan 17 2008, 10:00) *
Ну и кстати, даже выбор самой продвинутой элементной базы не гарантирует высокого качества звука без правильной разводки и правильного питания.


Оно и понятно, когда будет готова схема - обязательно выложу для критики.
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Jan 17 2008, 21:23
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Уважаемая администрация!

Возможно я не совсем корректно выбрал ветку для поста...
Если так - перенесите пожалуйста куда подобает.
Спасибо.
Go to the top of the page
 
+Quote Post
Pole
сообщение Jan 18 2008, 09:17
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 27-05-06
Пользователь №: 17 496



Качественные аудиокарты не зря стоят таких больших денег.
Чтобы выжать из АЦП или ЦАП все его скажем 24 разряда должен быть очень низкий уровень джиттера, порядка 0.5 пс (RMS, при оцифровки малых частот), а чтобы этого добиться придется очень сильно попотеть. Плюс еще я так чувствую, что плата получиться не двухслойная, а это тоже не копейки будет стоить. Плюс еще ПО нужно будет писать, драйвера какие-нибудь.
Go to the top of the page
 
+Quote Post
khach
сообщение Jan 18 2008, 10:35
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Если хотите именно 192к, то выбор не особо велик. АЦП надо проверять все доступные, т.к их шумность очень зависит от разводки, питания итд. Поэтому ИМХО строить надо отдельно USB контроллер АЦП и несколько модулей собственно АЦП ( с гальваническими развязками по цифровой шине, фильтрами шумов питания и прочими примочками). А контроллер имеет смысл выбирать из типов.
Первый, классический USB2 на CY7C68013 и десериалайзер I2S на какой-либо небольшой плисине. Второй, более современный - на арме LPC2368 (246x) итд, у которых есть встроенный аппаратный I2S. К сожалению у первой ревизии LPC2368 не работал DMA с I2S, поэтому программирование этой штуки в условиях дефицита пропускной способности USB становилось не очень удобным.
Go to the top of the page
 
+Quote Post
ig_z
сообщение Jan 18 2008, 11:49
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



Цитата(khach @ Jan 18 2008, 14:35) *
К сожалению у первой ревизии LPC2368 не работал DMA с I2S, поэтому программирование этой штуки в условиях дефицита пропускной способности USB становилось не очень удобным.


А вы проверяли неработоспособность DMA с I2S, или это данные из даташита? Один мой коллега утверждает, что его LPC2368 первой ревизии работает с I2S через DMA просто замечательно.
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Jan 18 2008, 16:14
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Посмотрел TAS1020 и TUSB3200
Я так понял - они под кодеки заточены, а кодеки, как я понимаю восновном потребительского качества (довольно посредственные) обычно.
Или я не прав?

Цитата(Pole @ Jan 18 2008, 12:17) *
Качественные аудиокарты не зря стоят таких больших денег.
Чтобы выжать из АЦП или ЦАП все его скажем 24 разряда должен быть очень низкий уровень джиттера, порядка 0.5 пс (RMS, при оцифровки малых частот), а чтобы этого добиться придется очень сильно попотеть. Плюс еще я так чувствую, что плата получиться не двухслойная, а это тоже не копейки будет стоить. Плюс еще ПО нужно будет писать, драйвера какие-нибудь.

Почему, вместо того чтобы помочь, меня каждый второй пытается убедить что ничего не выйдет? smile.gif
Цитирую самого себя:
"Гальваническая развязка, правильная аналоговая часть, правильное питание, правильная разводка и прочие извращения (даже в цифровоц части - тактирование например итд) - само сабой разумеется - я не вчера родился. Все прекрасно понимаю. Это дело схемотехника (друг мой). Будьте уверены, у него есть опыт работы со звуком! Мое дело - цифровая часть. И именно с ней я прошу помощи."

Насчет джиттера абсолютно согласен!

Но дело в том, что пока не будет выбрана архитектура цифровой части, нет смысла говорить об аналоге.

Помилуйте, какое ПО? Зачем драйвера?! Стандартные дрова USBAudio (ASIO накрайняк) вас не устраивают?

Цитата(khach @ Jan 18 2008, 13:35) *
Если хотите именно 192к, то выбор не особо велик. АЦП надо проверять все доступные, т.к их шумность очень зависит от разводки, питания итд. Поэтому ИМХО строить надо отдельно USB контроллер АЦП и несколько модулей собственно АЦП ( с гальваническими развязками по цифровой шине, фильтрами шумов питания и прочими примочками). А контроллер имеет смысл выбирать из типов.
Первый, классический USB2 на CY7C68013 и десериалайзер I2S на какой-либо небольшой плисине. Второй, более современный - на арме LPC2368 (246x) итд, у которых есть встроенный аппаратный I2S. К сожалению у первой ревизии LPC2368 не работал DMA с I2S, поэтому программирование этой штуки в условиях дефицита пропускной способности USB становилось не очень удобным.

Блочная структура платы и прочие навороты - это да!

Микрухи буду смотреть.

ВСЕМ СПАСИБО!
Go to the top of the page
 
+Quote Post
khach
сообщение Jan 18 2008, 17:00
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата(ig_z @ Jan 18 2008, 14:49) *
А вы проверяли неработоспособность DMA с I2S, или это данные из даташита? Один мой коллега утверждает, что его LPC2368 первой ревизии работает с I2S через DMA просто замечательно.

А на чем он его гонял? В какую сторону шла передача? Моно-стерео? Разрядность данных? Можно пример кода? У меня 2366 работет нестабильно. Пока проверял только на чтение с аудиодаков 16 бит.

Автору темы. Если решитесь на АРМ, обратите внимание на http://www.standardics.nxp.com/support/doc....audio.demo.zip
или искать по сайту NXP "i2s usb audio demo LPC2368"
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Jan 18 2008, 18:49
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Цитата(khach @ Jan 18 2008, 20:00) *
А на чем он его гонял? В какую сторону шла передача? Моно-стерео? Разрядность данных? Можно пример кода? У меня 2366 работет нестабильно. Пока проверял только на чтение с аудиодаков 16 бит.

Автору темы. Если решитесь на АРМ, обратите внимание на http://www.standardics.nxp.com/support/doc....audio.demo.zip
или искать по сайту NXP "i2s usb audio demo LPC2368"


Спасибо огромное!
Буду глядеть.

PS А в какой среде под ARMы пишут?
Я так понимаю IAR может, а есть что удобнее?
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Jan 19 2008, 00:43
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



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?

Сообщение отредактировал MAXvaLL - Jan 19 2008, 01:06
Go to the top of the page
 
+Quote Post
khach
сообщение Jan 19 2008, 11:38
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата
PS А в какой среде под ARMы пишут

То что у NXP- под Keil. Хотя где-то встречал аудио аппликуху под IAR для AT91. Но там I2S делался извращенным методом на базе SSP
Цитата(MAXvaLL @ Jan 19 2008, 03:43) *
А вот 48кГц МАЛО!!!

Скорее всего там просто писатели даташита не вьехали- просто перечислили стандартные скорости. Тем более, что они получаются делением системного клока на цело, что бесполезно для аудио применений. Зато есть режим внешней синхронизации, который и использован в апппликации. А ограничения по скорости если и появляются, то обычно при битовых скоростях больших чем 1/8 системного клока ( стейт-машины начинают чудить). Это ИМХО, поскольку на I2S этого не проверял, зато нечто подобное вылазило с SPI.
На 288х забете- с их BGA корпусами с мелким шагом и чувствительноти к разводке обязательна четырехслойная плата (а вернее 6) . Это уже притча во языцах- как Олимекс делал целый год девборду под этот проц и получилось нечто работоспособное только с 6 раза. Если купите модуль- то да, можно использовать, но самому разводить- nightmare/
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Jan 19 2008, 12:10
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Цитата(khach @ Jan 19 2008, 14:38) *
Скорее всего там просто писатели даташита не вьехали- просто перечислили стандартные скорости. Тем более, что они получаются делением системного клока на цело, что бесполезно для аудио применений. Зато есть режим внешней синхронизации, который и использован в апппликации. А ограничения по скорости если и появляются, то обычно при битовых скоростях больших чем 1/8 системного клока ( стейт-машины начинают чудить). Это ИМХО, поскольку на I2S этого не проверял, зато нечто подобное вылазило с SPI.


Ну хорошо. Пусть 1/8 даже от 72МГц = 9МГц
На выходе с АЦП имеем 192КГц*24Б*2канала = 9.2МГц

Привет глюки?

А есть еще тема, что возможно АЦП плюется не по 24 а по 32 (1 байт пуст)
Тогда будет 12.2 - что вообще ни в какие ворота!

Так что? Сожрет или нет?

Жаль что на BGA придется забить crying.gif
Go to the top of the page
 
+Quote Post
khach
сообщение Jan 19 2008, 13:12
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата(MAXvaLL @ Jan 19 2008, 15:10) *
На выходе с АЦП имеем 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).
Go to the top of the page
 
+Quote Post
MAXvaLL
сообщение Jan 19 2008, 13:36
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 26-12-07
Пользователь №: 33 639



Уважаемый khach!
Буду вам крайне признателен, если вы поделитесь результатами (когда они будут).

А может вообще забить на I2S в МК?
Как по другому?
SPI? (АЦП поддерживает вывод Left-Justified)
Go to the top of the page
 
+Quote Post

10 страниц V   1 2 3 > » 
Reply to this topicStart new topic
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 22:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01522 секунд с 7
ELECTRONIX ©2004-2016