PDA

Просмотр полной версии : Дешифрация AY\YM



Orionsoft
18.07.2006, 02:24
извиняюсь что то у меня overload наступил (sharik over rolik).

я правильно понимаю, что сигнал
BDIR (high) это : (BFFD) 1011 1111 1111 1101

M1 (high) *
/IORQ (low) *
RD (high) *
A14 (high) *
A1 (high)

а сигнал BC1 (high) (FFFD) 1111 1111 1111 1101
это :
M1 (high) *
/IORQ (low) *
A1 (high) *
A14 (high) *
A15 (high)

или всё же рассуждаю я неправильно .. неправильно (отказ блока логики ) ?
поправте меня пожалуйста , а то я с этим паласмом и win-куплом с ума сойду

:v2_cry: :v2_cry: :v2_scare: :v2_mad: :v2_mad: :v2_mad: :v2_down: :v2_blink:

jtn
18.07.2006, 11:06
нет, не правильно.
при обращении к портам всегда: A15=1, A1=0, M1=1, /IORQ=0
запись в #FFFD: BC1=1, BDIR=1
A14=1, /RD=1 (/WR=0)
чтение #FFFD: BC1=1, BDIR=0
A14=1, /RD=0 (/WR=1)
запись в #BFFD: BC1=0, BDIR=1
A14=0, /RD=1 (/WR=0)

Mick
18.07.2006, 19:39
поправте меня пожалуйста , а то я с этим паласмом и win-куплом с ума сойду


Для простоты понятия ты закинь туда формулу из любого компа. В симуляторе посмотришь.

У меня выглядит так все на запись:

IOWR2 = WR # IORQ # A0 # !A1;

BDIR = !(IOWR2 # A15);
BC1 = !(!(A14&A15) # IOWR2);

Или приблизительно так. ;)


А ты случаем RAS и CAS в PALку не запихивал?

Orionsoft
18.07.2006, 21:52
Для простоты понятия ты закинь туда формулу из любого компа. В симуляторе посмотришь.
у меня cupl жутко глючит , непойму в чём дело , говорит не может загрузить LD.pld и всё закрывается


А ты случаем RAS и CAS в PALку не запихивал?
не , как видишь руки пока не дошли , НО тк в зелёном скорпе это сделано
а ихняя альтера практически аналог 20v8 кажется , то это вполне реально .

P.S. пора бы корифеям pal&gal&cpld открыть в ветке железо подветку
изучаем GAL на основе спековскаго железа и учить , учить , учить !
а то понимаеш понаставят в атм-турбы GAL16v8 :v2_tong2:

CHRV
18.07.2006, 22:34
P.S. пора бы корифеям pal&gal&cpld открыть в ветке железо подветку
изучаем GAL на основе спековскаго железа и учить , учить , учить !
а то понимаеш понаставят в атм-турбы GAL16v8 :v2_tong2:
В номере №3 NedoPC есть моя статья как работать с матрицами серий EPM7xxx Altera и ATF15xx Atmel.

Mick
18.07.2006, 22:48
у меня cupl жутко глючит , непойму в чём дело , говорит не может загрузить LD.pld и всё закрывается


Да это у него часто получается, когда ошибку допустишь.
Я сделал проще - взял шапку из его примеров. Кстати ты можешь попробовать скомпилить мой пример из ветки про ZX-777. Он уж точно рабочий. А вообще В Atmele эту прогу писали какие то студенты - падает она часто (Runtime error).


а ихняя альтера практически аналог 20v8 кажется , то это вполне реально .

Насколько я знаю - у 20V8 ног 24, а в Скорпе 20 - 16V8.



P.S. пора бы корифеям pal&gal&cpld открыть в ветке железо подветку
изучаем GAL на основе спековскаго железа и учить , учить , учить !
а то понимаеш понаставят в атм-турбы GAL16v8 :v2_tong2:

Да бы не помешала помощь знатоков :v2_jawdr: . Я вот уперся в сигнал RAS и CPU CLC.

newart
18.07.2006, 22:53
Кто тут хулиганит и девает мессаги (пускай чуток и не в тему) неведома куда? :confused:

Mick
18.07.2006, 22:59
Кто тут хулиганит и девает мессаги (пускай чуток и не в тему) неведома куда? :confused:
Посмотри в AY-плеер. Это модератор делает свою работу, очищает от мусора темы. :v2_clapp:

jtn
19.07.2006, 09:29
Или приблизительно так.
типичная ошибка. при дешифрации портов надо использовать или пару /rd-/wr или один из этих сигналов совместно с M1

Mick
19.07.2006, 19:09
типичная ошибка. при дешифрации портов надо использовать или пару /rd-/wr или один из этих сигналов совместно с M1

Ничего подобного - в моем компе M1даже близко не стоял в дешифрации - посмотри схему компа ZX-777. Так что типичная ошибка -делать поспешные выводы. ;)

icebear
19.07.2006, 19:11
Ничего подобного - в моем компе M1даже близко не стоял в дешифрации - посмотри схему компа ZX-777. Так что типичная ошибка -делать поспешные выводы. ;)

И на прерываниях всё ровно? ;)

Mick
19.07.2006, 19:17
И на прерываниях всё ровно? ;)

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

jtn
19.07.2006, 19:35
хехе, посмеялся от души. книжку по Z80 в зубы и вперед %)
или может всё-таки вежливо попросишь объяснить в чем дело?

Mick
19.07.2006, 22:36
хехе, посмеялся от души. книжку по Z80 в зубы и вперед %)
или может всё-таки вежливо попросишь объяснить в чем дело?

Книжкой в зубы это интересно - обычноя я ее глазами читаю, а не пробую на зуб.
Если хочется - объясни, а также что произойдет если не будет использоваться M1. И еще объясни как у меня комп работает. Возможно я чего то не понимаю.

jtn
19.07.2006, 22:56
сигнал /iorq активен не только при выборке портов, но также и в цикле подтверждения прерывания (там /rd=1/wr=1, зато M1=0). поэтому используя только один из сигналов /rd или /wr для дешифрации портов будем также и получать запрос к ним и в цикле подтверждения (в нем процессор получает с ШД младший байт вектора прерывания, старший в рег.I, это справедливо только в режиме IM2).
итак имеем:
1) /iorq /rd в схеме дешифрации, тогда в режиме подтверждения
/iorq=0 /rd=1 => схема будет думать, что происходит запись в устройство (при условии что на ША будет соотв. адрес) => в какой-то порт AY запишется черт знает что
2) /iorq=0 /wr=1 => схема думает, что происходит чтение. и тогда на ШД выставится значение неизвестно чего - вектор будет нарушен и при отсутствии таблички в 257байт в программе, будем иметь цветные квадратики.
А вот и пример:
http://zx.pk.ru/showthread.php?t=1583

Mick
19.07.2006, 23:28
сигнал /iorq активен не только при выборке портов, но также и в цикле подтверждения прерывания (там /rd=1/wr=1, зато M1=0). поэтому используя только один из сигналов /rd или /wr для дешифрации портов будем также и получать запрос к ним и в цикле подтверждения (в нем процессор получает с ШД младший байт вектора прерывания, старший в рег.I, это справедливо только в режиме IM2).
итак имеем:
1) /iorq /rd в схеме дешифрации, тогда в режиме подтверждения
/iorq=0 /rd=1 => схема будет думать, что происходит запись в устройство (при условии что на ША будет соотв. адрес) => в какой-то порт AY запишется черт знает что
2) /iorq=0 /wr=1 => схема думает, что происходит чтение. и тогда на ШД выставится значение неизвестно чего - вектор будет нарушен и при отсутствии таблички в 257байт в программе, будем иметь цветные квадратики.
А вот и пример:
http://zx.pk.ru/showthread.php?t=1583

Это я и так знаю. Но если посмотришь схему компа, подключение микросхемы DD44(ИД4) там используется сигналы WR и RD. Так что если я в формуле и не написал сигнал RD/, то это значит опечатался. А использование в дешифрации M1 тем более, когда запихиваешь ее в 20 ногую PALку, не целесообразно.
Так что не будем горячится и указывать на ошибки. Лучше бы взял и поправил формулу.

jtn
19.07.2006, 23:46
Так что не будем горячится и указывать на ошибки. Лучше бы взял и поправил формулу.в формулах не шарю, а схему еще искать надо %)

Orionsoft
20.07.2006, 03:15
а вы мне поможете если я вам конкретную схему предоставлю ...а то у одного ZX-777 , а у другого другой комп , у третьего мануал от z80 ...?
Пожалуйста !?

icebear
20.07.2006, 11:32
а вы мне поможете если я вам конкретную схему предоставлю ...а то у одного ZX-777 , а у другого другой комп , у третьего мануал от z80 ...?
Пожалуйста !?

Конечно поможем, какой вопрос.

Orionsoft
21.07.2006, 03:54
Вобщем у меня примерно такая 48-ая схема...
на схеме не показано :
1) озу с 4000 по 7fff (двухпортовое озу , экран ведь отрисовывать надо!
2) дешифрация клавиатуры (и tape потроха ) - их полноценно заменит контроллер by caro.
3) что то еще очень важное , о чём я незнал или забыл :v2_conf2:

основная идея - запихнуть всю дешифрацию в GAL 22v10
из дополнительных (для 48k) деталей - ay\ym и covox .

jtn
21.07.2006, 09:24
не совсем понял зачем нужно 48к.. ну ладно.
по поводу временых задержек - такой момент. во всех клонах (где как правило dram) для записи/чтения используют не /wr, а /rd, так как он приходит на полтакта (такт?) раньше /wr. может в данном случае без разницы, но попробовать стоит.

Orionsoft
21.07.2006, 12:40
во всех клонах (где как правило dram)
а сдесь попытка сделать на sram и dualport sram

jtn
21.07.2006, 14:23
dualport sramа смысл? вон в пентагоне память работает на тех же 3,5мгц, что и Z80 и wait'ов нету

Orionsoft
21.07.2006, 14:27
а смысл?
потому-что целевое устройство видеоотображения - от vga монитора до LCD дисплея (1 bit и 8 bit)

jtn
21.07.2006, 14:39
т.е. грубо говоря видеоконтроллер будет работать асинхронно с Z80? (такое кстати есть на Profi 3+)

Orionsoft
21.07.2006, 19:46
абсолютно асинхронно =)

Mick
21.07.2006, 19:51
Вобщем у меня примерно такая 48-ая схема...
на схеме не показано :
1) озу с 4000 по 7fff (двухпортовое озу , экран ведь отрисовывать надо!
2) дешифрация клавиатуры (и tape потроха ) - их полноценно заменит контроллер by caro.
3) что то еще очень важное , о чём я незнал или забыл :v2_conf2:

основная идея - запихнуть всю дешифрацию в GAL 22v10
из дополнительных (для 48k) деталей - ay\ym и covox .

Так вопрос в чем? Порты какие используются?
Если выбор памяти, то приблизительно так, чувствую сейчас гневные письма о моем ламерстве в области формулописании будут ;) :
ROM = A14 # A15 # MREQ; это по твоей схеме (или A14 # A15 # MREQ # RD, если пользуешься одним сигналом);
RAM = !A15 # A14 # MREQ; ОЗУ 8000h - FFFFh
VRAM = !A14 # A15 # MREQ; ОЗУ 4000h - 7FFFh

Orionsoft
21.07.2006, 20:49
Порты какие используются?
AY BFFD и 7FFD
Covox FB
ну и есть большое желание прилепить вв55
чтоб 0 порт был кемпстоном =)

Mick
21.07.2006, 20:54
AY BFFD и 7FFD
Covox FB
ну и есть большое желание прилепить вв55
чтоб 0 порт был кемпстоном =)

AY - точно 7FFD или все же FFFD?

Ладно попробую накидать, самому придется скоро дешифратор в компе запихивать.

Кстати о Covox IOWRFB = IORQ # !RD # !A3 # A2 # !A1 # !A0;
правда запись будет происходит при обращении к портам, оканчивающимся на xxxxBh. Я там видел адреса с крестиками, ну и подумал, что это будет A3 и A2.

Попутно вопрос - случаем не порт FBh, 7Bh и 5Bh отвечают за принтер ?

Orionsoft
21.07.2006, 21:06
AY - точно 7FFD или все же FFFD?
ой , нет конечно

BFFD и FFFD конечно-же

Mick
21.07.2006, 21:10
ой , нет конечно

BFFD и FFFD конечно-же

А зачем тебе сигнал RESET в PAL-ке.

Orionsoft
21.07.2006, 21:10
случаем не порт FBh
вроде как в пентагоне128 FB - принтерный порт

Mick
21.07.2006, 21:12
вроде как в пентагоне128 FB - принтерный порт

Вот и я говорю, по какому то порту XBh происходит переключение страниц в ПЗУ.
У тебя конфликта не будет?

Orionsoft
21.07.2006, 21:14
А зачем тебе сигнал RESET в PAL-ке.
вот и я думаю , может он не нужен , была идея перезапускать машину при обращенни к каким-то портам ... но наверно это не надо.

jtn
21.07.2006, 21:15
Вот и я говорю, по какому то порту XBh происходит переключение страниц в ПЗУ.
У тебя конфликта не будет?in a,(FB) - включить принтерное пзу (кеш), in a,(7B) - выключить

Mick
21.07.2006, 21:17
in a,(FB) - включить принтерное пзу (кеш), in a,(7B) - выключить

Ну тогда конфликта не будет. :)

Mick
21.07.2006, 21:20
вот и я думаю , может он не нужен , была идея перезапускать машину при обращенни к каким-то портам ... но наверно это не надо.
А у тебя выхода помоему для этого не хватает и для ВВ55, если какой нибудь из сигналов MREQ, IORQ, RD или WR не перенесешь вместо Ах.

Orionsoft
21.07.2006, 23:27
У тебя конфликта не будет?
нет , так как по схеме все лишние адреса на пзу сидят на земле

Mick
22.07.2006, 13:16
Вот примерно будет выглядеть так обращение к AY:

BC1 - он же FFFDh на чтение и запись:
BC1 = !(A15 & A14 & A3 & A2 & A0) # A1 # IORQ # ! (WR $ RD);

BDIR - он же BFFDh на запись:
BDIR = !(A15 & A3 & A2 & A0 & RD) # A14 # A1 # WR # IORQ;

По моему так. Правда обращение к AY будет в достаточно большом диапазоне адресов, которые заканчиваются на Dh. Но зато у тебя освобождаются несколько входов - и взаиморотации с управляющими сигналами, описанными выше, ты освободишь себе несколько выходов.

Orionsoft
22.07.2006, 16:40
BC1 = !(A15 & A14 & A3 & A2 & A0) # A1 # IORQ # ! (WR $ RD);


$ - это какая логическая функция ??

jtn
22.07.2006, 18:16
в младшем байте адреса портов AY (равно как и #7ffd) дешифруется только A1 !!

Mick
22.07.2006, 19:24
$ - это какая логическая функция ??

Это - Исключающее ИЛИ (XOR - по нашему). Так в WinCupl записывается.
Я там после восклицательного знака пробел поставил - его не должно быть, впрочем WinCupl сообщит об ошибке.

Mick
22.07.2006, 19:28
в младшем байте адреса портов AY (равно как и #7ffd) дешифруется только A1 !!

А что изменится если буду еще проверять и A0, A2 и A3?. Раз у человека будут заведены адреса (по крайней мере у него есть A0) то для записи в PALку это ни чего не изменит. Неясен смысл замечания. Я лично бы то же так сделал - проверял бы и A0.

Orionsoft
22.07.2006, 19:30
Это - Исключающее ИЛИ (XOR - по нашему).
я так и подумал =)

Mick
22.07.2006, 19:39
я так и подумал =)

Если не пользоваться адресами A10 и т.д. а использовать неполную дешифрацию - адресов 6 (A15, A14, A3, A2, A1, A0) или 4(кроме A3 и A2) - то вполне тебе место хватит и для управлением сбросом компьютера и ВВ55. :)

Orionsoft
22.07.2006, 20:38
вполне тебе место хватит и для управлением сбросом компьютера и ВВ55.
пока отработаю етот вариант ...там посмотрим

jtn
23.07.2006, 09:46
А что изменится если буду еще проверять и A0, A2 и A3?вопрос конечно спорный. я бы делал всё как в пентагоне, а для борьбы с такой неполной дешифрацией придуман /iorqge

Mick
23.07.2006, 13:19
вопрос конечно спорный. я бы делал всё как в пентагоне, а для борьбы с такой неполной дешифрацией придуман /iorqge

Работать будет все и так, если конечно не найдутся извращенцы, пользующиеся неполной дешифрации, обращаются к AY не по стандартным адресам. К тому же больше адресных линий - больше портов на будущее, чтобы не городить огород.

Для примера. Если дешифрацию производить по A15, A14, A1 и A0, то к АУ можно обращаться как по BFFDh и FFFDh, так и BFF1h, FFF1h, BFF5h, FFF5h,BFF9h, FFF9h и т.д. А если убрать A0 - то глаза так и загоряться у извращенцев в подкладывании "хрюшек". ;)
Так что много адресов не бывает.

jtn
23.07.2006, 15:29
опять меня не поняли. ну и черт с ними и портами и извращенцами и тех кто их придумал

Mick
23.07.2006, 17:04
опять меня не поняли. ну и черт с ними и портами и извращенцами и тех кто их придумал

Да ты не ругайся, а объясни свою мысль. Дело в том, что все Спекки кто как мог так и делал - главное чтобы был результат - отсюда великое множество реализаций одного и тогоже. С другой стороны я писал примеры не для того чтобы это приняли за правильное решение - это всего лишь пример реализации того, что хотел бы увидеть Orionsoft. А как он решит - это его личное дело. Мы всего лишь помогаем в меру своей образованнности. Это были мои предложения. Ты предложи свои, может они будут более удачными.

tmp_online
23.07.2006, 19:26
WinCupl - это что такое? И где можно скачать, чтобы понять, что это такое?

Mick
23.07.2006, 20:46
WinCupl - это что такое? И где можно скачать, чтобы понять, что это такое?

Это программа для компиляции и симуляции программируемых логических матриц типа PAL, GAL и т.д. Это когда кучу логики можно запихать в одну микруху.
Скачать можно с сайта www.atmel.com правда надо зарегистрироваться и тогда получишь ключик и бесплатно скачаешь :) .