-
- Промоделировал в WinFilter. Отличные результаты при FIR510 @ signed int 16: подавление не завсисит от полосы пропускания, тактовая частота оптимально 4x. Количество операций = 510 сдвигов, умножений и сложений - только Cortex M3 если DE_User(30 знак., 05.06.2011 21:56 - 21:58)
- Да не нужен тебе с такими требованиями FIR, тем более на 510 отводов - сделай 16-битный IIR, обойдешься первым десятком при хорошем подходе - MBedder(05.06.2011 22:25)
- 2 MBedder: Спасибо! Второго порядка тоже получается! 4 умножения 16*16, 4 умножений 16*32, 4 сложения и 2 деления 32:16. Фазовые и переходные характеристики не важны, т.к. дальше действующее значение вычисляется. DE_User(05.06.2011 23:31)MBedder
- Убери деления (замени умножениями), и будет совсем шоколадно - MBedder(05.06.2011 23:56)
- Бeз деления примерно 634 цикла, оптимизация отключена. При частоте семплирования 4000 Гц для ATmega644A и тактовой 10 МГц (потребление 4мА при 3,3В или 13 мВт) загрузка процессора не превысит 30%! DE_User(747 знак., 06.06.2011 03:53 - 06:21)
- Для хохмы попробовал встроить режекторный фильтр 1 порядка (типа loudness)в MP3 махарайку на LPC17. Втупую подставил сгенеренную WinFilter функцию для обработки фрейм-буфера (2304*16 бит перед выводом в I2S). На тактовой 72 МГц это безобразие Гудвин(21 знак., 07.06.2011 08:15)
- А чтобы не было джиттера, придётся разрешить только одно прерывание: от таймера, Fin * 4. В прерывании считывать результат АЦП, запускать новое преобразование и устанавливать флаг "новый семпл". - DE_User(06.06.2011 04:00)
- Возможно, в вашем МК можно запускать АЦП аппаратно от таймера. Тогда вам никакие прерывания не страшны, пока будете успевать обработать ADC IRQ. - amusin(06.06.2011 09:11)
- Проще всего
повторитьразработать на ATmega, в котором приоритетов прерываний нет, а АЦП имеет жёсткий прескалер 2^n от тактовой частоты. - DE_User(06.06.2011 12:01)- ATmega88 и подобные более-менее новые - внимательно изучите биты ADTS0 - ADTS2 - Cepгeй Бopщ(06.06.2011 12:06)
- Проще всего
- Возможно, в вашем МК можно запускать АЦП аппаратно от таймера. Тогда вам никакие прерывания не страшны, пока будете успевать обработать ADC IRQ. - amusin(06.06.2011 09:11)
- Бeз деления примерно 634 цикла, оптимизация отключена. При частоте семплирования 4000 Гц для ATmega644A и тактовой 10 МГц (потребление 4мА при 3,3В или 13 мВт) загрузка процессора не превысит 30%! DE_User(747 знак., 06.06.2011 03:53 - 06:21)
- Убери деления (замени умножениями), и будет совсем шоколадно - MBedder(05.06.2011 23:56)
- 2 MBedder: Спасибо! Второго порядка тоже получается! 4 умножения 16*16, 4 умножений 16*32, 4 сложения и 2 деления 32:16. Фазовые и переходные характеристики не важны, т.к. дальше действующее значение вычисляется. DE_User(05.06.2011 23:31)MBedder
- Да не нужен тебе с такими требованиями FIR, тем более на 510 отводов - сделай 16-битный IIR, обойдешься первым десятком при хорошем подходе - MBedder(05.06.2011 22:25)
- Промоделировал в WinFilter. Отличные результаты при FIR510 @ signed int 16: подавление не завсисит от полосы пропускания, тактовая частота оптимально 4x. Количество операций = 510 сдвигов, умножений и сложений - только Cortex M3 если DE_User(30 знак., 05.06.2011 21:56 - 21:58)