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

 
 
23 страниц V  « < 5 6 7 8 9 > »   
Reply to this topicStart new topic
> Реализация БПФ на ПЛИС, Тудности, встречаемые при реализации
ZED
сообщение Mar 22 2009, 16:03
Сообщение #91


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 17-04-07
Из: Москва
Пользователь №: 27 102



Все вроде понял, т.е. мы сразу после АЦП добавляем знаковыми разрядами до 17 разрядов и гоним в паямть с 17 разрядными словами и уже работаем с 17 разрядными данными.
Go to the top of the page
 
+Quote Post
Sefo
сообщение Mar 22 2009, 16:22
Сообщение #92


Местный
***

Группа: Свой
Сообщений: 429
Регистрация: 11-08-05
Из: Санкт-Петербург
Пользователь №: 7 537



Да. cheers.gif

Ура! Ттеперь можно перейти к умножителям. smile.gif

Вы хотели на коэффициенты заложить 12 разрядов. У коэффициентов БПФ диапазон Re и Im частей от -1.0 до +1.0. Как Вы думаете, какое 12-ти разрядное число лучше поставить в соответствовие -1.0 и какое в соответствие +1.0? И почему?

Опыт бабочки должен Вам помочь.
Go to the top of the page
 
+Quote Post
ZED
сообщение Mar 22 2009, 16:43
Сообщение #93


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 17-04-07
Из: Москва
Пользователь №: 27 102



1.0 это 2047

-1.0 это -2047

Чтобы не увеличивать разрядность:

Цитата
Забегая вперед, кроме бабочки, в умножителе, когда -32768 Вы умножите на -1.0, то получите +32768 - это число для представления требует опять таки 17 разрядов (как видите, даже если убрать округление в бабочке, то нам все равно не избежать этой проблемы в умножителях).
Go to the top of the page
 
+Quote Post
Sefo
сообщение Mar 23 2009, 07:53
Сообщение #94


Местный
***

Группа: Свой
Сообщений: 429
Регистрация: 11-08-05
Из: Санкт-Петербург
Пользователь №: 7 537



Давайте пока так начнем. Впроцессе реализации сами догадаетесь, почему это не самый лучший вариант. Хотя так тоже можно. Кстати, надеюсь, что написав
Цитата
Чтобы не увеличивать разрядность

Вы имели ввиду разрядность коэффициентов.

Все данные с бабочки мы направим на блок комплексных умножителей. В этом блоке будет 4 умножителя, один из которых всегда умножает на (1.0 + j0). Такой подход удобен т.к. все данные (все 4 точки) идут единым путем и каждый блок нашего БПФ сам заботится о том, чтобы одни данные не "отстали"/"опередили" другие.

Итак:

1) жду от Вас код блока комплексных умножителей

2) код самого комплексного умножителя.
Go to the top of the page
 
+Quote Post
ZED
сообщение Mar 24 2009, 15:32
Сообщение #95


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 17-04-07
Из: Москва
Пользователь №: 27 102



Вот комплексный перемножитель, не знаю правильно ли я все сделал, но вроде умножает=))
Прикрепленные файлы
Прикрепленный файл  complex_multiplier.rar ( 418.56 килобайт ) Кол-во скачиваний: 102
 
Go to the top of the page
 
+Quote Post
Sefo
сообщение Mar 24 2009, 19:37
Сообщение #96


Местный
***

Группа: Свой
Сообщений: 429
Регистрация: 11-08-05
Из: Санкт-Петербург
Пользователь №: 7 537



Хорошо. Код внимательно посмотрю завтра - навскидку, вместо

CODE
entity complex_multiplier is
generic (b_size: natural := 17;
w_size: natural := 12
);
port (
y_re: in std_logic_vector(b_size downto 0);
y_im: in std_logic_vector(b_size downto 0);
...


наверное должно было быть

CODE
entity complex_multiplier is
generic (b_size: natural := 17;
w_size: natural := 12
);
port (
y_re: in std_logic_vector(b_size-1 downto 0);
y_im: in std_logic_vector(b_size-1 downto 0);
...


Присланное закрывает пункт 2, а что с пунктом 1 ? Где блок умножителей согласно блоксхеме?
Go to the top of the page
 
+Quote Post
Sefo
сообщение Mar 25 2009, 11:56
Сообщение #97


Местный
***

Группа: Свой
Сообщений: 429
Регистрация: 11-08-05
Из: Санкт-Петербург
Пользователь №: 7 537



Цитата(ZED @ Mar 24 2009, 18:32) *
вроде умножает=))


Я Вас попрошу серьезнее относиться к результатам симуляции. Ни черта он у Вас не умножает.

Результат должен был быть 58593 + j 0, а у Вас в 2 раза меньше.

Вопрос на засыпку - Вы уже на нем засыпались smile.gif, но теперь, надеюсь, ответите правильно:

Чему равна разрядность произведения двух знаковых чисел, если разрядость одного числа n, а другого k?
Go to the top of the page
 
+Quote Post
ZED
сообщение Mar 25 2009, 17:23
Сообщение #98


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 17-04-07
Из: Москва
Пользователь №: 27 102



Цитата
Чему равна разрядность произведения двух знаковых чисел, если разрядость одного числа n, а другого k?


n+k

Вот, теперь выдает то, что нужно...
Блок умножителей я так понимаю лучше сделать компонентами...

А вот вроде как блок, не знаю то или не то, голова уже не работает, вроде по RTL 4 комплексных перемножителя в одном блоке...
Прикрепленные файлы
Прикрепленный файл  complex_multiplier.rar ( 433.8 килобайт ) Кол-во скачиваний: 93
Прикрепленный файл  block_multipliers.rar ( 239.91 килобайт ) Кол-во скачиваний: 95
 
Go to the top of the page
 
+Quote Post
Sefo
сообщение Mar 25 2009, 18:12
Сообщение #99


Местный
***

Группа: Свой
Сообщений: 429
Регистрация: 11-08-05
Из: Санкт-Петербург
Пользователь №: 7 537



Цитата(ZED @ Mar 25 2009, 20:23) *
n+k


Не угадали. smile.gif n+k это для беззнаковых операндов. А для знаковых чуть-чуть иначе. Ну, подумайте же как следует!
Go to the top of the page
 
+Quote Post
ZED
сообщение Mar 25 2009, 18:20
Сообщение #100


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 17-04-07
Из: Москва
Пользователь №: 27 102



По-моему что для знаковых, что для беззнаковых произведение будет размерности n+k, только для знаковых старшие два разряда знаковые. Если вы это имеете ввиду, то можно сказать, что для знаковых размерность будет n + k -1.
Go to the top of the page
 
+Quote Post
Sefo
сообщение Mar 26 2009, 12:17
Сообщение #101


Местный
***

Группа: Свой
Сообщений: 429
Регистрация: 11-08-05
Из: Санкт-Петербург
Пользователь №: 7 537



Цитата(ZED @ Mar 25 2009, 21:20) *
только для знаковых старшие два разряда знаковые


Не стоит так интерпретировать. Дополнительный код подразумевает только один знаковый разрад. Да и то, знаковым его называют только для удобства.

Формат числа с разрядами от X(0) до X(n-1) включительно в дополнительном коде такой

(-(2^(n-1))*X(n-1) + (2^(n-2))*X(n-2) + ... (2^1)*X(1) + (2^0)*X(0).

Из-за этого у дополнительного кода имеется "перекос", заключающийся в том, что модуль самого маленького числа на 1 больше модуля самого большого.

И "расширение знаком" это очень условное название - это не значит, что после расширения знаком у Вас в числе стало n знаковых разрядов smile.gif

Если следовать вашей логике, то формат результата умножения 2-х знаковых чисел получается такой

(-(2^(n+k-1)))*X(n+k-1) - (2^(n+k-2))*X(n+k-2) + ... (2^1)*X(1) + (2^0)*X(0). Надеюсь очевидно, к чему это приведет smile.gif




Опишите, пожалуйста, математическим выражением то, что делают ваши умножители. Попробуйте подставить в эту формулу значение, которое Вы выбрали в качестве 1.0 (т.е. 2047) и проанализируйте, что же получается не совсем честно и какую интерпретацию это имеет с точки зрения БПФ?

Сообщение отредактировал Sefo - Mar 26 2009, 12:49
Go to the top of the page
 
+Quote Post
ZED
сообщение Mar 28 2009, 08:51
Сообщение #102


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 17-04-07
Из: Москва
Пользователь №: 27 102



Честно говоря я не совсем понял, в дополнительном коде для числа с разрядностью n:

модуль числа:
(2^(n-2))*X(n-2) + (2^(n-3))*X(n-3) + ... +(2^1)*X(1) + (2^0)*X(0);

X(n-1) - знаковый разряд;

знак числа:
0 - если число положительное;
1- если число отрицательное.

Кроме того для отрицательных чисел все X(n-2) ... X(0) инвертируются и к получившемуся числу прибавляют один.

Расширение знаком предполагает, знак представляют два разряда, например расширим число на один знаковый разряд, тогда разрядность увеличивается на 1 и становится n+1:

X(n) и X(n-1) - знаковые разряды;

знак числа:
00 - если число положительное;
11- если число отрицательное.
Для отрицательных чисел все остается по-прежнему: все X(n-2) ... X(0) инвертируются и к получившемуся числу прибавляют один.

Сообщение отредактировал ZED - Mar 28 2009, 08:53
Go to the top of the page
 
+Quote Post
Джеймс
сообщение Mar 28 2009, 11:32
Сообщение #103


Местный
***

Группа: Свой
Сообщений: 462
Регистрация: 20-01-06
Пользователь №: 13 399



Цитата
Sefo

Как Вы думаете, какое 12-ти разрядное число лучше поставить в соответствовие -1.0 и какое в соответствие +1.0


Цитата
ZED

1.0 это 2047

-1.0 это -2047


Сорри, я всю ветку не читал, но это место бросилось в глаза. Диапазон -1 ... +1 представить нельзя. Можно представить только -1 ... (1-1LSB).
-1 = 0x800
0 = 0
(1-1LSB) = 0x7FF
Go to the top of the page
 
+Quote Post
Sefo
сообщение Mar 28 2009, 12:15
Сообщение #104


Местный
***

Группа: Свой
Сообщений: 429
Регистрация: 11-08-05
Из: Санкт-Петербург
Пользователь №: 7 537



Цитата(Джеймс @ Mar 28 2009, 14:32) *
Сорри, я всю ветку не читал, но это место бросилось в глаза. Диапазон -1 ... +1 представить нельзя. Можно представить только -1 ... (1-1LSB).
-1 = 0x800
0 = 0
(1-1LSB) = 0x7FF


Тут Вы не правы. Если Вы берете 12-ти разрядное знаковое число, то Вы не сможете в -1...1 представить как -2048 ... +2048 т.к. у знакового 12-ти разрядного числа диапазон значений -2048 ... 2047, но Вам совершенно никто не мешает принять за -1 -2047, а за +1 +2047. Равно как и представить -1 ... +1 диапазоном -2000 ... +2000. Такой выбор имеет некоторые "неудобства", но он ничему не противоречит. (про неудобства мы поговорим позже - я бы предпочел, чтобы ZED сам их увидел). Вас никто не обязывает использовать весь диапазон значений 12-ти разрядного числа для представления диапазона от -1.0 до +1.0.

Цитата(ZED @ Mar 28 2009, 11:51) *
модуль числа:
(2^(n-2))*X(n-2) + (2^(n-3))*X(n-3) + ... +(2^1)*X(1) + (2^0)*X(0);

X(n-1) - знаковый разряд;

знак числа:
0 - если число положительное;
1- если число отрицательное.

Кроме того для отрицательных чисел все X(n-2) ... X(0) инвертируются и к получившемуся числу прибавляют один.

Расширение знаком предполагает, знак представляют два разряда ...


sad.gif Да... Вы меня не на шутку огорчили... Придется с дополнительным кодом, да и вообще со способами представления чисел разобраться.

Пока почитайте вот это http://en.wikipedia.org/wiki/Two's_complement (только именно эту статью на английском - аналогичная на русском языке полная фигня) Вечером постараюсь прокомментировать все ваши заблуждения относительно двух знаковых разрядов и пр.

Любопытно стало где Вы учитесь и на какую специальность?
Go to the top of the page
 
+Quote Post
ZED
сообщение Mar 28 2009, 20:02
Сообщение #105


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 17-04-07
Из: Москва
Пользователь №: 27 102



Я учусь в МЭИ на радиотехника, с вычислилкой туговато, дают общее представление а так вертись как хочешь. Вот так учили, все приходится осваивать самому. я понимаю, со мной очень трудно, но у меня есть желание учиться и спасибо таким людям, как вы, которые помогают разобраться с реальными проблемами на практике... Этого очень не хватает, когда учишься все просто, но кода дело доходит до реализации тут то все и начинается. Я понимаю, что у меня специальность не вычислительная техника или что-то подобное, но мне очень хочется разобраться, для меня это важно... Не сердитесь, просто нам так преподносили материал и мы так привыкли его воспринимать.
Go to the top of the page
 
+Quote Post

23 страниц V  « < 5 6 7 8 9 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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