Witchcraft Creative Group

Спектрум жив!

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Методика сборки и отладки DMA UltraSound Card

Печать PDF

0. Введение

0.1 Для настройки звуковой карты DMA необходимы: авометр универсальный типа Ц20 или др., осциллограф типа ОМЛ-2, ОМЛ-3, Н3015 или др. (при отсутствии осциллографа настройка возможна при помощи логических пробников, схемы которых даны далее), некоторые дополнительные микросхемы.

0.2 Настройка разбивается на несколько этапов, которые нужно проводить в процессе сборки. Если у вас карта полностью собрана, то не нужно ее разбирать, только достаточно восстановить изменения на плате компьютера.

0.3 После распайки элементов необходимо ТЩАТЕЛЬНО ПРОЗВОНИТЬ все соединения на правильность и все соседние ножки микросхем на отсутствие коротких замыканий между ними.

0.4 Особое внимание следует уделить цепям питания, т.к. ошибки могут вывести из строя половину микросхем или блок питания.

 

1. Настройка блока ЦАП

1.1 Впаиваются микросхемы: DD21-DD28, DA1-DA12 и связанные с ними дискретные элементы.

1.2 Выхода звука подаются на вход аудиоусилителя.

1.3 Сигналы /CSC1 - /CSC4, /CSV1 - /CSV4 подаются с дополнительной микросхемы 555ИД7, которая включается следующим образом:

1.3.1 Для Пентагона:


Сигналы A4 - A7 берутся с процессора, DOS с 8D76, IOWR с 10D64 Пентагона.

1.3.2 Для других компьютеров:


Диоды типа КД521.

Все сигналы берутся с процессора, /DOS берется с контроллера дисковода так, чтобы когда активно ПЗУ TRDOS на нем был лог.0. Если вы не знаете где его взять, то просто подайте на него +5В (это не повлияет на работоспособность, просто работа дисковода будет сопровождаться "шумовыми эффектами").

1.4 Наберите тестовую программу для получившегося "Super sound drive".

10 LET PC=15; 31; 79; 95
20 LET PV=47; 63;111;127
30 FOR I=0 TO 63:OUT PV,I
40 OUT PC,0: OUT PC,255
50 NEXT I:GO TO 30  

После запуска должен появиться звук плавно изменяющейся громкости.

1.4.1 ПРИМЕЧАНИЕ. Звуковая карта имеет 4 канала и все их нужно тестировать отдельно. Чтобы не писать отдельные программы для каждого канала, для некоторых переменных будут даваться 4 (6,8 или другое необходимое количество) варианта значений, разделенных точкой с запятой. Необходимо подставить сначала первые значения, затем вторые и т.д. В вышеприведенном примере сначала следует подставить PC=15:PV=47, затем PC=31:PV=47 и снова запустить программу и т.д. Такая запись будет встречаться почти во всех программах.

1.5 Делается проверка всех каналов. Все каналы должны четко воспроизводить звук, громкость должна регулироваться плавно, если звук пропадает при громкости 32,16,8,4,2 или 1 то соотв. микросхему из DA9 - DA12 следует заменить.

1.6 Если на одном или на всех каналах отсутствует звук, то необходима более детальная проверка. Для такой проверки нужны специальные измерительные приборы: осциллограф или логические пробники, которые описаны в приложении.

1.6.1 Сначала убедимся в правильной работе дешифратора на доп. микросхеме ИД7.

1.6.1(о).1 Набираем программу:

PORT	EQU #0F;#1F;#2F;#3F;#4F;#5F;#6F;#7F
          DI
M1      OUT (PORT),A
          LD  A,#7F
          IN  A,(#FE)
          RRCA
          JR  C,M1
          EI
          RET  

после чего проверяется наличие импульсов вот такой формы: с частотой около 77 кГц на 15,14,13,12,11,10,9 и 7 ножках доп.ИД7 (15 ножке соответствует порт #0F, 14 -#1F и т.д).

1.6.1(о).2 При отсутствии таких импульсов необходимо еще раз тщательно проверить распайку доп.ИД7 и если ошибок не обнаружено то ИД7 следует заменить.

1.6.1(п).1 Набираем программу:

PORT	EQU #0F;#1F;#2F;#3F;#4F;#5F;#6F;#7F
          DI
M1	OUT (PORT),A
  	LD  BC,0
M2	DEC BC 
 	LD  A,B 
 	OR  C 
 	JR  NZ,M2 
 	LD  A,#7F 
 	IN  A,(#FE) 
 	RRCA 
 	JR  C,M1 
 	EI 
 	RET  

после чего Пробником #1 проверяем наличие стробирующих импульсов с частотой около 2 Гц на 15,14,13,12,11,10,9 и 7 ножках доп.ИД7 (15 ножке соответствует порт #0F, 14 - #1F и т.д).

1.6.1(п).2 См. п.1.6.1(о).2

1.7 Проверка блока ЦАП закончена. Дополнительную м/с 555ИД7 можно отпаять.

Примечание: в качестве ЦАП желательно применять мелки КМ572ПА1. При отсутствии таковых можно применять К572ПА1.

2. Настройка задающих генераторов

2.1 Впаиваются микросхемы DD1, DD4.1 DD4.2.

2.2(о) Набирается программа тестирования портов:

PORT	EQU #FC77; #FD77; #FE77; #FF77 
 	DI
M1	LD  BC,PORT 
 	OUT (C),A 
 	LD  A,#7F 
 	IN  A,(#FE) 
 	RRCA 
 	JR  C,M1 
 	EI 
 	RET  

после чего проверяется наличие импульсов вот такой формы: с частотой около 77 кГц на 15,14,13,12 ножках DD1 (15 ножке соответствует порт #FC77, 14 - #FD77 и т.д).

2.2(п) Набирается программа тестирования портов:

PORT	EQU #FC77; #FD77; #FE77; #FF77  
	DI 
M1	LD  BC,PORT 
 	OUT (C),A 
 	LD  BC,0 
M2	DEC BC 
 	LD  A,B 
 	OR  C 
 	JR  NZ,M2 
 	LD  A,#7F 
 	IN  A,(#FE) 
 	RRCA 
 	JR  C,M1 
 	EI 
 	RET  

после чего проверяется наличие стробирующих импульсов с частотой около 2 Гц на 15,14,13,12 ножках DD1 (15 ножке соответствует порт #FC77, 14 - #FD77 и т.д).

2.3 Впаиваются микросхемы DD10,DD11 сигнал CLK берется в Пентагоне с 8D1. Это тактовая частота 3.5МГц которая обычно подается на Z80, но если у вас есть турборежим, то брать ее непосредственно с процессора нельзя. Сигнал CLK2 берется в Пентагоне с 11D2. Это тактовая частота 1.75Мгц, которая подается на AY8910(12) и ее можно взять непосредственно с AY.

2.4 Набирается программа:

10 LET R=64887;	64887;	64887;	65143;	65143;	65143; 
20 LET P=15735;	32119;	48503;	15991;	32375;	48759;  
30 LET C=   52;	116;	180;	52;	116;	180;  
40 LET F=1000: LET FH=INT (F/256):LET FL=F-256*FH  
50 OUT R,C: OUT P,FL: OUT P,FH  
60 PRINT AT 0,0;IN (P)+256*IN (P)  
70 GOTO 60  

после запуска должны замелькать числа от 0 до 1000 в полном беспорядке, но очень быстро, а на выводах 10,13,17 DD10 и DD11 должны появиться импульсы вот такой формы: с частотой около 3.5 кГц на 10 и 13 ножках, и 1.75 кГц на 17 ножках (10DD10 соответствует первый набор параметров, 13DD10 - второй, 17DD10 - 3й, 10DD11 - 4й, 13DD11 - 5й и 17DD11 - 6й). 2.5 Если у вас 580ВИ53 то запускать тестовую программу нужно БЕЗ турборежима, но лучше использовать импортный аналог 8253 (82C53, D8253 и т.д.), который работает совершенно нормально и в турбе.

2.6 Если тест не идет, то нужно набрать тестовую программу из п.2.2 порта для тестирования должны быть такими:

PORT	EQU	#3D77; #7D77; #BD77; #FD77; 
 		#3E77; #7E77; #BE77; #FE77  

и затем проверяется наличие строб. импульсов на 21 ножках DD10 и DD11 (портам #XD77 соответствует 21DD10, #XE77 - 21DD11 (X - любая цифра)).

3. Настройка контроллера DMA

3.1 Впаиваются микросхемы DD3(кроме 2 и 3 ножки), DD4.4, DD5.1 - DD5.5., DD6, DD7, DD14.

3.2 Сигналы /MREQ, /RD, /WR, /BUSAC, /BUSRQ, /RES берутся с 19,21,22,23,25 и 26 ноги процессора соответственно.

3.3 Набирается тестовая программа:

10 LET P= 	3191;  	7287;	          11383;	15479;  
		19575;	23671;	27767;	31863;  
20 FOR I=0 TO 65535  
40 LET H= INT(I/256):LET L=I-H*256  
50 OUT P,L: OUT P,H  
60 PRINT I,IN (P)+256*IN (P)  
70 NEXT I  

после запуска на экране должны появиться два столбца чисел, числа в обоих столбцах должны совпадать. Если число в правом столбце не меняется, то см п.3.3.1, если числа не совпадают, но в правом столбце числа изменяются, то необходимо проверить выводы 21 - 23, 26 - 30 DD6, и если там порядок - заменить DD6.

3.3.1 Необходимо набрать тестовую программу из п.2.2 порта для тестирования должны быть такими:

PORT	EQU	#0C77; #1C77; #2C77; #3C77;  
		#4C77; #5C77; #6C77; #7C77  

и проверить наличие сигнала выборки на 11DD6 и 4DD6 (для всех портов). Необходимо проверить 13DD6 (нормально там должен быть лог.0).

3.4 Набирается тестовая программа:

10 DATA 3191,7287,11383,15479,19575,23671,27767,31863  
20 FOR I=0 TO 7  
40 READ P  
50 OUT P,I*2: OUT P,I*2+1  
60 PRINT I*2:PRINT I*2+1  
70 NEXT I  
80 RESTORE  
90 FOR I=0 TO 7  
100 READ P 
110 PRINT AT I*2,16; IN (P)  
120 PRINT AT I*2+1,16; IN (P)  
130 NEXT I  

Как и прежде, числа в обоих столбцах должны совпасть. Если этого не происходит, то

3.4.1 Подключаем Пробник #2: щуп "C" к 11DD6, щупы "1", "2", "3", "4" к 32, 33, 34, 35 ногам DD6 соответственно. Набираем программу:

10 LET P=	3191;	7287;	11383;	15479;  
		19575;	23671;	27767;	31863  
20 OUT P,0  

после запуска сигнатура должна быть такой:

ГГГГ;  НГГГ;  ГНГГ;   ННГГ;                    
ГГНГ;  НГНГ;  ГННГ;   НННГ;  

(порту 3191 соотв. сигнатура "ГГГГ" и т.д.)

3.5 Проверяем теперь режим DMA. Набираем программу:

TimerC	EQU #FD77; #FD77; #FE77; #FE77  
TimerD	EQU #3D77; #7D77; #3E77; #7E77  
TimerB	EQU #34;   #74;   #34;   #74  
  DmaS	EQU #0C77; #2C77; #4C77; #6C77
  DmaL	EQU #1C77; #3C77; #5C77; #6C77
  DmaC	EQU #50;   #51;   #52;   #53
  DmaM	EQU #00;   #01;   #02;   #03  
  	LD BC,TimerC 
 	LD A,TimerB
  	OUT (C),A 
 	LD BC,TimerD 
 	LD DE,2 
 	OUT (C),E
  	OUT (C),D
  	LD BC,#8C77 
 	XOR A 
 	OUT (C),A 
 	LD BC,#CC77 
 	OUT (C),A 
 	LD BC,#BC77 
 	LD A,DmaC
  	OUT (C),A
  	LD BC,DmaS
  	LD DE,#8000 
 	OUT (C),E
  	OUT (C),D
  	LD BC,DmaL
  	LD DE,0 
 	OUT (C),E 
 	OUT (C),D
  	LD BC,#AC77 
 	LD A,DmaM 
 	OUT (C),A 
 	RET  

После запуска программы быстродействие компьютера уменьшается в два раза. Это тестовый режим DMA. В этом режиме формируется только запрос прямого доступа, а сигналы выборки не формируются. Поэтому, единственный видимый эффект - это замедление работы компьютера из-за того, что DMA делает 437500 обращений к памяти в секунду (в режиме теста). Тестовый режим остается и после возврата из тестовой программы - до сброса. Команда OUT 56439,0 (OUT #DF77,#00) также сбрасывает контроллер DMA, после нее быстродействие должно вернуться к норме. Компьютер должен устойчиво работать в тесте. Основная болезнь - сбои в ОЗУ из-за плохого контактирования микросхем в панельках и неточной фазы сигнала CAS. В Пентагоне помогает установка доп. конденсатора 20 - 40 пФ между 3D45 и землей.

3.5.1 Если тест не пошел (никакого замедления нет), то следует набрать программу из п.3.5, изменить в ней строку:

DmaC	EQU #40;   #41;   #42;   #43  

после запуска проверить - на выводе 4DD14; 7DD14; 9DD14; 13DD14 (19DD6; 18DD6; 17DD6; 16DD6) должна быть лог.1, если ее там нет то необходимо проверить вывод: 25DD6; 26DD6; 27DD6; 28DD6 там тоже должна быть лог.1, если ее там нет, то неисправна DD6, иначе нужно осциллографом проверить наличие импульсов вот такой формы: с частотой 1.75МГц на выводе 2и3DD14; 6DD14; 11и12DD14; 15DD14 или подсоединить к нему Пробник #1 - его светодиод должен светится в полнакала. Если импульсов нет, то непропаяна связь DD10(DD11) - DD14, если есть - то неисправна DD14. Биты 4 - 7 регистра состояния (#8C77 (35959)) должны иметь тоже значение, что и выводы 19 - 16 DD6 (выводу 19 соотв.бит 4, выв. 18 - бит 5 и т.д.), т.е. если на выводе лог.0 то и соотв бит =0 и наоборот. В этом тоже полезно убедится.

3.5.2 Если в предыдущем пункте все OK, а тест все равно не идет, следует проверить сигналы запроса шины:

3.5.2(о) Набирается программа из п.3.5. На 10DD6 нужно осциллографом проверить наличие импульсов вот такой формы: с частотой 440кГц.

На 8DD5 и на 25Z80 должны быть импульсы такой формы:  с той-же частотой.

3.5.2(п) Набирается программа:

TimerC	EQU #FD77; #FD77; #FE77; #FE77  
TimerD	EQU #3D77; #7D77; #3E77; #7E77  
TimerB	EQU #34;   #74;   #34;   #74  
  DmaS	EQU #0C77; #2C77; #4C77; #6C77
  DmaL	EQU #1C77; #3C77; #5C77; #6C77
  DmaC	EQU #40;   #41;   #42;   #43
  DmaM	EQU #00;   #01;   #02;   #03  
  	LD BC,TimerC 
 	LD A,TimerB 
 	OUT (C),A 
 	LD BC,TimerD 
 	LD DE,2 
 	OUT (C),E 
 	OUT (C),D 
 	LD BC,#8C77 
 	XOR A
  	OUT (C),A 
 	LD BC,#CC77
  	OUT (C),A 
 	LD BC,#BC77 
 	LD A,DmaC 
 	OUT (C),A 
 	LD BC,DmaS 
 	LD DE,#8000 
 	OUT (C),E 
 	OUT (C),D 
 	LD BC,DmaL
  	LD DE,0 
 	OUT (C),E 
 	OUT (C),D 
 M1	LD BC,#AC77 
 	LD A,DmaM 
 	OUT (C),A
 M2	HALT
  	HALT 
 	HALT 
 	HALT
  	HALT
  	LD A,#7F 
 	IN A,(#FE)
  	RRCA
  	JR C,M2
  	RRCA
  	JR C,M1
  	RET  

После набора программы следует подключить Пробник #1 к 8DD5. На каждое нажатие SPACE светодиод пробника должен изменять свое состояние на противоположное. Выход из программы SS+SPACE. Если все нормально, то проверяется 8DD5 и 25Z80.

3.5.3. Если после запуска программы из п.3.5. и п.3.5.1 компьютер виснет, а на 25Z80 постоянно лог.0 - следует проверить линию подтверждения запроса шины. Проверяем 4DD5 - там должна быть лог.1. Если все так и есть - неисправна DD6.

3.6. Впаиваются микросхемы DD2, DD8.1, DD8.4, DD9, DD12 и DD13.

3.6.1 Теперь нужно проделать самую неприятную операцию - изменения на плате компьютера. Неприятную потому, что хотя многие фирмы гордятся своими "системными шинами", на которые вроде-как выведены сигналы для прямого доступа, к сожалению нет ни одного компьютера, который может без переделок предоставить для прямого доступа более 48k памяти. Поэтому я позволю себе сделать некоторое отступление, чтобы хоть как-то объяснить что нужно сделать, т.к. указания типа "возьми то, припаяй туда" я могу дать только для очень ограниченного количества схем.

Итак, немножко о том как компьютер адресует память. Для это в нем есть такая вещь как диспетчер памяти. Основная его задача - взять адрес от процессора и преобразовать его в адрес для микросхем памяти. Сначала рассмотрим самый простой диспетчер - такой как стоит в 48м компьютере. Кое-кто скажет, что в 48м нет никакого диспетчера.. и ошибется. Диспетчер там есть, но очень ма-аленький. Единственное что он делает это проверяет, что A14 и A15 равны 0 и если это так, то направляет адрес в ПЗУ иначе в ОЗУ. Все очень просто, но если такой компьютер собран на 565РУ5, емкость которых 64кб, то при таком раскладе 16кбайт, пропадает зря (накрывается ПЗУхой).

Теперь поглядим, что творится в 128м. Здесь картина уже сложнее. Процессор не может адресовать больше чем 65536 (216) байт потому как у него только 16 адресных линий. Для этого диспетчер делает следующее. Когда процессор обращается к адресам #C000-#FFFF (т.е. A14 и A15 = 1) диспетчер не выдает старшие разряды адреса прямо в ОЗУ, а подменяет их значениями из порта #7FFD. Обозначим старшие адреса которые идут в ОЗУ как A14', A15', A16' (и A17', A18' для 512к) чтобы отличить их от процессорных (A0-A13 идут в ОЗУ напрямую). Теперь посмотрите что получается, когда процессор обращается к различным участкам памяти:

            г============T===T===T====T====T=======¬
            ¦  Диапазон  ¦A14¦A15¦A14'¦A15'¦A16'   ¦
            ¦------------+---+---+----+----+-------¦
            ¦#C000-#F000 ¦ 1 ¦ 1 ¦берется из #7FFD ¦
            ¦#8000-#BFFF ¦ 0 ¦ 1 ¦ 0  ¦ 1  ¦  0    ¦
            ¦#4000-#7FFF ¦ 1 ¦ 0 ¦ 1  ¦ 0  ¦  1    ¦
            ¦#0000-#3FFF ¦ 0 ¦ 0 ¦ОЗУ не выбирается¦
            L============¦===¦===¦=================- 

Для 512й машины все абсолютно тоже самое только добавляются еще две адресные линии A17' и A18'. Все это кое-как работает пока нет контроллера прямого доступа, но для DMA такая структура памяти совершенно не годится. Во-первых контроллер DMA - это почти сопроцессор, он, в отличии от других периферийных контроллеров может адресовать память ВМЕСТО процессора, но выбирает он оттуда только данные, команды он получает через порт. Поэтому ему совершенно не нужна ПЗУ в адресном пространстве, очень трудно представить зачем нужен прямой доступ к ПЗУ. Во-вторых абсолютно невозможно переключать порт #7FFD так, чтобы каждый канал забирал данные со своей страницы. И в-третьих, как не трудно заметить процессорные страницы имеют размер 16к, но контроллер DMA может передавать за раз до 64к, что позволяет использовать инструменты в 4 раза длиннее.

Из всего выше сказанного следует, что надо найти в компьютере старшие адресные линии ОЗУ A14', A15', A16' ( и A17', A18' для 512к) и сделать так, чтобы они отключались внешним сигналом. Все бы ничего, да вот только диспетчер почти всегда разбросан по плате и по схеме.

Я приведу два примера подключения - это Пентагон 128/Скорпион 256 и Пентагон 512/АТМ 512.

Приложение. Логичекие пробники

Пробник #1. Индикатор стробирующих импульсов.

 

 

 

Этот пробник предназначен для проверки наличия стробирующих импульсов, т.е. импульсов выбора портов, регистров и т.п. Каждый стробирующий импульс вызывает переключение светодиода в противоположное состояние. Для проверки пробника прикоснитесь щупом к земле (имеется в виду не наша планета, а общий провод схемы) светодиод должен переключиться в противоположное состояние (Из-за нечеткого контакта это может произойти не с первой попытки). Предназначен этот пробник для проверки портов. Для примера проверим порт #FE на работоспособность. В пентагоне это D43. Подключаем пробник щупом к 9D43, питание на пробник берется только с платы компьютера. Набираем программу:

10 OUT 254,RND*7:PAUSE 0:GO TO 10

После запуска на каждое нажатие клавиши светодиод пробника должен изменять свое состояние на противоположное. Если при этом бордюр тоже меняет цвет то все ОК. Если пробник показывает наличие импульсов, а бордюр не меняется то D43 протянула ножки, а если наоборот, то вы воткнули щуп явно не туда. Аналогично проверяется любой другой порт. Главное что: если строб.импульсы доходят до порта, а порт ни бэ ни мэ, то сдох регистр порта (типа там ТМ8, ТМ9, ИР23, БИСки и тд), а если импульсов нет, то регистр не при чем и неисправность надо искать в дешифраторе (ИД7, логика и т.п.). (Маленькое примечание: если строб импульсы отсутствуют то надо оторвать эту линию от входа регистра и снова проверить пробником. Если импульсы появились то значит сдох регистр и своим входом садит дешифратор).

Пробник #2. Сигнатурный анализатор.

 

 

все диоды - АЛ307, все резисторы 560ом Предыдущий пробник предназначен для проверки наличия стробирующих импульсов на регистрах, а вот для того, чтобы узнать какие именно данные заносятся в эти регистры и служит пробник #2. Чтобы проверить работоспособность этого пробника, коснитесь щупом "C" земли - все светодиоды погаснут. Теперь соедините шупы "1" - "8" с землей и снова коснитесь земли щупом "C". Все светодиоды должны загореться. Для проверки чегонибудь соединим щупы "1" - "8" с шиной данных, а щуп "C" с линией стробирования. После OUTа светодиоды переключаются в некоторое состояние, которое называется сигнатурой. Сигнатура - это сокращенная запись, какой светодиод горит, а какой нет. Например сигнатура "ГГНГН" означает, что светодиод "1" горит, 2 - горит, 3 - негорит, 4 - горит, 5 - негорит, состояние остальных безразлично. Практически вам не придется вычислять, что будет гореть если сделать OUT куда-то,что-то. Достаточно сделать OUT туда-то,то-то и сравнить с приведенной сигнатурой. Для примера допроверим порт бордюра. Подсоединим щупы "1" - "3" к 4, 5 и 12 ножкам D43, а щуп "C" к 9D43. теперь из Бейсика даем команду BORDER и смотрим на пробник. Сравните сигнатуры для различных цветов бордюра:

BORDER 0         ГГГ   
BORDER 1         НГГ
BORDER 2         ГНГ
BORDER 3         ННГ
BORDER 4         ГГН
BORDER 5         НГН
BORDER 6         ГНН
BORDER 7         ННН  

Если все сигнатуры правильные, а порт функционирует неверно, то что-то с регистром, если же сигнатуры не сходятся по какой-то линии (или линиям) то причина на этой линии (обрыв, замыкание и т.п.).

Этим пробником можно проверять не только данные, но и адреса портов, всякие сопутствующие сигналы, что даже не всегда возможно сделать осциллографом.

Обновлено 24.02.2009 13:53  
Организация и проведение праздничных мероприятий, фото- и видеосъемка