реклама на сайте
подробности

 
 
> Евклидово расстояние на Xilinx DSP48
count_enable
сообщение Feb 18 2016, 09:18
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Вот такую задачку сейчас обдумываю. Надо считать евклидово расстояние, координаты точек передаются парами последовательно: А(0) В(0), А(1) В(1), А(2) В(2). Евклидово расстояние это sqrt(sum((А-B )^2)). Корень посчитаю кордиком, сумму аккумулятором, а вот как быть с квадратом разницы? Возможно ли это сделать на одном DSP48 блоке за вменяемое количество циклов? Подскажите где прочитать об этом. Все числа с фикс. точкой.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
count_enable
сообщение Feb 18 2016, 10:18
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Цитата(blackfin @ Feb 18 2016, 13:37) *
Так готовый IP-Core комплексного умножителя должен подойти.
Там же вроде 2 пары только можно за маш. цикл умножать?

Maverick, не совсем понял как связана рекомендуемая тема с возведением в квадрат. Вы предлагаете закольцевать выход DSP на его же вход Carry, и поштучно возводить аргументы в квадрат, аккумулируя их? Звучит интересно. Так можно считать расстояния в N-мерном пространстве, и решение в принципе простое. Но наверно надо выбросить все внутренние регистры, потому что ждать 7 клоков задержки на один аргумент что-то неохота.
Go to the top of the page
 
+Quote Post
blackfin
сообщение Feb 18 2016, 10:35
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(count_enable @ Feb 18 2016, 14:18) *
Там же вроде 2 пары только можно за маш. цикл умножать?

Ну, если у Вас в каждом такте приходит одна пара A и B, то можно умножитель с накоплением использовать:
Код
input signed [] A0,A1,A2;
input signed [] B0,B1,B2;

wire signed [] SA = (T == 0) ? A0 : (T == 1) ? A1 : (T == 2) ? A2 : 0;
wire signed [] SB = (T == 0) ? B0 : (T == 1) ? B1 : (T == 2) ? B2 : 0;

reg signed [] D;

always @(posedge clk)
begin
  D <= SA - SB;
end

wire [] P;

multadd multadd_m(.clk(clk),.A(D),.B(D),.C(P),.P(P));

reg [] R;

always @(posedge clk)
begin
  if (sclr)
    R <= 0;
  else
  if (valid)
    R <= P;
end

PS. И даже задержка не нужна.

Нужен сигнал valid совпадающий по времени с результатом суммирования: T = mult_latency + add_latency + 2;
Go to the top of the page
 
+Quote Post
count_enable
сообщение Feb 18 2016, 11:13
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 310
Регистрация: 28-01-13
Из: Лондон
Пользователь №: 75 384



Цитата(blackfin @ Feb 18 2016, 14:35) *
Ну, если у Вас в каждом такте приходит одна пара A и B, то можно умножитель с накоплением использовать:

Извините, верилог знаю только со словарём. Где в этом коде возведение в степень (А-В )^2?
Go to the top of the page
 
+Quote Post
Maverick
сообщение Feb 18 2016, 11:16
Сообщение #5


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Вам привели описание для этого случая...




--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- count_enable   Евклидово расстояние на Xilinx DSP48   Feb 18 2016, 09:18
- - Maverick   Цитата(count_enable @ Feb 18 2016, 11:18)...   Feb 18 2016, 09:31
- - blackfin   Цитата(count_enable @ Feb 18 2016, 13:18)...   Feb 18 2016, 09:37
|- - Maverick   нашел тему   Feb 18 2016, 09:40
- - count_enable   Последний multadd multadd_m(..,.A(D),.B(D),.C(P),....   Feb 18 2016, 11:19
|- - Maverick   Цитата(count_enable @ Feb 18 2016, 13:19)...   Feb 18 2016, 11:33
- - blackfin   Цитата(count_enable @ Feb 18 2016, 15:13)...   Feb 18 2016, 11:41
- - count_enable   Спасибо большое. Уже "увидел" как оно бу...   Feb 18 2016, 11:49
|- - blackfin   Цитата(count_enable @ Feb 18 2016, 15:49)...   Feb 18 2016, 12:21
||- - Fat Robot   есть приближенная оценка модуля вектора для двумер...   Feb 18 2016, 15:55
|- - blackfin   Цитата(count_enable @ Feb 18 2016, 14:49)...   Feb 22 2016, 10:02
|- - Timmy   Цитата(blackfin @ Feb 22 2016, 13:02) Есл...   Feb 22 2016, 13:06
- - анатолий   Цитата(count_enable @ Feb 18 2016, 11:18)...   Mar 6 2016, 08:53


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 12:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01413 секунд с 7
ELECTRONIX ©2004-2016