|
|
  |
mp3 acc wma декодеры под cortex-m3 |
|
|
|
Nov 21 2009, 00:56
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
Цитата(sonycman @ Nov 21 2009, 01:50)  Написано, что есть проблемы с битрейтом 320 kbps. Чёрт, STMка не справляется. Может, у LPC получится без "заиканий"? Странно это. SAM7 справлялся с 320 кбит. А тут и попугаев больше и частота выше. Мне все никак не победить CrossStudio и не проверить толком. Цитата(defunct @ Nov 21 2009, 02:57)  Может кто-нить зальет на ftp? Залил /upload/MCs/ARM/stm32/mp3/
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
|
Nov 24 2009, 20:20
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
Судя по этому http://infocenter.arm.com/help/topic/com.a...QRC0001_UAL.pdf есть. И по этому http://infocenter.arm.com/help/index.jsp?t...e/Chdbhfja.html . Код Multiply with 64-bit result 32 UMULL, SMULL, UMLAL, and SMLAL. unsigned accumulate long UMLAL{S} RdLo, RdHi, Rm, Rs N Z C* V* RdHi,RdLo := unsigned(RdHi,RdLo + Rm * Rs) Но это Thumb-2. CrossWork 1.* такой не умеет генерить.
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
|
Nov 25 2009, 05:57
|

embarrassed systems engineer
    
Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038

|
Цитата(Dron_Gus @ Nov 24 2009, 22:20)  Код Multiply with 64-bit result 32 UMULL, SMULL, UMLAL, and SMLAL. unsigned accumulate long UMLAL{S} RdLo, RdHi, Rm, Rs N Z C* V* RdHi,RdLo := unsigned(RdHi,RdLo + Rm * Rs) Но это Thumb-2. CrossWork 1.* такой не умеет генерить.  О, спасибо, а то я чего-то сразу в описании ARMv7 этого не нашел. Помню, что в обычном thumb-е нормального умножения не было, и расстроился что и на Cortex будет грустно, но как оказалось - все OK.
|
|
|
|
|
Nov 25 2009, 08:07
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
А вообще какой смысл делать декодер силами контроллера? Того же кортекса, к примеру? Всё равно все ставят внешний чип - ЦАП? В чём экономия по сравнению с внешним декодером? А если воспользоваться родными ЦАПами кортекса? Но всё равно было бы интересно запустить рабочий софтовый декодер. Правда, только если он ничем не будет уступать тому же VS1011 в плане поддержки битрейтов и качества звука... ЗЫ: эх, вот если бы контроллеры класса кортексов имели на борту хоть какой нибудь DSP
|
|
|
|
|
Nov 25 2009, 08:28
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
Цитата(sonycman @ Nov 25 2009, 11:07)  А вообще какой смысл делать декодер силами контроллера? Того же кортекса, к примеру?
Всё равно все ставят внешний чип - ЦАП? В чём экономия по сравнению с внешним декодером?
А если воспользоваться родными ЦАПами кортекса?
Но всё равно было бы интересно запустить рабочий софтовый декодер. Правда, только если он ничем не будет уступать тому же VS1011 в плане поддержки битрейтов и качества звука... Много вопросов.  Свою цель я обозначил в начале топика. В сравнении с готовыми декодерами - большая гибкость и апгрейдо-пригодность. Я, например, хочу добавить flac. ЦАПы у этого Cortex'а, боюсь, отдыхают в сравнении с тем же tlv320aic23
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
|
Nov 26 2009, 06:20
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
Цитата(sonycman @ Nov 25 2009, 23:00)  То есть нормальных вставок в родном THUMB2 не получилось найти, или руки пока не дошли собрать?
Тоже интересно, что получится в результате.
А ось в проекте не присутствует случайно, как у немцев? Вставки заменены сишными аналогами. Но самая ресурсоемкая процедура как раз в thimb2 - asmpoly_thumb2.s, взята из проекта от stm32. Вот ее надо проверить. Т.к. CS 1.7 вроде как не умеет thumb-2 и что там в итоге выходит - х.з., может он arm код генерирует. Я пока не могу уделять этому занятию много времени, поэтому не знаю, когда будут результаты. Всем желающим могу отдать проект в его текущем состоянии (нерабочем  ). Про ось запутался, про какой проект вы говорите. У stm'шников какая-то CircleOS. У немцев с sam7 (http://embdev.net/articles/ARM_MP3/AAC_Player) оси нет. Я вначале прикрутил freertos, потом открутил нафиг.  З.Ы. а для CrossStudio 2.* клизмы еще нет?
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
|
Nov 27 2009, 08:04
|

embedder
  
Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911

|
Цитата(Dron_Gus @ Nov 25 2009, 11:28)  Свою цель я обозначил в начале топика. В сравнении с готовыми декодерами - большая гибкость и апгрейдо-пригодность. Я, например, хочу добавить flac. ЦАПы у этого Cortex'а, боюсь, отдыхают в сравнении с тем же tlv320aic23 Посмотрите на VS1053B: Decodes multiple formatsOgg Vorbis MP3 = MPEG 1 & 2 audio layer III (CBR+VBR+ABR) MP1 & MP2 = MPEG 1 & 2 audio layers I & II optional MPEG4 / 2 AAC-LC(+PNS), HE-AAC v2 (Level 3) (SBR + PS) WMA4.0/4.1/7/8/9 all profiles (5-384 kbps) FLAC lossless audio with software plugin (upto 24 bits, 48 kHz)WAV (PCM + IMA ADPCM) General MIDI 1 / SP-MIDI format 0 Encodes three different formats from mic/line in mono or stereoOgg Vorbis with software plugin IMA ADPCM 16-bit PCM
--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
|
|
|
|
|
Dec 23 2009, 14:31
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Пока сделал декодер на чипе VLSI, но потом хочется собрать софтовый декодер. Какие ЦАПы посоветуете использовать, кроме tlv320aic23? Требования к качеству звука не шибко высокие, тем более, раз речь идёт об mp3. Нет ли в природе буферизованных ЦАПов или кодеков, которые бы сами генерировали нужную частоту сэмплирования? И что-то я не особо впечатлён возможностями генератора клока для I2S в STM32 (кроме новых чипов с отдельным PLL). Тупой целочисленный делитель, необходимо подгонять кварц для более менее точного Fs. Не сравнить с дробным делителем LPC17хх
|
|
|
|
|
Dec 23 2009, 20:43
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(Dron_Gus @ Dec 23 2009, 23:55)  По второму вопросу tlv320aic23 умеет быть мастером. Думаю, Вы в курсе  Самый популярный вариант. Все остальные, которые знаю, клок генерировать не умеют. Про I2C у STM'ов, а Вы их SPI пробовали? Тоже то еще. Видно захотели сильно универсальный модуль сделать да не вышло SPI master/SPI slave/I2S/и еще что-то однопроводное. Думаю поработать с tlv320 dac23, он без ненужного мне АЦП, но мастером быть тоже умеет (есть у TI и более простые ЦАПы с таким режимом). Но что-то особой пользы от мастера я не увидел. Внешний-то клок - MCLK - всё равно надо подавать снаружи, и подавать разный для разных частот сэмплирования (например, для Fs = 44.1 кГц- 11.289 МГц, а для Fs = 48 кГц - уже 12.288 МГц). Имхо, проще будет сразу все частоты формировать контроллером...  К SPI у меня претензий нет. Ну, кроме такого же "тупого" делителя (2^x) для SCLK. Но это и у конкурентов так. А вот I2C у STM отвратительный. Громоздкий, да ещё и еррата кусается...
|
|
|
|
|
Dec 24 2009, 08:11
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
Цитата(sonycman @ Dec 23 2009, 23:43)  Но что-то особой пользы от мастера я не увидел. Внешний-то клок - MCLK - всё равно надо подавать снаружи, и подавать разный для разных частот сэмплирования (например, для Fs = 44.1 кГц- 11.289 МГц, а для Fs = 48 кГц - уже 12.288 МГц). Имхо, проще будет сразу все частоты формировать контроллером... К SPI у меня претензий нет. Ну, кроме такого же "тупого" делителя (2^x) для SCLK. Но это и у конкурентов так. А вот I2C у STM отвратительный. Громоздкий, да ещё и еррата кусается... А погрешности при 12 МГц кварце (usb mode) не устраивают? SPI мне не понравился тем, что не умеет дергать CS (SS) после каждого байта. Да и после окончания передачи блока не дергает. Короче, как на sam7 приходится дергать руками. На I2C я вообще забил. Проще ногами дергать, чем адекватно управлять их модулем.
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
|
Dec 24 2009, 13:24
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
Цитата(adnega @ Dec 24 2009, 15:27)  Хм.. По I2C подключил дисплей TIC-154, на SPI SD/MMC-карта (правда, CS ручками дергаю), делал и развертку VGA-сигнала (640x480) через SPI на stm32f103t4 - из-за недостатка памяти только текстовый режим (а ля, просмотр отладочных сообщение через RS232/TTL). Во всех реализациях проблем не имел - хотелось бы узнать какие есть проблемы (страшно ведь...)? Читайте еррату и апноты. По I2C нельзя послать 1 байт. Достатоно криво реализуется обработка исключительных ситуаций. У меня устройство с возможностью горячего подключения/отключения, так что для меня было критично. По СПИ, кроме перечисленного, только 8/16 бит. ИМХО неудобно иногда. З.Ы. раз у Вас все работает, переживать не стоит.  З.З.Ы. мне все же привычней реализации этих модулей от Atmel & NXP.
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
|
Dec 25 2009, 05:28
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(Dron_Gus @ Dec 24 2009, 17:24)  По I2C нельзя послать 1 байт. Можно всё, по крайней мере на medium density девайсах. Просто для 100% надёжности необходима реализация I2C через прерывания или DMA. Цитата(Dron_Gus @ Nov 26 2009, 10:20)  Я пока не могу уделять этому занятию много времени, поэтому не знаю, когда будут результаты. Всем желающим могу отдать проект в его текущем состоянии (нерабочем  ). Ну а как прогресс с софтовым декодером? Есть результаты?
|
|
|
|
|
Dec 25 2009, 19:52
|
Местный
  
Группа: Свой
Сообщений: 251
Регистрация: 26-07-05
Пользователь №: 7 117

|
Цитата(Dron_Gus @ Nov 25 2009, 14:10)  Декодер там RealNetworks'овский. Его еще немцы в своем плеере на sam7 использовали. Собирал этот декодер в кейле, для нормального декодирования на stm32 больших битрейтов приходилось разгонять проц до 96МГц ибо у STM32 дюже флеш тормознутый.
|
|
|
|
|
Dec 25 2009, 22:20
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(sergvks @ Dec 25 2009, 23:52)  Собирал этот декодер в кейле, для нормального декодирования на stm32 больших битрейтов приходилось разгонять проц до 96МГц ибо у STM32 дюже флеш тормознутый. Больших битрейтов - это каких? А в декодере вставки на асме есть? Наиболее юзабельные функции располагать в RAM пробовали? Просто, после сообщений о том, что даже на тормозном SAM7S 320 kbps не лагает - слышать о проблемах на STM странновато...
|
|
|
|
|
Dec 26 2009, 06:59
|
Местный
  
Группа: Свой
Сообщений: 251
Регистрация: 26-07-05
Пользователь №: 7 117

|
После кое-какой правки исходников я пришёл к тому, что находится во вложении.
Прикрепленные файлы
mp3.zip ( 72.52 килобайт )
Кол-во скачиваний: 198
|
|
|
|
|
Jan 2 2010, 09:35
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(Dron_Gus @ Jan 2 2010, 03:16)  Добил. Декодирование mp3 @ 256 на lpc1768 @ 100 MHz - 74..78%. CrossStudio 1.7, без оптимизации, thumb. Данные грузятся с sd-карты результат выпихивается через dma на tlv320.
Оптимизация O3 - mp3 @ 320 на lpc1768 @ 100 MHz - 28..30%. Либо я что-то не правильно мерю. Но underun'ов точно нет. Приведу проект в порядок - выложу. Интересные результаты  Имхо - без оптимизации не стоит компилировать вообще. Не подскажете, какую методику можно использовать для замера занятости процессора? Вот у вас - 70%... 30%... как это точно измерить? Цитата Пусть у всех в Новом Году будет хватать времени заниматься хобби. И ещё бы не переводились деньги на любимое занятие. Иногда это бывает весьма затратно
|
|
|
|
|
Jan 2 2010, 09:43
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
Цитата(sonycman @ Jan 2 2010, 12:35)  Не подскажете, какую методику можно использовать для замера занятости процессора? Вот у вас - 70%... 30%... как это точно измерить? Я использовал Repetitive Interrupt Timer. Перед началом воспроизведения сбрасываю и запускаю. Перед каждым вызовом декодирования запоминаю текущее значение таймера, после выхода из декодирования считаю количество затраченных тактов. Всё это суммирую и в конце делю на текущее значение таймера. Да, собсно, что рассказывать: Код void decode_start(void) { d_start = RIT->RICOUNTER; } void decode_end(void) { d_tot += RIT->RICOUNTER - d_start; } void play_start(void) { //reset tottal decode time counter d_tot = 0; //reset RIT->RICOUNTER = 0; //start RIT->RICTRL = (1 << 0) | //clear int flag (0 << 1) | //don't clear timer on equal (1 << 2) | //debug mode - halted on cpu halt (1 << 3) | //enable (0); } void play_stop(void) { unsigned int tot; // tot = RIT->RICOUNTER; // RIT->RICTRL &= ~(1 << 3); //stop counter // printf("Total ticks = %d\r\n", tot); printf("Decode ticks = %d\r\n", d_tot); printf("Average load = %d %%\r\n", ((long long)d_tot * 100) / (long long)tot); } и Код decode_start(); err = MP3Decode(hMP3Decoder, &read_ptr, &bytes_left, dac_buffer[writeable_buffer], 0); decode_end(); Единственное, таймер лопатит на CCLK, поэтому болье 42 сек им считать нельзя.
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
|
Jan 5 2010, 00:00
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
Выкладываю текущее состояние моей поделки. Возникла непреодолимая проблема. Два кодека (mp3 и aac) не хотят компилироваться вместе. Ругаются на кучу redefine'ов. Может кто умный глянет? В текущем варианте включен mp3, чтобы добавить AAC надо глобально задефайнить ADD_AAC и включить в сборку ветку real-aac. Заранее спасибо.  Разобрался. Объектники от разных декодеров пересекались именами.
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
|
Jul 26 2010, 07:09
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Цитата(sergvks @ Dec 26 2009, 08:59)  После кое-какой правки исходников я пришёл к тому, что находится во вложении. Попробовал впихнуть данный декодер (RealNetworks) в свой STM32f103RB (RAM 20 KB), просто так не лезет, попробовал указать #define MAX_NCHAN 1 (для моей задачи подходит моно), всё влезло, но при декоде 6 фрейма вылетает в HardFault_Handler из PolyphaseMono(). Заметил, что как-то странно изменяется sbi->vindex. Вопрос, собственно, в следующем: Как заставить работать данный декодер с моно МП3?
|
|
|
|
|
Jul 26 2010, 19:13
|

Местный
  
Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267

|
Цитата(OVladimir @ Jul 26 2010, 11:09)  Попробовал впихнуть данный декодер (RealNetworks) в свой STM32f103RB (RAM 20 KB), просто так не лезет, попробовал указать #define MAX_NCHAN 1 (для моей задачи подходит моно), всё влезло, но при декоде 6 фрейма вылетает в HardFault_Handler из PolyphaseMono(). Заметил, что как-то странно изменяется sbi->vindex. Вопрос, собственно, в следующем: Как заставить работать данный декодер с моно МП3? Возникает резонный вопрос: А на кой ляд для МОНО MP3? Это явно не проигрыватель для прослушивания аудио. А для "рупора" хватит всяческих ADPCM. Да и лицензионные ограничения не заботят...
|
|
|
|
|
Jul 27 2010, 04:48
|

embedder
  
Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911

|
Цитата(goodwin @ Jul 26 2010, 23:13)  Возникает резонный вопрос: А на кой ляд для МОНО MP3? Это явно не проигрыватель для прослушивания аудио. А для "рупора" хватит всяческих ADPCM. Да и лицензионные ограничения не заботят... Может человеку необходимо качество звука высокое и большое сжатие файлов.
--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
|
|
|
|
|
Jul 27 2010, 05:05
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Цитата(goodwin @ Jul 26 2010, 21:13)  Возникает резонный вопрос: А на кой ляд для МОНО MP3? Это явно не проигрыватель для прослушивания аудио. А для "рупора" хватит всяческих ADPCM. Да и лицензионные ограничения не заботят... Действительно, задача состоит в том, чтобы проигрывать голосовые сообщения, которые может записывать сам пользователь при помощи компъютера и нехитрых действий. Так же ограничена память для хранения голосовой информации (несколько мегабит флэш, никаких СД). Опыта в аудио кодеках у меня нет, поэтому, сразу подумал про МП3. Может, посоветуете конкретный ADPCM декодер (заодно и кодер, хотя, это было бы лучше вынести в отдельную тему)? И всё-таки хотелось бы прочитать ответ о моно МП3.
|
|
|
|
|
Jul 27 2010, 06:04
|

embedder
  
Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911

|
Цитата(OVladimir @ Jul 27 2010, 09:05)  Действительно, задача состоит в том, чтобы проигрывать голосовые сообщения, которые может записывать сам пользователь при помощи компъютера и нехитрых действий. Так же ограничена память для хранения голосовой информации (несколько мегабит флэш, никаких СД). Опыта в аудио кодеках у меня нет, поэтому, сразу подумал про МП3. Может, посоветуете конкретный ADPCM декодер (заодно и кодер, хотя, это было бы лучше вынести в отдельную тему)? И всё-таки хотелось бы прочитать ответ о моно МП3. Если Вы собираетесь изготавливать коммерческое устройство, то за mp3 придется платить лицензию. Лично я, в своих подобных устройствах, а именно, транспортных автоинформаторах использовал внешний декодер mp3, такой как VS1001K фирмы vlsi. Флеш память сейчас очень подешевела, поэтому, имхо проще сделать ADPCM или какой-нибудь SPEEX или FLAC
--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
|
|
|
|
|
Jul 27 2010, 07:29
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290

|
Цитата(zksystem @ Jul 27 2010, 08:04)  Если Вы собираетесь изготавливать коммерческое устройство, то за mp3 придется платить лицензию. Лично я, в своих подобных устройствах, а именно, транспортных автоинформаторах использовал внешний декодер mp3, такой как VS1001K фирмы vlsi. Флеш память сейчас очень подешевела, поэтому, имхо проще сделать ADPCM или какой-нибудь SPEEX или FLAC С лицензией разберёмся, VS1001K ставить не хочется (дополнительные деньги и место на плате, которая, к слову сказать, уже спроектирована и собрана), хочется оставить всё как есть и впихнуть МП3 в 20 КБ посредством настройки декодера. Покачто мысль дошла только до того, чтобы уменьшить максимальное число каналов с 2 до 1, тогда всё помещается, но не работает. Отсюда и вопрос, стоит ли возиться с уменьшением требуемого кол-ва РАМ и вообще, реально ли это сделать и каким образом? В конце концов есть вариант поставить процессор из той же линейки с большим РАМ, но этого делать тоже не хочется пока, бо STM32F103RB и STM32F103R8 уже закуплены.
|
|
|
|
|
Jul 28 2010, 08:43
|
Местный
  
Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188

|
Цитата(OVladimir @ Jul 27 2010, 09:05)  ...Может, посоветуете конкретный ADPCM декодер... Их навалом в Инете... Я один такой прикрутил к проекту на LPC23, выход - через АЦП. Вроде ничего звучит. Памяти требует - 4kB на секунду звука, RAMa - совсем немного.
|
|
|
|
|
Sep 5 2010, 11:55
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(Dron_Gus @ Jan 5 2010, 04:00)  Выкладываю текущее состояние моей поделки. Глубоко пока в исходниках не копался, вот думаю - какие буферы в памяти для воспроизведения MP3 нужны? Надумал вот что. Нужны два сэмпловых буфера по 1152 сэмпла на канал - один для распаковки текущего фрейма декодером, второй - для вывода из него звука по DMA на ЦАП. Какой ширины сэмплы формирует декодер в Вашем проекте? Контроллер у меня будет LPC1768, его I2S не может работать с 24 битными словами. Тут или 16 бит - но тогда в одном 32 битном слове должны быть сразу оба канала. Или 32 бита на сэмпл для каждого канала. Ну и один буфер для подгрузки текущего файла. Размер нужен такой, чтобы в него (желательно) помещался один фрейм целиком. Для 320 килобит это приблизительно 1100 байт. Так ли это? Ну и пока что не смотрел, сколько ОЗУ хочет непосредственно декодер уже кроме упомянутых выше буферов?
|
|
|
|
|
Sep 5 2010, 18:10
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(Dron_Gus @ Sep 5 2010, 21:29)  FIFO 8 32-разрядных слов. Но не обязательно писать все 32 бита, ИМХО. Выставляете размер данных 16 бит, стерео режим и все. При отправке каждого сэмпла из FIFO будет вычитываться одно значение. Хм, вот содержимое ФИФО для разных режимов:
То есть, если задать размер данных в 16 бит, то, как видно, одна 32 битная ячейка ФИФО будет содержать два 16 битных сэмпла. Но никак не один сэмпл. Что-то я Вас немного не пойму  Вот меня и смущает такая организация ФИФО - как бы не пришлось делать лишнюю работу по склеиванию ручками двух сэмплов (16 бит) в один (32 бита)  ЗЫ: в принципе, в случае, если выход декодера в памяти выглядит как чередующиеся 16 битные полуслова, проблемы нет - DMA будет копировать сразу 32 битное слово (два сэмпла) в каждую ячейку ФИФО. Единственное, могут попутаться местами каналы, но DAC23 имеет специальную для этого фичу, кажется
|
|
|
|
|
Sep 8 2010, 20:52
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Смонтировал на отладочной платке ЦАП TLV320DAC23, рядом работает ЖКИ дисплей по 8 битной параллельной шине. ЦАП висит на I2C вместе с AT24C01B на проводах длиной около 20 см. Так вот, если с EEPROM проблем никаких нет, то DAC23 меня уже запарил ошибками на I2C - то NACK сразу после выдачи адреса даёт, то NACK после записи одного байта, а то вообще шину подвесит. Происходит это только если одновременно во время передачи по I2C в ЦАП идёт запись в ЖКИ. Причём, если отвести провода I2C от проводов ЖКИ - ошибок становится много меньше... Что за проблемы у этого цапа? Какой-то корявый у него интерфейс, слишком уж чувствительный к наводкам\пульсациям. По осциллографу ничего критичного не видно, епромка пашет как часы, а эта какашка запарила уже  У кого есть опыт с DAC23\AIC23 - ничего подобного не наблюдали?
|
|
|
|
|
Sep 9 2010, 11:25
|
■ ■ ■ ■
    
Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443

|
Цитата Сейчас стоят резисторы 3к3 Почему 3к3?
--------------------
Делай что должен и будь что будет.
|
|
|
|
|
Sep 9 2010, 12:27
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(skripach @ Sep 9 2010, 15:25)  Почему 3к3? А сколько нужно? Номиналы пуллапов зависят от суммарной ёмкости линий и частоты. Частота интерфейса 400 кГц, чем меньше подтягивающие резисторы - тем круче фронты - тем выше достигаемая скорость передачи. Плюс, по спецификации на ЦАП rise time не должен превышать 300 наносекунд. По осциллографу видно, что это время значительно больше. Поэтому, имхо, чем меньше пуллапы - тем лучше. Подключение к ЦАПу отдельной земли не дало никакого результата. Вроде решил проблему с DAC23 установкой на пины I2C микросхемы керамики по 150 пикофарад. Дурдом, конечно, но вероятно причиной сбоев являлись наведённые с параллельной шины ЖКИ помехи, которые давали ложные срабатывания логики интерфейса внутри ЦАПа. Причём епромка оказалась к этим наводкам совершенно нечувствительной, что делает ей честь. В ЦАПе предусмотрен фильтр коротких импульсов в 50 нс, который оказался совсем неэффективным. Если переключить щупы осциллографа на входной делитель х10, то на сигналах становятся видна модуляция логических уровней, с частотой в несколько мегагерц и амплитудой до 500 милливольт (если верить китайскому осциллографу  ). Очевидно, что ЦАП принимает эти помехи за полезный сигнал. Неужели величина в 500 милливольт достаточна для уровня логической 1 для I2C? Да и могут ли электромагнитные наводки достигать таких величин, интерфейс-то вроде не высокоомный? Теперь придётся разводить сигналы I2C на платах аккуратнее, вдали от быстрых сигнальных проводников или под надёжным прикрытием замляных полигонов. Почитаешь форумы, так народ тянет провода на метры и проблем вроде нет. А тут всего 20 см и уже не хорошо
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|