2015-06-11 8 views
0

Прежде чем я начну, пожалуйста, знайте, что я совершенно новичок в материалах FPGA. Мне было интересно, можно ли хранить файл (* .txt или * .csv) в FPGA и читать его по очереди (т. Е. Операции ввода-вывода файлов). Пожалуйста, дайте мне знать. Любая помощь будет оценена по достоинству.Прочтите файл в FPGA

Я буду кодироваться в VHDL и, возможно, с помощью платы Xilinx XUPV5 LX110T.

ответ

4

Можно инициализировать Блок ОЗУ внешним файлом данных, но этот файл должен быть чистым двоичным или шестнадцатеричным содержимым без комментариев или другой информации. Затем вы можете читать и писать в одном цикле с разных адресов. Вы можете настроить ОЗУ как двухпортовый. Для получения дополнительной информации ознакомьтесь с руководством пользователя XST для Virtex-5. http://www.xilinx.com/support/documentation/sw_manuals/xilinx13_1/xst.pdf

+1

Блок памяти может содержать значения типа символов, если вам нужно обработать ASCII (извините, LATIN-1) текст. Но если он содержит числа, лучше всего использовать двоичный код. В любом случае я бы рекомендовал хранить данные в виде постоянного массива в пакете VHDL. Легко добавить строки VHDL, которые вам нужны вокруг фактических значений в скрипте или даже в текстовом редакторе. –

+2

XST поддерживает подмножество textio для чтения текстовых файлов во время синтеза. К сожалению, Vivado регрессирует и не может этого сделать. –

+0

Спасибо! Но содержимое файла не может быть определено заранее. Кроме того, содержимое может изменяться и не является постоянным. Итак, какие-то предложения? – Josh

1

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