Square Root

ThexFSqrtfunction computes the square root of a 16-bit fixed point number using the non-restoring square root algorithm. The non-restoring square root algorithm uses the two's complement representation for the square root result. At each iteration the algorithm can generate exact result value even in the last bit.

Input argument D must be 16-bit number, though it is declared as 32-bit. The output sqrt(D) is 16-bit type. If format of D is QM.N (where M+N = 16) then format of output is Q(M/2).N

To get a precision of 'n' bits in fractional part, you can simply left shift the radicand (D) by '2n' before the function call and shift the solution right by 'n' to get the correct answer. For example, to find the square root of 35 (011000112) with one bit after the decimal point, that is, N=1:

  1. Shift the number (01100011002) left by 2
  2. Shift the answer (10112) right by 1. The correct answer is 101.1, which is 5.5.

API Syntax

int xFSqrt(unsigned int D)

Parameter Descriptions

The following table describes the template and the function parameters.

Table 1.xFSqrt Function Parameter Descriptions
Parameter Description
D Input data in a 16-bit fixed-point format.
Return Output value in short int format.

Resource Utilization

The following table summarizes the resource utilization of the xFSqrt function, generated usingVivado HLS 2017.1tool for the Xilinx Xczu9eg-ffvb1156-1-i-es1 FPGA.

Table 2.xFSqrt Function Resource Utilization Summary

Operating Frequency

(MHz)

Utilization Estimate
BRAM_18K DSP_48Es FF LUT CLB
300 0 0 8 6 1

Performance Estimate

The following table summarizes the performance in different configurations, as generated usingVivado HLS 2017.1tool for the Xilinx Xczu9eg-ffvb1156-1-i-es1 FPGA.

Table 3.xFSqrt Function Performance Estimate Summary

Operating Frequency

(MHz)

Latency Estimate
Min (cycles) Max (cycles)
300 18 18