fixed point taylor sine/cosine approximation model
조회 수: 8 (최근 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!