Subversion Repositories zxusbnet

Rev

Rev 50 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

Спецификация на сетевую карту для zx-bus

wiznet W5300, подключенный пространством регистров на память Z80 (вместо ROM).
Используется возможность zx-bus подменять ROM на устройство ZX-BUS.


программный интерфейс:


==========================================================================================================
Базовый адрес (младшие 8 бит): #AB

Порты #00AB..#7FAB -- либо регистр данных sl811 (для возможности использовать
INIR/OTIR -- предекремент B), либо часть регистрового пространства w5300 (определяется
битом w5300_ports).

#80AB - регистр адреса sl811 (LD BC,#80AB: OUT (C),reg: INIR/OTIR). НЕДОСТУПЕН,
если w5300_ports=1.

#83AB, #82AB, #81AB -- управляющие регистры карты.


==========================================================================================================
#83AB (порт управления прерываниями и сбросом):

бит 0,ro: 1 -- установлен сигнал /INT от w5300 (/INT=0)
          0 -- не установлен

бит 1,ro: 1 -- установлен сигнал INTRQ от sl811 (INTRQ=1)
          0 -- не установлен

бит 2,rw: 1 -- сигнал /INT от w5300 участвует в формировании внутреннего сигнала прерывания
          0 -- не участвует
          0 после сброса

бит 3,rw: 1 -- сигнал INTRQ от sl811 участвует в формировании внутреннего сигнала прерывания
          0 -- не участвует
          0 после сброса

бит 4,rw: управление сбросом w5300:
          0 -- установлен сброс для w5300 (/RESET=0)
          1 -- не установлен
          0 после сброса

бит 5,rw: управление сбросом sl811:
          0 -- установлен сброс для sl811 (nRST=0)
          1 -- не установлен
          0 после сброса

бит 6,rw: 1 -- внутренний сигнал прерывания формирует /INT на zx-bus (устанавливает в 0)
          0 -- не формирует
          0 после сброса

бит 7,ro: состояние внутреннего сигнала прерывания:
          0 -- нет сигнала (всегда 0, если биты 0 и 1 ==0)
          1 -- есть сигнал


==========================================================================================================
#82AB (порт управления w5300):

биты 0..1,rw: область адресного пространства zxbus, где происходит маппинг ROM на регистры w5300:
              2'b00 -- #0000..#3FFF
              2'b01 -- #4000..#7FFF
              2'b10 -- #8000..#BFFF
              2'b11 -- #C000..#FFFF
              2'b00 после сброса. Для клонов, которые позволяют иметь ROM только в #0000..#3FFF,
              устанавливать в 2'b00.

бит 2,rw: 1 -- разрешить подстановку регистров w5300 вместо ROM
          0 -- запретить
          0 после сброса

бит 3,rw: 1 -- производить инверсию A0 на w5300
          0 -- не производить
          0 после сброса

бит 4,rw: 1 -- подстановка адресного пространства w5300 в порты #00AB..#7FAB.
               при этом регистр данных sl811 в этих портах недоступен.
               применяется для работы в w5300 в indirect mode.
          0 после сброса

ВНИМАНИЕ: биты 2 и 4 этого порта не могут одновременно быть в 1.

биты 5..7,rw: старшие 3 бита адреса w5300 при обращении к ней через порты #00AB..#7FAB.
              при этом младшая часть формируется из битов 14..8 адреса порта, бит 0
              адреса w5300 опционально инвертируется, в зависимости от бита 3 данного
              порта.


==========================================================================================================
#81AB (порт управления sl811):

бит 0,rw: управление сигналом M/S sl811:
          0 -- M/S=0 (хост)
          1 -- M/S=1 (девайс)
          1 после сброса компьютера, сброс sl811 битом 5 порта $83AB на
          этот сигнал не влияет (его можно переключать под сбросом sl811).
          сигнал M/S также управляет подачей питания на УСБ-разъём:
          0 -- питание подано,
          1 -- питание отсутствует.

бит 1,ro: наличие 5в питания на УСБ-разъёме. Имеет смысл проверять ТОЛЬКО когда M/S=1
          и sl811 под сбросом, чтоб определить, подключены ли мы к хосту или к девайсу.

биты 2..7: не используются, при чтении игнорировать, при записи устанавливать в 0









адресное пространство w5300 мапится в пространство zx-bus ROM 16k так:

zx-bus ROM  |  w5300
------------+-----------------------------
#0000-#1FFF | повторение 8 раз
            | неизменного адресного пр-ва
            | w5300 размером #400 байт
------------+-----------------------------
------------+-----------------------------
#2000-#21FF | повторение 256 раз регистров
            | w5300 с адресами #22E,#22F
            | (socket 0 TX FIFO register)
------------+-----------------------------
#2200-#23FF | повторение 256 раз регистров
            | w5300 с адресами #26E,#26F
            | (socket 1 TX FIFO register)
------------+-----------------------------
#2400-#25FF | повторение 256 раз регистров
            | w5300 с адресами #2AE,#2AF
            | (socket 2 TX FIFO register)
------------+-----------------------------
#2600-#27FF | повторение 256 раз регистров
            | w5300 с адресами #2EE,#2EF
            | (socket 3 TX FIFO register)
------------+-----------------------------
#2800-#29FF | повторение 256 раз регистров
            | w5300 с адресами #32E,#32F
            | (socket 4 TX FIFO register)
------------+-----------------------------
#2A00-#2BFF | повторение 256 раз регистров
            | w5300 с адресами #36E,#36F
            | (socket 5 TX FIFO register)
------------+-----------------------------
#2C00-#2DFF | повторение 256 раз регистров
            | w5300 с адресами #3AE,#3AF
            | (socket 6 TX FIFO register)
------------+-----------------------------
#2E00-#2FFF | повторение 256 раз регистров
            | w5300 с адресами #3EE,#3EF
            | (socket 7 TX FIFO register)
------------+-----------------------------
------------+-----------------------------
#3000-#31FF | повторение 256 раз регистров
            | w5300 с адресами #230,#231
            | (socket 0 RX FIFO register)
------------+-----------------------------
#3200-#33FF | повторение 256 раз регистров
            | w5300 с адресами #270,#271
            | (socket 1 RX FIFO register)
------------+-----------------------------
#3400-#35FF | повторение 256 раз регистров
            | w5300 с адресами #2B0,#2B1
            | (socket 2 RX FIFO register)
------------+-----------------------------
#3600-#37FF | повторение 256 раз регистров
            | w5300 с адресами #2F0,#2F1
            | (socket 3 RX FIFO register)
------------+-----------------------------
#3800-#39FF | повторение 256 раз регистров
            | w5300 с адресами #330,#331
            | (socket 4 RX FIFO register)
------------+-----------------------------
#3A00-#3BFF | повторение 256 раз регистров
            | w5300 с адресами #370,#371
            | (socket 5 RX FIFO register)
------------+-----------------------------
#3C00-#3DFF | повторение 256 раз регистров
            | w5300 с адресами #3B0,#3B1
            | (socket 6 RX FIFO register)
------------+-----------------------------
#3E00-#3FFF | повторение 256 раз регистров
            | w5300 с адресами #3F0,#3F1
            | (socket 7 RX FIFO register)
------------+-----------------------------


логика преобразования адресов:

если za[13]=0, то wa[9..1]=za[9..1]

если za[13:12]=10, то:
 { 22e, 26e, 2ae, 2ee, 32e, 36e, 3ae, 3ee}
 {2000,2200,2400,2600,2800,2a00,2c00,2e00}

 wa[9]=1
 wa[8:6]=za[11:9]
 wa[5:1]=10111

если za[13:12]=11, то:
 { 230, 270, 2b0, 2f0, 330, 370, 3b0, 3f0}
 {3000,3200,3400,3600,3800,3a00,3c00,3e00}

 wa[9]=1
 wa[8:6]=za[11:9]
 wa[5:1]=11000