Необычный аудио АЦП с использованием ПЛИС


Началось все очень давно, как обычно, с чтения всякой аудиофильской ерунды, где, однако, четко проявлялась мысль о превосходстве звучания мультибитных преобразователей над сигма-дельтой. )))
И вот начал я просматривать, а чем же записывают этот звук, который потом на мультибитниках так хорошо звучит? И оказалось, что аудио-АЦП сплошь сигма-дельты, и даже в самых дорогих, т.н. мастер-рекордерах, стоят относительно недорогие аудио сигма-дельта АЦП.
И зародилась у меня идея этот недостаток исправить. Заодно проверить, как на самом деле будет звучать запись, сделанная на таком АЦП.
В процессе гугления стало ясно, что это будет не просто. Цены на АЦП последовательного приближения не самые гуманные, преобразование интерфейсов на мегагерцовых частотах на микроконтроллере сделать трудно, нужна ПЛИС, а я никогда с этим дела не имел, микросхемы с мелким шагом, ЛУТом не справиться, куча напряжений питания и т.д.
Но я мечту свою не оставлял.
Первым делом определимся с архитектурой: SAR АЦП <-> ПЛИС -> I2S/SPDIF.
Такая связка показалась мне наиболее оптимальной со всех сторон:
SAR АЦП есть на 18 бит до нескольких MSPS, это позволяет использовать оверсемплинг и поднять разрядность.
ПЛИС — можно постепенно наращивать возможности, можно подключить два источника тактирования, чтобы перекрыть все необходимые частоты дискретизации, скорость не ограничена возможностями процессора. К тому же выход можно сделать в любом формате, а не только то, что заложено производителем в периферию контроллера.
SPDIF — универсальный формат, можно завести в компьютер, используя имеющиеся интерфейсы. А через I2S можно впоследствии сделать конвертер в USB. Ну или прямо в ПЛИС USB реализовать.
Потом заказал на ebay.com отладочную платку первого Циклона в комплекте с USBBlaster.
Поскольку я не программировал логику, нужно было немного научиться. Были скачаны кучи книг и залита тестовая прошивка для мигания светодиодом. Хочу сказать, что программируемая логика — конкретный взрыв мозга для тех, кто писал программы только для микроконтроллеров! И это должен попробовать каждый электронщик! )))
Эта микросхема хороша тем, что имеет две линии тактирования, на которые можно завести сигналы с генераторов частот, кратных 44100 и 48000 Гц и покрыть, таким образом, все необходимые частоты. Изначально на плате установлен один генератор на 50 Мгц и есть место для второго. Я установил генераторы на 45.158400 и 49.152000 МГц.

После этого я случайно наткнулся на описание АЦП AD7982 и решил, что это мне подойдет. 18 бит 1 Мс/с, малое потребление. Кроме корпуса — msop-10. Такую плату мне не вытравить.
Заказал бесплатные образцы АЦП, буферные усилители и стабилизатор опорного напряжения, пришлось использовать рабочую почту, на бесплатный ящик они не соглашаются слать. В Китае заказал на пробу переходники msop на dip, и до кучи — набор резисторов и конденсаторов 0805. А они потерялись, вот досада. Ну да ради такого, можно и на заводе сделать плату.
Сэмплы пришли недели за три, курьер позвонил и вручил лично. Приятно.

Нарисовал схему, заказал разъемы, трансформатор для спдиф и разъем тослинк, купил трансформаторы и транзисторы в местном магазине, начал рисовать плату.
Прототип состоит из двух частей — собственно преобразователя, на котором установлена плата ПЛИС, и блока питания.

Начнем с БП. Он сделан на двух трансформаторах и выдает кучу напряжений:
+6В и -1В для питания буферного усилителя;
+6В для источника опорного напряжения. На основной плате установлен опорник, с которого идет 5В.
+5, 3.3, 2.5В для питания цифровых схем.
Стабилизатора на -1В я так и не нашел, поэтому стабилизатор для буферного усилителя сделал на рассыпухе. Опорное напряжение примерно +7 и -7 формируется TL431, затем подстроечником от него остается -1 и +6, которое умощняется повторителем на оу и выходном транзисторе.
+6 для опорного делается на LM317, цифровые — на 7805, LM1117-3.3 и LM1117-2.5.
Плату блока питания помог вытравить друг, у меня, как обычно, в самый интересный момент ломается принтер ))).

Основную плату заказал в Резоните. Обошлось в 2500 рублей. Дороговато, но раз уж решил… А пока изготавливали и отправляли плату, и переходники с резисторами нашлись!
Основная плата содержит входные разъемы, балансные буферы на ADA4940-1, источник опорного напряжения ADR4550, собственно сами AD7982, место для платы ПЛИС и выходные разъемы — коаксиальный (c трансформатором) и оптический. Все это приправлено гребенками для подключения блока питания и всех сигналов.

Продолжение следует…
- +13
- 04 декабря 2014, 17:42
- antonluba
А мы с другом делаем студию звукозаписи. Пока ощущения смешанные — первый успех радует, но выявились огрехи аналоговой части, похоже на возбуд или пролазит помеха по питанию, причем в одном канале, нужно еще поработать. Звучание — опять же беру с цифрового источника, к тому же есть подозрене на ошибки в прошивке. Прошивка пока тоже простейшая — только бы запустить, так что многое еще впереди.
Крутой задел. Освоить ПЛИС ради нового типа АЦП… Спдиф на плис уже есть в сообществе, и очень классный, а вот остальное…
- count_enable
- 04 декабря 2014, 19:20
- ↓
Я в форуме писал. Оверсемплингом на повышенной частоте можно поднять разрядность. Я хочу частоту установить, например, 768 кГц, а потом понижать ее до 96, с повышением точности.
Сейчас пока просто 44100, 16 бит без всяких там алгоритмов. И даже есть подозрение, что теряю один бит из-за ошибки в коде. Надо проверить.
Сейчас пока просто 44100, 16 бит без всяких там алгоритмов. И даже есть подозрение, что теряю один бит из-за ошибки в коде. Надо проверить.
Как зачем, а как же без «велосипеда» с квадратными колесами,! ;) Мы в детстве с соседом собирали ракету из деталей найденных на свалке мусора для полетов на Луну, но к сожалению не нашлась какая то важная деталь и за нее полет не состоялся. ;)
Но если серьезно, то я бы на CPLD копал в сторону многоразрядных дельта сигма с высокими частотами семплирования, чтобы обеспечить частотный диапазон 50-100 КГц. И использовал цифровые фильтры на том же CPLD или FPGA.
Но если серьезно, то я бы на CPLD копал в сторону многоразрядных дельта сигма с высокими частотами семплирования, чтобы обеспечить частотный диапазон 50-100 КГц. И использовал цифровые фильтры на том же CPLD или FPGA.
Частота не так уж велика, да и разрядность тоже. Неужели с этим не справится что-то вроде STM32F103? В NanoDSO он успевает обработать поток с 1МС/с 12-бит АЦП, обслужить экран и интерфейс пользователя. Да и I2S там аппаратный есть.
У меня есть отладочная плата с STM32F107, на которой я пробовал выход на внешний ЦАП через I2S. Работает, кто-то из коллег даже сделал асинхронный преобразователь USB-I2S.
Что касается входа, чтобы получить 18 разрядов на частоте 768 кГц, частота тактирования AD7982 нужна 49.152 МГц, соответственно, на этой же частоте нужно ловить последовательные биты данных.
Еще, нужно все равно делать внешнюю схему переключения тактового генератора, PLL я использовать не хочу, в конечном итоге, я так и не придумал, как сделать полностью синхронную схему на STM32.
Но, на будущее есть идея сделать преобразователь I2S -> USB на нем, а может, даже многоканальный. Похоже, что 4xx серия справится. Уже приобрел STM32F429 дискавери по случаю.
Что касается входа, чтобы получить 18 разрядов на частоте 768 кГц, частота тактирования AD7982 нужна 49.152 МГц, соответственно, на этой же частоте нужно ловить последовательные биты данных.
Еще, нужно все равно делать внешнюю схему переключения тактового генератора, PLL я использовать не хочу, в конечном итоге, я так и не придумал, как сделать полностью синхронную схему на STM32.
Но, на будущее есть идея сделать преобразователь I2S -> USB на нем, а может, даже многоканальный. Похоже, что 4xx серия справится. Уже приобрел STM32F429 дискавери по случаю.
соответственно, на этой же частоте нужно ловить последовательные биты данных.И что, последовательные интерфейсы STM32 на это не способны?
Вот если частоты для I2S и ADC несовместимые — это уже сложнее.
Уже приобрел STM32F429 дискавери по случаю.Не оверкилл? И тут бы, по моему, больше больше подошел 407.
… что-то вроде STM32F103? В NanoDSO он успевает обработать поток с 1МС/с 12-бит АЦП...DSO Nano? Там нет FPGA?
Угу, я тут уже откопал.
Это DSO Quad имеет FPGA на борту.
essentialscrap.com/dsotouch/
www.seeedstudio.com/wiki/DSO_Quad
www.seeedstudio.com/wiki/DSO_Quad:Upgrading_Firmware
Это DSO Quad имеет FPGA на борту.
essentialscrap.com/dsotouch/
www.seeedstudio.com/wiki/DSO_Quad
www.seeedstudio.com/wiki/DSO_Quad:Upgrading_Firmware

Лично я не знаю.
Пройдите, почитайте:
essentialscrap.com/dsotouch/
www.seeedstudio.com/blog/2014/08/18/dso-touch-no-more-no-less/
Похоже, что пока не продаётся.
www.seeedstudio.com/depot/Oscilloscopes-c-63_65/
Пройдите, почитайте:
essentialscrap.com/dsotouch/
First off, I must say that compared to DSO Nano, the DSO Touch is a huge upgrade and a worthy continuation of the line. However, I have never owned a DSO Nano and it would be way too limited for my purposes.www.seeedstudio.com/blog/tag/dso-touch/
However, I don't think the DSO Touch is much of an upgrade compared to the DSO Quad:
www.seeedstudio.com/blog/2014/08/18/dso-touch-no-more-no-less/
Похоже, что пока не продаётся.
www.seeedstudio.com/depot/Oscilloscopes-c-63_65/
Комментарии (33)
RSS свернуть / развернуть