реклама на сайте
подробности

 
 
> PLX 9052 - 16-битный режим и сигналы Local Bytes Enable
Белый пони
сообщение Jan 20 2011, 18:44
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 20-01-11
Пользователь №: 62 363



Здравствуйте!

Имеется PCI-плата, в которой происходит общение шины PCI с портом параллельного воода вывода NEC D71055 через микросхему PLX9052. Вот примерно набросал:


На С++ написанна программа, и налажен обмен, при ширине шины PLX - 8 бит. Выбор порта и запись/чтение на NEC произвожу командами outb/inb/outw/inw(данные, порт). Значения "порт": базоый адрес, базовый адрес+1, базовый адрес+2 и базовый адрес+3. Соотвествующие значения выставляются на LBE0# и LBE1#, а оттуда на A0 и A1. Происходит запись/чтение байта из портов 0,1,2 и 3, соответственно. Всё работает.

Проблема появилась, когда надо было расширить шину для обмена по 16 бит. Поменял соответстующий бит в EEPROM'е. Но теперь при записи в порт получается полный бред.

В датащите прочитал, что в 16-битном режиме меняется работа LBE0#...LBE3#. Вот так:

Цитата
Byte enables are encoded based upon configured bus
width:

32-Bit Bus
Four byte enables indicate which of the four bytes are
active during a data cycle.
· LBE3# Byte Enable 3 = LAD[31:24]
· LBE2# Byte Enable 2 = LAD[23:16]
· LBE1# Byte Enable 1 = LAD[15:8]
· LBE0# Byte Enable 0 = LAD[7:0]

16-Bit Bus
LBE[3,1:0]# are encoded to provide BHE#, LA1, and
BLE#.
· LBE3# Byte High Enable (BHE#) = LAD[15:8]
· LBE2# Unused
· LBE1# Address bit 1 (LA1)
· LBE0# Byte Low Enable (BLE#) = LAD[7:0]

8-Bit Bus
LBE[1:0]# are encoded to provide LA[1:0].
· LBE3# Unused
· LBE2# Unused
· LBE1# Address bit 1 (LA1)
· LBE0# Address bit 0 (LA0)


Когда адрес просто выставлялся двумя битами - мне всё понятно. А как выбирать нужный порт теперь и куда делся LA0#, я совсем не понимаюsad.gif

Не подскажите в чём дело?

Извиняюсь, за много букв, просто не знаю где проблема, хотя бы примерно.
В неправильной перепрошивке EEPROM'а? Или в моём непонимании как преобразуются сигналы C/BE# в LBE# и как это связано и адресом порта в который я пытаюсь записать?

sad.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Andrew Su
сообщение Jan 22 2011, 13:37
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 301
Регистрация: 18-09-07
Из: Украина
Пользователь №: 30 647



Добрый день.
16-Bit Bus
LBE[3,1:0]# are encoded to provide BHE#, LA1, and
BLE#.
· LBE3# Byte High Enable (BHE#) = LAD[15:8]
· LBE2# Unused
· LBE1# Address bit 1 (LA1)
· LBE0# Byte Low Enable (BLE#) = LAD[7:0]

Если вы выполняете байтное обращение к четному адресу, то
BHE# = 1 BLE# = 0 и данные на LAD[7:0]
Если вы выполняете байтное обращение к нечетному адресу, то
BHE# = 0 BLE# = 1 и данные на LAD[15:8]
Если вы выполняете словное обращение к четному адресу, то
BHE# = 0 BLE# = 0 и данные на LAD[15:8] и LAD[7:0]
Если вы выполняете словное обращение к нечетному адресу, то точный
порядок выполнения операции я не воспроизведу, но по моему, она выполняется
за два цикла, сначала один байт, а потом другой.
Если приведенная вами схема точна, то, по всей видимости, вам не удастся реализовать 16-битный
обмен без корректировки схемы.
Кстати, а каким образом старший байт шины LAD[15:8] предполагается завести в NEC? Или он туда заходит?
Удачи.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 19:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016