[an error occurred while processing this directive]
|
Задействованые ножки
-- сторона PCI
CLK :input;
RST_N :input;
Frame_N :input;
Irdy_N :input;
IDsel :input;
AD[15..0] :Input; -- формирователи 0000h для конфигурационного
-- чтения вынесены с ядра.
CBE[3..0] :input;
Trdy_N:input;
Trdy :OUTPUT; -- осталось от предыдущего проекта. BIDIR должно быть
Devsel :OUTPUT;
Организовал Циклы Конфигурационного чтения и записи с ответом 0000h.
А также запись.чтение в порт 240h
Нашкрябал программку:
ProgramStart:
mov bx,10h
Loop2:
mov cx,0
mov al,33h
Digit:
mov dx,240h
out dx,al
in al,dx
inc al
loop digit
dec bx
jnz loop2
EndProg:
mov ah,4ch ;DOS terminate program function
int 21h
Прогнал несколько раз никаких зависаний.
Просмотрел ввод вывод с помощью debug:
O240 xx
i 240
Читается и пишется то что нужно.
Проверял на I815 чипсете плата iPB-T www.PolarisBoard.com.
Так что думаю, производители тупо не используют контроль по паритету,
при пересылке по шине PCI.
Но если хочется сэкономить ресурсы, то думаю на AD[31..16] можно поставить пару 74F245.
Входы на землю, выходы на шину PCI.
Сигнал OE завести в ПЛИС и принудительно выстиавлять 0000h по AD[31..16] при чтении из устройства.
E-mail: info@telesys.ru