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

Бит ту бит модель Xilinx fft

Здравствуйте. Хочу написать в 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

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

Изменено пользователем Грендайзер

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


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

В случае (generics.C_USE_FLT_PT == 0) производится квантование входного массива данных.

Параметры квантования рассчитываются функцией q = quantizer(); с заданными свойствами.

Само квантование осуществляется функцией input = quantize(q,input_raw);

Обе команды хорошо документированы, есть множество примеров в Сети.

Не очень понятна проблема. Зачем это делается? Физический смысл?

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


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

Здравствуйте. Хочу

Имхо теряете время.

Фурье слишком простая и "хорошо изученная" операция, чтобы непонятно во имя чего возиться с такой рутинно-геморной штукой как бит-аккуратная модель.

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


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

Имхо теряете время.

Фурье слишком простая и "хорошо изученная" операция, чтобы непонятно во имя чего возиться с такой рутинно-геморной штукой как бит-аккуратная модель.

Вообще-то, это есть стандартный способ верификации данного конкретного решения.

Ради него как раз и стоит возиться.

 

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

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


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

x736C, Спасибо, уже сам разобрался :)

Имхо теряете время.

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

Изменено пользователем Грендайзер

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


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

Ещё раз здравствуйте. Снова упёрся. Понимаю, что где то рядом, но понять не могу. Вообщем в этой модели, значения входного вектора должны лежать в пределах -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, и тогда они, после перемножения на такие же малые числа, выскачат за предел разрядной сетки. Не могу понять, как в таком случае произвести верификацию кода для ПЛИС?

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


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

Очевидно, конечно, но я бы порекомендовал Вам обратиться в официальную службу поддержки.

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


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

Не могу понять, как в таком случае произвести верификацию кода для ПЛИС?

 

Для понимния поможет сделать в симулинке простой проект с умножителем и различным положением точки в операндах, разобраться с блоком convert, типом fixdt(...), сгенерировать HDL умножителя.

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


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

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

Мда... наверное это самое правильное...

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


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

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

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

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

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

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

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

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

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

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