_sda 0 21 ноября, 2021 Опубликовано 21 ноября, 2021 · Жалоба 42 минуты назад, blackfin сказал: Это ещё зачем? "Нормальные герои всегда идут в обход?" ;-) Вы с этой формулой не согласны? Вы меня заинтриговали, с нетерпением жду вашего совета. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 21 ноября, 2021 Опубликовано 21 ноября, 2021 · Жалоба Есть такой бытрый способ, но его точность может быть для вас недостаточной: sqrt (a*a + b*b) ~ max (|a|, |b|) + min (|a|, |b|)/2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 21 ноября, 2021 Опубликовано 21 ноября, 2021 · Жалоба 58 минут назад, andrew_b сказал: Есть такой бытрый способ, но его точность может быть для вас недостаточной: sqrt (a*a + b*b) ~ max (|a|, |b|) + min (|a|, |b|)/2 Спасибо! Но эта формула позволяет вычислить только sqrt(a^2 + b^2). С остальными двумя корнями она не справится. Очень надеюсь что уважаемый blackfin покажет свою формулу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 28 22 ноября, 2021 Опубликовано 22 ноября, 2021 · Жалоба Всё просто: 1. CORDIC'ом преобразуем оба числа в показательную форму: z1 = x1 + y1*i = r1*exp(i*φ1); z2 = x2 + y2*i = r2*exp(i*φ2); 2. Вычисляем корни обоих чисел: sqrt(z1) = sqrt(r1)*exp(i*φ1/2); sqrt(z2) = sqrt(r2)*exp(i*φ2/2); 3. Находим корень произведения: sqrt(z1*z2) = sqrt(z1)*sqrt(z2) = sqrt(r1)*sqrt(r2)*exp(i*φ1/2+i*φ2/2); 4. При необходимости, CORDIC'ом преобразуем полученный корень произведения в алгебраическую форму: Re(sqrt(z1*z2)) + i*Im(sqrt(z1*z2)) = sqrt(r1)*sqrt(r2)*[cos(φ1/2+φ2/2) + i*sin(φ1/2+φ2/2)]; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 22 ноября, 2021 Опубликовано 22 ноября, 2021 · Жалоба Отличный ход! Я знал что вы знаете... Спасибо за совет! Я о показательной форме совсем не подумал... Тогда у меня будет примерно следующий расход времени: 1). Преобразование в показательную форму и обратно = 2*N тактов (пока не знаю, выясню). А так как IP-core Кордик работает в потоковом режиме то эти такты можно не учитывать, просто добавится латентность. 2). Извлечение корня из вещественного числа = 12/2+1=7 тактов Это заметно меньше чем в предыдущих вариантах. Но 7 тактов это тоже много, я не успею всё посчитать. Проблема в том что моя реализация корня не работает в потоковом режиме. У меня извлечение выглядит так - установил данные на порт, дёрнул ireq, дождался oready, забрал вычисленный корень. Для этой задачи такой режим совершенно не годится. Режим работы должен быть потоковым. Попробую штатную IP core корня, но емнип там жуткие тормоза по тактовой частоте. Проверю, если так и есть то буду пробовать ввести конвейер в свою реализацию корня. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 22 ноября, 2021 Опубликовано 22 ноября, 2021 · Жалоба 43 minutes ago, _sda said: Но 7 тактов это тоже много, я не успею всё посчитать. Проблема в том что моя реализация корня не работает в потоковом режиме. Если нельзя сделать потоковым, то на вход/выход карусельный арбитр и несколько последовательных блоков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 22 ноября, 2021 Опубликовано 22 ноября, 2021 · Жалоба On 11/20/2021 at 2:11 PM, _sda said: Может кому приходилось решать подобную задачу? Как действовали? На Xilinx просто брал их CORDIC и получал корень Конечно там всегда возня с форматами, но при должном упорстве разгадать можно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 22 ноября, 2021 Опубликовано 22 ноября, 2021 · Жалоба 14 минут назад, des00 сказал: Если нельзя сделать потоковым, то на вход/выход карусельный арбитр и несколько последовательных блоков. Да, согласен, это вариант. Спасибо! 1 минуту назад, AVR сказал: На Xilinx просто брал их CORDIC и получал корень Конечно там всегда возня с форматами, но при должном упорстве разгадать можно. А корень чего вы получали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 22 ноября, 2021 Опубликовано 22 ноября, 2021 · Жалоба 3 minutes ago, _sda said: А корень чего вы получали? Кажется понял, нужно из комплексного числа? В этом и сложность задачи этой темы? Комплексные у CORDIC может и есть но я не припоминаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 22 ноября, 2021 Опубликовано 22 ноября, 2021 · Жалоба 10 minutes ago, _sda said: А корень чего вы получали? скорее всего имелась в виду амплитуда Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 22 ноября, 2021 Опубликовано 22 ноября, 2021 · Жалоба 47 минут назад, des00 сказал: скорее всего имелась в виду амплитуда Тоже подумал что модуль, не понял к чему это... Стандартная функция кордика... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tpeck 0 22 ноября, 2021 Опубликовано 22 ноября, 2021 · Жалоба On 11/20/2021 at 2:11 PM, _sda said: Динамический диапазон сигнала во входных шинах очень широкий Больше 100 дБ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Самурай 12 22 ноября, 2021 Опубликовано 22 ноября, 2021 · Жалоба 6 часов назад, _sda сказал: не понял к чему это... Стандартная функция кордика... ... Включает в себя в том числе и вычисление обычного квадратного корня Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
faa 4 22 ноября, 2021 Опубликовано 22 ноября, 2021 · Жалоба Помнится, пришлось применить метод Понселе Посмотрите, может точности хватит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 22 ноября, 2021 Опубликовано 22 ноября, 2021 · Жалоба 2 часа назад, Самурай сказал: ... Включает в себя в том числе и вычисление обычного квадратного корня И...? Чем этот вариант лучше штатной IP-core? По дефолту на пятом циклоне она показала максимум Fs=36МГц, немного поколдовал - стала показывать 290МГц, солидный запас для моей тактовой. Так что с этим вопросом я окончательно определился. 2 часа назад, faa сказал: Помнится, пришлось применить метод Понселе Посмотрите, может точности хватит. Этот метод я применяю уже лет 15, поверьте, здесь ему делать нечего. Кордик рулит. 3 часа назад, Tpeck сказал: Больше 100 дБ? Около того. А вы с какой целью интересуетесь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться