dsp. HDLChannelizer

Многофазный набор фильтров и быстрое преобразование Фурье — оптимизированный для генерации HDL-кода

Описание

Система dsp.HDLChannelizer object™ разделяет широкополосный входной сигнал на несколько узкополосных выходных сигналов. Это обеспечивает аппаратную скорость и оптимизацию области для потоковой передачи применений данных. Объект принимает скалярный или векторный вход действительных или комплексных данных, обеспечивает благоприятные для оборудования управляющие сигналы и имеет дополнительные выходные сигналы управления кадром. Можно достигнуть пропускной способности выборки giga в секунду (GSPS) при помощи векторного входа. Объект реализует многофазный фильтр с одним подфильтром на элемент входного вектора. Аппаратная реализация чередует подфильтры, который приводит к совместному использованию каждого множителя фильтра (FFT Length / Input Size) времена. Объект реализует то же конвейерное Основание 2^2 Алгоритм бпф как Системный объект dsp.HDLFFT.

Канализировать входные данные:

  1. Создайте объект dsp.HDLChannelizer и установите его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

channelizer = dsp.HDLChannelizer
channelizer = dsp.HDLChannelizer(Name,Value)

Описание

channelizer = dsp.HDLChannelizer возвращает Системный объект, channelizer, который реализует фильтр повышенного косинуса и БПФ с 8 точками.

пример

channelizer = dsp.HDLChannelizer(Name,Value) свойства наборов с помощью одной или нескольких пар "имя-значение". Заключите каждое имя свойства в одинарные кавычки.

Свойства

развернуть все

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release разблокировала их.

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Длина БПФ, заданная как целочисленная степень двойки. Для генерации HDL-кода длина БПФ должна быть между 23 и 216, включительно.

Многофазные коэффициенты фильтра, заданные как вектор числовых значений. Если количество коэффициентов не является кратным NumFrequencyBands, объект заполняет этот вектор нулями. Спецификация фильтра по умолчанию является КИХ-фильтром повышенного косинуса, rcosdesign(0.25,2,4,'sqrt'). Можно задать вектор коэффициентов или вызова функции проекта фильтра, которая возвращает содействующие значения. Комплексные коэффициенты не поддержаны. По умолчанию объект бросает коэффициенты к совпадающему типу данных как вход.

Реализация HDL комплексных множителей, заданных или как 'Use 4 multipliers and 2 adders' или как 'Use 3 multipliers and 5 adders'. В зависимости от вашего инструмента синтеза и целевого устройства, одна опция может быть быстрее или меньшей.

Зависимости

Эта опция применяется, только если вы используете Основание 2^2 архитектура.

Размер выходных данных, заданных как:

  • 'Same as number of frequency bands' — Выходные данные являются 1 M вектором, где M является длиной БПФ.

  • 'Same as input size' — Выходными данными является M-by-1 вектор, где M является размером входного вектора.

Выходной порядок является битом, естественным для обоих выходных размеров.

FFT масштабирование вывода, заданное как также:

  • tRUE БПФ реализует полный 1/N масштабный коэффициент путем масштабирования результата каждой настройки канала связи 2. Эта корректировка сохраняет вывод БПФ в той же амплитудной области значений как ее вход.

  • ложь БПФ избегает переполнения путем увеличения размера слова на один бит на каждом этапе.

Режим Rounding используется для операций фиксированной точки. Объект использует вычисления с фиксированной точкой для внутренних вычислений, когда вход является любым целым числом или типом данных с фиксированной точкой. Эта опция не применяется, когда входом является single или double. Каждый этап БПФ раунды после вертеть факторного умножения, но перед бабочками. Округление может также произойти при кастинге коэффициентов и вывода многофазного фильтра к типам данных, которые вы задаете.

Обработка переполнения используется для операций фиксированной точки. Объект использует вычисления с фиксированной точкой для внутренних вычислений, когда вход является любым целым числом или типом данных с фиксированной точкой. Эта опция не применяется, когда входом является single или double. Эта опция применяется к кастингу коэффициентов и вывода многофазного фильтра к типам данных, которые вы задаете.

Алгоритм бпф избегает переполнения любым масштабированием вывода каждого этапа (Нормируйте включенный), или путем увеличения размера слова на 1 бит на каждом этапе (отключенный Normalize).

Объект бросает многофазные коэффициенты фильтра к этому типу данных, с помощью округления и настроек переполнения, которые вы задаете. Когда вы выбираете Inherit: Same word length as input (значение по умолчанию), объект выбирает двоичную точку, использующую правила лучшей точности fi().

Тип данных вывода многофазного фильтра, заданного как 'Same word length as input', 'Full precision' или объект numerictype. Объект бросает вывод многофазного фильтра (вход к БПФ) к этому типу данных, с помощью округления и настроек переполнения, которые вы задаете. Когда вы задаете 'Same word length as input', объект выбирает двоичную точку лучшей точности путем рассмотрения значений коэффициентов фильтра и области значений типа входных данных.

По умолчанию логика БПФ не изменяет тип данных. Когда вы отключаете, Нормируют, Алгоритм бпф избегает переполнения путем увеличения размера слова на 1 бит на каждом этапе.

Включите входной параметр reset к объекту. Когда reset является (TRUE) 1, объектное вычисление остановок и очищает все внутреннее состояние.

Включите выходной аргумент startOut объекта. Когда включено, объект возвращает дополнительный выходной сигнал, который является 1, (TRUE) на первом цикле каждого допустимого выходного кадра.

Включите выходной аргумент endOut объекта. Когда включено, объект возвращает дополнительный выходной сигнал, который является 1, (TRUE) на первом цикле каждого допустимого выходного кадра.

Использование

Синтаксис

[dataOut,validOut] = channelizer(dataIn,validIn)
[dataOut,validOut] = channelizer(dataIn,validIn,reset)
[dataOut,startOut,endOut,validOut] = channelizer(___)

Описание

пример

[dataOut,validOut] = channelizer(dataIn,validIn) фильтры и вычисляют быстрое преобразование Фурье и возвращают каналы частоты, dataOut, обнаруженный во входном сигнале, dataIn, когда validIn является (TRUE) 1. Аргументы validIn и validOut являются логическими скалярами, которые указывают на валидность сигналов ввода и вывода, соответственно.

[dataOut,validOut] = channelizer(dataIn,validIn,reset) возвращает каналы частоты, dataOut, обнаруженный во входном сигнале, dataIn, когда validIn является (TRUE) 1, и reset является (FALSE) 0. Когда reset является (TRUE) 1, объект останавливает текущее вычисление и очищает все внутреннее состояние.

Чтобы использовать этот синтаксис, установите свойство ResetInputPort на true. Например:

channelizer = dsp.HDLChannelizer(...,'ResetInputPort',true);
...
[dataOut,validOut] = channelizer(dataIn,validIn,reset)

[dataOut,startOut,endOut,validOut] = channelizer(___) возвращает каналы частоты, dataOut, вычисленный из входных параметров любого из предыдущих синтаксисов. startOut является 1, (TRUE) для первой выборки кадра выходных данных. endOut является 1, (TRUE) для последней выборки кадра выходных данных.

Чтобы использовать этот синтаксис, установите свойства StartOutputPort и EndOutputPort на true. Например:

channelizer = dsp.HDLChannelizer(...,'StartOutputPort',true,'EndOutputPort',true);
...
[dataOut,startOut,endOut,validOut] = channelizer(dataIn,validIn)

Входные параметры

развернуть все

Входные данные, заданные как скаляр или вектор-столбец действительных или комплексных чисел. Векторный размер должен быть степенью 2 между 1 и 64, который не больше, чем количество каналов (длина БПФ). double и single позволены для симуляции, но не для генерации HDL-кода.

Объект не принимает данные uint64.

Типы данных: fi | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | single | double
Поддержка комплексного числа: Да

Валидность входных данных, заданных как логический скаляр. Когда validIn является (TRUE) 1, объект получает значение на dataIn.

Типы данных: логический

Сбросьте внутреннее состояние, заданное как логический скаляр. Когда reset является (TRUE) 1, объект останавливает текущее вычисление и очищает внутреннее состояние.

Зависимости

Чтобы включить этот аргумент, установите ResetInputPort на true.

Типы данных: логический

Выходные аргументы

развернуть все

Выходные данные канала частоты, возвращенные как вектор - строка.

  • Если вы устанавливаете OutputSize на 'Same as number of frequency bands' (значение по умолчанию), выходные данные 1 M вектором, где M является длиной БПФ.

  • Если вы устанавливаете OutputSize на 'Same as input size', выходные данные M-by-1 вектор, где M является размером входного вектора.

Выходной порядок является битом, естественным для любого выходного размера. Тип данных является результатом FilterOutputDataType и роста разрядности БПФ, необходимого, чтобы избежать переполнения.

Валидность выходных данных, возвращенных как логический скаляр. Объект устанавливает validOut на 1, (TRUE) с каждой допустимой выборкой на dataOut.

Типы данных: логический

Первая выборка выходного кадра, возвращенного как логический скаляр. Объект устанавливает startOut на 1, (TRUE) во время первой допустимой выборки на dataOut.

Зависимости

Чтобы включить этот аргумент, установите StartOutputPort на true.

Типы данных: логический

Последняя выборка выходного кадра, возвращенного как логический скаляр. Объект устанавливает endOut на 1, (TRUE) во время последней допустимой выборки на dataOut.

Зависимости

Чтобы включить этот аргумент, установите EndOutputPort на true.

Типы данных: логический

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

развернуть все

getLatencyЗадержка БПФ или channelizer вычисления
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

развернуть все

Создайте функцию, которая содержит объект channelizer и поддерживает генерацию HDL-кода.

Создайте спецификации и входной сигнал. Сигнал имеет 8 каналов частоты.

N = 8;
loopCount = 1024;
offsets = [-40 -30 -20 10 15 25 35 -15];
sinewave = dsp.SineWave('ComplexOutput',true,'Frequency', ...
     offsets+(-375:125:500),'SamplesPerFrame',loopCount);
spectrumAnalyzer = dsp.SpectrumAnalyzer('ShowLegend',true, ...
     'SampleRate',sinewave.SampleRate/N);

Запишите функцию, которая создает и вызывает channelizer Систему object™. Можно сгенерировать HDL от этой функции.

function [yOut,validOut] = HDLChannelizer8(yIn,validIn)
%HDLChannelizer8 
% Process one sample of data using the dsp.HDLChannelizer System object
% yIn is a fixed-point scalar or column vector. 
% validIn is a logical scalar value.
% You can generate HDL code from this function.

  persistent channelize8;
  if isempty(channelize8)
    % Use filter coeffs from non-HDL channelizer, or supply your own.  
    channelizer = dsp.Channelizer('NumFrequencyBands',8);
    channelize8 = dsp.HDLChannelizer('NumFrequencyBands',8,'FilterCoefficients',tf(channelizer));
  end    
  [yOut,validOut] = channelize8(yIn,validIn);
end


Канализируйте входные данные путем вызова объекта для каждой выборки данных.

y = zeros(loopCount/N,N);
validOut = false(loopCount/N,1);
yValid = zeros(loopCount/(N*N),N);
for reps=1:20
   x = sum(sinewave(),2);
   for loop=1:length(x)
      [y(loop,:),validOut(loop)]= HDLChannelizer8(complex(x(loop)),true);
   end
   yValid = y(validOut == 1,:);
   spectrumAnalyzer(yValid);
end

Задержка объекта dsp.HDLChannelizer меняется в зависимости от длины БПФ и векторного размера. Используйте функцию getLatency, чтобы найти задержку особой настройки. Задержка измеряется как количество циклов между первым допустимым входом и первым допустимым выводом, принимая, что вход непрерывен. Количество коэффициентов фильтра не влияет на задержку. Установка выходного размера, равного входному размеру, уменьшает задержку, потому что выборки не сохранены и переупорядочены.

Создайте объект dsp.HDLChannelizer и запросите задержку.

channelize = dsp.HDLChannelizer('NumFrequencyBands',512);
L512 = getLatency(channelize)
L512 = 1117

Запросите гипотетическую информацию задержки о подобном объекте с различным количеством диапазонов частот (длина БПФ). Свойства исходного объекта не изменяются.

L256 = getLatency(channelize,256)
L256 = 591
N = channelize.NumFrequencyBands
N = 512

Запросите гипотетическую информацию задержки подобного объекта, который принимает векторный вход с восемью выборками.

L256v8 = getLatency(channelize,256,8)
L256v8 = 131

Позвольте масштабироваться на каждом этапе БПФ. Задержка не изменяется.

channelize.Normalize = true;
L512n = getLatency(channelize)
L512n = 1117

Запросите тот же выходной размер и порядок как входные данные. Уменьшения задержки, потому что объект не должен сохранить и переупорядочить данные, прежде чем выведено. Входной размер по умолчанию является скаляром.

channelize.OutputSize = 'Same as input size';
L512r = getLatency(channelize)
L512r = 1083

Проверяйте задержку векторной входной реализации, где ввод и вывод одного размера. Задайте текущее значение длины БПФ и векторный размер 8 выборок. Задержка уменьшается, потому что объект вычисляет результаты параллельно, когда вход является вектором.

L256rv8 = getLatency(channelize,channelize.NumFrequencyBands,8)
L256rv8 = 217

Алгоритмы

развернуть все

Этот объект реализует алгоритм, описанный на странице с описанием блока Channelizer HDL Optimized.

Введенный в R2017a

Для просмотра документации необходимо авторизоваться на сайте