Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: DSP из AVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Punk
Привет !Решил я в технаре выпендрится и сделать скажем так упрощенный вариант ЦСП. Определил для него следующие требования :Полоса пропускания 12-15кГц классно если до 20кГц, уровень входного сигнала от 0 до 5В, возможность запоминать короткие фрагменты сигнала с последующим воспроизведением(хоть в RAM хоть во FLASH), реализация простенького ФНЧ на цифровом уровне, ну и управление по RS232.Начал делать проц М32, ЦАП-таймер0 в fastPWM, выходной фильтр тупой два кандюка и два резюка по известной схеме. Сигнал подаю напрямую в АЦП. Выявились проблемы: полоса узкая примерно -3кГц, если подаю звуковой сигнал то он сильно искажается.
Передовал оцифрованный сигнал в камп по UART(115200) 128кБ выборок сохранял в кампе в массиве,
в процессе передачи контролировал оцифрованный сигнал на какчество все было замечательно,но када я его назад с компа сплевывал то при воспроизведении получалось очень зашумленно.
Возникшие вопросы:
Как правильно рассчитывать входные цепи АЦП(че почитать)?
Как правильно рассчитывать выход ЦАПа и какой ЦАП лучше R2R или ШИМ?
Как добиться нормального какчества в области звуковых частот?
Подходят ли AVR для таких эксперементов ?
Спасибо всем кто это прочитал и надеюсь на профессиональные ответы.
Alex B._
Гиблое дело, но все равно почитай
http://elm-chan.org/works/vp/report.html
prottoss
Цитата(Punk @ Dec 8 2006, 18:52) *
Привет !Решил я в технаре выпендрится...
Почитайте аппнот 335 на http://atmel.com - Digital Sound Recorder with AVR and DataFlash. Правда, всего 8-бит и 8 КГц, но, по крайней мере, есть от чего оттолкнуться
Nanobyte
Цитата(prottoss @ Dec 8 2006, 16:58) *
... Почитайте аппнот 335 ...

Ох уж этот аппнот ... Ошибки там в ФНЧ. Помнится, недавно на форуме было обсуждение AN335.
Но даже если сделать без ошибок, всё равно качество получаемого звука, как бы это помягче сказать, плохое. R-2R уже получше, но при числе разрядов более 10 работает не очень хорошо. Сейчас для вывода звукового сигнала использую ЦАП от AD типа AD5541, правда он не очень дешевый (~14 уе), но работает замечательно. Управляется по SPI, корпус SO-8. Качество синтезированного звука очень высокое. Для стереовыхода приобрёл AD1851, но ещё не пробовал его использовать. ИМХО - для начала экспериментов R-2R подойдёт, а позже нужно будет переезжать на настоящие ЦАП.
prottoss
Цитата(Nanobyte @ Dec 8 2006, 21:25) *
Цитата(prottoss @ Dec 8 2006, 16:58) *
... Почитайте аппнот 335 ...

Ох уж этот аппнот ...
Я, честно говоря, разбирал его только с позиции использования DataFlash, и от обработки звука очччень далек на сегодняшний день, как то не было случая плотно позаниматься. Тем не менее, там, похоже, какие то принципы обработки изложены
Punk
То есть в принципе своем полоса пропускания АЦП позволяет записывать звуковой сигнал дело только за правильным и быстрым воспроизведением
Nanobyte
Цитата(Punk @ Dec 8 2006, 20:55) *
То есть в принципе своем полоса пропускания АЦП позволяет записывать звуковой сигнал дело только за правильным и быстрым воспроизведением

Полоса частот АЦП контроллера позволяет накрыть весь звуковой диапазон, проблема в том. как и где результат оцифровки быстро сохранить или обработать.
Ну а воспроизводить звук лучше внешним ЦАП. Проверено.
SasaVitebsk
Для таких вещей существуют кофидеки (АЦП/ЦАП нелинейные + фильтр цифровой). Такие приборы я видел даже 16-бит. Самому нужен был только телефонный канал, поэтому не углублялся в поиски, но видел, что существуют аналоги для "CD качества". Приборы такие стоят ниже, по-моему, 14$. Предварительно жмут сигнал в 8-бит. Имеют правда "спицифический интерфейс", но я его реализовал на m8 16МГц.

При передаче на rs232 сигнал желательно сжимать. Думаю что это возможно, хотя производительности AVR для таких вещей маловато.
Nanobyte
Цитата(SasaVitebsk @ Dec 11 2006, 17:26) *
... Предварительно жмут сигнал в 8-бит...
... При передаче на rs232 сигнал желательно сжимать. Думаю что это возможно, хотя производительности AVR для таких вещей маловато.

Если исходные 16 бит сжимаются в 8 бит, то это будет, конечно, сжатие с потерями. Отсюда ухудшение качества, искажения и прочие гадости. А сжимать звуковой сигнал без потерь очень сложно, и тут AVR, наверное, действительно отпадает. Ну а для передачи по RS232 (на 115200) сжатие уже потребуется, ибо без него получим Fmax~5 кГц.
sav6622
Цитата(SasaVitebsk @ Dec 11 2006, 16:26) *
Приборы такие стоят ниже, по-моему, 14$. Предварительно жмут сигнал в 8-бит. Имеют правда "спицифический интерфейс", но я его реализовал на m8 16МГц.


Не могли бы Вы поподробней рассказать под какой "специнтерфейс" вы делали на меге ? И под какую кокретно микросхему ? А то вот я тоже собираюсь реализовывать, но по моим оценка на мегах не реализовать ввиду полной "софтовости".
OLEG_BOS
Цитата
Не могли бы Вы поподробней рассказать под какой "специнтерфейс" вы делали на меге ? И под какую кокретно микросхему ? А то вот я тоже собираюсь реализовывать, но по моим оценка на мегах не реализовать ввиду полной "софтовости".


Вот Вам одна из таких микросхем Mu–Law или A–Law кодеков фирмы Motorola (Freesale Semiconductor) применяемой в телефонии. "Специнтерфейс" описан в данном документе. Задача оцифровки аналогового сигнала и обратного преобразования лежит именно на микросхеме кодека. Задача Меги состоит в управлении кодеком, тактировании, преобразовании цифрового PCM потока в другой протокол для дальнейшей передачи, хранения и.т.д.
ValeraK
Цитата(OLEG_BOS @ Dec 12 2006, 04:02) *
Вот Вам одна из таких микросхем Mu–Law или A–Law кодеков фирмы Motorola (Freesale Semiconductor)


Я именно на этой микросхеме Mc14Lc5480 (имеющую микрофонный с фильтром и динамиковый усилители) сделал маленькую АТС на AtMega16.

В качестве тестовой програмки организовал кольцевой буфер читая из которого выводил в ЦАП,
а предварительно поделив на 2 значение с АЦП и сложив со старым зачением ещё раз поделив на 2
записывал в этот же кольцевой буфер - в результате получил эффект ЭХО.

Причём интересно поигратся со скоростью записи в буфер, красивые эффекты получаются при наличии
обгонного кольца старых значений типа улетающего по частоте звука.

В общем DSP конструкция выходного дня, интересное время препровождение.
SasaVitebsk
Цитата(Nanobyte @ Dec 11 2006, 21:44) *
Если исходные 16 бит сжимаются в 8 бит, то это будет, конечно, сжатие с потерями. Отсюда ухудшение качества, искажения и прочие гадости. А сжимать звуковой сигнал без потерь очень сложно, и тут AVR, наверное, действительно отпадает. Ну а для передачи по RS232 (на 115200) сжатие уже потребуется, ибо без него получим Fmax~5 кГц.


Я несколько упростил, чтобы не углублятся. На самом деле это не совсем сжатие. Используется нелинейность самого уха. Слабые звуки мы слышим лучше, чем громче звук тем больше шаг. Такой принцип используется практически везде при обработке звука. Естественно ухудшение качества есть, но относительно эталона, я для уха - незначительное. Серьёзный плюс в таком случае - встроенный в микруху цифровой фильтр. То есть обвеска - минимальная. Я думаю потеря качества на ШИМе будет значительно больше. Шум квантования (две частоты), ошибки восстановления сигнала. Очень сложно создать фильтр работающий в большом диапазоне частот. Поэтому выигрыш в отсутствии ЦАП приводит к проигрышу в создании эффективного фильтра, что и подтверждают Ваши исследования в данной области.

Насчёт 16->8 бит подтвердить не могу. Я использовал аналог для телефонии там 13->8 бит. Возможно 16 жмётся в 10. Может есть и 20 бит. Поищите. Указано - CD качество. Основные производители Motorola, TI, Sony. Устанавливаются везде в телефонии, GSM(стандарт передачи), CD рекордерах.

Сжимать звук не очень сложно (конечно с небольшим коэффициентом сжатия). Посмотрите принципы телефонии или различных MIDI процессоров. Я сжимал на AVR. Принцип - как везде, передаётся изменение сигнала.

В кофидеках существует два закона преобразования Mu- и A-. Отличаются не принципиально, некоторые микрухи могут работать в обоих.

Интерфейс битовый несколько мудрёный. Детали я уже не помню (давно было), но что-то типа: Данные - строб битовый - строб фрейма (пачки). Может ещё какой строб. Микруха тактируется своей частотой типа 1.024М. Частоту эту менять нежелательно, так как относительно её расчитывается фильтр. Внутри тактирование может быть не привязано. Желательно иметь один кварц на МК и от него поделить на кофидек(или кодек) иначе могут быть слышны биения.

Мы добились хорошего звучания.

Удачи
Punk
Добился какчественного звычания с ШИМа (пускал звук с бука сквозняком через аврку32 ADC-PWM) а
вот припаяв R-2R качество меня не порадовало, даже при подаче чистого синуса он на выходе так сказать "с заусенцами" в отличии от ШИМ где выход идеальный.Но у R-2R раза в 2 полоса шире.

В процессе работы возниг вопрос: А КАК СДЕЛАТЬ/РАССЧИТАТЬ ПРОСТОЙ ЦИФРОВОЙ НЧ ФИЛЬТР,ну чтоб проц в реальном времени сигнал фильтровал в заданной полосе.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.