Nios® II Embedded Design Suite (EDS)
Support for Embedded Development Tools, Processors (SoCs and Nios® II processor), Embedded Development Suites (EDSs), Boot and Configuration, Operating Systems, C and C++
Announcements
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
12409 Discussions

Integer vs Arbitrary Precise Integer Intel HLS

Altera_Forum
Honored Contributor II
1,008 Views

Hello all great people and Anand, 

 

 

Below is the code snippet. I am using Intel HLS tool. The data type used in below given code is integer. I want to compare the result of integer data type with arbitrary precise integer represented as ac_int <W> in Intel HLS tool through AC data type library of Intel HLS tool. My question is what should be the exact representation of ac_int <W> in terms of 'W' for input arrays, dout, acc, a_reg, sub and sub2 for less latency and less resource utilization. 

I want to use the exact code for precise integer type instead of native integer and later compare the results of integer and arbitrary precise data type.  

 

 

void diff_sq_acc(int a[N], int b[N], int *dout) 

unsigned char i; 

int acc= 0; 

int a_reg, b_reg, sub, sub2; 

for(i=0; i<N; i++) 

 

 

a_reg = a

b_reg = b

sub = a_reg - b_reg; 

sub2 = sub*sub; 

acc += sub2; 

*dout = acc; 

}
0 Kudos
4 Replies
Altera_Forum
Honored Contributor II
133 Views

Hi, 

 

You can try to optimize as per you design requriments. 

# include "HLS/hls.h" # include <stdio.h> # include "HLS/ac_int.h" # include "HLS/ac_fixed.h" # include "HLS/extendedmath.h" # include "HLS/math.h" typedef ac_int<8, false> fixed_8_t; typedef ac_int<16, false> fixed_16_t; # define N 2 component void dut(fixed_8_t a, fixed_8_t b, fixed_8_t *dout) { unsigned int i; fixed_16_t acc= 0; fixed_8_t a_reg, b_reg, sub; fixed_16_t sub2; for(i=0; i<N; i++) { a_reg = a; b_reg = b; sub = a_reg - b_reg; sub2 = sub*sub; acc += sub2; } *dout = acc; } int main() { fixed_8_t z; fixed_16_t ip = &z; fixed_8_t x={128,128}; fixed_8_t y={128,128}; dut(x,y,&z); return 0; }  

 

let me know if this has helped resolve the issue you are facing or if you need any further assistance. 

 

PS:Same as thread https://alteraforum.com/forum/showthread.php?t=57668&page=2 

 

Best Regards, 

Anand Raj Shankar 

(This message was posted on behalf of Intel Corporation)
Altera_Forum
Honored Contributor II
133 Views

Dear Anand, 

 

thanks ! it works...i think there was a type error in your code... *dout should be fixed_16_t..... right ?
Altera_Forum
Honored Contributor II
133 Views

Hi, 

 

There was no error in code. 

Yes logically it should be fixed_16_t . 

 

let me know if you need any further assistance. 

 

Best Regards, 

Anand Raj Shankar 

(This message was posted on behalf of Intel Corporation)
Altera_Forum
Honored Contributor II
133 Views

ok got your point...thanks !

Reply