Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
12 years ago

Read float values from file stored on SD Card

Hello all,

I have a matrix with float values which I will be saving in a file from Matlab. I have to copy this file to SD Card and read these values using NIOS 2 while running my program. What is the best method to do this?

Should I simply store the values using fprintf in Matlab? Will I be able to read these values using fscanf in NIOS?

I am using the FAT file functions from the SD Card Audio Demo program but I think those functions read one byte at time. It will be difficult to re-format my data after reading because my values will be stored as float.

Any ideas on how I can implement this?

Thanks

3 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Solved the problem myself using fwrite(fid,A,'float32'); in Matlab and using a union of char[4] and float in NIOS, thanks to stackoverflow.com

    union {

    char chars[4];

    float f;

    } u;

    Read 4 bytes in u.char and use u.f, it will be exactly what's needed.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    can u send me copies of your NIOS coding.. just for references for my project

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    Solved the problem myself using fwrite(fid,A,'float32'); in Matlab and using a union of char[4] and float in NIOS, thanks to stackoverflow.com

    union {

    char chars[4];

    float f;

    } u;

    Read 4 bytes in u.char and use u.f, it will be exactly what's needed.

    --- Quote End ---

    If the endianess stored in the file by Matlab is the same as NIOS II endianess (it probably it is), you don't need the char[4] array, you can just read and write 4 bytes to and from the address of the float.

    BillA