Грендайзер
Aug 15 2017, 11:56
Здравствуйте. Хочу написать в 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);
Обе команды хорошо документированы, есть множество примеров в Сети.
Не очень понятна проблема. Зачем это делается? Физический смысл?
Dr.Alex
Aug 22 2017, 00:54
Цитата(Грендайзер @ Aug 15 2017, 14:56)

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

Имхо теряете время.
Фурье слишком простая и "хорошо изученная" операция, чтобы непонятно во имя чего возиться с такой рутинно-геморной штукой как бит-аккуратная модель.
Вообще-то, это есть стандартный способ верификации данного конкретного решения.
Ради него как раз и стоит возиться.
Не вдаваясь в суть задачи, просто реплика.
Грендайзер
Aug 24 2017, 11:14
x736C, Спасибо, уже сам разобрался
Цитата
Имхо теряете время.
Нууу... как сказать...
Грендайзер
Aug 27 2017, 19:42
Ещё раз здравствуйте. Снова упёрся. Понимаю, что где то рядом, но понять не могу. Вообщем в этой модели, значения входного вектора должны лежать в пределах -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, и тогда они, после перемножения на такие же малые числа, выскачат за предел разрядной сетки. Не могу понять, как в таком случае произвести верификацию кода для ПЛИС?
D.I.M.A
Aug 28 2017, 08:12
Очевидно, конечно, но я бы порекомендовал Вам обратиться в официальную службу поддержки.
petrov
Aug 28 2017, 10:47
Цитата(Грендайзер @ Aug 27 2017, 22:42)

Не могу понять, как в таком случае произвести верификацию кода для ПЛИС?
Для понимния поможет сделать в симулинке простой проект с умножителем и различным положением точки в операндах, разобраться с блоком convert, типом fixdt(...), сгенерировать HDL умножителя.
Грендайзер
Aug 28 2017, 10:54
Цитата
Для понимния поможет сделать в симулинке...
Мда... наверное это самое правильное...
yanusa
Sep 26 2017, 15:50
Симулинка думаете поможет?