Перейти к содержанию
    

32 minutes ago, jcxz said:

Хотя всё равно скорей всего не один период нужно будет измерять, а несколько. И усреднять.


Да я так делал , когда нужно было только одну частоту при двоичном кодировании расшифровывать.

 

19 minutes ago, uriy said:

Переделайте DTMF декодер на алгоритме герцеля под ваши частоты.

 

Да хочу сначала какую нибудь одну реализацию попробовать, потом на другие перейти, сейчас занялся через rfft , как сделаю покажу результат.

 

Не пойму почему в CMSIS DSP если использовать         arm_rfft_256_fast_init_f32 тратиться всего 3килобайта флэша , а при использовании arm_rfft_init_q15(&sq15,256, 0, 1)  - 70 килобайт флэш. 
баг какой то или это нормальное явление

 

Изменено пользователем Mysteo

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в STM32 нет встроенной поддержки Q15. Наверно это не баг. И мне кажется float в STM32 будет работать медленно, но Q15 еще медленнее. Если в вашем чипе есть FPU то умножение будет отрабатывать за один такт, а у множение Q15 за один такт уже не сработает. С фильтрами еще печальней, в STM32 нет аппаратных циклов. На одно полезную операцию умножения с накоплением будет уходить больше операций на инкремент счетчика, проверку условия и переход в начало цикла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Когда я использовал цифровые фильтры через CMSIS DSP то такой утечки флэши не встречал. И при фильтрации q15 быстрее работал , чем float , что логично. Наверное это все таки с Real FFT Tables как то связано

Изменено пользователем Mysteo

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 минут назад, Mysteo сказал:

Не пойму почему в CMSIS DSP если использовать         arm_rfft_256_fast_init_f32 тратиться всего 3килобайта флэша , а при использовании arm_rfft_init_q15(&sq15,256, 0, 1)  - 70 килобайт флэш. 
баг какой то или это нормальное явление

Может потому что первое компилите для Cortex-M4F (с FPU)? Но у Вас ведь Cortex-M3, где нет FPU. Зачем тогда оно Вам?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 минут назад, uriy сказал:

Если в вашем чипе есть FPU то умножение будет отрабатывать за один такт, а у множение Q15 за один такт уже не сработает.

Во-первых: в CM3 нет FPU. Во-вторых: CM3 запросто умножает два Q15-числа за один такт + 1 такт на сдвиг. А если есть последующие операции с этим результатом, то этот сдвиг можно прибавить к ним и лишнего такта не потребуется.

Цитата

С фильтрами еще печальней, в STM32 нет аппаратных циклов. На одно полезную операцию умножения с накоплением будет уходить больше операций на инкремент счетчика, проверку условия и переход в начало цикла.

Так не надо делать одну операцию фильтра в цикле. Надо делать их несколько. Тогда печаль немного уменьшится.  :wink:  Хотя до DSP ему конечно всё равно далеко....

13 минут назад, Mysteo сказал:

Нет я не компилю для Cortex M3 . дефайны ARM_MATH_CM3 стоят

:wacko2: Так для чего Вы компилите??? Для какого ядра? Это секрет? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ой , извините опечатался , я компилю для Cortex M3 и дейфайны выставлены правильные  ARM_MATH_CM3 

при использовании arm_rfft_init_q15 70 килобайт флэши скушалось.
image.thumb.png.7a56163e2e5ae202c204eadbeaa78e61.png

Расскоментируем arm_rfft_init_q15
 

image.png.198debbb859b628bee580b1a707415c4.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, Mysteo сказал:

при использовании arm_rfft_init_q15 70 килобайт флэши скушалось.

Так посмотрите на свои же картинки - скушалось оно у Вас под какие-то данные, а не под код. Под код там всего ~200 байт добавилось.

Чтоб убедиться какие именно используются инструкции (используются ли инструкции FPU или нет) нужно листинги смотреть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По-правильному это называется "предыскажения" (на передачу +6дБ/окт в полосе модулирующих частот 300..3400 Гц, на приём соответственно -6дБ/окт), присуще аналоговым средствам радиосвязи (разборчивость речи улучшается при узкополосной ЧМ); для полосы ваших частот (500..1250 Гц) или если не используется аналоговый тракт радиопередачи - не нужно.
Электретный микрофон (или вы ДЭМШ применяете Ж8-\) в вашей полосе смело считайте линейным ;-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня канал передачи динамик - электретный микрофон . В будущем переедем на цифровой MEMS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот что удалось пока сделать https://youtu.be/qWgP6HoH7dw

В звуке зашифровано helloWorld , все распознается.

Пока алгоритм построен на rfft преобразовании. Сейчас пробовать делать на герцеле , а потом просто на компараторе, как писал один из участников форума.

 

 

Единственный минус пришлось добавить между детектируемыми частотами левую частоту, иначе нужно как-то мучиться с синхронизацией......

Изменено пользователем Mysteo

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 частот по 40 мс (те на 25 б/с): 400 б/с ... двадцать лет назад (это не для красного словца) доступные микросхемы FFSK-модемов (FX469) без затей, и без затраты "дикой" вычислительной мощи, в телефонном тракте позволяли 4800 б/с.

"Стоило ли так напрягаться, чтоб узнать так мало", - как сказал малыш дойдя до конца азбуки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, Mysteo сказал:

В звуке зашифровано helloWorld , все распознается.

Теперь подмешайте туда шум с некоторым уровнем.  :wink:

То, что работает на идеальном сигнале, без шума - пользы мало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 10/21/2019 at 6:57 PM, Obam said:

16 частот по 40 мс (те на 25 б/с): 400 б/с ... двадцать лет назад (это не для красного словца) доступные микросхемы FFSK-модемов (FX469) без затей, и без затраты "дикой" вычислительной мощи, в телефонном тракте позволяли 4800 б/с.

Да я прекрасно понимаю , что велосипед тут не изобретаю , но нужно было в устройстве сделать передачу данных как в яндекс станции смотреть с 35 секунды.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...