Soviet Union ZX Spectrum CommunityСуббота, 09.12.2023, 08:46
Вы вошли как Гость | Группа "Гости" | RSS
 [ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Soviet Union ZX Spectrum Community » ZX-строительство » Железо » Исправления и доработки GS (Upgrade General Sound)
Исправления и доработки GS
Black_CatДата: Воскресенье, 22.12.2013, 23:34 | Сообщение # 1
Координатор
Группа: Координаторы
Сообщений: 695
Статус: Offline
1. Решение проблемы работы оригинального GS в slave слотах NemoBus.

Оригинальный GS был разработан на заре развития шины NemoBus, и в силу плохой осведомлённости авторов GS о работе этой шины не мог с ней корректно работать. Это же относится и к реплике GS от zorel. Из-за недостаточно хорошей схемотехники оригинального GS, он устойчиво работает только в первом, т.е. master слоте шины NemoBus. Суть проблемы состоит в том, что в арбитре слотов шины NemoBus, сигнал IORQ/ немного задерживается, и при самой простой реализации арбитра, для каждого следующего слота задержка увеличивается. В результате возникает эффект, что GS нормально работает только в первом (master) слоте (где нет задержки), а в остальных программа определяет ошибку чтения флага данных порта статуса. Причиной этой ошибки является некорректно реализованый дешифратор, использующий только сигнал WR/, а RD/ не использующий. В результате такого упрощения схемотехники, если в цикле записи в порт, на слот подаётся чуть задержанный относительно сигнала WR/ сигнал IORQ/, то по завершении сигнала WR/, остающийся активным сигнал IORQ/ воспринимается как сигнал RD/, что вызывает ложную генерацию сигнала чтения из соответствующего порта, что, в случае обращения к порту #B3, приводит к сбросу флага данных порта статуса, по взведению которого программа определяет работоспособность GS. Пример доработки для устранения такой ложной генерации сигнала чтения приведён ниже:



Изменения отмечены красным цветом.

Внимание! Вышеприведённый пример в этой теме, как и другие примеры на этом форуме, это как правило не единственно возможные решения, а только демонстрация одного из множества возможных решений, предназначенная для изучения проблемы, или задачи, и возможного способа её решения. Лучший способ развития архитектуры, это не слепое копирование, а изучение вопроса и самостоятельный синтез решения, чего и рекомендую всем. Помните, что слепое копирование без изучения, в лучшем случае приводит к неоптимальности такой конструкции, а в худшем и вообще к полной или частичной её нефункциональности.

Для примера приведу ещё несколько способов решения этой задачи:

Т.к. суть проблемы в предотвращении паразитного чтения из порта #B3, а для остальных портов паразитное чтение не имеет значения, то можно подмешивать сигнал RD/ не в дешифратор, а только в сигнал чтения порта #B3. Такое решение требует дополнительного элемента ИЛИ, но зато при модернизации нужно резать только одну дорожку:



2. Решение проблемы "замораживания" триггера статусного регистра при останове процессора Спектрума.

Ещё одну ошибку в схемотехнике GS обнаружил SKV при подключении к клону с двухполевой памятью Дельта-С(75ИС). Авторы GS не учли, что он работает в несколько раз быстрее Спектрума, и возможна ситуация, когда возврат триггера статуса в неактивное состояние процессором GS невозможен, т.к. процессор Спектрума в это время уже удерживает RS входы в нуле. Такая ситуация возможна в клонах с торможением процессора на экранной памяти, как в Дельта-С(75ИС), а так же во всех оригинальных Спектрумах. Проблема состоит в том, что авторы GS сделали взведение и сброс триггеров статуса по уровню , а не по фронту. Устранить эту ошибку можно введя дифференцирующие цепочки  как на схеме ниже:



Добавлено (26.06.2023, 12:13)
---------------------------------------------
Добавлены замечания и примеры.

Добавлено (03.07.2023, 14:32)
---------------------------------------------
Добавлен пример решение проблемы "замораживания" триггера статусного регистра при останове процессора Спектрума.
Прикрепления: 7513286.png (13.8 Kb) · 1492436.png (7.9 Kb) · 7654230.png (19.6 Kb)


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
Black_CatДата: Вторник, 28.01.2014, 14:05 | Сообщение # 2
Координатор
Группа: Координаторы
Сообщений: 695
Статус: Offline
2. Корректный IORQGE для General Sound.

Ниже приведены два варианта исправления ошибки формирования IORQGE и ошибки, мешающей работать в slave слотах NemoBus:





Первый вариант - на минималках, позволяет быстро исправить схему. Транзистор VT2 типа КТ315А1 в корпусе ТО-92 с длинными ногами, что бы можно было поменять местами КЭ.  Второй вариант снижает нагрузку на шину и повышает быстродействие формирователя IORQGE. При внесении доработок рекомендуется пользоваться корректной схемой GS.
Изменения отмечены красным цветом.
Прикрепления: 4296619.png (25.5 Kb) · 9232740.png (38.4 Kb)


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
Black_CatДата: Пятница, 22.05.2015, 12:15 | Сообщение # 3
Координатор
Группа: Координаторы
Сообщений: 695
Статус: Offline
3. Итоговая схема GS v.1.1с исправлением всех ошибок.

Я решил логически разделить топик, завершив посты с отдельными исправлениями общей итоговой схемой GS v.1.1 со всеми исправлениями и выпрямлениями небрежной авторской схемотехники. Схема приведена так же для того, чтобы желающие сделать реплику, по крайней мере не повторяли все авторские ошибки и кривизну схемотехники, на сколько это возможно без существенных изменений разводки.



Добавлено (04.07.2023, 09:00)
---------------------------------------------
Исправлены вновь обнаруженные ошибки. На чертеже указана дата последней правки.
Прикрепления: 7052903.png (844.1 Kb)


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
Black_CatДата: Пятница, 22.12.2017, 13:23 | Сообщение # 4
Координатор
Группа: Координаторы
Сообщений: 695
Статус: Offline
4. Решение проблемы cовместной работы GS с некоторыми внешними устройствами.

При эксплуатации GS, иногда при сбоях возникает необходимость его программного сброса, или отключения, дабы исключить конфликты с другими устройствами, такими как DivIDE или SounDrive, или же отключить GS от сигнала сброса компьютера. В NGS для этих целей добавили порт #33. С помощью установки разряда D7=1 этого порта в NGS производился программный сброс GS. В предлагаемой доработке я дополнил функционал NGS возможностью захвата внутренней шины и отключения процессора с одновременной блокировкой портов GS, а так же блокировкой аппаратного сброса от компьютера. По любому из сигналов D4=1 или D5=1 отключаются порты #B3, #BB и генерация IORQGE для них, так же по D4=1 происходит захват шины процессора GS, а по D5 =1 блокировка аппаратного сброса. Светодиоды индицируют захват шины процессора GS и блокировку аппаратного сброса. Схема доработки приведена ниже:



В доработке использованы незадействованные элементы, оставшиеся от предыдущей доработки. При программировании, необходимо устанавливать только указанные разряды, т.к. остальные разряды могут в дальнейшем  использоваться в других целях.

Добавлено (26.06.2023, 12:13)
---------------------------------------------
Обновлены схема доработки GS. Добавлена возможность блокировки аппаратного сброса GS.

Добавлено (07.07.2023, 11:57)
---------------------------------------------
Несколько изменена логика блокировки портов, теперь она происходит при блокировке сброса и при захвате шины. Изменение обусловлено тем, что divIDE или подобные устройства активируются при чтении КОПа из нулевого адреса, т.е. сразу после сброса порты GS должны быть заблокированы. А смысл опции блокировки сброса в том, чтобы GS играл фоновую музыку при, и после загрузки новой программы, т.е. GS и divIDE после сброса должны работать одновременно, что возможно только при заблокированных портах GS.
Прикрепления: 6650711.png (88.4 Kb)


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
Black_CatДата: Воскресенье, 24.12.2017, 18:25 | Сообщение # 5
Координатор
Группа: Координаторы
Сообщений: 695
Статус: Offline
5. Наращивание 62-контактного печатного разъёма ISA на 60-контактный разъёма GS.

Оригинальный GS выпускался с 60-контактным метрическим разъёмом под отечественный коннектор, который впоследствии был заменён в компьютерах на импортный 62 контактный дюймовый разъём. В результате, установка GS в новый разъём требует особой тщательности, и зачастую приводит к коротким замыканиям из-за сдвига платы в разъёме и несоответствия шага контактов. Устранить эту проблему можно припаяв к GS отрезанный от дохлой платы ISA печатный разъём. Для этого, отрезанный печатный коннектор ISA припаивается с помощью двухрядного штыревого разъёма PLD к печатному разъёму GS. Ниже, на рисунке, в разрезе показано как это сделать:



Новый разъём не только избавит вас от опасности сдвига, но и обеспечит лучший и долговечный контакт по сравнению с облуженным и постоянно окисляющимся разъёмом GS.
Прикрепления: 4041698.png (65.1 Kb)


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
Black_CatДата: Пятница, 14.07.2023, 03:52 | Сообщение # 6
Координатор
Группа: Координаторы
Сообщений: 695
Статус: Offline
6. Итоговая схема GS v.1.3 со всеми доработками.

Надеюсь :) , что на этом, простенькие модернизации улучшающие функционал GS наконец закончились, и можно логически завершить тему итоговой схемой GS со всеми доработками. Ниже представлена итоговая схема General Sound v.1.3.

Особенности разработки.

В этой схеме я старался не уподобляться коллегам из NedoPC и не прикручивать лишних для GS сущностей, как то SD карта, mp3 плеер, FM радио, DVD проигрыватель, TV тюнер, и ещё много всяких ненужных прибамбасов, которые уже прикрутили, или ещё не успели прикрутить к NeoGS :) . По этой же причине из расширений NGS поддержаны только разряды D5,D7 порта #33, и не поддержан тот ужас, который в NedoPC именуют nedoDMA :) . Тема лишних фичей актуальна и для меня, т.к. я сам в процессе три раза прикручивал и потом удалял разные аппаратные способы сделать блокировки щелчка в колонках при инициации GS, пока в конце-концов не успокоился и не удалил всё окончательно :) , ибо простота - сестра таланта :) , или как говорил Роден в ответ на вопрос "как создать шедевр" - "просто взять мраморную глыбу и отсечь всё лишнее" :) . Этой версии GS мною присвоен номер v.1.3. Для тех, кому интересно почему именно v.1.3, я в теме про исправленную схему оригинальной GS добавил пост с эволюцией развития GS: Версия имеет на 5 корпусов больше чем у оригинала, но в тоже время на 2 корпуса меньше чем у GS v.1.2, реализованой Павлом Рябцовым, обладая при этом большим функционалом, что лишний раз демонстрирует неоптимальность подхода, которым он руководствовался, просто стягивая в одну кучу чужие доработки без их оптимизации и переработки.

Особенности отладки.

Хотя разработчики изначально использовали процессор на 10МГц, разогнанный до 12МГц, реально, для нормальной работы был необходим процессор минимум на 18МГц, который тогда был недоступен. Сейчас такие процессоры доступны, но ввиду тотальной фальсификации китайцами, процессор скорее всего будет в лучшем случае на 10МГц. Схемотехника оригигального GS была неудобна для разгона, т.к. не позволяла произвольно устанавливать частоту процессора, которая была связана с частотой прерываний, что очень ограничивало выбор как процессора, так и его частоты. В данной схеме этот недостаток устранён установкой отдельных генераторов для процессора и для прерывания. Для генератора прерывания используется доступный кварцевый резонатор на 4,8МГц, а для процессора можно выбрать абсолютно любую частоту, на которой он только сможет работать. Так же для облегчения разгона процессора, кардинально уменьшена нагрузка на его шину данных, установкой разделительного буфера.

Особенности эксплуатации.

В отличие от оригинального GS, эта версия будет работать в любом слоте NemoBus, и при этом не будет создавать конфликты на шине. Предусмотрен игольчатый разъём, дублирующий шину NemoBus v.1.2 (линий питания -5В, -12В на шине нет, при необходимости необходимо заводить их через доп. разъём) для параллельного подключения дополнительных усройств.

Внешний интерфейс:

Дополнен портом #33, в котором используются три разряда D4, D5, D7. Это позволило реализовать следующие дополнительные возможности:

1. D7=1 - программный сброс GS, позволяет перезагрузить GS, кроме порта #33, без сброса компьютера (поддержан в NGS).

2. D5=1 - программная блокировка внешнего сброса GS с одновременной блокировкой портов GS и сигнала IORQGE, кроме порта #33. Позволяет перезагрузить компьютер без сброса GS, и без конфликтов с divIDE, индицируется светодиодом VD10. Эта опция позволяет запустить проигрывание музыки на GS, после чего перезагрузить компьютер с загрузкой нужной программы и параллельным проигрыванием музыки в GS.

3. D4=1 - режим паузы, программная остановка GS путём захвата шины, с одновременной блокировкой портов GS и сигнала IORQGE, кроме порта #33. Позволяет прервать работу GS, а потом продолжить с прерванного момента, индицируется светодиодом VD11.

Внутренний интерфейс:

В расширениях памяти оригинального GS, процессору недоступна страница RAM0, поэтому из 2Mb ОЗУ ему доступно только 2016kb. В GS v.1.3 этот недостаток устранён, и процессору доступны все 2048kb ОЗУ, адресуемые разрядами D0-D6 внутреннего порта #00 (теоретически, процессору может быть доступно 4064kb ОЗУ и 32kb ПЗУ), но страница RAM0 заменена на RAM64, а при адресации страниц RAM65-RAM127 будут повторно отображаться страницы RAM1-RAM63, т.к. ОЗУ только 2Mb. Разряд D7=1 порта #00 подменяет ПЗУ GS на страницу RAM64. В отличие от NGS, где существует подобная опция, блокировка возможности записи в RAM64 не предусмотрена, т.к. не существует никаких программ, пишущих в ПЗУ GS, а следовательно и опция такая будет бессмысленна, а тратить аппаратные ресурсы на бессмысленные опции - это не наш путь :) .

Прикрепления: 7838110.png (921.2 Kb)


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
Soviet Union ZX Spectrum Community » ZX-строительство » Железо » Исправления и доработки GS (Upgrade General Sound)
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2006Сайт управляется системой uCoz