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

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   IBM PC-совместимое. До 2000 года включительно »   Это не "дура", это FMonster
RSS

Это не "дура", это FMonster

Попытка создать ISA 8-bit плату со всеми синтезаторами

<<Назад  Вперед>> Страницы: 1 2 3 4 5 6 7 8 9
Печать
 
Morzhatina
Newbie


Откуда: Санкт-Петербург
Всего сообщений: 55
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 мая 2017
Макс, а что там кстати с чипом pal от CSM?
Прогресс есть какой-то?
Fagear
Advanced Member


Откуда: Москва, САО
Всего сообщений: 1228
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 янв. 2010
Morzhatina написал:
[q]
Макс, а что там кстати с чипом pal от CSM?
Прогресс есть какой-то?
[/q]
Владелец платы при прислал JED файл, который он получил, считав родной PAL. Нашёл лишний GAL16V8, зашил. Пока не пробовал. Не верится, что они его оставили не залоченным, но кто знает.
Сначала надо убрать кривую кроватку, восстановить контакты платы и запаять нормальную.
Есть ли какой-то способ по JED получить схему/визуализацию, чтобы заменить GAL на стандартную логику?
Tronix
Advanced Member


Откуда: Москва
Всего сообщений: 1749
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
15 янв. 2008
Fagear написал:
[q]
который он получил, считав родной PAL. Нашёл лишний GAL16V8, зашил. Пока не пробовал. Не верится, что они его оставили не залоченным, но кто знает.
[/q]
Я не спец по PAL/GAL, но выскажусь. По-моему нельзя вот так просто JED файл от PAL шить в GAL. Предварительно его нужно обработать вот этой софтиной https://www.latticesemi.com/en...se/7/1/710 Она в прикрепленном файле.

Fagear написал:
[q]
Есть ли какой-то способ по JED получить схему/визуализацию, чтобы заменить GAL на стандартную логику?
[/q]
Ну есть, как бы... Вот http://www.brouhaha.com/~eric/retrocomputing/mmi/palasm/ , там внизу страницы ссылка на Opal Jr. архив, в котором есть jed2eqn.exe . Есть еще такое: http://www.gen.eclipse.co.uk/GalDis/GalDis.html , но поддерживает только GAL22V10 и PAL16R4. Но есть сорцы и автор пишет, что " It could easily be modified to cover others, though."

А можно нам JED лицезреть тут?

Прикрепленный файл (PALtoGALv312.ZIP, 0 байт, скачан: 36 раз)
Fagear
Advanced Member


Откуда: Москва, САО
Всего сообщений: 1228
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 янв. 2010
Tronix глянул файлы - там почти всё под DOS. А Фортран - вообще мимо меня. У меня все машины, которые могут DOS на текущий момент разобраны. Виртуалку собирать лень. Как-нибудь потом...
Небольшая поправка: на плате исходно стоял не PAL, а именно GAL16V8.

Прикрепленный файл (СSM_GAL16V8.jed, 0 байт, скачан: 66 раз)
Tronix
Advanced Member


Откуда: Москва
Всего сообщений: 1749
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
15 янв. 2008
Fagear написал:
[q]
Виртуалку собирать лень.
[/q]
Ну, в нашем деле без Dos никуда.... Я на винде DosBox юзаю постоянно. Хоть и не очень удобно, но хотя бы так.

Вообщем попробовал скормить файл JED2EQN. Сначала ругался на неожиданный конец файла, я тогда просто звездочку '*' добавил последним символом в .JED и вот что из этого вышло:


; JED2EQN — JEDEC file to Boolean Equations disassembler (Version V063)
; Copyright © National Semiconductor Corporation 1990-1993
; Disassembled from cms.jed. Date: 11-25-118
;$GALMODE MEDIUM

chip cms GAL16V8

i1=1 i2=2 i3=3 i4=4 i5=5 i6=6 i7=7 i8=8 i9=9 GND=10 /i11=11 o12=12
o13=13 f14=14 o15=15 o16=16 o17=17 o18=18 o19=19 VCC=20

@ues 0000000000000000
@ptd unused

equations

o19 = /i2 * /i1 * /i6
    + /i2 * /i1 * /i4 * /i6 * /i7 * /f14 * /i8 * i9 * i11
o19.oe = vcc
o18 = /i3 * /i4 * /i7 * /f14 * i8 * /i9 * /i11
o18.oe = gnd
o17 = /i3 * /i4 * /i7 * /f14 * i8 * /i9 * i11
o17.oe = gnd
o16 = /i2 * /i4 * /i7 * /f14 * /i8 * /i9 * i11
    + /i2 * /i3 * /i4 * /i7 * /f14 * /i8 * /i9 * /i11 * i11
o16.oe = gnd
o15 = /i2 * /i4 * /i7 * /f14 * /i8 * /i9 * i11
    + /i2 * /i4 * /i7 * /f14 * /i8 * /i9 * /i11 * i11
o15.oe = gnd
f14 = gnd
f14.oe = gnd
o13 = /i2 * /i1 * i5 * /i6
o13.oe = vcc
o12 = /i2 * /i4 * /i7 * /f14 * /i8 * i9 * /i11
o12.oe = gnd
rus
Advanced Member


Всего сообщений: 298
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
24 нояб. 2014
Раз предполагается аналоговый микшер на самой плате, к этому вопросу тоже нужно подойти со всей сурьёзностью. Я понимаю, что на данной стадии пока не до этого, но в перспективе если нет желания получить выходной тракт в виде очередного свистящего и пердящего недоразумения, коим он являлся, к сожалению, почти на всех ISA звуковых в своё время, здесь нужен особый подход. Например, как делает аналоговые тракты на своих звуковых картах фирма Onkyo.

Всё-таки это не шуточно, с нескольких устройств, которые уже сами по себе являются источником нехилых наводок, смешать раскодированный в аналоге звук и подать его на выход, и всё это в рамках одной платы! На которой высота элементов (тех же ёмких кондёров, к примеру) резко ограничена расстоянием между слотами, опять же близкое соседство других плат. Это всё может оказаться головной болью! Послушайте те же AWE32 с их огромными размерами и кучей компонентов, с аналоговой передачей сигнала чуть ли не через всю PCB. Это же ужас, а не звук. А тут ещё больше источников. Как это всё будет решаться, когда до этого дойдёт очередь?
Fagear
Advanced Member


Откуда: Москва, САО
Всего сообщений: 1228
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
22 янв. 2010
rus написал:
[q]
Послушайте те же AWE32 с их огромными размерами и кучей компонентов, с аналоговой передачей сигнала чуть ли не через всю PCB. Это же ужас, а не звук. А тут ещё больше источников. Как это всё будет решаться, когда до этого дойдёт очередь?
[/q]
Вопрос правильный. Одна из целей FMonster - обеспечить максимально чистый звук, в отличие от всего того, что она замещает.
Как будет решаться? Технологически.
  • Корректная трассировка цифровых цепей, чтобы уменьшить наводки с их стороны.
  • Корректная трассировка аналоговых цепей, чтобы они не ловили всё подряд из эфира.
  • Физическое разнесение цифровых и аналоговых цепей с минимальным пересечением: шина ISA - внизу платы, логика посередине, аналог - наверху, вдали как от цифры на плате FMonster, так и от материнской платы.
  • Отдельное и фильтрованное питание аналоговых частей платы.
  • Согласование импедансов узлов и исключение "висящих" высокоимпедансных входов.

Насколько это всё получится на тесной и длинной плате? Посмотрим.
Частично это уже обкатывается на отладочных платах блоков. Трассировка та же, что потом будет в конечной плате. Также буду отлаживать сам микшер при помощи отдельной платы. Там и посмотрим, что из этого всего получится.


Tronix написал:
[q]
Вообщем попробовал скормить файл JED2EQN.
[/q]
Спасибо большое, помогли! :thumbup:
Я уже на работе сегодня изучал спецификацию JED-файла и пытался декодировать его "ручками". Выглядит похоже на то, что приведено выше.
Я проанализировал полученное и вот что получилось:
[q]
Pin 12: /IOW x /BASE_ADDR x /A4 x /A3 x /A2 x A1 x /A0 = 0
Pin 13: /IOW x /ACK x TC x /IOB5 = 1
Pin 14: feedback
Pin 15: /IOW x /BASE_ADDR x /A4 x /A3 x /A2 x /A1 x A0 + /IOW x /BASE_ADDR x /A4 x /A3 x /A2 x /A1 x /A0 x A0 = 0
Pin 16: /IOW x /BASE_ADDR x /A4 x /A3 x /A2 x /A1 x A0 + /IOW x /IOR x /BASE_ADDR x /A4 x /A3 x /A2 x /A1 x /A0 x A0 = 0
Pin 17: /IOR x /BASE_ADDR x /A4 x /A3 x A2 x /A1 x A0 = 0
Pin 18: /IOR x /BASE_ADDR x /A4 x /A3 x A2 x /A1 x /A0 = 0
Pin 19: /IOW x /DACK x /IOB5 + /IOW x /DACK x /BASE_ADDR x /IOB5 x /A4 x /A3 x /A2 x A1 x A0 = 1
[/q]
Конфигурация пинов совпадает с тем, что я ранее анализировал на Vogons. Входы/выходы сконфигурированы так же, как я и предполагал. А вот дешифрованное не очень сочетается с тем, что получено путём наблюдения за эмуляцией платы. Да и в целом есть вопросы к логике полученных выражений. Причём, декодированы они вроде верно (у меня "ручками" то же получается), т.е. проблема либо в исходном чипе, либо в его считывании. Но это и не мусор, вполне похоже на то, что должно быть.

Несколько примеров.
[q]
Pin 19: /IOW x /DACK x /IOB5 + /IOW x /DACK x /BASE_ADDR x /IOB5 x /A4 x /A3 x /A2 x A1 x A0 = 1
[/q]
Получается, вторая часть выражения не имеет смысла, поскольку её "перекрывает" первая часть. Одновременно с этим выходит, что запись по определённому адресу для обновления показаний PCM DAC не имеет смысла - оно будет срабатывать по любому адресу в случае получения DACK.
[q]
Pin 16: /IOW x /BASE_ADDR x /A4 x /A3 x /A2 x /A1 x A0 + /IOW x /IOR x /BASE_ADDR x /A4 x /A3 x /A2 x /A1 x /A0 x A0 = 0
[/q]
Тут сразу два ляпа.
Во-первых, одновременное появление /IOW и /IOR на шине ISA в исправной работе невозможно. Во-вторых, "/A0 x A0" всегда ложь. Т.е. вторая часть (после "+") никогда не сработает.
А левая часть вообще равна левой части формулы для пина 15 (а вторая часть там тоже не сработает из-за такого же "/A0 x A0").

Пин 15 управляет BDIR, а пин 16 - BC1 на чипе AY. По результатам наблюдения за работой ПО в эмуляторе, получены данные, что:
  • база+0x00 только запись, запись адреса в AY (BDIR/BC1 = 1/1)
  • база+0x01 чтение - чтение данных из регистра AY (BDIR/BC1 = 0/1)
  • база+0x01 запись - запись данных в регистр AY (BDIR/BC1 = 1/0)

По дешифрованному же получается, что:
  • база+0x01 запись выставляет BDIR/BC1 = 0/0

Т.е. это режим "неактивности" AY. По 0x00 ничего не декодируется, чтение также невозможно.

Также есть сомнения по поводу порта для PCM DAC, поскольку наблюдение за софтом показывает, что запись именно данных для PCM DAC производится в порт база+0x02. Судя по декодированному выше, обновление показаний в PCM DAC проводится записью в база+0x03, а запись в +0x02 вызывает срабатывания прерывания от CSM... :rolleyes:

Я, вообще, пока так и не дошёл до того, как работает DMA на ISA с т.з. приложения и с т.з. платы. Может кто-нибудь быстро введёт "чайника" в курс дела? :08:
Вот я из приложения пишу в некий порт. Чтобы записать это через DMA я должен что-то особенное сделать, что-то подготовить или вызвать? Или это исключительно прерогатива платы - запросит ли она DMA по факту записи?
И, допустим, плата дала запрос на DMA. В какой последовательности и когда прибудут данные по шине? На том же цикле? Отдельно потом, когда появится DACK? :redface:
pahan
Advanced Member


Откуда: Химки, М.О.
Всего сообщений: 1070
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
13 мар. 2015
Вот примерно так:
[q]
я из приложения пишу в некий порт. Чтобы записать это через DMA я должен что-то особенное сделать, что-то подготовить или вызвать?
[/q]
Да. Из памяти в устройство:
1) Сформировать в памяти массив данных, который будет переслан устройству. Размер его - не более 64 Кб , выровнен по границе сегмента.
2) Замаскировать (отключить) нужный канал в контроллере DMA
3) Передать адрес начала массива контроллеру DMA (записать число в порт, номер порта зависит от номера DMA-канала).
4) Передать фактический р-р блока данных минус 1
5) Задать режим передачи (одиночная/блочная/автоинициализация/направление...)
6) Размаскировать канал - передача начнётся немедленно (вообще-то по завершении процессором текущей команды, но на современных системах этим можно пренебречь).
В обратном направлении - первый шаг не нужен (сами данные придут с устройства, но буфер под них всё равно должен быть выделен).
[q]
И, допустим, плата дала запрос на DMA. В какой последовательности и когда прибудут данные по шине? На том же цикле? Отдельно потом, когда появится DACK?
[/q]
:)
Когда появится DACK - означает, что DMA-контроллер принял запрос и готов к работе. После этого начинается реальная передача данных и можно снимать DRQ. Данные прибудут тогда, когда пройдёт импульс по линии T/C (контакт B27 в ISA). (Это с точки зрения железа, с точки зрения софта - ждите прерывания/опрашивайте регистр/отваливайтесь по таймауту).
justontime
Full Member


Откуда: СПб
Всего сообщений: 236
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
10 сен. 2016
Fagear написал:
[q]
Может кто-нибудь быстро введёт "чайника" в курс дела?
[/q]
Неплохое объяснение с примером - https://wiki.osdev.org/ISA_DMA
rus
Advanced Member


Всего сообщений: 298
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
24 нояб. 2014
Ну а коли вопрос правильный, позволю себе некоторые разглагольствования на тему. ))
Насколько я понимаю, все источники будут отдавать сигнал в формате I2S, так? Думаю, существуют в природе (специально вопрос не изучал) недорогие интегральные смесители сигнала I2S с опорной частотой 96кГц. Не лучше ли будет разместить на плате один такой сумматор с общей для всех источников линией MClock, которому все наводки в компе будут нипочём? Разместить его поближе к заднему брекету с разъёмами, и после него останется применить всего ОДИН, но качественный ЦАП, какой-нибудь 20-битный, SNR не менее 110 дБ. Ну и весь аналоговый тракт будет максимально коротким и максимально изолированным, бережно защищённым.

Или всё-таки на каждый горшок своя крышка, т.е. свой ЦАП, перетяжка линий к одному месту, суммация всех ЦАПов обычным стереомикшером на плате? Вообще, например, с экономической точки зрения что выйдет дороже, несколько ЦАПов с аналоговым микшером, или I2S-микшер и один ЦАП?
<<Назад  Вперед>> Страницы: 1 2 3 4 5 6 7 8 9
Печать
Полигон-2 »   IBM PC-совместимое. До 2000 года включительно »   Это не "дура", это FMonster
RSS

1 посетитель просмотрел эту тему за последние 15 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS