PDA

Просмотр полной версии : Подключение эмулятора AY-AVR к Вектору



marinovsoft
22.09.2013, 18:31
Всем привет!
Решил подключить к Вектору музыкальный сопроцессор, а точнее, за неимением оного - его эмулятор на AVR. Эмулятор собрал, от PC через COM порт все отлично работает.
http://s017.radikal.ru/i402/1309/fc/3e86d45ed8d4t.jpg (http://radikal.ru/fp/5dbebfb17dc742878f99c34f6c213fbf)

На отдельной плате решил сделать адаптер подключения, за основу взял эту схему (во вложении), получилось как-то так.
http://s017.radikal.ru/i421/1309/5e/2ab8e2a7e6a7t.jpg (http://radikal.ru/fp/939aef9ffb4b48a89171b3576fbaba9b)
Микросхемы использовал такие
7421N -> К555ЛИ6
74138N -> К1533ИД7
74LS00 -> К155ЛА3

Проверял на файле TESTAY.ROM (во вложении)

В общем-то звук есть, но не такой, как должен быть. Если слышали как звучит "битый" MP3, то это примерно то же самое. То есть, музыка слышна и узнаваема, но все сопровождается артефактами. Решил еще раз проверить на замыкание сигнальных линий между собой - все ОК.

Дайте идею.

PS. Если есть необходимость - выложу исходники проектов в формате Eagle.

Syntal
23.09.2013, 12:54
Дайте идею.


Я собирал по схеме из вложения, всё работает нормально, правда с реальным муз. процессором. Если есть возможность, проверь свой эмуль с этой схемой, а там уж можно дальше думать.

dbk
23.09.2013, 21:54
marinovsoft, если не сложно, то опубликуйте пожалуйста. Заранее спасибо.

marinovsoft
24.09.2013, 05:24
Файлы проектов.

Землю между адаптером и эмулятором кинуть отдельным проводом.

marinovsoft
29.09.2013, 21:31
Отключил от системного разъема первый и второй вывод К1533ИД7, второй вывод "посадил" на землю. Музыка заиграла как надо.
Какие будут мысли?

marinovsoft
04.10.2013, 21:02
Коллеги подсобите бинарниками, которые могут помигать сетодиодом с частотой 0,2-0,5 гц на 35 и 37 выводах системного порта? У меня больше идей нет.

Ramiros
06.10.2013, 08:02
Проще всего накатать маленькую програмку в кодах для мигания любым портом, прям в мониторе-отладчике. Еще были какие то тесты в программе "Тест устройств", но там помоему только порт ПУ можно тестить. ;)

еще с портом ВУ у вектора есть какой то заводской косяк, для исправления которого нужно в векторе что то паять... подробности уже непомню :(

marinovsoft
06.10.2013, 18:28
Кусок схемы
http://s019.radikal.ru/i606/1310/ff/e9434055f018t.jpg (http://radikal.ru/fp/6db4fe9ecab44cf59cf4e63adedcea66)

При этом звук ВИ53 играет нормально.

Осциллографом не смотрел, да и не знаю что должно быть на 35 и 37 выводах ПУ.

Еще оказалось, что если сделать так как написано в 5 сообщении, то в некоторых демках звук все-таки "неправильный".

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

ivagor
07.10.2013, 09:23
что должно быть на 35 и 37 выводах ПУ.
ПУ или ВУ?

marinovsoft
07.10.2013, 09:26
Ошибочка вышла, ВУ, конечно. На фрагменте схемы он же.

ivagor
11.10.2013, 09:53
Нечто отдаленно похожее (http://files.mail.ru/0D2D9AD898484429AD4FC4BB09147420)
В комплекте сторонняя программа (tasm), поэтому на форум не стал выкладывать. Если что-то нужно поменять - редактируем asmовский файл и запускаем bat - получаем обновленный rom.
В строке отмеченной тремя восклицательными !!! можно поменять out на in
Номер порта конечно тоже можно поменять
В комментариях написано, что можно заменить
lxi b,14423 ;примерно раз в 2 сек
на
lxi b,36058 ;примерно раз в 5 сек

Для преобразования rom в wav удобно использовать Rom2Wav (http://vector06c.narod.ru/emul/Rom2Wav21.rar)

marinovsoft
11.10.2013, 15:55
Спасибо, проверю при первой возможности.

marinovsoft
13.10.2013, 17:50
Сделал так


begin:
out 15h
jmp begin

Получил на осциллографе импульсы с периодом следования 8 мкс, длительность импульса 0,4 мкс, не маловато ли?

ivagor
14.10.2013, 08:30
импульсы с периодом следования 8 мкс, длительность импульса 0,4 мкс, не маловато ли?
Длительность такта=1/3e6=333,(3) нс * 24 такта = как раз период 8 мкс
Насчет длительности импульса (получается он на 1/5 длиннее такта?) интересно что скажут железячники.

marinovsoft
14.10.2013, 10:27
Если есть необходимость - посмотрю на меньшем периоде развертки и уточню длительность импульса. Достаточен ли импульс такой длительности для работы настоящего AY? Или это AY-EMU так себя ведет? Или все-таки проблемы в железе Вектора?

Ramiros
14.10.2013, 12:51
atmega на какой частоте работает?
какая версия прошивки?

marinovsoft
14.10.2013, 12:56
На 27 Мгц. Прошивка из файла http://vector06c.narod.ru/emul/AY_AVR_Release.zip

Ramiros
15.10.2013, 08:27
По идее должно работать, у меня на спектруме заработало нормально, хотя там проц на 3.5МГц пашет.

marinovsoft
15.10.2013, 09:31
К сожалению работает не совсем корректно.

ivagor
15.10.2013, 09:49
У z80, если мне не изменяет склероз, длительность сигнала записи в порт 2 (или даже 3) такта, может это сказывается.

Ramiros
15.10.2013, 12:39
А у ВМ80 сколько? или лучше в мкс. сразу?

ivagor
15.10.2013, 13:16
надеюсь maronovsoft не будет против цитаты

длительность импульса 0,4 мкс

Ramiros
15.10.2013, 16:01
0.4 мкс. должно хватать, но мало ли, попробуй поставить кварц на атмегу 32МГц, если глюки пропадут, значит просто атмега неуспевает за сигналами.

marinovsoft
10.03.2014, 13:38
Увеличил длительность импульса более чем в 10 раз (до 0,5 мс) с помощью ждущего мультивибратора (не двух свободных элементах ЛА3)
http://vrtp.ru/uploads/post-82-1227722852.jpg
артефакты изредка проскакивают, зато fancy.rom нормально играть стал (против временного решения в #5 посте).

Что-то явно не так работает.

marinovsoft
16.11.2014, 18:22
Попробовал взять сигнал записи в порт не с системного разъема. Взял с вывода 4 D15.2 - уже лучше.

Но индикаторы в демке
http://asdasd.rpg.fi/~svo/scalar/ware/339/ не работают

http://zx-pk.ru/attachment.php?attachmentid=49941&stc=1&d=1416150871

KTSerg
17.11.2014, 18:34
А исходники на Asm-e или Си от этого чуда есть?

Я про исходник спросил к чему. Предполагаю, что чтение шины "эмулятором" происходит по прерыванию, которое вызывается сигналом ЗПВВ. Но для того, чтобы у процессора дошли "руки" до чтения шины, ему нужно сначала закончить операцию, которую он выполняет, потом записать в стек адрес следующей операции, потом перейти к выполнению процедуры на векторе прерывания, и возможно даже перейти к подпрограмме, которая и считает данные с шины... А это всё драгоценное время, и не факт, что на шине к тому времени будут актуальные данные.
Не помню уже, читается ли чего-нибудь из этого "музыкального сопроцессора". Если не читается, то было-бы просто класс. Нужно просто на шине между портом и "эмулятором" поставить "регистр с защелкой", который по сигналу ЗПВВ будет фиксировать состояние шины (до нового ЗПВВ), и пусть "эмулятор" считывает шину хоть с какой задержкой (утрирую), данные на шине будут актуальны значительно дольше.
А вот если ещё и читается чего-сь, вот тут уже сложнее... :(

marinovsoft
21.11.2014, 19:18
Подизасмил демку из моего предыдущего поста - из порта реально читается. Перекомпилировать пока не получилось (асм i8080 для меня как темный лес), но там сразу после записи в 15h порт следует чтение из 14h порта.
Реплика из http://www.avray.ru тоже не справляется

KTSerg
22.11.2014, 22:31
Да, посмотрел дешифратор адреса, ЧТВВ используется, значит для "ускорения" один выход - ставить два регистра :)
У AVR со схемы с первого сообщения, куча портов, можно один использовать для чтения из промежуточного регистра, другой для записи во второй регистр данных которые могут быть запрошены из эмулятора :)
Но всё снова упирается в наличие исходников, которые нужно подправить...

Кстати, есть ещё одно подозрение, а успевает ли эмулятор полностью обработать все операции с изменяемыми "регистрами" при их быстром (с минимальными интервалами) изменении? Организован ли в софте FIFO буфер для принимаемых значений регистров?
Может "артефакты" следствие того, что эмулятор не успев обработать изменение одного "регистра", уже получает значение для следующего "регистра"?

Ramiros
23.11.2014, 20:19
Исходники раньше лежали на сайте Тимохи, теперь их нигде нет кроме как у меня, надо будет куда нить выложить...
на какую атмегу нужен исходник?
емуль написан на алгоритм билдере.

KTSerg
24.11.2014, 18:31
...
на какую атмегу нужен исходник?
емуль написан на алгоритм билдере.
В первом сообщении в схеме Mega8515 вроде, вот для неё.
У неё портов много :)
А при компиляции, "нормальные" (asm/си) листинги создаёт?

marinovsoft
24.11.2014, 18:49
Ну, вот здесь есть копия
http://www.avray.ru/оригинальная-версия-эмулятора/