Добрый вечер уважаемые форумчане. Хочу попросить вашего совета по правильной организации передачи данных между UART и SDRAM контроллером.
Хочу записать изображение в SDRAM память, и вывести его на LVDS матрицу.
Изображение представляет собой набор пикселей, где каждый пиксель состоит из 3 байтов данных. Каждый байт передает данные о базовой составляющей цвета (RGB). Передача изображения из компьютера в SDRAM память будет через UART (9600/8-N-1).
Мой UART приемник работает по классической схеме: через частоту в 16 раз больше бодовой и выборкой трех значений с середины битового интервала, с последующим мажорированием. После принятия байта приемником он поступает на модуль, который после принятия трех байт, отбрасывает ненужные мне разряды цвета, и объединяет их в одно слово, являющееся цветом пикселя, которое будет записываться в SDRAM память.
Таким образом каждые 3 байта я должен передавать данные SDRAM контроллеру (который может работать на частоте до 133 МГц) для их записи в память.
Соответственно мы в итоге должны передать данные между 2 клоковыми доменами UART => SDRAM контроллер.
У меня есть 2 варианта по организации передачи данных: использовать протокол Handshake (рукопожатие) или FIFO буфер. Первый вариант кажется предпочтительным, поскольку применение FIFO буфера неоправданно из-за того, что скорость записи данных в него будет несопоставимо ниже, чем я могу этот буфер читать, и буфер будет всегда пустой. Можно накопить данные в буфере, и периодически его считывать по мере заполнения. Но не вижу рациональных причин так делать. Вот и хотелось бы услышать Ваше мнение, как правильнее организовать передачу данных. Естественно UART приемник и SDRAM контроллер реализованы в ПЛИС.