From 8c9f2c7ae763f21f605248baef6f512bce005bbe Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Sat, 7 Nov 2020 10:12:57 +0000 Subject: Add hls include file --- include/hls.h | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 include/hls.h (limited to 'include/hls.h') diff --git a/include/hls.h b/include/hls.h new file mode 100644 index 0000000..b243fea --- /dev/null +++ b/include/hls.h @@ -0,0 +1,45 @@ +#ifndef VERICERT_HLS_H +#define VERICERT_HLS_H + +/* + * Divider C implementation for faster frequency division. + */ +unsigned int divider(unsigned int x, unsigned int y) { + unsigned int r0, q0, y0, y1; + + r0 = x; + q0 = 0; + y0 = y; + y1 = y; + do { + y1 = 2 * y1; + } while (y1 <= x); + do { + y1 = y1 / 2; + q0 = 2 * q0; + if (r0 >= y1) { + r0 = r0 - y1; + q0 = q0 + 1; + } + } while ((int)y1 != (int)y0); + return q0; +} + +/* + * Signed division operation for faster frequency division. + */ +int sdivider(int N, int D) { + if (D < 0) { + if (N < 0) + return divider(-N, -D); + else + return -divider(N, -D); + } else { + if (N < 0) + return -divider(-N, D); + else + return divider(N, D); + } +} + +#endif -- cgit