Forum Discussion

antonto's avatar
antonto
Icon for Occasional Contributor rankOccasional Contributor
2 years ago
Solved

USB Mass storage device - Save data to file

Hello, I have DE10-Lite board and I'm using Quartus Prime Lite Edition.

My goal is to run something on the board and i want the output to be saved in a txt file.
My code is correct...I think but it doesnt seem to write something on the file. I've done some research and i found out that i need to configure the usb to mass storage device, please correct me if my wrong.


This is my code for a simple 2 to 1 mux just to make sure i get it right.

module test99(
input wire a,
input wire b,
input wire s,
input wire clk,
input wire file_enable,
output wire y
);
// Mux logic
assign y = s ? a : b;

// register to hold the data to be saved
reg [15:0] data_to_save;

// Initialize the data
initial begin
data_to_save = 16'h1234;
end

// Save data to a text file when file_enable is high
always @(posedge clk) begin // Use the clock signal
if (file_enable) begin
$fopen("output.txt", "w"); // Open the file for writing
$fwrite("output.txt", "Output (y) is: %b", y); // Write data to the file
$fclose("output.txt"); // Close the file
end
end
endmodule

and this is on my top module that was created by the program, so i dont need to go to the pin planner, i just call my module from there.

test99(.a(SW[0]),.b(SW[1]),.s(SW[2]),.clk(MAX10_CLK1_50),.file_enable(SW[3]),.y(LEDR[0]));


I have created the file output.txt and saved it in the same folder.

  • Hi,


    Probably that'll be easier by looping back the data and writing into text file using python.


    Thanks,

    Best Regards,

    Sheng


6 Replies

  • sstrell's avatar
    sstrell
    Icon for Super Contributor rankSuper Contributor

    This is not synthesizable code for an FPGA. An FPGA on its own has no concept of a file system. This would work for a simulation but not synthesis.

    You could save data to an on-chip RAM and then output it in some way or you could add a processor like Nios V, run an OS, and have drivers to access external mass storage.

    But as your code is right now, it won't save to a file.

    • antonto's avatar
      antonto
      Icon for Occasional Contributor rankOccasional Contributor

      It definitely wont. I actually got a idea, please tell me what do you think about it. My project is basically to combine two boards, the DE10-Lite and SAMD21 M0. The SAMD21 board will send the inputs to the DE10-Lite which will do something and the goal was to save the output to a txt file. But now im thinking if i send the output back to the SAMD21 and then save it to a txt file wouldn't that be easier?

      Will try to do some testing and tell you the results.

    • antonto's avatar
      antonto
      Icon for Occasional Contributor rankOccasional Contributor

      Thank you for your response, i saw the video that you sent me and it was actually quite good I didnt know that you could do that. Sadly it uses C and i can only use python and SystemVerilog on my project. My project is basically to combine two boards, the DE10-Lite and SAMD21 M0. The SAMD21 board will send the inputs to the DE10-Lite which will do something and the goal was to save the output to a txt file. But now im thinking if i send the output back to the SAMD21 and then save it to a txt file wouldn't that be easier? Please tell me your opinion and will keep you updated after i do some testing.

  • ShengN_altera's avatar
    ShengN_altera
    Icon for Super Contributor rankSuper Contributor

    Hi,


    Probably that'll be easier by looping back the data and writing into text file using python.


    Thanks,

    Best Regards,

    Sheng


  • antonto's avatar
    antonto
    Icon for Occasional Contributor rankOccasional Contributor

    Sorry for answering so late. Yes it worked with looping the data back to the samd21 and writing in there in a file. Thanks again for your time guys.