Доброго всем времени суток.
Вопрос больше по примитивной арифметике. Делаю передискретизатор частоты. На входе - последовательность данных с АЦП, формат - беззнаковый 16 бит (16.0)
Есть рассчитанные коэффициенты имп. хар-ки КИХ-фильтра, по модулю не превышающие 1. Их думаю представить в формате 1.15 - 1 знаковый бит, 15 дробных, диапазон значений от -1 до (1-2^-15).
Задача - провести фильтрацию. Ну и впоследствии умножить всю выходную последовательность на целочисленный коэффициент интерполяции, опять же в формате 16.0.
Есть процессор ADSP-BF533 семейства Blackfin, на котором всё это надо реализовать. Имеет встроенный умножитель с накопителем, который умеет (как я понял) автоматически перемножать либо данные в формате 1.15, либо в формате 16.0. Оба формата для него стандартные.
У меня возникает закономерный вопрос: как совместить форматы данных коэффициентов и данных АЦП? Необходимо, как я понимаю, либо нормировать данные с АЦП (т. е. приводить их в формат 1.15), как написано в одной умной книжке, либо наоборот - коэффициенты приводить в 16.0, либо как-то иначе стыковать эти два формата. Если нормировать - то как перевести число из 16.0 без знака в 1.15 (со знаком)?
Необходимое условие реализации - только ассемблер, никаких Си и им подобных. В Си бы такого вопроса не возникло.
Если у кого-то есть любые идеи, как реализовать вычисления - я буду рад выслушать и научиться. В ЦОС я пока полный новичок, с арифметикой столкнулся только сейчас. В принципе приветствуются тапки, носки, помидоры, паяльники, карданы и вопли праведного гнева из серии "пойди диодиком помигай, нуб"