FPGA/VHDL Matrix Multiply

Joined
Aug 13, 2007
Messages
1
Reaction score
0
I have been assigned the task of implementing a filter that utilizes the following update equation in MATLAB:

P = (1 / lambda) * (P - ((P * u * u' * P) / (lambda + u' * P * u)));

In this equation, ‘P’ is a [5x5] matrix, ‘u’ is a [5x1] matrix, and ‘lambda’ is a constant. P must be computed every 10uS (100kHz), and the implementation can utilized either fixed-point or floating point numbers. Can anyone give me any suggestions as to how to implement this equation in VHDL. I am using an Altera Dev. Board with a Startix II EP2S60 FPGA. I have attempted instantiating a NIOSII processor into the FPGA and running a C program to compute P, but this option was too slow. I also realize that I might have to tough it out and simply expand the equations and “code away” or develop a solution using matrix multiplication modules.

Thanks,

Jon
 
Joined
May 4, 2007
Messages
49
Reaction score
0
Jon,

I've built one of these and there is no other way to do it but slog through all the calculations. Mine was an [8x8] complex matrix, ugh. So for a [5x5]x[5x1] you'll have 25 multiplications with 5 results stored into a [5x1] matrix. However, the u'P multiply is seen twice in your equation and therefore should only calcualate it once, saving some time. Here is the attachment of the rendition of what you should build.

Regards,
Scott
 

Attachments

  • matrix_multiply.bmp
    12.9 KB · Views: 572

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,013
Latest member
KatriceSwa

Latest Threads

Top