ЦАП на микроконтроллере(или процессоре?).
ЦАП на микроконтроллере(или процессоре?).
Здравствуйте уважаемые. Я давно немного балуюсь для себя электроникой, да и профессия обязывает(инженер сдту), недавно наткнулся в интернете на SPDIF формат. Я и раньше про него слышал, но информация была что это для 5.1. Меня стерео всегда устраивало, и поэтому я на это как- то на этот формат внимание не обращал. Потом как то на паяльнике наткнулся вот на такой приборчик: http://cxem.net/mc/mc203.php
Он мне очень понравился.
Потом по работе мне понадобилось сделать передачу 10 сигналов по для чего нужен был цап и ацп. При поиске цап я наткнулся естественно на этот самый пресловутый SPDIF формат. Прочитал повнимательней, и мне понравилось что про него люди пишут. Во время поисков информации у вас на радиокоте нашел вот такую статью.
http://radiokot.ru/circuit/audio/other/31/
Ну и на всяких датагорах, паяльниках, диуаудио тоже полазил.
Что понравилось в SPDIF формате: цифровая передача звука, что пактически исключает лияние сторонних помех, особенно при отопередаче.
Что не понравилось: (Аудиофилам не читать)Цап. Я люблю, чтобы все было конкретно и ясно. Не люблю всякую муть типа специальных аудиокабелей ,которые ни в коем случае нельзя паять, за килобаксы, и по которым звук распространяется со сверхсветовой скоростью. А при изучениях цапов разных производителей, и их реализациях, мне начали попадаться высказывания типа вот этот дает недостаточно насыщенный звук, а здесь невыразительно играют скрипки. Меня такая лабуда сперва веселит, а потом раздражает.
И тут я подумал а почему нельзя вместо фирменного дорогого цапа поставить свой цап из микроконтроллера и R-2R матрицы.
Т.е мы оставляем SPDIF to I2S reciver, а дальше присобачиваем мк на 100 МГц с 48 выходами(стерео по 24 бита), и резисторную сборку высокой точности для R-2R матрицы, ну а выхлоп как душа подскажет, хош операцианник, хош транзистор(в трансы не верю).
И всякий экзотический трансцендентальный экзистенционализм даже близко не покажется.
Назревает вопрос о контроллере. Я так понимаю что 192 кгц, 24 бита это где-то 4,6 Мбит/с,
Прога для принятия i2s и вывода будет весить по моим грубым прикидкам где то 200-500 байт на асме( с линейной интерполяцией). Т.е. частота контроллера должна быть где-то 2Ггц(блин когда тему начинал думал меньше получится).
Можно заманьячиться и собрать на логике.
Вот такие пироги. Прошу совета в выборе spdif to i2s(где кстати лучше про i2s почитать?) ресивера, контроллера(предпочтительно атмел). Быдлокодингом немного занимаюсь на асме, опережение зажигания на мотоцикл делал на attiny2313. Делал простенькие усилители на tda 1557, 2030, 2052. Делал усилки с импульсным питанием из импульсников галогенных ламп с положительным результатом. С паяльником дружу, трудностей не боюсь.
Он мне очень понравился.
Потом по работе мне понадобилось сделать передачу 10 сигналов по для чего нужен был цап и ацп. При поиске цап я наткнулся естественно на этот самый пресловутый SPDIF формат. Прочитал повнимательней, и мне понравилось что про него люди пишут. Во время поисков информации у вас на радиокоте нашел вот такую статью.
http://radiokot.ru/circuit/audio/other/31/
Ну и на всяких датагорах, паяльниках, диуаудио тоже полазил.
Что понравилось в SPDIF формате: цифровая передача звука, что пактически исключает лияние сторонних помех, особенно при отопередаче.
Что не понравилось: (Аудиофилам не читать)Цап. Я люблю, чтобы все было конкретно и ясно. Не люблю всякую муть типа специальных аудиокабелей ,которые ни в коем случае нельзя паять, за килобаксы, и по которым звук распространяется со сверхсветовой скоростью. А при изучениях цапов разных производителей, и их реализациях, мне начали попадаться высказывания типа вот этот дает недостаточно насыщенный звук, а здесь невыразительно играют скрипки. Меня такая лабуда сперва веселит, а потом раздражает.
И тут я подумал а почему нельзя вместо фирменного дорогого цапа поставить свой цап из микроконтроллера и R-2R матрицы.
Т.е мы оставляем SPDIF to I2S reciver, а дальше присобачиваем мк на 100 МГц с 48 выходами(стерео по 24 бита), и резисторную сборку высокой точности для R-2R матрицы, ну а выхлоп как душа подскажет, хош операцианник, хош транзистор(в трансы не верю).
И всякий экзотический трансцендентальный экзистенционализм даже близко не покажется.
Назревает вопрос о контроллере. Я так понимаю что 192 кгц, 24 бита это где-то 4,6 Мбит/с,
Прога для принятия i2s и вывода будет весить по моим грубым прикидкам где то 200-500 байт на асме( с линейной интерполяцией). Т.е. частота контроллера должна быть где-то 2Ггц(блин когда тему начинал думал меньше получится).
Можно заманьячиться и собрать на логике.
Вот такие пироги. Прошу совета в выборе spdif to i2s(где кстати лучше про i2s почитать?) ресивера, контроллера(предпочтительно атмел). Быдлокодингом немного занимаюсь на асме, опережение зажигания на мотоцикл делал на attiny2313. Делал простенькие усилители на tda 1557, 2030, 2052. Делал усилки с импульсным питанием из импульсников галогенных ламп с положительным результатом. С паяльником дружу, трудностей не боюсь.
- Реклама
Re: ЦАП на микроконтроллере(или процессоре?).
Мое мнение - использование специализированных ИС+МК.
Не стоит повторять ошибки прошлого типа "радиоприемник на К155ЛА3".
Не стоит повторять ошибки прошлого типа "радиоприемник на К155ЛА3".
- Dmitry Dubrovenko
- Поставщик валерьянки для Кота
- Сообщения: 2360
- Зарегистрирован: Вс янв 09, 2011 16:51:39
- Откуда: Санкт-Ленинград
- Контактная информация:
Re: ЦАП на микроконтроллере(или процессоре?).
Особенно, если речь идёт о 192/24.BOB51 писал(а):использование специализированных ИС+МК
Кстати, не забудьте, что при таких требованиях, надо очень грамотно плату развести.
ICQ нет, и, в ближайшее время, не будет.
-
mrFox
- Нашел транзистор. Понюхал.
- Сообщения: 190
- Зарегистрирован: Пт сен 21, 2007 17:53:23
- Откуда: Зарайск
Re: ЦАП на микроконтроллере(или процессоре?).
плата это фигня - главный вопрос как точность резисторов обеспечить
производители паралельных ЦАПов пользуются лазерным триммированием
и то только 16 бит
24 бита в описании современных чипов банальный развод
SPDIF не самый хороший формат, единственное преимущество - 1 сигнальный провод
SPI+приемопередатчик проще, дешевле и ни чем не уступает SPDIF
производители паралельных ЦАПов пользуются лазерным триммированием
и то только 16 бит
24 бита в описании современных чипов банальный развод
SPDIF не самый хороший формат, единственное преимущество - 1 сигнальный провод
SPI+приемопередатчик проще, дешевле и ни чем не уступает SPDIF
Re: ЦАП на микроконтроллере(или процессоре?).
К стати, вот, про точность R-2R ЦАПа - http://www.marsohod.org/index.php/ourbl ... 111-r2rdacLevchik писал(а): И тут я подумал а почему нельзя вместо фирменного дорогого цапа поставить свой цап из микроконтроллера и R-2R матрицы.
Нетерпеливые могут прочитать только последний абзац.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
- Реклама
- Dmitry Dubrovenko
- Поставщик валерьянки для Кота
- Сообщения: 2360
- Зарегистрирован: Вс янв 09, 2011 16:51:39
- Откуда: Санкт-Ленинград
- Контактная информация:
Re: ЦАП на микроконтроллере(или процессоре?).
Какие, нафиг, резисторы, для 192/24?mrFox писал(а):как точность резисторов обеспечить
Говорю же, надо специализированные чипы использовать.
ICQ нет, и, в ближайшее время, не будет.
Re: ЦАП на микроконтроллере(или процессоре?).
Прочитал ссылку про точность цап, подумал, посчитал.
1)Решение проблемы для тех кто не ограничен в средствах и полете фантазии(с фантазией вроде все нормально): Имеем 192 кГц, 24 бита стерео. 24 бита это 16777216(16 млн)! вариантов значений вых сигнала, уши которые различат столько вариаций громкости с точность до 0.5 кванта сигнала нужно срочно отрезать и продать в заведение которое указано в конце 1 пункта. Собираем цап. Пусть Vcc у нас 5В. 5/16777216=0,000000298023223876953125 В(гыгы). Находим вольтметр который померит нам промежуток 5В с этой точностью(гыгы, в заведении в конце первого пункта его я подозреваю нет, более того его скорее всего вообще в природе нет нигде, и не только на нашем грешном шарике, и возможно никогда не будет
), с цифровым выходом. Соединяем с цапом. И калибруем выход цапа в массив значений, адрес ячеек которого впоследствии будет вычисляться от значения цифрового значения(это самое простое в этом пункте
, нет правда серьезно ). Если не хотим умереть от старости при калибровке, желательно произвести ее автоматически. 24 битный стерео массив будет иметь размер 16777216*3*2=100663296=98Мб(кхм не так уж и много). Поднимаем дискретность хотя бы до 20МГц(192 КГц делят 20 кГц всего на 10 частей, чет соотношение не очень 16000000 по Y и 10 по X). Продаем цап в палату мер и весов в Париж за бешенные бабки(если у них денег хватит на такой приборчик), покупаем себе кенингсегг, полгалактики, живем долго и счастливо
.
2) Решение проблемы почти как в первом варианте, только мы будем довольствоваться 16 битами(что ограничивает полет нашей безграничной фантазии, но делает шансы на реализацию менее прозрачными), т.е. из 24 битового слова путем арифметических и не очень операций делаем 16 битовое. Имеем уже 65535 значений. 5В/65535=. Вольтметр уже нужен с точностью 0,0000762939453125В в промежутке до 5В(уже менее фантастично чем в первом пункте, и подозреваю что такой вольтметр на нашей планете есть, и возможно даже не один, но наверное он в секрете). Калибруем в массив 65536*2*2=262144=256Кб(вообще ерунда). Запускаем устройство, кайфуем от звука.
3) Решение проблемы как в пункте 2, только находим уже вольтметр с точность 0.001 В на 5 в(такой очень даже можно купить-сделать, и уши не обидятся, мои точно), калибруем, запускаем наслаждаемся.
Хотелось бы выслушать Ваши предложения по всем пунктам, особо интересен 3-й.
1)Решение проблемы для тех кто не ограничен в средствах и полете фантазии(с фантазией вроде все нормально): Имеем 192 кГц, 24 бита стерео. 24 бита это 16777216(16 млн)! вариантов значений вых сигнала, уши которые различат столько вариаций громкости с точность до 0.5 кванта сигнала нужно срочно отрезать и продать в заведение которое указано в конце 1 пункта. Собираем цап. Пусть Vcc у нас 5В. 5/16777216=0,000000298023223876953125 В(гыгы). Находим вольтметр который померит нам промежуток 5В с этой точностью(гыгы, в заведении в конце первого пункта его я подозреваю нет, более того его скорее всего вообще в природе нет нигде, и не только на нашем грешном шарике, и возможно никогда не будет
2) Решение проблемы почти как в первом варианте, только мы будем довольствоваться 16 битами(что ограничивает полет нашей безграничной фантазии, но делает шансы на реализацию менее прозрачными), т.е. из 24 битового слова путем арифметических и не очень операций делаем 16 битовое. Имеем уже 65535 значений. 5В/65535=. Вольтметр уже нужен с точностью 0,0000762939453125В в промежутке до 5В(уже менее фантастично чем в первом пункте, и подозреваю что такой вольтметр на нашей планете есть, и возможно даже не один, но наверное он в секрете). Калибруем в массив 65536*2*2=262144=256Кб(вообще ерунда). Запускаем устройство, кайфуем от звука.
3) Решение проблемы как в пункте 2, только находим уже вольтметр с точность 0.001 В на 5 в(такой очень даже можно купить-сделать, и уши не обидятся, мои точно), калибруем, запускаем наслаждаемся.
Хотелось бы выслушать Ваши предложения по всем пунктам, особо интересен 3-й.
-
pcb
- Опытный кот
- Сообщения: 833
- Зарегистрирован: Пт авг 12, 2011 09:14:27
- Откуда: Млечный путь/Земля/РФ/Екатеринбург
Re: ЦАП на микроконтроллере(или процессоре?).
чего то 12 бит маловато, реальных еще меньше будетLevchik писал(а): 3) Решение проблемы как в пункте 2, только находим уже вольтметр с точность 0.001 В на 5 в(такой очень даже можно купить-сделать, и уши не обидятся, мои точно), калибруем, запускаем наслаждаемся.
даже мой доморощеный вольтметр 15 бит точность разрядность дает.
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Re: ЦАП на микроконтроллере(или процессоре?).
Сдаётся мне , что из "кривых" не откалиброванных "24 бит", таким способом, никак не получиться сделать "прямые" "24 бит". Результат всегда будет с меньшим количеством отсчётов (дискретных уровней). Если у вас достаточно большая нелинейность (не говорю уже о немонотонности), то вы таким способом не сможете исправить "пропуски" в сетке отсчётов. Такой способ калибровки, табличное отображение (мапирование, mapping), IMHO, может сработать если надо сделать, например, откалиброванный 8 битный ЦАП из обычного 9-11 битного.Levchik писал(а):16777216*3*2=100663296=98Мб
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: ЦАП на микроконтроллере(или процессоре?).
Опа, ну конечно. Ну эт не беда, а как бы и выход из сложившейся ситуации.Kavka писал(а):Такой способ калибровки, табличное отображение (мапирование, mapping), IMHO, может сработать если надо сделать, например, откалиброванный 8 битный ЦАП из обычного 9-11 битного.
Для 192 кГц 24 бит надо 32 битный цап с автокалибровкой.
Для 192 кгц 24 в 16 бит 24 битный цап с автокалибровкой, точность зависит от разрядности калибрующего прибора, в идеале 16 разрядов. Может его прямо в цап встроить как-нибудь?. Я так думаю что опорное напряжение вольтметра надо брать от Vcc цапа, чтобы исключить ошибку. Нужен контроллер способный одновременно выводить 32 или 24 разряда.
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: ЦАП на микроконтроллере(или процессоре?).
Вообще ни о чем. Не будет оно хорошо работать на r2r. Что значит "фирменные дорогие ЦАПы"? В ссылке что вы привели с этого сайта, цап за 10 долларов. Их полно и за 1 доллар. Куча. Смысл заниматься этим?
- balmer
- Это не хвост, это антенна
- Сообщения: 1433
- Зарегистрирован: Вс дек 02, 2012 03:13:48
- Откуда: Калининград
Re: ЦАП на микроконтроллере(или процессоре?).
А еще можно взять STM32, у него DAC на 12 бит (довольно линейный). Запустить его на 3 MSps. Вполне можно добить до 16 бит 192 Кгц качества при помощи дизеринга сигнала.
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: ЦАП на микроконтроллере(или процессоре?).
Можно, но зачем? На него еще софт писать надо.
Re: ЦАП на микроконтроллере(или процессоре?).
Буду краток. ©
На дискретном R-2R предельно достижимый максимум - 8 бит. Дальше не помогут никакие извращения, ибо как минимум будет температурный дрейф и шум резисторов.
В интегральном исполнении на R-2R делают 10 - 12 бит. Это уже предел. Дальше не помогает даже лазерная подгонка.
16 бит и выше - это уже сигма-дельта в интегральном исполнении.
На дискретном R-2R предельно достижимый максимум - 8 бит. Дальше не помогут никакие извращения, ибо как минимум будет температурный дрейф и шум резисторов.
В интегральном исполнении на R-2R делают 10 - 12 бит. Это уже предел. Дальше не помогает даже лазерная подгонка.
16 бит и выше - это уже сигма-дельта в интегральном исполнении.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- balmer
- Это не хвост, это антенна
- Сообщения: 1433
- Зарегистрирован: Вс дек 02, 2012 03:13:48
- Откуда: Калининград
Re: ЦАП на микроконтроллере(или процессоре?).
А кто мешает собрать упрощенную сигму-дельту на R-2R.
Делаем 2 DAC с точностью 8 бит на R-2R.
Потом у одного из DAC уменьшаем уровень сигнала в 256 раз, и суммируем сигналы. Вот вам уже 16 бит.
Соответственно на 3 DAC можно получить 24 бита.
Конечно абсолютной точности так не добиться. Но вот широкого динамического диапазона - без проблем.
Но лучше конечно не заморачиваться так
Делаем 2 DAC с точностью 8 бит на R-2R.
Потом у одного из DAC уменьшаем уровень сигнала в 256 раз, и суммируем сигналы. Вот вам уже 16 бит.
Соответственно на 3 DAC можно получить 24 бита.
Конечно абсолютной точности так не добиться. Но вот широкого динамического диапазона - без проблем.
Но лучше конечно не заморачиваться так
- GARMIN
- Держит паяльник хвостом
- Сообщения: 954
- Зарегистрирован: Вс дек 02, 2012 16:58:33
- Откуда: от туда
- Контактная информация:
Re: ЦАП на микроконтроллере(или процессоре?).
Кстати, многие совершенно забывают о втором источнике нелинейности R2R ЦАПов - стабильности выходного напряжения регистра - защёлки. Ведь старший разряд должен обеспечивать точность подаваемого напряжения не хуже 0,5 ЕМР, это при изменяющейся нагрузке.
Re: ЦАП на микроконтроллере(или процессоре?).
Ну, так я уже писал тут где-то, что в микросхемах ЦАП перед матрицей делают выходные транзисторы разного размера чтобы обеспечить точность напряжения при разных токах на разрядах.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)


