Subversion Repositories pentevo

Rev

Rev 543 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
826 lvd 1
формат и адреса регистров на spi-шине avr<>fpga.
67 lvd 2
 
826 lvd 3
напоминаю, установка номера - при spics_n=1, далее в 0 и шлём байт (1 или
4
несколько).
67 lvd 5
 
88 lvd 6
 
826 lvd 7
Статус подготавливается к выдаче (лочится) в момент spics_n 0->1.
8
Cтатус: (считывается при spics_n=1 в момент записи номера):
9
bit.7 - Read-Not-Write (rnw): =1 - спектрум заваитился на чтении, =0 - на записи.
10
\bits.6..0 - какой девайс заваитил, если =1. Пока есть
11
 bit.0 - если 1, заваитили глюк-часы.
12
 bit.1 - 1 если заваитил модем по кондрашкину
88 lvd 13
 
826 lvd 14
Чтобы только считать статус - надо сгенерировать фронт spics_n 0->1.
15
Если spics_n был в 1 - надо его передёрнуть.
88 lvd 16
 
95 lvd 17
 
826 lvd 18
после передерга spics_n 0->1 номер заново надо ставить.
67 lvd 19
 
20
 
826 lvd 21
регистр $00 - дефолтный номер, в него можно писать, это пойдёт в
22
игнор. Устанавливается автоматически в момент spics_n 0->1
67 lvd 23
 
24
 
826 lvd 25
регистр $10 - данные для клавиатуры (40 бит сдвиговый рег), запоминаются
26
              последние 40 вдвинутых битов. Процесс вдвига бит можно проводить или сразу
27
	      пока spics_n=0, или с перерывами, каждый раз устанавливая номер этого
28
	      регистра.
29
регистр $11 - в момент spics_n 0->1 с этим установленным регистром
30
уходят данные в рабочий регистр клавиатуры (то, что записано было в $10).
67 lvd 31
 
543 lvd 32
 
33
 
826 lvd 34
регистр $20 - X coord мыши
35
        $21 - Y coord мыши
36
        $22 - кнопки мыши
37
	$23 - кемстон жойстик
38
каждый из регистров уходит в спектрум по факту spics_n 0->1
67 lvd 39
 
110 lvd 40
 
826 lvd 41
регистр $30 - регистр сброса - задает сам факт сброса Z80. Факт
42
сброса - spics_n 0->1. вдвигать данные не обязательно (они в игнор).
67 lvd 43
 
88 lvd 44
 
45
 
46
 
826 lvd 47
часики и прочие ваит-порты:
228 lvd 48
 
49
 
826 lvd 50
$40 - регистр чтения-записи данных, которые ожидает спектрум в ваите. То, что
51
в него пишется - идёт в спектрум, если тот ваитится на чтении, или же из этого
52
регистра считывается то, что спектрумом записано, если тот ваитится на записи.
53
После обмена, в момент spics_n 0->1 спектрум разваитивается, прерывание на
54
аврку снимается, из статуса битик обнуляется.
88 lvd 55
 
826 lvd 56
регистр $40 общий для всех ваит-портов
88 lvd 57
 
98 lvd 58
 
826 lvd 59
$41 [7:0] - регистр чтения адреса, который был установлен спектрумом для глюкочасов.
228 lvd 60
 
826 lvd 61
$42 [2:0] - регистр, в котором адреса ША Z80 A[10:8] в момент чтения или записи в
62
компорты ($F8EF..$FFEF). Позволяет, собственно, различать эти самые $F8..$FF.
228 lvd 63
 
64
 
65
 
66
 
826 lvd 67
Конфиг - регистры:
98 lvd 68
 
826 lvd 69
config0: $50 - только на запись:
98 lvd 70
 
826 lvd 71
         бит 0 - включение ВГА (=1) регистр актуализируется после записи данных по фронту spics_n 0->1.
123 lvd 72
 
826 lvd 73
         бит 1 - подача нми. переход из 1 в 0 вызывает nmi на z80
213 lvd 74
 
826 lvd 75
	 бит 2 - транслируется на $FE.D6 (чтение спеком с мафона).
284 lvd 76
 
826 lvd 77
         бит 3 - если 1, то выводится tape-out, иначе - beeper
284 lvd 78
 
826 lvd 79
         биты 5..4 -- режим растра (pent/60hz/48k/128k)
543 lvd 80
 
826 lvd 81
config1: $51 - только запись:
82
 
83
         биты 3..0: маска дисководов для подмены ROM
84
         биты 7..4: не исп.
543 lvd 85
 
86
 
87
 
826 lvd 88
Доступ к SD-карте:
543 lvd 89
 
826 lvd 90
Регистр данных     - $60,
91
регистр управления - $61:
92
                         bit 7 - lock (R/W), 0 после сброса.
93
                         bit 0 - CS_n на карту (W/O), 1 после сброса.
543 lvd 94
 
826 lvd 95
Получение доступа:
96
1. записать в $61 CS_n=1, lock=1
97
2. Считывая $61, дождаться lock=1. Это произойдёт, когда Z80 установит CS_n в 1 или же сразу,
98
   если Z80 CS_n стояло в 1. Пока lock=1, Z80 не видит SD-карту, доступ у АВРки, пока она
99
   не отдаст доступ обратно Z80.
543 lvd 100
 
826 lvd 101
Работа с SD-картой:
102
1. Удерживая lock=1, управлять CS_n.
103
2. Считанное из $60 значение - последний пришедший байт из SD-карты, отправленное в $60
104
   значение - отправляется в SD-карту. Обмен с SD-картой инициируется сразу же после 
105
   spics_n 0->1, потому перед считыванием принятого в процессе этого обмена байта
106
   необходима пауза. Такой паузой служит установка адреса регистра при spi_cs_n=1.
107
Внимание: первое считанное из $60 значение после установки lock 0->1 - случайное.
108
 
109
Отпускание SD-карты:
110
1. Удерживая lock=1, установить CS_n=1.
111
2. Установить lock=0, CS_n=1.
112