fixed point taylor sine/cosine approximation model
7 次查看(过去 30 天)
显示 更早的评论
Can anybody share sine/cosine taylor approx model which is compatible with hdl coder?
2 个评论
Walter Roberson
2022-6-19
is there a reason why you are not using https://www.mathworks.com/help/fixedpoint/ref/cordicsin.html
回答(2 个)
Sulaymon Eshkabilov
2022-6-19
WHy not to use matlab's built-in taylor() expansion fcn: https://www.mathworks.com/help/symbolic/sym.taylor.html?s_tid=doc_ta
E.g.:
syms x
taylor(sin(x), x, pi)
taylor(cos(x), x, pi/2)
20 个评论
Walter Roberson
2022-6-22
You need order 22 (x^21) to have an error of less than 1/1000
syms x
f = sin(x);
target = 1/1000;
for order = 2:50
t = taylor(f, x, 0, 'order', order);
val_at_end = subs(t, x, 2*pi);
if abs(val_at_end) < target; break; end
end
order
t
fplot([t, f], [0 2*pi])
fplot(t-f, [0 2*pi])
Kiran Kintali
2022-7-4
HDL Coder supports code generation for single precision trigonometric functions.
Getting Started with HDL Coder Native Floating-Point Support
Taylor series approximation using HDL Coder
If you want to build Taylor series approximation by youself you could build using basic Math operations and sufficient amount of fixed-point conversion.
syms x
f = sin(x);
T2sin = taylor(f, x, 'Order', 2); % T2sin = x
T4sin = taylor(f, x, 'Order', 4); % T4sin = -x^3/6 + x
T6sin = taylor(f, x, 'Order', 6); % T6sin = x^5/120 - x^3/6 + x
On you build such a model you can further use optimizations such as multiplier partitioning, resource sharing and pipelining options to optimize the model for area/performance/latency/power.
2 个评论
Walter Roberson
2022-7-4
They were already using a model with basic math blocks to calculate Taylor series of sine and cosine. I showed, however, that in their target range 0 to 2π that the error for their model was unacceptable, and that to bring the error to 1/1000 you need taylor order 21.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Fixed-Point Matrix Operations in Simulink 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!