_sda 0 20 ноября, 2021 Опубликовано 20 ноября, 2021 · Жалоба Коллеги, есть две шины комплексных данных разрядностью 24 бита RE и 24 бита IM в каждой шине. После комплексного перемножения этих шин получаю результат с 48 бит/компонента. И теперь из этого комплексного произведения хочу извлечь квадратный корень. Так как для извлечения корня компоненты нужно возвести в квадрат то получаем уже 96 бит/компонента. Это же будут жуткие тормоза на высоких тактовых частотах. Динамический диапазон сигнала во входных шинах очень широкий, максимум могу ужать на 2...3 бита, это не решит проблему. Может кому приходилось решать подобную задачу? Как действовали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_G 11 20 ноября, 2021 Опубликовано 20 ноября, 2021 · Жалоба Насколько сильно нужно? Я делал приемник сигнала с амплитудной манипуляцией, там важна не амплитуда, а положение импульса. От извлечения корня отказался, выдавал просто сумму квадратов I и Q компонент. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dr.Alex 0 20 ноября, 2021 Опубликовано 20 ноября, 2021 · Жалоба 1 hour ago, _sda said: для извлечения корня компоненты нужно возвести в квадрат Зачем это ещё? Это что за алгоритм? Я такого не знаю. Если за 1 такт не нужно, то никаких квадратов там нет, всё делается крайне просто за N/2 тактов, результат тоже длины N/2. Если нужно быстрее, можно конвейеризовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 20 ноября, 2021 Опубликовано 20 ноября, 2021 · Жалоба 27 минут назад, V_G сказал: Насколько сильно нужно? Я делал приемник сигнала с амплитудной манипуляцией, там важна не амплитуда, а положение импульса. От извлечения корня отказался, выдавал просто сумму квадратов I и Q компонент. Увы, мне такой вариант не приемлем. Мне после извлечения корня ещё фазу нужно считать. 22 минуты назад, Dr.Alex сказал: Зачем это ещё? Это что за алгоритм? Я такого не знаю. Если за 1 такт не нужно, то никаких квадратов там нет, всё делается крайне просто за N/2 тактов, результат тоже длины N/2. Если нужно быстрее, можно конвейеризовать. А ваш алгоритм точно умеет извлекать корни из комплексных чисел? Или только из вещественных? 24 минуты назад, blackfin сказал: Если нужен просто модуль комплексного числа, то корень не нужен. И перемножение "комплексных данных" не нужно. CORDIC: rectangular to polar conversion Не нужен мне "просто модуль комплексного числа", почитайте пожалуйста условие внимательней. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dr.Alex 0 20 ноября, 2021 Опубликовано 20 ноября, 2021 · Жалоба 6 minutes ago, _sda said: А ваш алгоритм точно умеет извлекать корни из комплексных чисел? Или только из вещественных? Из вещественных. Про корень из комплексного числа вообще никогда не слышал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 20 ноября, 2021 Опубликовано 20 ноября, 2021 · Жалоба 1 минуту назад, Dr.Alex сказал: Из вещественных. Про корень из комплексного числа вообще никогда не слышал. Мой алгоритм умеет такое делать. Алгебра за 11-й класс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 28 20 ноября, 2021 Опубликовано 20 ноября, 2021 · Жалоба 26 minutes ago, _sda said: Не нужен мне "просто модуль комплексного числа", почитайте пожалуйста условие внимательней. Для начала, перепишите свой первый пост на нормальном языке используемом в алгебре за 11-й класс. А то не понятно, "кто на ком стоял".. )) Пока что, мне понятно лишь то, что есть два комплексных числа z1 и z2: z1 = x1 + y1*i; z2 = x2 + y2*i; Что вам нужно с ними сделать мне пока не понятно.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 20 ноября, 2021 Опубликовано 20 ноября, 2021 · Жалоба 2 минуты назад, blackfin сказал: Для начала, перепишите свой первый пост на нормальном языке используемом в алгебре за 11-й класс. А то не понятно, "кто на ком стоял".. )) Пока что, мне понятно лишь то, что есть два комплексных числа z1 и z2: z1 = x1 + y1*i; z2 = x2 + y2*i; Что вам нужно с ними сделать мне пока не понятно.. Давайте попробуем. Нужно вычислить SQRT(z1 * z2). Разрядность шин x1,x2,y1,y2 равна 24 бита, если бы было меньше то этот вопрос скорее всего не появился бы . Добавлю что в матлабе алгоритм работы всего этого математического модуля уже отлажен, работает отлично. Проблему вижу в реализации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 28 20 ноября, 2021 Опубликовано 20 ноября, 2021 · Жалоба 14 hours ago, _sda said: Нужно вычислить SQRT(z1 * z2). Разрядность шин x1,x2,y1,y2 равна 24 бита, если бы было меньше то этот вопрос скорее всего не появился бы. Так в чем проблема? Алгебра за 11-й класс: SQRT(z1 * z2) = SQRT(z1) * SQRT(z2). Оба корня справа будут иметь разрядность: 24/2 = 12 бит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 20 ноября, 2021 Опубликовано 20 ноября, 2021 · Жалоба 5 минут назад, blackfin сказал: Так в чем проблема? Алгебра за 11-ый класс: SQRT(z1 * z2) = SQRT(z1) * SQRT(z2). Оба корня справа будут иметь разрядность: 24/2 = 12 бит Я думал об этом, но мне показалось что в малосигнальном режиме из-за квантования погрешность вычисления будет больше чем в исходной формуле и отбросил этот вариант. Я конечно проверю сравнительные характеристики, а как на ваш взгляд велика ли будет погрешность? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 28 20 ноября, 2021 Опубликовано 20 ноября, 2021 · Жалоба 5 minutes ago, _sda said: ... а как на ваш взгляд велика ли будет погрешность? Странный вопрос.. Сколько бит оставите в вычисленных корнях, столько и будет. Можете вычислять оба корня SQRT(z1) и SQRT(z2) с 24-х битной точностью в формате с фиксированной запятой: 12 целых + 12 дробных разрядов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 20 ноября, 2021 Опубликовано 20 ноября, 2021 · Жалоба 2 минуты назад, blackfin сказал: Можете вычислять оба корня SQRT(z1) и SQRT(z2) с 24-х битной точностью в формате с фиксированной запятой: 12 целых + 12 дробных разрядов. Ага, и когда я перемножу эти 24р * 24р опять получу свои 48 разрядов. Но правда, их в квадрат уже возводить не придётся. Похоже что вы как всегда правы, на 48 разрядов мне таки жизнь облегчили. Покумекаю в этом направлении ещё. Большое спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 7 21 ноября, 2021 Опубликовано 21 ноября, 2021 · Жалоба Может корень и не нужно вычислять, а достаточно просто фазу на 2 поделить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 21 ноября, 2021 Опубликовано 21 ноября, 2021 · Жалоба 3 часа назад, petrov сказал: Может корень и не нужно вычислять, а достаточно просто фазу на 2 поделить? Нет, корень нужен чтобы вернуться к отсчётам "напряжения", ведь после перемножения отсчёты имеют размерность мощности. Дело в том что после перемножения отсчеты произведения участвуют ещё в нескольких блоках и им размерность мощности никак не подходит. А фазу после извлечения да, конечно буду умножать на 2, мне важна фаза после комплексного умножителя. А с вычислением корня похоже рано я расслабился. Для извлечения корня из комплексного числа нужно выполнить три извлечения корня из вещественного числа. Два из них можно выполнить параллельно, поэтому нужно последовательно выполнить два извлечения корня из вещественного числа. Одно извлечение корня из 48-битного числа займёт 48 тактов, два - 96 тактов. У меня просто нет столько времени, новые данные начнут приходить гораздо раньше... Длительность выхлопа из БПФ - 100 мкс и этот выхлоп идёт периодически с интервалом 300 мкс. Это тупиковая ситуация. Коллеги, может есть ещё какие-то более шустрые методы перехода от "мощности" к "напряжению" для комплексных отсчётов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 28 21 ноября, 2021 Опубликовано 21 ноября, 2021 · Жалоба 11 minutes ago, _sda said: Для извлечения корня из комплексного числа нужно выполнить три извлечения корня из вещественного числа. Это ещё зачем? "Нормальные герои всегда идут в обход?" ;-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться