Из газеты #Z80 #5, 10.03.99 +-----------------+ | SIMM&Speccy. | +-----------------+ (C) JtN/4D 10.03.99 Так уж получилось, но начало этой статьи было положено в начале августа прошлого года. Лениво было таблички набирать:), да и кроме меня никто не подключил Simm (из тех кому я посылал;), соответственно не хотелось печатать не до конца проверенный материал. Теперь же все OK! у меня дома работает Pentagon с 1mb Simm'ом, так что читайте мою статью и подключайте Simm (DOS 5.12F rulezz!:). А речь сегодня пойдет о памяти вашего ZX, точнее о микросхемах памяти. Как известно нет дыма без огня, а потому идея подключить Simm модули и, как следствие, написание данной статьи не взялись с потолка. Естественно главной проблемой явилось отсутствие "всеми любимых" РУ7 (на данный момент в Перми их нет; post comment спустя полгода их все равно нет;). Вообще-то говоря, идея подключения возникла достаточно давно, но отсутствие информации по данному вопросу тормозило дело. И вот после непродолжительного времени, прошедшего после покупки книжки по железу ПэЦэ, решил я прикупить этих самых Simm'ов. А теперь немного о ценах: РУ7 стоят (когда были) около 1$ , на Украине столько же (как ни странно). Непарное EDO (simm) 4mb 72pin стоит 3$, а исходя из стоимости РУ7 : 4mb на них будет стоить: 4*4*8*1$=128$. Выводы делайте сами:). Теперь, если вы заинтересовались, то наверное хотите знать как их присобачить. Может я вас разочарую, но схем не будет. И вовсе не из-за того, что мне, как обычно, лень. В принципе, если вы владелец обычного Пентагона, Скорпиона, или "неоцветненного" (в CP/M конечно) Профи, то проблем нет. Из всех оставшихся я знаю только Профи (версии 4 и 5). В них требуется одновременно читать 2 байта из RAM, но и это не так сложно (кому надо пишите/звоните постараюсь объяснить:). Теперь немного справочной информации. Микросхемы DRAM организованы в виде матрицы , строки и столбцы которой выбираются импульсами RAS (Row Access Strobbe) и CAS (Column Access Strobe). Для сохранения информации к каждой строке матрицы необходимо обращаться с периодом около 300мс. В pC сигнал со счетчика, вырабатываемый каждые 15мкс, вызывает холостой цикл обращения к памяти для регенерации очередной строки. Микросхемы DRAM имеют емкость до 4Мбит, время доступа 50-250нс и организованы по 1 или 4 бита в корпусе. Цифровая часть обозначения микросхемы имеет вид: NC-T, где N=1,4 - разрядность ячеек, бит; C=64,128,256,000... - количество ячеек (64:64К, 000:1М); Т - время доступа в наносекундах или десятках наносекунд. Микросхемы могут упаковываться в DIP- корпуса, устанавливаемые в кроватки; собираться в модули SIPP (Single In- Line Pin Package) и SIMM (Single In- Line Memory Module), устанавливаемые в специальные гнезда. SIPP модули имеют 30 штырьковых выводов, SIMM 30 или 72 печатных вывода. SIPP - редко используемые, совпадают по разводке со стандартными SIMM 30pin. Подключение. Если у вас обычный Спектрум без всяких цветных (расширенных) режимов, то есть вам не надо в один и тот же момент времени читать более одного байта из памяти, то подключение сводится к установке одного регистра или буфера (кому как удобней) и регенерации 10 и возможно 11 бита - дополнительных строк модулей (SIMM'ы имеют строк в 2 (а некоторые в 4) раза больше чем РУ7 и следовательно их нужно регенерировать). Но в принципе, если сигналы MA8, MA9 кинуть на "землю", то можно обойтись без регенерации, при этом потеряв значительную часть памяти. Пара советов: т.к. во всех Спектрумах память регенерируется видеоконтроллером (ВК), то сигналы регенерации следует искать там. Найдите сигналы ВК, которые подаются через мультиплексоры на МА0-МА7 во время, когда /RAS=0 - т.е. активен. Эти сигналы в регенерации не участвуют, следовательно их можно задействовать, выбрав из них тот, частота которого больше (в Профи Это DA11, в Скорпионе (возможно!) ARF) - назовем его DAr. Далее отрезаем его и вешаем на "землю" вход мультиплексора, также найдите сигнал адресной шины процессора (обзовем его Ar), соответствующий DAr и отрежьте от мультиплексора - этот бит (вход мультиплексора) увеличит память в 2 раза, т.е. его нужно повесить на какой-нибудь порт. Оставшиеся сигналы: Ar и DAr нужно повесить на собственный мультиплексор (см. рис.1), с которого будем иметь еще один бит расширения памяти. Таким образом, прорегенерировав один бит модуля вы учетверите его емкость! Ну и наконец еще одна проблема. Она заключается в том, что SIMM'ы не имеют раздельных входов и выходов данных, а в большинстве Спектрумов они раздельны, т.е. для чтения из памяти используется внутренняя шина, с которой данные кидаются через регистры на видео или шину процессора (CPUmemREG). Но и тут не все так плохо, просто ставим регистр наоборот, относительно CPUmemREG, который будет открываться во время записи в память (см. рис.2). Если у кого-то возникли сомнения по работоспособности - скажу, что у меня все это неплохо работает уже несколько месяцев. Замечание: во время подключения Simm 30pin выяснилось, что его сигнал CAS инверсный, то есть если подключаете Simm 72pin, то CAS вешаете на CAS, а если 30pin, то сначала не забудьте его проинвертировать. Теперь поключайте Simm и работайте с версией DOSа by Reanimator (4.12F). Приложение. Рис.1 +--+----+-+ MA9 -> SIMM GND--6-+A0| | |7 EXb -> Extended port DAr--5-+A1| |A|--MA8 EXb--4-+A2| | | DAr, Ar - see above Ar--3-+A3|КП12| | GND--1-+0E| | | CPU - active when +--+ | | CPU have access to 14-+SE| | | memory. /RAS----+0 | | | CPU--2-+1 | | | +--+----+-+ Рис.2 2+----+----+----+14 +--+--+--+ DB--+ DC | | D +--DB' / | 0|RG|0 | \ +----+DRAM+----+ | | 1| |1 | | / | A0 | | | | | 2| |2 | | | | A1 | | | DB| | 3| И|3 | |DB' | | A2 | | | | | 4| Р|4 | | MA| | A3 | 565| | | | 5| 2|5 | | | | A4 | РУ7| | | | 6| 2|6 | | | | A5 | | | \ | 7| |7 | / | | A6 | | | 9+--+ +--+ | | A7 | | | +5В--+ C| | | \ | A8 | | | 1| | | | +----+ | | WE--+0E| | | RAS-+/RAS| | | +--+--+--+ +----+ | | CAS-+/CAS| | | +----+ | | WE-+/WE | | | +----+----+----+ DB - CPU DATA BUS. DB' - SUB DATA BUS - внутр.шина памяти. Таблица 1. Организация модулей SIMM. +--------+----------------+---------------+ |Емкость,| С паритетом |Без паритета | | байт +--------+-------+------+--------+ | | 30pin | 72pin |30pin | 72pin | +--------+--------+-------+------+--------+ | 256K | 256K*9 | - |256K*8| - | | 1M | 1M*9 |256K*36| 1M*8 | 256K*32| | 2M | - |512K*36| - | 512K*32| | 4M | 4M*9 | 1M*36 | 4M*8 | 1M*32 | | 8M | - | 2M*36 | - | 1M*32 | | 16M | - | 4M*36 | - | 4M*32 | | 32M | - | 8M*36 | - | 8M*32 | | 64M | - | 16M*36| - | 16M*32 | +--------+--------+-------+------+--------+ Таблица 2. Назначение выводов модулей SIMM 30pin. +----+-----+-----+----+-----+---------+ |Pin | STD | IBM |Pin | STD | IBM | +----+-----+-----+----+-----+---------+ | 1 | +5В | +5В | 16 | DB4 | DB4 | | 2 | CAS | CAS | 17 | MA8 | MA8 | | 3 | DB0 | DB0 | 18 | MA9 | MA9 | | 4 | MA0 | MA0 | 19 | MA10| RAS1 | | 5 | MA1 | MA1 | 20 | DB5 | DB5 | | 6 | DB1 | DB1 | 21 | WE | WE | | 7 | MA2 | MA2 | 22 | GND | GND | | 8 | MA3 | MA3 | 23 | DB6 | DB6 | | 9 | GND | GND | 24 | N.C.| PrD | | | | | | | (GND) | | 10 | DB2 | DB2 | 25 | DB7 | DB7 | | 11 | MA4 | MA4 | 26 | DB8 | PrD | | | | | | Out | (1M=GND)| | 12 | MA5 | MA5 | 27 | RAS | RAS | | 13 | DB3 | DB3 | 28 | CAS | N.C. | | | | | |Parity | | 14 | MA6 | MA6 | 29 | DB8 | DB8 | | | | | | In | In/Out | | 15 | MA7 | MA7 | 30 | +5В | +5В | +----+-----+-----+----+-----+---------+ STD - стандартный SIMM (SIPP) IBM - SIMM фирмы IBM Таблица 3. Назначение выводов модулей SIMM 72pin. +----+------+----+------+----+------+ |Pin | Name |Pin | Name |Pin | Name | +----+------+----+------+----+------+ | 1 | GND | 25 | DB22 | 49 | DB8 | | 2 | DB0 | 26 | DB7 | 50 | DB24 | | 3 | DB16 | 27 | DB23 | 51 | DB9 | | 4 | DB1 | 28 | MA7 | 52 | DB25 | | 5 | DB17 | 29 | BS0 | 53 | DB10 | | 6 | DB2 | 30 | +5В | 54 | DB26 | | 7 | DB18 | 31 | MA8 | 55 | DB11 | | 8 | DB3 | 32 | MA9 | 56 | DB27 | | 9 | DB19 | 33 | RAS3 | 57 | DB12 | | 10 | +5В | 34 | RAS2 | 58 | DB28 | | 11 | CASp | 35 | DP2 | 59 | +5В | | 12 | MA0 | 36 | DP0 | 60 | DB29 | | 13 | MA1 | 37 | DP1 | 61 | DB13 | | 14 | MA2 | 38 | DP3 | 62 | DB30 | | 15 | MA3 | 39 | GND | 63 | DB14 | | 16 | MA4 | 40 | CAS0 | 64 | DB31 | | 17 | MA5 | 41 | CAS2 | 65 | DB15 | | 18 | MA6 | 42 | CAS3 | 66 | BS2 | | 19 | Rsv. | 43 | CAS1 | 67 | PD0 | | 20 | DB4 | 44 | RAS0 | 68 | PD1 | | 21 | DB20 | 45 | RAS1 | 69 | PD2 | | 22 | DB5 | 46 | BS1 | 70 | PD3 | | 23 | DB21 | 47 | WE | 71 | BS3 | | 24 | DB6 | 48 | Rsv. | 72 | GND | +----+------+----+------+----+------+ Обозначения: PD - Presence Detect - индентификатор наличия и типа. N.C. - No Connection - свободный вывод. DBi - биты данных. DB8 - бит паритета для SIMM30. DPi - бит паритета i-го байта. MA - мультиплексированный адрес. RAS, CAS - стробы выборки строки и столбца соответсвенно. WE - запись. BS - выборка блока. Rsv - Reserved. В статье использованы материалы из книги М.Гука "Аппаратные средства IBM PC", издательство "Питер Пресс", 1996.