Ага, то есть Гарвардская архитектура - отдельно память программ, отдельно память данных, так?
Поскольку ты упорно хочешь 800х600, то пиксельклок 40МГц, но так как готов на 8 битный цвет, то видеопамяти надо 600 килобайт.
Поскольку BRAM у тебя столько нет, а SRAM нет на плате остаётся SDRAM.
Так как в сингл-доступе она стопроцентно не успеет, остаётся поточное обращение к памяти.
Поскольку видеосканер и память надо делать синхронными, то у нас остаётся линейка из кратных 40 мегагерцам частот - 80-120-160-200МГц.
Так как 160МГц потянет не каждая память, остаётся 120МГц.
Контроллер SDRAM будем делать двухпортовый, чтоб избежать коллизий между запросами ЦПУ и видеоадаптером.
Поскольку SDRAM 16-битная, то чтение видеоданных будет целыми словами.
Теперь немного расчётов, в странных попугаях, но они дадут нам представление - получится у нас что-либо или нет:
Так как ты упорно хочешь 800х600 @8 бит, то пиксельклок получается 40МГц, но так как чтение видеоданных будет по 16 бит, то условно получаем 20МГц.
SDRAM наиболее эффективна при поточных операциях чтения/записи, на 120МГц Cas Latency=3 и минимальное время чтения 1 слова - 8 тактов, то есть 120/8=15МГц.
На чтение 4 слов уходит всего на 3 такта больше, чем на 1 слово, то период запросов контроллера SDRAM будет 8+3=11 тактов, а на самом деле 12 тактов или 10МГц.
При пиксельклоке (условном) в 20МГц и длине бюрста 4 получаем условную частоту запросов 20/4=5МГц, но так как контроллер у нас двухпортовый, то за 1 цикл запроса видеоданных он должен успевать делать по 2 обращения к памяти, то есть 10/2=5МГц, что впритык перекрывает необходимое.
Пока что проходим.
Вроде бы...
Если не будем успевать, то попробуем либо увеличить тактовую памяти, либо удлиним поток вдвое. А лучше и то и другое, если получится.
Осталось решить, какой ширины будем делать доступ к памяти со стороны процессора.
Вероятно 8 бит.
Теперь по организации памяти, я предлагаю такую -![]()





Ответить с цитированием