2015-08-19 2 views
0

У меня есть плата fpga, и я пишу код VHDL, который может получать изображения (в двоичном формате) из последовательного порта и сохранять их в SDRAM на моей плате. затем FPGA отображает изображения на мониторе через кабель VGA. моя проблема заполняет SDRAM дольше (около 10 минут при скорости 115200 бод). на моем компьютере Я написал код на Python для отправки изображения (в двоичном формате) в FPGA через последовательный порт. мой код читает двоичный файл, который сохраняется на моем жестком диске и отправляет их в FPGA. мой вопрос в том, что если я использую буфер для сохранения моих образов в двоичном файле, получаю ли я лучший результат? если да, можете ли вы помочь мне, как это сделать, пожалуйста? если нет, можете ли вы предложить мне решение, пожалуйста? благодарит в advans,Чтение из буфера быстрее, чем чтение из файла в python

+0

Ваш вопрос не имеет никакого смысла. Независимо от того, где вы сохраняете изображение, он все равно будет двоичным файлом. Вы, вероятно, на стороне FPGA, с кешированием данных правильно. – DrBwts

+0

Я имею в виду, если я загружаю двоичный файл в буфер, а затем отправляю его, делает ли он какой-то прогресс? – user3397145

+0

Ahh OK, обычно буферизация выполняется с обеих сторон. Если вы хотите переместить данные в SDRAM, я бы подумал, что буфер на стороне FPGA будет необходим. Что касается ПК, я думаю, что буферизация обрабатывается для вас. Взгляните на [этот пост для реализации последовательной связи с Python & Pyserial] (http://stackoverflow.com/questions/676172/full-examples-of-using-pyserial-package) – DrBwts

ответ

0

Если вы не сжимаете перед загрузкой и не распаковываете изображение после загрузки, проблема в том, что скорость передачи данных составляет 115 200 бод, а не скорость чтения из файла.

При стандартном кодировании линии N/8/1 для каждого байта требуется 10 бит для передачи, поэтому вы будете передавать 1150 байт в секунду.

Через 10 минут вы будете передавать 1150 * 60 * 10 = 6,912,000 байт. При 3 байтах на пиксель (для R, G и B) это составляет 2 304 600 пикселей, что является количеством пикселей в изображении 1920 на 1200.

Ответ заключается в (a) увеличении скорости передачи в бодах; и/или (b) сжимать изображение (используя что-то простое для распаковки на FPGA, например, RLE, если оно поддается такому сжатию).

+0

спасибо, мои пиксели 8 бит. действительно ли имеет значение сделать буфер в python и переместить файл в буфер, а затем прочитать из буфера и отправить их? – user3397145

+0

Я должен был попросить MCVE. Теперь ты заставляешь меня вытащить его из себя. Да, характер при обработке времени медленный, но ОК - какой размер изображения? Если это около 2M пикселей, то кажется, что вы должны ждать от эха от FPGA, чтобы быть медленным. –

Смежные вопросы