Надо выбрать режим работы SDRAM. Как известно, SDRAM работает так:
Вся область памяти внутри этого устройства делится на блоки (ROW) по 256 ячеек. Чтобы прочитать или записать данные из ячейки нужно сначала включить (ACTIVE) нужный блок. Потом подать команду чтения (READ) или записи (WRITE), указав одновременно номер ячейки (COL) в блоке. Если надо затем обратиться к ячейке в другом блоке этот блок надо выключить (PRECHARGE), а новый включить (ACTIVE) и т.д.
Команды и данные подаются синхронно тактовой частоте CK. После команды включения блока или чтения нужно подождать 1 или 2 такта (подавать 1 или 2 команды NOP ). Число зависит от частоты тактов и быстродействия памяти. Раньше на древних компьютерах (в BIOS) выбирали частоту тактов на память (например, 100 или 133 MHz) и режим работы (2-2-2, 3-3-3). Но раньше мы не знали, что это за числа. Так вот сейчас мы это посчитаем и выберем нужный режим.
Частота смены точек на экране TV 7 MHz, на экране VGA 14 MHz. Тактовую для ПЛИС и SDRAM выберем 14*6=84 MHz. tCK=1/84 MHz = 12 nS. Время между включением блока и подачей команды чтения или записи tRCD должно быть не менее 20 nS. При CL=2 tRCD будет равно 24 nS, что соответствует требованиям. То есть выберем режим работы SDRAM 2-2-2. Это значит, что после команды включения блока мы можем пропустить только один такт (подавать команду NOP). После этого получаем данные из памяти. Как видим, SDRAM очень медленно и неудобно работает, но в ней большой объем памяти, который нам нужен для видеокарты. Что же делать? Как ускорить работу ?
SDRAM позволяет читать и писать данные пакетами (BURST). Для нашей видеокарты подходит пакет длиной 8. Причем выберем режим чтения с автоотключением (AUTO PRECHARGE) блока после чтения 8 точек. Т.е. чтобы прочитать 8 точек из буфера спрайтов нужно будет подать следующие команды:
1 такт - ACTIVE (включение нужного блока памяти)
2 такт - NOP (ожидание включения блока)
3 такт - READ с A10=1 (чтение пакета длиной 8 с автоотключением блока)
4 такт - NOP (ожидание из буфера спрайтов первой точки спрайта)
5 - 12 такты - NOP (данные из памяти - последовательно 8 точек спрайта)
Чтение пакетами по 8 точек и организация памяти блоками по 256 ячеек накладывает ограничение на структору видеокарты - размеры спрайтов должны быть кратны 8, иначе может возникнуть ситуация перехода спрайта в другой блок. А SDRAM не может читать последовательно данные из разных блоков.




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