Прочетете файла в FPGA

Преди да започна, моля, знайте, че съм напълно нов в FPGA неща. Чудех се дали е възможно да съхраня файл (*.txt или *.csv) в FPGA и да го чета ред по ред (т.е. файлови I/O операции). Моля да ме уведомите. Всяка помощ ще бъде оценена.

Ще кодирам във VHDL и вероятно ще използвам платката Xilinx XUPV5 LX110T.


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


Отговори (2)


Възможно е да инициализирате Block RAM с външен файл с данни, но този файл трябва да бъде чисто двоично или шестнадесетично съдържание без коментари или друга информация. След това можете да четете и пишете в един цикъл от различни адреси. Можете да конфигурирате RAM като двупортова. За повече информация вижте ръководството на потребителя на 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 порт към RAM. Има готови за използване UART IP адреси или за самостоятелна употреба, или в комплект с някои процесорни ядра (Picoblaze, Microblaze MCS и т.н.). Можете дори да внедрите такъв сами. От Matlab ще използвате някакъв сериен обект, за да комуникирате със серийния порт на вашия компютър. Също така ще трябва да тествате максималната скорост на предаване, която системата може да постигне. - person pantelis300; 12.06.2015
comment
P.S: Универсален асинхронен приемник/предавател е част от компютърен хардуер, който преобразува данни между паралелни и серийни форми. - person pantelis300; 12.06.2015
comment
@Джош. Latin-1 е 8-битов набор от знаци. Ако наистина искате, можете да използвате textio за вграждане на произволни двоични данни във вътрешен ROM. Не се ограничава само до текст. - person Kevin Thibedeau; 12.06.2015

FPGA не е микроконтролер, няма файлова система или друг тип опции за съхранение, които някои контролери имат.

Но можете да накарате FPGA да работи като контролер, като внедрите Soft CPU вътре в него, като MicroBlaze или Neon. Когато имате това, свързвате CPU системата към контролер на SD карта или се свързвате чрез Uart или Ethernet към мястото, където се намира вашият файл, и четете файла, като използвате C кода, работещ на SoftCore CPU.

Правенето на това в FPGA за човек без предварителни познания за това как работи ще бъде много трудна задача. Може да успеете да направите това, като създадете прост UART вътре в FPGA и имате държавна машина, която получава данните от UART и ги поставя в паметта, но дори това може да бъде трудно и трудно, ако никога не сте правили това.

Трета опция е да преобразувате файла в двоичен файл и след това да го преобразувате във файл за зареждане на паметта, който свързвате към ROM или RAM в FPGA, но след това трябва да компилирате отново проекта си всеки път, когато искате нов файл!

Имаше подобен въпрос в StackExchange преди време: Прехвърляне на битов поток от 1 MB към FPGA и прочитането му

person FarhadA    schedule 12.06.2015