exponenta event banner

dsp. HDLComplexToMagnitudeAngle

Величина и фазовый угол комплексного сигнала - оптимизированы для формирования кода ЛПВП

Описание

dsp.HDLComplexToMagnitudeAngle Система object™ вычисляет величину и фазовый угол комплексного сигнала. Он обеспечивает аппаратные управляющие сигналы. Объект System использует алгоритм цифрового компьютера с конвейерным вращением координат (CORDIC) для достижения реализации, оптимизированной для HDL.

Для вычисления величины и фазового угла комплексного сигнала:

  1. Создать dsp.HDLComplexToMagnitudeAngle и задайте его свойства.

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

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

HCMA = dsp.HDLComplexToMagnitudeAngle возвращает dsp.HDLComplexToMagnitudeAngle Системный объект, HCMA, которая вычисляет величину и фазовый угол комплексного входного сигнала.

пример

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

Пример: cma = dsp.HDLComplexToMagnitudeAngle('AngleFormat','Radians')

Свойства

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

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Тип возвращаемых выходных значений, указанный как 'Magnitude and angle', 'Magnitude', или 'Angle'. Можно выбрать объект для возврата величины входного сигнала, фазового угла входного сигнала или и того, и другого.

Формат выходного значения фазового угла объекта, указанного как:

  • 'Normalized' - формат с фиксированной точкой, нормализующий угол в диапазоне [-1,1].

  • 'Radians' - Фиксированные значения в диапазоне [δ, − λ].

Масштаб, выводимый на обратную величину коэффициента усиления CORDIC, указанного как true или false.

Примечание

Если проект включает коэффициент усиления позже в область данных, можно задать ScaleOutput кому falseи включить коэффициент усиления CORDIC в более поздний коэффициент усиления. Расчет этого коэффициента усиления см. в разделе Алгоритм. Объект заменяет первую итерацию CORDIC отображением входного значения на диапазон углов [0, δ/4]. Следовательно, начальное вращение не вносит член усиления.

Источник NumIterations свойство для алгоритма CORDIC, указанное как:

  • 'Auto' - устанавливает число итераций на единицу меньше длины входного слова. Если вход double или single, число итераций - 16.

  • 'Property' - Использует NumIterations собственность.

Дополнительные сведения об алгоритме CORDIC см. в разделе Алгоритм.

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

Дополнительные сведения об алгоритме CORDIC см. в разделе Алгоритм.

Зависимости

Чтобы включить это свойство, установите NumIterationsSource кому 'Property'.

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

Описание

пример

[mag,angle,validOut] = HCMA(X,validIn) преобразует скаляр или вектор комплексных значений X в их компонентную величину и фазовые углы. validIn и validOut являются логическими скалярами, которые указывают на достоверность входного и выходного сигналов соответственно.

[mag,validOut] = HCMA(X,validIn) возвращает только значения компонентов X.

Чтобы использовать этот синтаксис, задайте значение OutputValue равным 'Magnitude'.

Пример: HCMA = dsp.HDLComplextoMagnitudeAngle('OutputValue','Magnitude');

[angle,validOut] = HCMA(X,validIn) возвращает только фазовые углы компонента X.

Чтобы использовать этот синтаксис, задайте значение OutputValue равным 'Angle'.

Пример: HCMA = dsp.HDLComplextoMagnitudeAngle('OutputValue','Angle');

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

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

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

double и single типы данных поддерживаются для моделирования, но не для генерации кода HDL.

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

Когда validIn является true, блок захватывает данные из dataIn входной аргумент. validIn применяется ко всем выборкам во входном аргументе вектора.

Типы данных: logical

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

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

Величина, вычисленная из комплексного входного сигнала, возвращаемого в виде скаляра, вектора столбца, представляющего выборки во времени, или вектора строки, представляющего каналы. Измерения и тип данных этого аргумента соответствуют измерениям dataIn аргумент.

Зависимости

Чтобы включить этот аргумент, установите OutputValue свойство для 'Magnitude and Angle' или 'Magnitude'.

Угол, вычисленный из комплексного входного сигнала, возвращаемого в виде скаляра, вектора столбца, представляющего выборки во времени, или вектора строки, представляющего каналы. Измерения и тип данных этого аргумента соответствуют измерениям dataIn аргумент. Формат этого значения зависит от свойства AnageFormat.

Зависимости

Чтобы включить этот аргумент, установите OutputValue свойство для 'Magnitude and Angle' или 'Angle'.

Наборы объектов validOut кому true с всеми действительными данными, возвращенными в magnitude или angle выходные аргументы. validOut применяется ко всем выборкам в выходном аргументе вектора.

Типы данных: logical

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

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

release(obj)

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

stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Используйте dsp.HDLComplextoMagnitudeAngle изобретение позволяет вычислить величину и фазовый угол комплексного сигнала. Объект использует алгоритм CORDIC для эффективной реализации аппаратных средств.

Выберите длину слова и создайте случайный комплексный входной сигнал. Затем преобразуйте входной сигнал в сигнал с фиксированной точкой.

a = -4;
b = 4;
inputWL = 16;
inputFL = 12;
numSamples = 10;
reData = ((b-a).*rand(numSamples,1)+a);
imData = ((b-a).*rand(numSamples,1)+a);
dataIn = (fi(reData+imData*1i,1,inputWL,inputFL));
figure
plot(dataIn)
title('Random Complex Input Data')
xlabel('Real')
ylabel('Imaginary')

Запишите функцию, которая создает и вызывает системный object™. Из этой функции можно создать ЛПВП.

Примечание.Синтаксис этого объекта выполняется только в R2016b или более поздних версиях. При использовании более ранней версии замените каждый вызов объекта эквивалентным step синтаксис. Например, заменить myObject(x) с step(myObject,x).

function [mag,angle,validOut] = Complex2MagAngle(yIn,validIn)
%Complex2MagAngle 
% Converts one sample of complex data to magnitude and angle data.
% yIn is a fixed-point complex number.
% validIn is a logical scalar value.
% You can generate HDL code from this function.

  persistent cma;
  if isempty(cma)
    cma = dsp.HDLComplexToMagnitudeAngle('AngleFormat','Radians');
  end   
  [mag,angle,validOut] = cma(yIn,validIn);
end


Количество итераций CORDIC определяет задержку, которая требуется объекту для вычисления ответа для каждой входной выборки. Задержка равна NumIterations+4. В этом примере: NumIterationsSource установлено значение по умолчанию, 'Auto', так что объект использует inputWL-1 итерации. Задержка равна inputWL+3.

latency = inputWL+3;
mag = zeros(1,numSamples+latency);
ang = zeros(1,numSamples+latency);
validOut = false(1,numSamples+latency);

Вызовите функцию для преобразования каждого образца. После применения всех входных выборок продолжите вызов функции с недопустимым вводом для очистки оставшихся выходных выборок.

for ii = 1:1:numSamples
   [mag(ii),ang(ii),validOut] = Complex2MagAngle(dataIn(ii),true);
end
for ii = (numSamples+1):1:(numSamples+latency)
   [mag(ii),ang(ii),validOut(ii)] = Complex2MagAngle(fi(0+0*1i,1,inputWL,inputFL),false);
end
% Remove invalid output values
mag = mag(validOut == 1);
ang = ang(validOut == 1);
figure
polar(ang,mag,'--r')   % Red is output from HDL-optimized System object
title('Output from dsp.HDLComplexToMagnitudeAngle')
magD = abs(dataIn);
angD = angle(dataIn);
figure
polar(angD,magD,'--b') % Blue is output from abs and angle functions
title('Output from abs and angle Functions')

Алгоритмы

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

См. также

Блоки

Функции

  • | (Конструктор фиксированных точек) | (Конструктор фиксированных точек) | (Конструктор фиксированных точек)
Представлен в R2014b