#vhdl #fpga #quartus
# #vhdl #fpga #quartus
Вопрос:
Я чувствую, что приложил немало усилий для поиска решения моей проблемы в Интернете, но не могу найти то, что мне нужно для достижения моей цели.
По сути, то, что мне нужно сделать, это проанализировать данные из файла, получаемого моей FPGA через serial. Данные довольно обширны, и я думаю, было бы проще, если бы мы могли использовать некоторые функции внутри библиотеки textIO.
Все методы, которые я нашел в Интернете, относящиеся к анализу данных, предназначены только для моделирования. Мне нужно, чтобы это действительно произошло на FPGA.
Итак, мой вопрос в том, есть ли способ создать файл внутри FPGA и получить входные данные от последовательной записи в него, а затем иметь возможность использовать функции textIO в этом txt-файле?
Некоторый псевдокод может выглядеть примерно так:
File_Open("newFile.txt", write) --If it doesn't exist, then create it
write(SerialByteStream, newFile.txt) --Collect serial data onto txt file
Then run textIO function on newFile.txt in order to use the data in newFile.txt
Кроме того, стоит упомянуть, что я новичок в FPGA и VHDL, поэтому может быть, есть тривиальное решение, о котором я не знаю. И я использую VHDL с Altera DE2-115.
Я ценю любую помощь.
Комментарии:
1. Как вы думаете, какая часть FPGA может содержать файл?
2. @BrianDrummond Я думал, что мне понадобится доступ к какой-то оперативной памяти. Насколько я понимаю, DE2-115 обладает такой возможностью.
3. Правильно, и для достаточно небольших объемов данных RAM — правильный подход. Но у вас есть 2 варианта: файл требует сложности уровня файловой системы, строка или массив (или запись или другой фактический объект данных) — нет.
4. @BrianDrummond Прошу прощения, не могли бы вы elebaorate? Я не вижу, как ваше утверждение отвечает на мой вопрос.
5. Вы не говорите, что вам нужно проанализировать во входном потоке или насколько «большим» является этот поток, поэтому трудно предложить решение.
Ответ №1:
Нет, то, что вы предлагаете, невозможно. Как вы обнаружили, файловый ввод-вывод VHDL на самом деле является просто инструкцией для симулятора, чтобы что-то сделать. Обратите внимание на различия между синтезируемым и несинтезируемым VHDL. Вы можете запрограммировать только синтезируемую часть вашего VHDL в FPGA, и обычно это не включает библиотеки, связанные с файлами.
Сложные файловые операции — это задача обработки общего назначения, которую выполняют ПК. Ваш лучший способ исследования, вероятно, состоит в том, чтобы пересмотреть, для чего вам нужна FPGA в первую очередь, и сосредоточиться на этом.
Некоторые возможности:
- Если FPGA предназначена только для предоставления интерфейса для чтения и записи некоторого потока байтов на ПК, возможно, вам следует сделать именно это. Выполните обработку данных на ПК. Передача данных по-прежнему не является тривиальной, но в этом случае вам все равно нужно было решить эту проблему.
- Если вам нужна FPGA для некоторых высокопроизводительных вычислений, посмотрите, можете ли вы предварительно обработать и предоставить эти данные в формате, который легче усваивается вашим проектом.
- Если это действительно необходимо, обработка вашего последовательного потока байтов с помощью VHDL может быть не такой сложной, как кажется, особенно если вам нужно работать с ним только линейно. Возможно, вам нужен проект, включающий хотя бы один конечный автомат, который анализирует ваш поток последовательных байтов, но все остальное зависит от деталей вашей проблемы.
- Если вам действительно нужна сложная обработка НА FPGA, рассмотрите возможность использования процессора с мягким ядром. Могут быть версии с открытым исходным кодом, которые подходят для вашей FPGA. Все, что вы хотите сделать, может быть проще написать на C, который затем можно скомпилировать и запустить на FPGA. Этот вариант дает вам очень гибкий автономный аппаратный компонент, но если вам нужна очень высокая производительность или у вас мало времени на его настройку, это, вероятно, не для вас.