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++
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.
12453 Discussions

Convert Dot Multiply from C2H to ???

Honored Contributor II

I have the following simple vector dot multiply as a C2H accelerator. 

For some situations (but not all) regular NIOS running 50MHz on a 2C8 is fast enough running in code. 

I want to implement this as something supported by Qsys and newer Quartus. 


Options? Special instruction in NIOS? User component in Qsys? Something else? 


I have constructed signal processing accelerators outside of NIOS using read and write masters, but would like to avoid that effort here. 


Seems likely this function has been covered before. 


// Multiply data vector with polyphase filter int DotMpy(int* __restrict__ r, int* __restrict__ p, alt_u16 PolySel) { # pragma altera_accelerate connect_variable DotMpy/r to sdram # pragma altera_accelerate connect_variable DotMpy/r to onchip_SRAM # pragma altera_accelerate connect_variable DotMpy/p to onchip_SRAM long long SumVal = 0; int k = 20; do { SumVal += (long long)*r++ * (long long)*p; if (PolySel&0x100) (p--); else (p++); } while (--k); return (int)(SumVal >> 16); }
0 Kudos
0 Replies