Engineering Computations FPGA-based hardware implementation of arctangent and arccosine functions for the inverse kinematics of robot manipulator Ying-Shieh Kung Ming-Kuang Wu Hai Linh Bui Thi and Tz-Han Jung Feng-Chi Lee Wen-Chuan Chen Article information: Downloaded by University of Cincinnati At 19:15 22 May 2016 (PT) To cite this document: Ying-Shieh Kung Ming-Kuang Wu Hai Linh Bui Thi and Tz-Han Jung Feng-Chi Lee Wen-Chuan Chen , (2014),"FPGA-based hardware implementation of arctangent and arccosine functions for the inverse kinematics of robot manipulator", Engineering Computations, Vol. 31 Iss 8 pp. 1679 - 1690 Permanent link to this document: http://dx.doi.org/10.1108/EC-11-2012-0290 Downloaded on: 22 May 2016, At: 19:15 (PT) References: this document contains references to 12 other documents. To copy this document: permissions@emeraldinsight.com The fulltext of this document has been downloaded 73 times since 2014* Users who downloaded this article also downloaded: (2014),"A neural observer for sensorless speed control of servomotors", Engineering Computations, Vol. 31 Iss 8 pp. 1668-1678 http://dx.doi.org/10.1108/EC-11-2012-0289 (2014),"Fuzzy visual detection for human-robot interaction", Engineering Computations, Vol. 31 Iss 8 pp. 1709-1719 http://dx.doi.org/10.1108/EC-11-2012-0292 (2014),"Implementation of an automated system for microscope pathological section image with RFID management", Engineering Computations, Vol. 31 Iss 8 pp. 1691-1708 http://dx.doi.org/10.1108/ EC-11-2012-0291 Access to this document was granted through an Emerald subscription provided by emerald-srm:145608 [] For Authors If you would like to write for this, or any other Emerald publication, then please use our Emerald for Authors service information about how to choose which publication to write for and submission guidelines are available for all. Please visit www.emeraldinsight.com/authors for more information. About Emerald www.emeraldinsight.com Emerald is a global publisher linking research and practice to the benefit of society. The company manages a portfolio of more than 290 journals and over 2,350 books and book series volumes, as well as providing an extensive range of online products and additional customer resources and services. Emerald is both COUNTER 4 and TRANSFER compliant. The organization is a partner of the Committee on Publication Ethics (COPE) and also works with Portico and the LOCKSS initiative for digital archive preservation. *Related content and download information correct at time of download. The current issue and full text archive of this journal is available at www.emeraldinsight.com/0264-4401.htm FPGA-based hardware implementation of arctangent and arccosine functions for the inverse kinematics of robot manipulator Downloaded by University of Cincinnati At 19:15 22 May 2016 (PT) Ying-Shieh Kung Inverse kinematics of robot manipulator 1679 Received 20 November 2012 Revised 26 February 2013 Accepted 10 March 2013 Department of Electrical Engineering, Southern Taiwan University of Science and Technology, Tainan, Taiwan Ming-Kuang Wu Department of Mechanical Engineering, Southern Taiwan University of Science and Technology, Tainan, Taiwan Hai Linh Bui Thi and Tz-Han Jung Department of Electrical Engineering, Southern Taiwan University of Science and Technology, Tainan, Taiwan, and Feng-Chi Lee and Wen-Chuan Chen Mechanical and System Research Laboratories, Industrial Technology Research Institute, Hsinchu, Taiwan Abstract Purpose – The inverse kinematics in robot manipulator have to handle the arctangent and arccosine function. However, the two functions are complicated and need much computation time so that it is difficult to be realized in the typical processing system. The purpose of this paper is to solve this problem by using Field Programmable Gate Array (FPGA) to speed up the computation power. Design/methodology/approach – The Taylor series expansion method is firstly applied to transfer arctangent and arccosine function to a polynomial form. And Look-Up Table (LUT) is used to store the parameters of the polynomial form. Then the behavior of the computation algorithm is described by Very high-speed IC Hardware Description Language (VHDL) and a co-simulation using ModelSim and Simulink is applied to evaluate the correctness of the VHDL code. Findings – The computation time of arctangent and arccosine function using by FPGA need only 320 and 420 ns, respectively, and the accuracy is o0.011. Practical implications – Fast computation in arctangent and arccosine function can speed up the motion response of the real robot system when it needs to perform the inverse kinematics function. Originality/value – This is the first time such to combine the Taylor series method and LUT method in the computation the arctangent and arccosine function as well as to implement it with FPGA. Keywords FPGA, Arccosine function, Arctangent function, ModelSim/Simulink simulation, VHDL Paper type Research paper 1. Introduction When robot manipulator performs a motion control, it needs to calculate a complicated algorithm of kinematics/inverse kinematics ( Jon, 2004), especially in the computation The financial support provided by Industrial Technology Research Institute (ITRI) is gratefully acknowledged. Engineering Computations: International Journal for Computer-Aided Engineering and Software Vol. 31 No. 8, 2014 pp. 1679-1690 r Emerald Group Publishing Limited 0264-4401 DOI 10.1108/EC-11-2012-0290 EC 31,8 Downloaded by University of Cincinnati At 19:15 22 May 2016 (PT) 1680 of the arctangent function (Rajan et al., 2006; Ukil et al., 2011) and the arccosine function, which consumes much CPU time and certainly slows down the motion speed of robot manipulator. To solve this problem, two key factors need to be considered which one is fast computation and the other is the accurate computation. Field Programmable Gate Array (FPGA) with programmable hard-wired feature, fast computation ability, shorter design cycle, embedding processor, low power consumption and higher density, has been widely applied to the industrial controller (Czeslaw and Jacek, 2010; Kung et al., 2009; Monmasson et al., 2011) and provided a possible solution in this issue (Kung et al., 2007). Therefore, in this paper, Taylor series expansions about the arctangent and arccosine functions are first derived, and Very high-speed IC Hardware Description Language (VHDL) will be adopted to describe the circuit behavior. The design of VHDL code will apply the parameterized function to increase the code flexible and the Finite state machine (FSM) is used to reduce the hardware resource usage. Recently, a co-simulation work by Electronic Design Automation (EDA) Simulator Link has been gradually applied to verify the effectiveness of the Verilog and VHDL code in the motor drive system (Kung et al., 2011; Ĺazaro et al., 2006; Li et al., 2010). The EDA Simulator Link (Mathwork, 2004) provides a co-simulation interface between MATLAB or Simulink and HDL simulators-ModelSim (Modeltech, 2004). Using it you can verify a VHDL, Verilog, or mixed-language implementation against your Simulink model or MATLAB algorithm. Therefore, EDA Simulator Link lets you use MATLAB code and Simulink models as a test bench that generates stimulus for an HDL simulation and analyzes the simulation’s response. In this paper, a co-simulation by EDA Simulator Link is applied to evaluate the arctangent and arccosine functions. The input values are generated by Simulink and the arctangent and arccosine functions described by VHDL code is executed in ModelSim. In addition, the output values computed from ModelSim will compare the outputs from MATLAB to evaluate its correctness and effectiveness. 2. Formulation of arctangent and arccosine using Taylor series expansion Taylor series expansion with a specific value x0 can be represented by the following formulation: f 00 ðx0 Þ f ð3Þ ðx0 Þ ðx x0 Þ2 þ ðx x0 Þ3 2! 3! f ð4Þ ðx0 Þ f ð5Þ ðx0 Þ ðx x0 Þ4 þ ðx x0 Þ5 þ ::::: þ 4! 5! f ðxÞ ¼ f ðx0 Þ þ f 0 ðx0 Þðx x0 Þ þ ð1Þ A. Computation of arctangent function using Taylor series expansion method The equation of arctangent function is shown as follows: y ¼ a tan 2ðy=xÞ ð2Þ And the inputs are x and y, and the output is y. There are two steps to evaluate the arctangent function. First step: it is to compute the y1 ¼ tan1 ðxÞ value which the range of input value is 1pxp0 (or the output value is 451py1p01), as shown in Figure 1(a). Further, Taylor series expansion is applied to compute the function of y1 ¼ f ðxÞ ¼ tan1 ðxÞ, which the polynomial equation is expanded to the fourth-order term within the vicinity of x0 and it is expressed as follows: f ðxÞ ffi a0 þ a1 ðx x0 Þ þ a2 ðx x0 Þ2 þ a3 ðx x0 Þ3 ð3Þ 1681 with: 1 a0 ¼ f ðx0 Þ ¼ tan ðx0 Þ a2 ¼ f 00 ðx0 Þ ¼ a3 ¼ f ð3Þ ðx0 Þ ¼ ð4Þ 1 1 þ x20 a1 ¼ f 0 ðx0 Þ ¼ Downloaded by University of Cincinnati At 19:15 22 May 2016 (PT) Inverse kinematics of robot manipulator ð5Þ 2x0 ð6Þ ð1 þ x20 Þ2 2 þ 6x20 ð7Þ ð1 þ x20 Þ3 Second step: after completing the computation of tan1(x), we can expand it to compute y ¼ a tan2(y/x) with the output values are ranged from 1801py1p1801, as shown in Figure 1(b). In Region I: y ð8Þ xx ¼ ; y1 ¼ tan1 ðxxÞ; y ¼ y1 x In Region II: x xx ¼ ; y y1 ¼ tan1 ðxxÞ; y ¼ 90 y1 ð9Þ In Region III: xx ¼ (a) x ; y y1 ¼ tan1 ðxxÞ; y ¼ 90 þ y1 (b) y ð10Þ y III II I IV 0° 45° x x VIII V VI VII Figure 1. Computing range regarding as (a) the tan1(x) and (b) y ¼ a tan2(y/x) EC 31,8 In Region IV: xx ¼ y ; x y1 ¼ tan1 ðxxÞ; y ¼ 180 y1 ð11Þ In Region V: 1682 xx ¼ y ; x y1 ¼ tan1 ðxxÞ; y ¼ 180 þ y1 ð12Þ xx ¼ x ; y y1 ¼ tan1 ðxxÞ; y ¼ 90 y1 ð13Þ xx ¼ x ; y y1 ¼ tan1 ðxxÞ; y ¼ 90 þ y1 ð14Þ Downloaded by University of Cincinnati At 19:15 22 May 2016 (PT) In Region VI: In Region VII: In Region VIII: xx ¼ y ; x y1 ¼ tan1 ðxxÞ; y ¼ y1 ð15Þ In case of x ¼ 0: if y40 then y ¼ 90 ð16Þ if yo0 then y ¼ 90 ð17Þ if y ¼ 0 then y ¼ 0 ð18Þ B. Computation of arccosine function using Taylor series expansion method To compute the: y ¼ cos1 ðxÞ ð19Þ with input value of x being between 0 and 1, the output value being 0-1801. Due to the y near 0, the parameters in Taylor series expansion of cos1(x) will approach to infinite; therefore, we separate two regions to compute the y which is shown in Figure 2. The computation is presented as follows: pffiffiffiffiffiffiffiffiffiffiffiffiffi In Region I: evaluate y ¼ 1 x2 first, then compute y ¼ sin1( y). In Region II: directly compute the y ¼ cos1(x). While applying Taylor series expansion to compute y ¼ f(x) ¼ cos1(x), the polynomial equation is expanded to the fourth-order term within the vicinity of x0, and it is expressed as follows: f ðxÞ ffi b0 þ b1 ðx x0 Þ þ b2 ðx x0 Þ2 þ b3 ðx x0 Þ3 ð20Þ b0 ¼ f ðx0 Þ ¼ cos1 ðx0 Þ ð21Þ 1683 with: 1 b1 ¼ f 0 ðx0 Þ ¼ ð1 x20 Þ2 Downloaded by University of Cincinnati At 19:15 22 May 2016 (PT) Inverse kinematics of robot manipulator 3 b2 ¼ f 00 ðx0 Þ ¼ x0 ð1 x20 Þ2 =2 5 b3 ¼ f ð3Þ ðx0 Þ ¼ ð1 x20 Þ2 ð1 4x20 Þ=6 ð22Þ ð23Þ ð24Þ While applying Taylor series expansion to compute y ¼ f(x) ¼ sin1(x), the polynomial equation is expanded to the fourth-order term within the vicinity of x0, and it is expressed as follows: f ðxÞ ffi c0 þ c1 ðx x0 Þ þ c2 ðx x0 Þ2 þ c3 ðx x0 Þ3 ð25Þ c0 ¼ f ðx0 Þ ¼ sin1 ðx0 Þ ð26Þ with: 1 c1 ¼ f 0 ðx0 Þ ¼ ð1 x20 Þ2 ð27Þ 3 c2 ¼ f 00 ðx0 Þ ¼ x0 ð1 x20 Þ2 =2 5 c3 ¼ f ð3Þ ðx0 Þ ¼ ð1 x20 Þ2 ð1 þ 2x20 Þ=6 y ð28Þ ð29Þ = cos–1 (x ) II 45°90° = sin–1( 1 – x 2 ) I 0°45° x Figure 2. Computing range of y ¼ cos1(x) EC 31,8 Downloaded by University of Cincinnati At 19:15 22 May 2016 (PT) 1684 3. Hardware implementation of arctangent and arccosine function The diagrams of hardware implementation for arctangent and arccosine functions are shown in Figures 3 and 5, respectively. In Figure 3, the inputs and output are, respectively, designed with 32-bit Q15 format and 16-bit Q15 format. It consists of one main circuit with FSM architecture and two components for computing the function of divider and tan1(x). The FSM in main circuit generates sequential signals and step-by-steps computing the overall procedure of arctangent function which is described in Section 2.A. Additionally, the main circuit also performs the function of region identification and radius to degree transformation of y. The component of divider is 32-bit Q15 format and 2s complement operation, and its output is 16-bit Q15 format. The input and output values in component of tan1(x) belong to 16-bit Q15 format. The FSM is employed to model the computation of tan1(x) and it is shown in Figure 4 which use two multipliers and one adder in the design. The multiplier and adder apply Altera Library Parameterized Modules (LPM) standard. In Figure 4, it manipulates seven steps machine to carry out the overall computations of tan1(x). The steps s0Bs1 execute to look-up five tables and s2Bs6 perform the computation of polynomial in (3). Further, in Figure 3, it takes 16 steps to complete the computation of a tan2(y/x) function. The operation of each step is 20 ns (50 MHz) in FPGA; therefore total 16 steps only need 320 ns operation times. The FPGA (Altera Cyclone II EP2C70) S0 X 32 Y 32 S15 S14 A 32 B 32 FSM Q S2 x tan-1x 16 16 (0° 45°) S3 Figure 3. Hardware implementation diagram for a tan2(y/x) function 16 divider S1 (radius) S4 16 Main circuit (degree) = tan–1(x) ≅ a0 + a1 (x – x0) + a2 (x – x0)2 + a3 (x – x0)3 addr = x (14..11) x LUT (x0) LUT (a1) – + dx mult_r1(30..15) saa1 x0 x S0 a0 LUT (a2) a2 S1 + a0 LUT (a0) LUT (a3) saa2 a1 dx Figure 4. FSM for computing the tan1(x) function + a2 x sita x mult_r1(30..15) dx2 dx3 dx x x dx mult_r1(30..15) a3 a3 S2 + S3 S4 S5 S6 Downloaded by University of Cincinnati At 19:15 22 May 2016 (PT) resource usage in Figure 3 needs 4,161 Logic Elements (Les), 1,280-RAM bits and six embedded multipliers (nine bits). With the similar design, the implementation of the arccosine function is shown in Figure 5 which consists of one main circuit with FSM and three components by cos1(x), sin1(x), and a square root. The input and output are designed with 16-bit Q15 format. The FSM in main circuit generates sequential signals and step-by-step computes the overall procedure of arccossine function which is described in Section 2.B. The FSM is employed to model the computation of cos1(x) and shown in Figure 6 which use two multipliers and one adder in the design. In Figure 6, it manipulates seven steps machine to carry out the overall computations of cos1(x). The steps s0Bs1 execute to look-up five tables and s2Bs6 perform the computation of polynomial in (20). Further, in Figure 5, it takes 21 steps to complete the computation of arccosine function. The operation of each step is 20 ns (50 MHz) in FPGA; therefore total 21 steps only need 420 ns operation times. The FPGA (Altera Cyclone II EP2C70) resource usage in Figure 5 needs 584 LEs (Logic Elements), 45,056-RAM bits and 14 embedded multipliers (nine bits). x X S1 (radius) x 16 16 sin–1x 16 S2 FSM S19 (45°90°) S20 1685 16 cos–1x 16 S0 Inverse kinematics of robot manipulator (0°45°) (radius) S3 y 16 16 y S4 sry 16 Main circuit Figure 5. Hardware implementation diagram for arccosine function (degree) = cos–1(x) ≅ b0 + b1(x – x0) + b2(x – x0)2 + b3(x – x0)3 x addr = x (14..8) LUT (xc0) LUT (b1) – + dx xc0 mult_r1(30..15) b0 LUT (b2) b2 S1 saa2 + b0 dx S0 saa1 b1 LUT (b0) LUT (b3) + x b2 x dx sita mult_r1(30..15) dx3 dx x x dx mult_r1(30..15) b3 b3 S2 + x 2 S3 Note: The range is from 45° to 90° S4 S5 S6 Figure 6. FSM for computing the cos1(x) function EC 31,8 Downloaded by University of Cincinnati At 19:15 22 May 2016 (PT) 1686 4. Co-simulation using ModelSim and Simulink and its simulation results The co-simulation architectures for arctangent function and for arccosine function are shown in Figures 7 and 8, respectively. In Figure 7, the work in ModelSim executes the arctangent function which circuit is designed in Figure 3. In addition, the work in ModelSim in Figure 8 performs the arccosine function which circuit is described in Figure 5. The input values to ModelSim are provided from Simulink and output responses are also displayed to Simulink. To confirm the correctness, an embedded MATLAB function for computing the arctangent function in Figure 7 and arccosine function in Figure 8 is considered. Under the co-simulation of ModelSim and Simulink architecture in Figures 7 and 8, the simulation results for specific input are shown as follows. Evaluate the arctangent function in Figure 7: . the input values are X ¼ 1,234.123 and Y ¼ 21.456; . the y computed from ModelSim is 179.00781251; . the y computed from MATLAB is 179.003977393031; and . the error is about 0.0038351071. Evaluate the arccosine function in Figure 8: . the input values are X ¼ 0.234; . the y computed from ModelSim is 103.53906251; . the y computed from MATLAB is 103.532683536831; and . the error is about 0.0063789631. Further, more data are tested and the results are listed in Tables I and II. In Table I, the evaluation results for arctangent function show that the y derived from ModelSim and MATLAB give the error with o0.011 under designed test data. Similarity, the evaluation results for arccosine function in Table II shows that the error of y is o0.0351 while y is approach to 01 or 1801, but others, the error is only o0.011 (about 0.000174 rad). Therefore, from the simulation results in Figures 7 and 8 and Tables I and II, it demonstrates that the proposed hardware implementation for arctangent and arccosine functions is effectiveness and correctness. 5. Conclusion This paper successfully demonstrates the hardware implementation of arctangent and arccosine functions for the inverse kinematics of robot manipulator. The conclusions are summarized as follows: (1) Based on co-simulation of ModelSim and SimuLink, it shows that the computation time only needs 320 ns for arctangent function and 420 ns for arccosine function, as well as the accuracy compared with MATLAB are o0.011 (about 0.000174 rad) for both in arctangent function and most region of arccosine function. In addition, the FPGA resource usage is 4,161 LEs and 1,280-RAM bits for arctangent function and 584 LEs and 45,056-RAM bits for arccosine function. –21.456 Constant2 –1234.123 Constant1 X1 Convert HDL Cosimulation sita32 KGain1 fcn sita sita_degree Embedded MATLAB Function X Y Display5 Theta Display3 Subtract2 – + bin 1010 0110 0111 1111 (SI) bin 1111 1101 1001 0110 1111 0000 0100 0001 Y1 Convert ModelSim. Display2 (SI) bin 1111 1111 1111 0101 0100 0101 1010 0001 Downloaded by University of Cincinnati At 19:15 22 May 2016 (PT) error (degree) 0.0038351069675855 sita1 (radius) –3.1242087796739 sita1 (degree) –179.00397739303 sita (degree) –179.0078125 Inverse kinematics of robot manipulator 1687 Figure 7. ModelSim/Simulink co-simulation architecture of arctangent function –1 ~ 0.99997 –0.234 Figure 8. ModelSim/Simulink co-simulation architecture of arccosine function Convert u xx Embedded MATLAB Function y1 sita Gain1 KTheta Subtract + – Display3 103.53268353683 error (degree) –0.0063789631707181 sita (degree) 103.5390625 sita1 (degree) bin 0011 0011 1100 0101 1688 fcn HDL Cosimulation ModelSim. Display2 (SI) bin 1110 0010 0000 1100 Downloaded by University of Cincinnati At 19:15 22 May 2016 (PT) EC 31,8 (2) Downloaded by University of Cincinnati At 19:15 22 May 2016 (PT) (3) The comparison of the proposed method with the related referred papers is presented as follows. In the time consumption aspect of computing the arctangent function, the proposed method spends only 320 ns, but it needs 35 ms in referred paper (Ukil et al., 2011) and 75 ms in another referred paper (Rajan et al., 2006). In the accuracy aspect of computing the arctangent function, the proposed method is o0.000174 rad, but those are 0.0000242 rad in referred paper (Ukil et al., 2011) and 0.0015 rad in another referred paper (Rajan et al., 2006). Inverse kinematics of robot manipulator 1689 If the robot manipulator adopts the proposed method to compute the arctangent and arcosine functions, the computation of inverse kinematics can be greatly speeded up. For the example of the six-axis articulated robot manipulator, the computation time to implement the inverse kinematics in hardware is o10 ms, but the same formulas which are implemented by Nios II processor in software need about 5-10 ms. Therefore, the computation efficiency increases 500-1,000 times which make the real time control of robot manipulator in trajectory tracking motion is possible. X (mm) 412.34 23.54 123.54 412.34 1,234.67 0.234 880.514 890.234 Y (mm) y from ModelSim (degree) y from MATLAB (degree) Error (degree) 23.54 412.34 412.34 123.54 0.234 1234.67 890.234 880.514 3.2578125 86.7421875 106.671875 163.328125 179.992187 90.007812 45.320313 44.679687 3.267400 86.732598 106.678590 163.32141 179.989141 90.01086 45.314505 44.685494 0.009588 0.009588 0.006715 0.006715 0.003046 0.003046 0.005807 0.005807 X (mm) y from ModelSim (degree) y from MATLAB (degree) Error (degree) 0.9995 0.995 0.912 0.650 0.300 0.010 0.001 0.120 0.420 0.850 0.995 0.9995 1.843750 5.734375 24.218750 49.453125 72.539096 89.421850 90.062500 96.898437 114.843750 148.218750 147.289000 178.210937 1.811927 5.731967 24.216783 49.459398 72.542396 89.427032 90.057295 96.8912010 114.834587 148.211669 147.268000 178.188072 0.031822 0.002407 0.001966 0.005273 0.003343 0.005158 0.005204 0.006334 0.009162 0.007080 0.021030 0.022864 Table I. The evaluation results for arctangent function based on Figure 7 Table II. The evaluation results for arccosine function based on Figure 8 EC 31,8 Downloaded by University of Cincinnati At 19:15 22 May 2016 (PT) 1690 References Czeslaw, T.K. and Jacek, D.L. (2010), “Speed sensorless DTC control of the induction motor using FPGA implementation”, COMPEL: The International Journal for Computation and Mathematics in Electrical and Electronic Engineering, Vol. 29 No. 1, pp. 109-125. Jon, R. (2004), “On advances in robot kinematics”, Industrial Robot: An International Journal, Vol. 31 No. 5, pp. 459-460. Kung, Y.S., Fung, R.F. and Tai, T.Y. (2009), “Realization of a motion control IC for X-Y table based on novel FPGA technology”, IEEE Transactions on Industrial Electronics., Vol. 56 No. 1, pp. 43-53. Kung, Y.S., Wang, M.S. and Chen, C.S. (2007), “FPGA realization of inverse kinematics for articulated robot arm”, Proceeding of the Ninth International Conference on Automation Technology, Taipei, 13-15 June. Kung, Y.S., Nguyen, V.Q., Huang, C.C. and Huang, L.C. (2011), “Simulink/ModelSim co-simulation of sensorless PMSM speed controller”, Proceeding of the IEEE Symposium on Industrial Electronics and Applications, pp. 24-29. Ĺazaro, J., Astarloa, A., Arias, J., Bidarte, U. and Zuloaga, A. (2006), “Simulink/Modelsim simulable VHDL PID core for industrial SoPC multiaxis controllers”, Proceeding of the IEEE Industrial Electronics 32nd Annual Conference, pp. 3007-3011. Li, Y., Huo, J., Li, X., Wen, J., Wang, Y. and Shan, B. (2010), “An open-loop sin microstepping driver based on FPGA and the Co-simulation of Modelsim and Simulink”, Proceeding of the International Conference on Computer, Mechatronics, Control and Electronic Engineering, pp. 223-227. Mathworks (2004), Matlab/Simulink Users Guide, Application Program Interface Guide (2004), Mathworks, Natick, Massachussett, MA. Modeltech (2004), ModelSim Reference Manual, Modeltech, San Jose, CA. Monmasson, E., Idkhajine, L., Cirstea, M.N., Bahri, I., Tisan, A. and Naouar, M.W. (2011), “FPGAs in industrial control applications”, IEEE Transactions on Industrial Informatics, Vol. 7 No. 2, pp. 224-243. Rajan, S., Wang, S., Inkol, R. and Joyal, A. (2006), “Efficient approximations for the arctangent function”, IEEE Signal Processing Magazine, Vol. 23 No. 3, pp. 108-111. Ukil, A., Shah, V.H. and Deck, B. (2011), “Fast Computation of arctangent functions for embedded applications: a comparative analysis”, Proceeding of IEEE International Symposium of the Industrial Electronics, pp. 1206-1211. Corresponding author Professor Ying-Shieh Kung can be contacted at: kung@mail.stust.edu.tw To purchase reprints of this article please e-mail: reprints@emeraldinsight.com Or visit our web site for further details: www.emeraldinsight.com/reprints This article has been cited by: Downloaded by University of Cincinnati At 19:15 22 May 2016 (PT) 1. Ying-Shieh Kung, Nguyen Phan Thanh, Ming-Shyng Wang. 2015. Design and simulation of a sensorless permanent magnet synchronous motor drive with microprocessor-based PI controller and dedicated hardware EKF estimator. Applied Mathematical Modelling 39:19, 5816-5827. [CrossRef]