FPGA не является микроконтроллером, у него нет файловой системы или любого другого типа хранилищ, которые имеют некоторые контроллеры.
Но вы можете заставить ПЛИС работать как контроллер, внедряя в него Soft CPU, например MicroBlaze или Neon. Когда у вас это есть, вы подключаете систему ЦП к контроллеру SD-карты или подключаетесь через Uart или Ethernet к месту, где находится ваш файл, и читайте файл, используя код C, работающий на процессоре SoftCore.
Выполнение этого в ПЛИС, для человека, не знающего, как он работает, будет очень сложной задачей. Вы могли бы сделать это, создав простой UART внутри FPGA и у которого есть конечный автомат, который получает данные из UART и помещает их в память, но даже это может быть сложно и сложно, если вы этого никогда не делали.
Третьим вариантом является преобразование файла в двоичный файл, а затем преобразование его в загружаемый в память файл, который вы подключаете к ПЗУ или ОЗУ внутри FPGA, но тогда вы должны перекомпилировать свой проект каждый раз, когда хотите новый файл!
Был аналогичный вопрос о StackExchange некоторое время назад: Transferring a 1MB bitstream to a FPGA and reading it out
Блок памяти может содержать значения типа символов, если вам нужно обработать ASCII (извините, LATIN-1) текст. Но если он содержит числа, лучше всего использовать двоичный код. В любом случае я бы рекомендовал хранить данные в виде постоянного массива в пакете VHDL. Легко добавить строки VHDL, которые вам нужны вокруг фактических значений в скрипте или даже в текстовом редакторе. –
XST поддерживает подмножество textio для чтения текстовых файлов во время синтеза. К сожалению, Vivado регрессирует и не может этого сделать. –
Спасибо! Но содержимое файла не может быть определено заранее. Кроме того, содержимое может изменяться и не является постоянным. Итак, какие-то предложения? – Josh