Чтение файла в ПЛИС

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

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


person Josh    schedule 11.06.2015    source источник


Ответы (2)


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

person pantelis300    schedule 11.06.2015
comment
Блок памяти может содержать значения типа Character, если вам нужно обработать текст ASCII (извините, LATIN-1). Но если он содержит числа, лучше всего использовать чистый двоичный код. В любом случае я бы рекомендовал хранить данные в виде постоянного массива в пакете VHDL. Легко добавить строки VHDL, которые вам нужны, вокруг фактических значений в сценарии или даже в текстовом редакторе. - person user_1818839; 11.06.2015
comment
XST поддерживает подмножество textio для чтения текстовых файлов во время синтеза. К сожалению, Vivado регрессировал и пока не может этого делать. - person Kevin Thibedeau; 11.06.2015
comment
Спасибо! Но содержимое файла не может быть определено заранее. Кроме того, содержимое может меняться и не является постоянным. Итак, есть предложения? - person Josh; 12.06.2015
comment
Пожалуйста! Вам нужно будет внедрить модуль UART в вашу FPGA, чтобы отправлять данные с ПК через порт RS-232 в ОЗУ. Существуют готовые IP-адреса UART либо для автономного использования, либо в комплекте с некоторым процессорным ядром (Picoblaze, Microblaze MCS и т. д.). Вы даже можете реализовать его самостоятельно. Из Matlab вы собираетесь использовать какой-либо последовательный объект для связи с последовательным портом вашего ПК. Также вам нужно будет проверить максимальную скорость передачи данных, которую может достичь система. - person pantelis300; 12.06.2015
comment
P.S: Универсальный асинхронный приемник/передатчик — это часть компьютерного оборудования, которое переводит данные между параллельной и последовательной формами. - person pantelis300; 12.06.2015
comment
@ Джош. Latin-1 — это 8-битный набор символов. Если вы действительно хотите, вы можете использовать textio для встраивания произвольных двоичных данных во внутреннее ПЗУ. Он не ограничивается только текстом. - person Kevin Thibedeau; 12.06.2015

FPGA не является микроконтроллером, у него нет файловой системы или любого другого типа хранения, который есть у некоторых контроллеров.

Но вы можете заставить FPGA работать как контроллер, реализовав внутри него программный процессор, такой как MicroBlaze или Neon. Когда у вас это есть, вы подключаете систему ЦП к контроллеру SD-карты или подключаетесь через Uart или Ethernet к месту, где находится ваш файл, и читаете файл, используя код C, работающий на ЦП SoftCore.

Выполнение этого в FPGA для человека, не имеющего предварительных знаний о том, как это работает, будет очень сложной задачей. Вы могли бы сделать это, создав простой UART внутри FPGA и иметь конечный автомат, который получает данные от UART и помещает их в память, но даже это может быть сложно и сложно, если вы никогда этого не делали.

Третий вариант — преобразовать файл в двоичный файл, а затем преобразовать его в загружаемый в память файл, который вы подключаете к ПЗУ или ОЗУ внутри FPGA, но тогда вам придется перекомпилировать свой проект каждый раз, когда вам нужен новый файл!

Некоторое время назад на StackExchange был аналогичный вопрос: out">Передача битового потока размером 1 МБ на FPGA и его чтение

person FarhadA    schedule 12.06.2015