[an error occurred while processing this directive] [an error occurred while processing this directive]
Part II(+)
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено IgorK 02 ноября 2001 г. 22:43
В ответ на: Ответ: (+) отправлено IgorK 02 ноября 2001 г. 01:43

Из Master FSM исключается ветка M_data -> Addr, поскольку Fast back to back реализовывать нет смысла. Соотв. не нужны L-cycle, Sa, FB2B. Из управляющих сигналов остается сформировать только REQ#, FRAME#, IRDY#. Причем REQ# должен удерживаться активным до входа Master FSM в адресную фазу и выборки собственного FRAME# при полученном GNT#. Также, когда работает Master FSM, Target FSM должна быть заблокирована в Idle. Не забудьте про реализацию парковки шины (Bus Parking), когда GNT# выставляется арбитром без запроса (состояние DR_BUS, Drive Bus) и вы должны выводить из Z-состояния AD[], CBE[] и PAR. Если шина была ‘запаркована’ (причем Park Master – ваш), то при необходимости просто начинаете транзакцию по FRAME#. Это ветка Dr_bus-> Addr.
Может получиться, что к концу пересылки буфера остается по следующему (последнему) предоставлению шины переслать одно 32-bit значение, т.е. одиночная транзакция. В этом случае длительность FRAME# - 1 такт. Здесь по формируемому FRAME# должна быть обратная связь (в примере из 2.1, 2.2 ее нет) – FRAME# активен и Comp активен - значит на следующем такте FRAME# должен быть неактивен. И промоделируйте ситуацию постоянного ‘отключения’ target-ом пакетных пересылок. Автомат должен работать правильно, но следите за данными. Это опять вопрос построения пользовательского буфера. Для целей моделирования удобно ‘пересылать’ значения счетчика.
Что касается команд CBE[] то для мастер-пересылок я пользуюсь только MemoryRead и MemoryWrite.
По поводу аппаратной отладки. Оптимально – использовать для этих целей пересылки в видеопамять компьютера (нужна видеокарта, отвечающая спецификации VESA BIOS Extension (VBE 3.0) на линейный видеобуфер; все AGP-видеокарты ATI ей отвечают). Буфер обмена в FPGA организуется в виде ПЗУ и выбирается видеорежим, для которого повторяющиеся в ‘ПЗУ’ данные будут с определенным периодом укладываться в видеопамяти, т.е. будут кратны количеству элементов в строке и числу строк. Обычно для этих целей удобнее черно-белое изображение, для этого нужно программно сформировать соотв. палитру; но если предполагается бинарная картина (см. ниже), то это не обязательно. Программно выделять видеопамять (memory locking) также не обязательно. Достаточно только инициализировать видеорежим и узнать адрес линейного буфера (функция 0x4F01 прерывания 0x10, одно из возвращаемых значений ‘physical address for flat memory frame buffer’, если 0 то линейный буфер VBE не поддерживается). Этот адрес передается мастеру PCI, который затем по команде начинает заполнять видеопамять содержимым ‘FPGA-ПЗУ’. Наилучшие результаты дает мастер-отображение чередующихся вертикальных белых и черных полос. Для режима 640x480x8bit (видеорежим VESA 0x101) ‘ПЗУ’ буфера обмена в FPGA (256x32) для 10 полос (каждая шириной 64 пиксела) будет выглядеть следующим образом:
[0..f] : 0;
[10..1f] : e0e0e0e0;
[20..2f] : 0;
[30..3f] : e0e0e0e0;
...................
[e0..ef] : 0;
[f0..ff] : e0e0e0e0;

В этом случае ‘ПЗУ-буфер’ должен быть переслан для ‘отрисовки’ одного кадра 300 раз (640*480/1024). Счетчик адреса PCI должен считать фактические пересылки, т.е. M_DATA*(!nTRDY), при условии что IRDY# готов всегда. Затем процесс повторяется – опять программно PCI-карте пересылается стартовый адрес видеобуфера и дается команда начала пересылок (здесь карта выступает как target).
Разрывы, разрушение стабильной неподвижной картины вертикальных полос – все это ошибки в пересылаемых данных, т.е. неправильное взаимодействие master-target или ошибки в управлении буфером, ‘расстыковка’ данных от транзакции к транзакции. Впоследствии FPGA-буфер из ПЗУ превращается в нормальное ОЗУ.
Следующий шаг – две собственные PCI-карты в соседних слотах (master, target, попеременно). Пересылки друг в друга, в видеопамять, в системную память и из нее.

--IgorK

P.S В ссылке стандарт VBE 3.0



Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru