How to split a large constant block to smaller sub blocks?

31 views Asked by At

For a research project I want to write into a block in Simulink from Matlab. The block is filled with a bitmap which should contain 2 million 32 bit values. This should then be splitted into 32k of 32 bit values so that it can be passed to the FPGA using "XDATA Write".

My hardware is a DS1005 card from dSPACE with an DS5203 (SX95) board also from dSPACE.

I tried using a "constant" block with 2 million zeros for initialization and a "selector" block with a 1:32000 input vector for selection. Here you can see my implementation: current implementation Simulating and compiling works as intended which results in a 32000 entry long vector which is passed to the FPGA. But when trying to upload the program to the dSPACE, the error "Program cannot be executed in real-time. (12)" which seems to be something like out of resources...

But when I just create a constant block with 2 million zeros it works. Also limiting the "BufferData" to 100.000 and "Constant 1" to 100 compiles and uploads too. So, the implementation I made doesn't seem to be effective. Here you can see the settings of my "Selector1" block: selection block settings

Are there better options to split the 2 million entry vector into sub vectors? Did I set up something wrong? Is there a kind of "Vector Split" block or similar which can handle that amount of data? Is there even a better option for that case probably for the "BufferData" constant or the passing of the data to the FPGA?

I would be glad for any help!

EDIT: I simplified the splitting using a "MATLAB function" block: New try With the following code:

function y = fcn(u)
   y = u(1:32000);
end

Still the same error message...

0

There are 0 answers