Цитата(Boris92 @ May 7 2016, 08:33)

Как выполнить буферизацию в таком проекте? Я вижу только один способ ядро накидывает в модуль vga нужные для отображения данные когда массив для его хранения заполняется vga модуль начинает считывание их и отображение?
Перечитал Ваше первое сообщение более внимательно, и понял, что вопрос с двойной буферизацией был лишним - я его задал на автомате.
Про тайминги вы всё-таки ответьте, потому что лучше было бы, если бы они укладывались

Цитата
Мне кажется это из за того что есть очень большая временная разница между координатами которые нужно записать и получением цвета который мы и запишем в блок.
Ммм, а почему бы не узнать какая задержка между координатами и получением цвета?
Например, просимулировать в ModelSim'e? MIPSfpga можно симулировать или там зашифрованный код?
Если нельзя, то почему бы не глянуть эту задержку в SignalTap'e?
Увидев эту задержку Вы сможете сделать вывод, может ли она приводить к такой картинке или нет.
Цитата
Как реализовать этот блок что бы избежать этого?
Как я понял, у вас плата DE0-CV, и судя по даташиту у нее четырехбитных VGA.
640 * 480 * ( 3 (RGB) * 4 (bits) ) = 3686400, что многовато, а, следовательно, если мы хотим такое изображение выводить, то нам нужно использовать внешнюю память.
На этой плате стоит внешняя 64MB SDRAM, чего должно нам хватить с лихвой.
Я бы сделал так:
1. Использую какую-то готовую корку от Альтеры (уверен, что в примерах к этой плате она идет, названия сейчас не скажу), которая позволяет писать/читать через интерфейс Avalon-MM в эту память.
2. Подключаю эту память к MIPSfpga, делаю какие-то функции/макросы которые позволяют писать/читать в эту память (т.е. просто чтение по какому-то оффсету).
3. Беру готовые альтеровские IP-ядра
Frame Reader и
Clocked Output из
Altera VIP. Подключаю в систему.
4. Смотрю
драйвер для Altera Frame Reader, портирую оттуда функции
altvipfb_start_hw и
altvipfb_disable_hw.
5. Настраиваю через Avalon-MM (csr) Altera Frame Reader, чтобы он начал читать например с нулевого адреса внешней памяти.
6. Через Avalon-MM с помощью функций, разработанных в п.2 пишу нужные мне цвета в нужных пикселях (адресах). Они отобразятся на экране.
В таком подходе вы используете готовые компоненты, однако по ресурсам (FPGA) это будет дорогое удовольствие

Двойной буферизации в таком варианте нет, и если у вас будет картинка быстро динамически менятся, то эти эффекты возможно будут видны. Я примерно всё это проделывал, когда поднимал VGA на плате с Cyclone V SoC в linux'e (т.е. делал линуксовый фреймбуфер), и там этих эффектов не заметил, хотя выводил и GUI (window manager).
UPD:
Схему приложил в аттаче.
Стрелки идут от мастера к слейву.
Сообщение отредактировал johan - May 7 2016, 09:21
Эскизы прикрепленных изображений