>
> реализовать можно так:
> берем драйвер /linux/drivers/vfb.c за основу. добавляем туда функцию
> mmap, мапим память как отсутсвующую, при этом физически память должна
> быть выделена. затем ставим обработчик nopage(), тот, перемапливает
> страницу как существующую, ставит её в очередь и запускает таймер, на,
> например 0.05сек. по истечении страница по dma отправляется на
> видеоадаптер.
Очень большой оверхед. Таймер в данном случае излишен.
>
> теперь касательно плисины и примкнувшей к ней памяти:
> 90Мгц это вы губу раскатали.
> плисина даёт задержку на до выдачи адреса 2.5нс:
> LE register clock-to-output delay 490ps
> Data output delay from adjacent LE to I/O block 350 нс
> Output delay buffer and pad delay 1530 нс
> далее идет реакция микрухи 10 или 8нс
> соотв полное время выборки 10.5 или 12.5 нс
> затем плисина снова тормозит:
> I/O input pad and buffer delay 970ps
> LE register setup time before clock 319ps
> вроде бы из мануала следует, что Quartus "обещает" не допустить
> появления в списке еще и Input routing delay(410ps), но хз,хз.
> итого мы по худшему сценарию насчитали 12.3нс - 14.3нс. 90мгц это 11
> нс, а ближайшая выводимая частота это 60Мгц - 15.5нс, и скорость
> обмена 120мб/с. для сравнения в 1024х768х60=80млн выборок в секунду
> видеовыходом + чуть больше 10мб/с записей по SPI.
>
> не забывайте, что 100мгц на 10нс памяти могут быть только если память
> синхронная. а асинхронные К6R4008V1D - это еще и клок придется
> перекашивать, чтоб положительная часть была меньше 3нс, чтоб успевать
> от смены адреса до захлопывания защелок на входе сигнал не начал
> меняться.
На реальной делезке 100Mhz тоже недостижимы на шине.
И вообще железка должна еще что-то полезное делать кроме как видео гоянть.
> оверхед там ~10мб/сек - предельная скорость SPI. при пропускной
> способности памяти в 320Мб/сек, которую мы кстате не загрузим
> настолько это копейки.
Речь идет о мегабитах, если кто не догадался. Точнее даже о мегаггерцах.
Наш SPI теоретически в состоянии работать на 33 мегаггерцах.
Что казасется памяти, то она работает на 90 мегаггерц - что
при 32-разрядной организации дает нам 360 мегабайт в секунду или
если переводить на биты - 2880 мегабайт. Что впрочем не достижимо
из-за динамической ее сущности и страничной организуции. SRAM
бы нас тут спас, безусловно. Но фактически речь идет о порялка 200
мегабайт в секунду, что в общем довольно неплохо.
>
> если не отслеживать через страницы, придется сканировать биты
> изменения данных, что в общем то тоже несложно, потребует отдельного
> ядреного потока в системе. так что с этим проблем не встанет.
Это будет хуже чем отслеживать через пейдж-фолты в смысле загрузки процессора.
> >
>
Соответственно желательно - ring буфер при передаче данныз независимый
от того что осуществляет отображение дабы слать непрерывным потоком.
Реализовать оверлеи, например, делящие экран на 4 одинаковых области
(не исключающие апдейта всего экрана и являющиеся "окнами"
(Экономия на длине горизонтальных участков), RLE-сжатие потока
(экономия скорости SPI), возможность произвольного выбора строки,
где нужно производить изменение (начало изменения).
Прерывания:
1. По опустошению буфера (чтобы нам переставить DMA).
2. По обратному ходу/рефрешу. (Начало bulk-транзакции оптимально в это время).
Также управление питанием:
1. Энергосберегающий режим с отключением отображения.
2. Энергосберегающий режим с очисткой внутренней памяти.
Для клоков понадобится настраиваемый PLL независимый от процессора.
Вот такие вот хотелки.
S.
теперь касательно плисины и примкнувшей к ней памяти:
90Мгц это вы губу раскатали.
плисина даёт задержку на до выдачи адреса 2.5нс:
LE register clock-to-output delay 490ps
Data output delay from adjacent LE to I/O block 350 нс
Output delay buffer and pad delay 1530 нс
далее идет реакция микрухи 10 или 8нс
соотв полное время выборки 10.5 или 12.5 нс
затем плисина снова тормозит:
I/O input pad and buffer delay 970ps
LE register setup time before clock 319ps
вроде бы из мануала следует, что Quartus "обещает" не допустить
появления в списке еще и Input routing delay(410ps), но хз,хз.
итого мы по худшему сценарию насчитали 12.3нс - 14.3нс. 90мгц это 11
нс, а ближайшая выводимая частота это 60Мгц - 15.5нс, и скорость
обмена 120мб/с. для сравнения в 1024х768х60=80млн выборок в секунду
видеовыходом + чуть больше 10мб/с записей по SPI.
не забывайте, что 100мгц на 10нс памяти могут быть только если память
синхронная. а асинхронные К6R4008V1D - это еще и клок придется
перекашивать, чтоб положительная часть была меньше 3нс, чтоб успевать
от смены адреса до захлопывания защелок на входе сигнал не начал
меняться.
2 Krugo...@gmail.com :
Подскажите, пожалуйста, где можно взять верилоговую модель асинхронной статической памяти, чтобы для моделсима сгодилась? Надо 100 нс память...
Вы о чем?!
p.s
пора спать.
Быстрее чем что?