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

Реализация извлечения корня

20 minutes ago, _sda said:

Около того. А вы с какой целью интересуетесь?

Чтобы понять насколько оправданы 24 бита )

Ну и 100 дБ - это уже очень и очень до фига.

Хотя если это звук, то возможно.

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


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

28 minutes ago, _sda said:

Около того.

Путаетесь в показаниях.. :)

 

On 11/20/2021 at 2:11 PM, _sda said:

... есть две шины комплексных данных разрядностью 24 бита RE и 24 бита IM в каждой шине.

Две шины комплексных данных по 24 бита, это ~24,5 бит для вещественной огибающей. Так что ДД будет примерно: 24,5*6,02 + 1,76 ≈ 150 дБ.

Видимо, 50 дБ где-то потерялись по дороге.. :)

 

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


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

2 minutes ago, blackfin said:

Видимо, 52 дБ где-то потерялись по дороге.. :)

Может у него потери на обработку 0,001 дБ и КАМ256, тогда может )

Или звук, где пороговое SNR около 40 дБ и он должен мега помеху давить в соседнем канале, ибо аналоговая фильтрация не сдюжит.

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


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

12 часов назад, blackfin сказал:

Путаетесь в показаниях.. :)

 

Две шины комплексных данных по 24 бита, это ~24,5 бит для вещественной огибающей. Так что ДД будет примерно: 24,5*6,02 + 1,76 ≈ 150 дБ.

Видимо, 50 дБ где-то потерялись по дороге.. :)

 

Но вы же посчитали динамический диапазон самой шины данных, а у всего приёмного тракта он будет заметно меньше. Ясный перец что размер шины можно уменьшить на несколько бит, я об этом говорил в самом начале. А оно мне надо?

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


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

1 час назад, _sda сказал:

И...? Чем этот вариант лучше штатной IP-core?

Не знаю... от Вас было много горя в голосе, что Ваш алгоритм вычисления квадратного корня выполняется слишком много тактов и Вас не устраивает... В то же время, Вы были в восторге от CORDIC-а, который можно конвейеризировать... Мне показалось странном, что Вы не сложили два + два, вот и решил немного Вам помочь...:) Хорошо, что с этим вопросом Вы все-таки определились...

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


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

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

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


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

Коллеги, а может кто-то помочь разобраться с кордиком Альтеры?  Режим Vector Translate Function. Что у них там за формат такой хитрый?

Приводят константу К с точностью до 12-го знака, а сами пишут "has no fixed value". Как из выходного кода получить нормальные значения?

Дополнительной информации найти не удалось.

image.thumb.png.d709efbca5a71d8a02cca52de1a09af4.png

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


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

16 hours ago, _sda said:

Коллеги, а может кто-то помочь разобраться с кордиком Альтеры?  Режим Vector Translate Function. Что у них там за формат такой хитрый?

Приводят константу К с точностью до 12-го знака, а сами пишут "has no fixed value". Как из выходного кода получить нормальные значения?

не с точностью, а сходится к числу, при устремлении количества итераций в бесконечность. Число зависит от количества шагов, ЕМНП, после 8го шага, оно константа, для типового альтеровского 18 битного умножителя.

Про формат не знаю, но скорей всего, что-то типа fixed point u1.16 или u1.17 и умножитель знаковый или беззнаковый стоит

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


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

5 часов назад, des00 сказал:

не с точностью, а сходится к числу, при устремлении количества итераций в бесконечность. Число зависит от количества шагов, ЕМНП, после 8го шага, оно константа, для типового альтеровского 18 битного умножителя.

Про формат не знаю, но скорей всего, что-то типа fixed point u1.16 или u1.17 и умножитель знаковый или беззнаковый стоит

Спасибо! Вы реально с этой коркой работали? У меня отношение правильного значения к вычисленному примерно 1,26 - довольно далеко от указанного коэффициента. А с фазой как? При подаче на вход двух одинаковых компонент на выходе имею 35 градусов вместо положенных 45.  Вот незадача...

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


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

1 hour ago, _sda said:

Спасибо! Вы реально с этой коркой работали? Т.е. число должно стоять на входе корки несколько тактов (например 8), а не один? Это я не пробовал, в описании эту тонкость не видел. Я считал что корка потоковая... И у меня отношение правильного значения к вычисленому примерно 1,26 - довольно далеко от указанного коэффициента. А с фазой как? При подаче на вход двух одинаковых компонент на выходе имею 35 градусов вместо положеных 45.  Вот незадача...

с этой нет, я кордик сам делал, там работы минут на 15-20. Точность зависит от количества шагов.

Вот например для кордика с разрядностью углов 16 бит и коэффициента масштабирования 8 бит в формате u1.7,  до 16 шагов

  localparam int cANGLE_W = 16 ;  // script defined

  typedef logic signed [cANGLE_W-1 : 0] angle_t;

  localparam angle_t cALPHA_DEG [0 : 15] = '{ 8192, 4836, 2555, 1297, 651, 326, 163, 81, 41, 20, 10, 5, 3, 1, 1, 0};

  localparam int cK_W = 8 ;  // script defined

  localparam logic [cK_W-1 : 0] cK [0 : 15]  = '{ 181, 162, 157, 156, 156, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155 };

# angle in degrees '{45, 26.5649, 14.035, 7.12463, 3.57605, 1.79077, 0.895386, 0.444946, 0.22522, 0.109863, 0.0549316, 0.0274658, 0.0164795, 0.00549316, 0.00549316, 0}
# k '{1.41406, 1.26563, 1.22656, 1.21875, 1.21875, 1.21094, 1.21094, 1.21094, 1.21094, 1.21094, 1.21094, 1.21094, 1.21094, 1.21094, 1.21094, 1.21094}

Вот только сейчас, подняв старый проект, обратил внимание на цифры. 1.6, хмм, странная константа, откуда она у них взялась то.

ЗЫ. Ну и как видно, количество шагов ограничено разрядностью угла. Если у вас углы 8 бит, то и делать больше чем 8 шагов не имеет смысла.

ЗЗЫ. Про углы, есть еще особенность масштабирования и интерпретации. У меня скрипт мог делать кордик где 360 градусов это 2^N, а мог, где градусы задаются в нативном формате, например s8.8 (+-180 градусов). Там отображение нативное. Как работает корка от альтеры незнаю.

 

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


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

17 минут назад, des00 сказал:

странная константа, откуда она у них взялась то.

Спасибо! Очень похоже на то что мне придётся отказаться от этой корки. Я лет 15 назад писал свой кордик (ещё когда модемами занимался), но он не параметризован. Копаться в столь древних исходниках то ещё удовольствие, поэтому решил попробовать альтеровскую корку, показалось что это будет быстрее.

Сейчас вижу что параметризовать старый проект всё-же будет быстрее. Что-то альтеровцы там намутили...

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


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

По поводу корней п

1 hour ago, _sda said:

Спасибо! Очень похоже на то что мне придётся отказаться от этой корки. Я лет 15 назад писал свой кордик (ещё когда модемами занимался), но он не параметризован. Копаться в столь древних исходниках то ещё удовольствие, поэтому решил попробовать альтеровскую корку, показалось что это будет быстрее.

Сейчас вижу что параметризовать старый проект всё-же будет быстрее. Что-то альтеровцы там намутили...

посмотрите еще здесь:

https://patents.su/4-1260951-matrichnoe-ustrojjstvo-dlya-izvlecheniya-kvadratnogo-kornya.html

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


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

12 минут назад, Serhiy_UA сказал:

По поводу корней п

посмотрите еще здесь:

https://patents.su/4-1260951-matrichnoe-ustrojjstvo-dlya-izvlecheniya-kvadratnogo-kornya.html

Спасибо, но для меня вопрос с корнями уже решён. Теперь дело за реализацией.

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


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

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

Вот только сейчас, подняв старый проект, обратил внимание на цифры. 1.6, хмм, странная константа, откуда она у них взялась то.

Откуда она взялась у них как раз известно и понятно:) А вот откуда у Вас такие константы... Хотя... можно предположить, что на константу 1.646 выходной результат надо таки делить, что я предполагаю, Вы и делаете, т.к. 1/1.646 это подозрительно близко к 155/256 и где-то даже выполняется равенство 1/1.646 = 1.2109/2...:)

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


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

43 минуты назад, Самурай сказал:

Хотя... можно предположить, что на константу 1.646 выходной результат надо таки делить

А у меня нужно умножать:

RE - 10000

IM - 20000

Вычисленный радиус - 18411

Должен быть - 22361

А-а-а, точно, там ещё на 2 нужно умножить... Спасибо!

Осталось с фазой разобраться.

А в гайде за это дело молчок...

image.png.b82cdc12d0160894513ae2ebd4453e3a.png

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


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

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

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

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

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

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

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

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

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

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