ilo 0 30 марта, 2015 Опубликовано 30 марта, 2015 · Жалоба после некоторых математических ухищрений выяснилось, что минимально допустимый формат коэффициентов цифрового БИХ-фильтра 1.1.20, а лучше 1.1.25 (с фиксированной запятой, ваш кэп). Вариант с плавающей запятой не рассматривается. Входные данные имеют разрядность 14 бит, а так как точность терять не хотелось бы, то в 32-битный формат мы явно не умещаемся. собственно, вопрос в заголовке: 64-битные вычисления на 32-битном DSP - это реально и насколько усложняет жизнь? Например, я подозреваю, что вместо каждого умножения придётся придётся делать по 4 "крест-накрест", и на операцию "умножение с накоплением" можно также не рассчитывать. Какие ещё подводные камни я не вижу? И, если не лень описывать, то как может быть реализован фильтр в таких условиях? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 5 30 марта, 2015 Опубликовано 30 марта, 2015 · Жалоба И, если не лень описывать, то как может быть реализован фильтр в таких условиях? ..не разбираюсь в цифровых фильтрах - но всегда думал что 32 битный результат уже даст динамический диапазон в 190 дБ. Сколько же вам надо? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 30 марта, 2015 Опубликовано 30 марта, 2015 · Жалоба Какие ещё подводные камни я не вижу? 32 бита * 32 бита = 64 битный результат в регистровой паре. Разве нет? У вас 1 + 26 + 14 = 41 бит. Если использовать умножение с накоплением в регистровой паре 64 бит, то для накопления еще много места остается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 31 марта, 2015 Опубликовано 31 марта, 2015 · Жалоба 32 бита * 32 бита = 64 битный результат в регистровой паре. Думаю, автор имеет в виду, что MAC-операций с регистровыми парами не бывает - команд требуется больше. Какие ещё подводные камни я не вижу? И, если не лень описывать, то как может быть реализован фильтр в таких условиях? Так же, как и в условиях 32 бит ;) Математика она от разрядности не зависит. Несколько лет назад реализовывал 32-битный БИХ-фильтр на 16-битном DSP (C5502). Конечно пришлось попотеть, израсходовать больше команд ;) но результат был достигнут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 31 марта, 2015 Опубликовано 31 марта, 2015 · Жалоба Думаю, автор имеет в виду, что MAC-операций с регистровыми парами не бывает - команд требуется больше. Наверное, нужно было озвучить DSP. В Cortex-M4F есть такая целочисленная инструкция: SMLAL RdLo, RdHi, Rn, Rm - Signed multiply with accumulate (32 x 32 + 64), 64-bit result, RdHi:RdLo += Rn x Rm хотя есть и 32-битный аналог: MLA Rd, Rn, Rm, Ra - Multiply with accumulate, 32-bit result, Rd = (Rn x Rm) + Ra Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ilo 0 31 марта, 2015 Опубликовано 31 марта, 2015 · Жалоба Несколько лет назад реализовывал 32-битный БИХ-фильтр на 16-битном DSP (C5502). Конечно пришлось попотеть, израсходовать больше команд ;) но результат был достигнут. спасибо. собственно, именно этот ответ мне и был нужен ) и он обнадёживает - ситуацию понимаю правильно Наверное, нужно было озвучить DSP. хотелось бы, но не могу, т.к. вопрос темы появился именно в процессе выбора DSP. Импортозамещение, чтоб его. за примеры команд отдельное спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 31 марта, 2015 Опубликовано 31 марта, 2015 · Жалоба хотелось бы, но не могу, т.к. вопрос темы появился именно в процессе выбора DSP. Импортозамещение, чтоб его. за примеры команд отдельное спасибо Такие команды есть даже в Cortex-M3, но нет в Cortex-M0. И отечественные Cortex-M3 есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 31 марта, 2015 Опубликовано 31 марта, 2015 · Жалоба Импортозамещение, чтоб его. Вероятно, в таком случае, можно рассмотреть реализацию на Воронежских FPGA. Там уж точно сделаете ту разрядность, которая нужна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ilo 0 31 марта, 2015 Опубликовано 31 марта, 2015 · Жалоба ..не разбираюсь в цифровых фильтрах - но всегда думал что 32 битный результат уже даст динамический диапазон в 190 дБ. Сколько же вам надо? может дать, а может и не дать. зависит от реализации. надо чем больше, тем лучше, но не менее 70дБ. Такие команды есть даже в Cortex-M3, но нет в Cortex-M0. И отечественные Cortex-M3 есть. какие отечественные можете подсказать? частота следования отсчётов примерно 15кГц, БИХ-фильтров второго порядка штук 12. Понятно, что нет пределов совершенству, поэтому чем проще тем лучше. Пока смотрим на НТЦ Модуль и Миландр... Вероятно, в таком случае, можно рассмотреть реализацию на Воронежских FPGA. Там уж точно сделаете ту разрядность, которая нужна. Думали об этом, но по моим ощущениям они слабоваты для нас. Может, сделаю пока на альтеровской отладочной, а там посмотрим, сколько логики понадобится. А вдруг. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 31 марта, 2015 Опубликовано 31 марта, 2015 · Жалоба Ну еще у нас делается немало процессоров на архитектуре SPARC v8 - там есть инструкции умножения 32x32->64 и деления 64:32->32, а кортексы-м курят нервно в стороне против спарка. С ними, разве, кортекс-а посоперничает, и то, местами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ilo 0 1 апреля, 2015 Опубликовано 1 апреля, 2015 · Жалоба Ну еще у нас делается немало процессоров на архитектуре SPARC v8 - там есть инструкции умножения 32x32->64 и деления 64:32->32, а кортексы-м курят нервно в стороне против спарка. С ними, разве, кортекс-а посоперничает, и то, местами. эльбрусы что ли? круто, но... короче слишком круто для наших задач) кроме эльбрусов что ещё на спарке есть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 1 апреля, 2015 Опубликовано 1 апреля, 2015 · Жалоба эльбрусы что ли? круто, но... Ну почти, недоэльбрус, МЦСТ R500 Еще мипсы были, навроде 1892ВМ3Т, даж в QFP Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 1 апреля, 2015 Опубликовано 1 апреля, 2015 · Жалоба Например, я подозреваю, что вместо каждого умножения придётся придётся делать по 4 "крест-накрест", и на операцию "умножение с накоплением" можно также не рассчитывать. Кстати - при операциях типа "крест-накрест" (если разрядности операции умножения не хватает), достаточно 3 операций, так как умножение младших частей можно отбросить :rolleyes: Вам ведь всё равно понадобится только старшая половина результата. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 1 апреля, 2015 Опубликовано 1 апреля, 2015 · Жалоба Вам ведь всё равно понадобится только старшая половина результата. Это когда как... Младшая часть влияет при накоплении на какой-то кол-во младших бит старшей части. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shf_05 0 8 апреля, 2015 Опубликовано 8 апреля, 2015 · Жалоба Это когда как... Младшая часть влияет при накоплении на какой-то кол-во младших бит старшей части. как то необходимо было с 16 разрядными величинами работать, обычный бих 16 итный коэф. с накопителем MAC результата в 16 бит давал приличный шум - несколько бит, при амплитудах сигнала в 2-3 бита фильтр работал из ряда вон плохо... сделал в фильтре накопитель MAC на 32 разряда, все стало лучше, правда размер ПП вырос раза в 4 также и скорость вычислений упала также примерно, зато результат порадовал - даже 1 битный сигнал проходил через фильтр как следует и никаких шумов. проц 16 бит, язык - асм. так что все реализуемо, вам вероятнее всего даже хватит только разрядность накопителе MAC увеличить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться