В этом примере показано, как использовать блок Complex to Magnitude-Angle HDL Optimized, чтобы реализовать функцию atan2 в оборудовании.
Эта модель в качестве примера сравнивает выход Комплекса с блоком Magnitude-Angle HDL Optimized с atan2
функция, реализованная с помощью блока Trigonometric Function.
Счетчик HDL 1 и Счетчик HDL 2 блока генерируют действительные и мнимые части, соответственно, комплексного числа.
Действительный-Imag с блоком Complex создает комплексный выход из действительных и мнимых входных параметров.
Блок Trigonometric Function с набором параметра функции как atan2
используется, чтобы сгенерировать ссылочный выходной угол. Этот блок использует приближение CORDIC, чтобы вычислить угол.
Комплекс с блоком Magnitude-Angle, сконфигурированным, чтобы возвратить угол в радианах, производит угол комплексного входа как выход. Этот блок также моделирует задержку аппаратной реализации.
Чтобы выровнять данные для сравнения, путь к справочным данным включает блок задержки с той же задержкой.
Комплекс с блоком Magnitude-Angle поддерживает генерацию HDL-кода, если вы добавляете его в подсистему.
modelname = 'HDLatan2Example'; open_system(modelname); set_param(modelname,'SampleTimeColors','on'); set_param(modelname,'SimulationCommand','Update'); set_param(modelname,'Open','on'); set(allchild(0),'Visible','off'); out = sim(modelname);
figure('units','normalized','outerposition',[0 0 1 1]) subplot(4,1,1) plot(simout1(:,1)) hold on; plot(simout1(:,2)) hold off; legend('Real','Imaginary') title('Real and Imaginary Part of the Input') subplot(4,1,2) plot(simout2(:,1)) title('Output of atan2 reference block') subplot(4,1,3) plot(simout2(:,2)) title('Output of Complex to Magnitude-Angle HDL Optimized Block') subplot(4,1,4) plot(simout3) title('Error signal')