foc 알고리즘 구현을위한 Clarke 및 Park 변형을위한 Verilog 코드를 작성하고 싶습니다. 저는 Verilog을 처음 접했고 cos, sin 함수 및 실수와 같은 복잡한 방정식에 대한 코드를 작성하는 방법을 이해하지 못했습니다. 누군가 나에게 시작을 줄 수 있습니까? 필자가 작성하려고했던 Verilog 코드는 다음과 같다.Clarke 및 Park 변형을위한 Verilog 코드
timescale 1ns/1ps
module clarke_park(iR_i,iY_i,iB_i,theta,iD_o,iQ_o);
output real iD_o;
output real iQ_o;
input real iR_i;
input real iY_i;
input real iB_i;
real k = 0.66;
output real ialpha;
output real ibeta;
output real iY_r;//real part
output real iY_c;//complex part
output real iB_r;
output real iB_c;
output real ibeta_r;
output real ibeta_c;
function sin(input real theta);
function cos(input real theta);
iY_r = -1*(iY_i)*(0.5);
iY_c = (iY_i)*(0.866);
iB_r = -1*(iB_i)*(0.5);
iB_c = -1*(iB_i)*(0.866);
ialpha = k*iR;
ibeta_r = k*(0.866)*(iY_r-iB_r);
ibeta_c = k*(0.866)*(iY_c-iB_c);
real a1 = sin(theta);
real a2 = cos(theta);
iD_r = (a1*(ialpha)) + ((sin(theta))*(ibeta_r));
iD_c = a2*(ibeta_c);
iQ_r = - (1*a2*(ialpha)) + (a1*(ibeta_r));
iQ_c = a1*(ibeta_c);
endfunction
assign iD_o = {iD_r,iD_c};
assign iQ_o = {iQ_r,iQ_c};
endmodule
결과를 합성해야하는 경우 포함 할 질문을 편집 할 수 있습니다. 실수는 합성이 불가능합니다. 시뮬레이션이 아닌 FPGA 나 ASIC에서 필요하다면 부동 소수점 코어를 사용해야 할 것입니다. – Morgan
합성이 가능할 필요는 없으며 테스트 목적으로 만 개발되었습니다. – SACHIN