Автоматическая задержка, соответствующая для задержки HDL БПФ оптимизированный блок

В этом примере показано, как программно получить задержку блока FFT HDL Optimized в модели. Можно использовать значение задержки в соответствии задержки параллельных информационных каналов.

Будьте осторожны с задержкой, соответствующей для больших сигналов или длинных задержек, поскольку она добавляет память вашей аппаратной реализации. В качестве альтернативы, если сигнал не изменяется в системе координат, используйте сигналы допустимого или управления кадром выровнять сигнал с выходом блока FFT.

Откройте модель, которая содержит Оптимизированный HDL БПФ или блок IFFT HDL Optimized, такой как модель от БПФ Реализации для FPGA Используя HDL БПФ Оптимизированный пример Блока.

modelname = 'FFTHDLOptimizedExample_Streaming';
load_system(modelname);
set_param(modelname,'SimulationCommand','Update');
open_system([modelname '/FFT HDL Optimized Streaming']);

Этот пример включает ffthdlLatency функция, которая вычисляет задержку блока для его текущих параметров. Вызовите функцию с указателем блока и размером входного вектора. Можно использовать путь Simulink к блоку или выбрать блок в модели, чтобы получить указатель, gcb. В этой модели входной сигнал является вектором 8 выборок.

latency = ffthdlLatency([modelname '/FFT HDL Optimized Streaming/FFT HDL Optimized'],8)
latency =

   139

Функция копирует параметры с указателя блока и создает Систему object™ с теми же настройками как блок. Затем это вызывает getLatency функция на объекте. Смотрите getLatency.

function lat = ffthdlLatency(block, vectorsize)

% default vector size = 1
if nargin == 1
    vectorsize = 1;
end

fftlen = evalin('base',get_param(block, 'FFTLength'));
arch = get_param(block, 'Architecture');
bri = strcmpi(get_param(block, 'BitReversedInput'), 'on');
bro = strcmpi(get_param(block, 'BitReversedOutput'), 'on');

fftobj = dsp.HDLFFT('FFTLength',fftlen, ...
    'Architecture', arch, ...
    'BitReversedInput', bri, ...
    'BitReversedOutput', bro);

lat = getLatency(fftobj, fftlen, vectorsize);

end

Смотрите также

Блоки