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

 
 
 
Reply to this topicStart new topic
> Бит ту бит модель Xilinx fft, Ничего не понимаю
Грендайзер
сообщение Aug 15 2017, 11:56
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 337
Регистрация: 18-04-11
Пользователь №: 64 451



Здравствуйте. Хочу написать в matlab модель с использованием бит ту бит модели fft xilinx. Однко испытываю некоторые трудности с пониманием кода, а именно:
В xilinx модели присутствуют следующие строки:
Код
% Create input data frame: constant data
  constant_input = 0.5 + 0.5j;
  input_raw(1:samples) = constant_input;
    
  if generics.C_USE_FLT_PT == 0
    % Set up quantizer for correct twos's complement, fixed-point format: one sign bit, C_INPUT_WIDTH-1 fractional bits
    q = quantizer([generics.C_INPUT_WIDTH, generics.C_INPUT_WIDTH-1], 'fixed', 'convergent', 'saturate');
    % Format data for fixed-point input
    input = quantize(q,input_raw);
  else
    % Floating point interface - use data directly
    input = input_raw;
  end

Понимаю, что здесь что то с квантованием, но вот что именно никак понять не могу. Читал, читал, уже голова не соображает..

Сообщение отредактировал Грендайзер - Aug 15 2017, 11:56
Go to the top of the page
 
+Quote Post
x736C
сообщение Aug 18 2017, 23:02
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 055
Регистрация: 3-03-06
Пользователь №: 14 942



В случае (generics.C_USE_FLT_PT == 0) производится квантование входного массива данных.
Параметры квантования рассчитываются функцией q = quantizer(); с заданными свойствами.
Само квантование осуществляется функцией input = quantize(q,input_raw);
Обе команды хорошо документированы, есть множество примеров в Сети.
Не очень понятна проблема. Зачем это делается? Физический смысл?
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Aug 22 2017, 00:54
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 366
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(Грендайзер @ Aug 15 2017, 14:56) *
Здравствуйте. Хочу

Имхо теряете время.
Фурье слишком простая и "хорошо изученная" операция, чтобы непонятно во имя чего возиться с такой рутинно-геморной штукой как бит-аккуратная модель.
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Aug 22 2017, 01:55
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 4 185
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Dr.Alex @ Aug 22 2017, 03:54) *
Имхо теряете время.
Фурье слишком простая и "хорошо изученная" операция, чтобы непонятно во имя чего возиться с такой рутинно-геморной штукой как бит-аккуратная модель.
Вообще-то, это есть стандартный способ верификации данного конкретного решения.
Ради него как раз и стоит возиться.

Не вдаваясь в суть задачи, просто реплика.


--------------------
Там, где начинается свобода слова, заканчивается свобода мысли.©
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Aug 24 2017, 11:14
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 337
Регистрация: 18-04-11
Пользователь №: 64 451



x736C, Спасибо, уже сам разобрался sm.gif
Цитата
Имхо теряете время.

Нууу... как сказать...

Сообщение отредактировал Грендайзер - Aug 24 2017, 11:15
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Aug 27 2017, 19:42
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 337
Регистрация: 18-04-11
Пользователь №: 64 451



Ещё раз здравствуйте. Снова упёрся. Понимаю, что где то рядом, но понять не могу. Вообщем в этой модели, значения входного вектора должны лежать в пределах -1=< 0 < 1, т.к. само ядро может работать с числами с плавающей точкой. Я работаю с фиксированой. И так. Я получил вектор входного воздействия (пусть входные числа знаковые и имеют 8 разрядов с учётом знака) x = [127, -127, 127, -127]. Что бы загнать их в заданный интервал я делю вектор на 128 тогда x_norm = [0,9921875, -0,9921875, 0,9921875, -0,9921875] далее числа квантуются. После того как я получил преобразование, я хочу умножить полученный спектр на некоторую ф-цию. Фу-ция так же отнормирована и квантована. И тут вопрос. Если значения преобразования функции например, такие же, как у сигнала, то в плисе у меня наступит переполнение. Но матлабе никакого переполнения не наступит, т.к. после преобразования, я хоть и получу числа < 1, но всё же достаточно большие что бы не вылезти за предел разрядной сетки. С другой стороны, если бы на входе fft были бы одни единицчы, то в плисе переполнение не наступило бы (1*1 = 1 < 127), а вот в матлабе на выходе FFT будут числа << 1, и тогда они, после перемножения на такие же малые числа, выскачат за предел разрядной сетки. Не могу понять, как в таком случае произвести верификацию кода для ПЛИС?
Go to the top of the page
 
+Quote Post
D.I.M.A
сообщение Aug 28 2017, 08:12
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 26-08-08
Из: Москва
Пользователь №: 39 824



Очевидно, конечно, но я бы порекомендовал Вам обратиться в официальную службу поддержки.
Go to the top of the page
 
+Quote Post
petrov
сообщение Aug 28 2017, 10:47
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 055
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Грендайзер @ Aug 27 2017, 22:42) *
Не могу понять, как в таком случае произвести верификацию кода для ПЛИС?


Для понимния поможет сделать в симулинке простой проект с умножителем и различным положением точки в операндах, разобраться с блоком convert, типом fixdt(...), сгенерировать HDL умножителя.
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Aug 28 2017, 10:54
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 337
Регистрация: 18-04-11
Пользователь №: 64 451



Цитата
Для понимния поможет сделать в симулинке...

Мда... наверное это самое правильное...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st September 2017 - 21:22
Рейтинг@Mail.ru


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