Важная информация

User Tag List

Страница 4 из 7 ПерваяПервая 1234567 ПоследняяПоследняя
Показано с 31 по 40 из 68

Тема: МСЗ-1

  1. #31
    Guru
    Регистрация
    26.02.2010
    Адрес
    Запорожье
    Сообщений
    2,171
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    толком ничего небыло.
    .

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32
    Member
    Регистрация
    30.05.2009
    Адрес
    Novosibirsk, Russia
    Сообщений
    86
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Давайте начнём с чего нибудь более простого и понятного, например с "конца".

    ЦАП, например, какой максимальной разрядности есть отечественные ЦАПы, реализованные в виде одной микросхемы? И можно ли их разрядность как-то наращивать увеличением числа микросхем? А то у нас всё как-то аморфно и расплывчато.
    Мы в своё время игрались с 572ПА1
    https://sapr.asvcorp.ru/libr/detail?comp=5438&tcid=95

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    В общим мысли вслух, но надо переходить от чистой теории, к немного практике, а теорию восполнять, уже к конкретному решению, которое мы определили. Например, давайте определимся с разрядностью 8-, 12-, 16-, 24- или 32-, что бы этот вопрос закрыть навсегда.
    Восемь. Если будем делать 4 канала, то получится четыре канала по 8 бит.

    Надо для начала программную часть прикинуть - что в итоге сможем получить. То есть прикинуть код семплера и по тактам посмотреть что же у нас за звук в итоге получится. Просто пищалку делать неинтересно.
    Музей цифровой археологии: http://www.asvcorp.ru/darch/
    Занимаюсь разработкой облачного САПР для электронщиков: https://sapr.asvcorp.ru/

  4. #33
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,116
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    655
    Поблагодарили
    402 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прикинуть можно с довольно большой точностью в эмуляторе. Эмулятор VV поддерживает Covox, например. Про b2m не уверен, но наверняка в нем тоже есть Covox, надо только поискать
    Больше игр нет

  5. #34
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,116
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    655
    Поблагодарили
    402 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  6. #35
    Member
    Регистрация
    30.05.2009
    Адрес
    Novosibirsk, Russia
    Сообщений
    86
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прикинул код для воспроизведения семплов - то, от чего придётся отталкиваться. Всё выглядит не так страшно, как казалось поначалу.

    Код:
    DAC EQU #####
    CMD EQU #####
    
    play_sample:
    	lxi h, 0		; регистр стека будет использоваться
    	dad sp			; не по-назначению, поэтому сохраняем его
    	shsl spsav
    
    	lhld sample_start	; получаем адрес начала семпла
    	mvi e, 0		; DE - младшие 16 бит 24-битной "фазы"
    	mov d, l
    	mov c, h		; C - старшие 8 бит 24-битной "фазы"
    
    	lhld sample_end		; получаем адрес конца семпла
    	mov b, h		; адрес конца семпла должен быть
    				; выровнен по концу 256-байтного блока!
    				; т.е. адрес последнего байта семпла
    				; должен всегда быть XXFFh
    				; это даёт возможность проверки границы
    				; одним 8-разрядным сравнением
    
    	lhld pitch		; значение, определяющее высоту тона
    				; воспроизведения семпла. к примеру,
    				; если оно равно 100h, семпл воспроизводится
    				; побайтно, если равно 200h - семпл
    				; воспроизводится через один байт
    				; если равно 80h - семпл воспроизводится
    				; в два раза медленнее (каждый отсчёт
    				; выводится дважды)
    
    	sphl			; SP будет использован для хранения
    				; этой величины, чтобы всё было
    				; на регистрах
    
    loop:
    	in CMD		; 10 ; это "заглушка" проверки того,
    	ora a		; 4  ; что надо прекращать воспроизводить ноту
    	jm over		; 10
    
    	xchg		; 4  ; складываем младшие 16 разрядов "фазы"
    	dad sp		; 10 ; со значением pitch
    	xchg		; 4  ; возвращаем результат в DE
    	mov a, c	; 4  ; прибавляем перенос к старшим 8 разрядам
    	aci 0		; 7  ; которые хранятся в регистре C
    	mov c, a	; 4 
    
    	mov l, d	; 4  ; старшие 16 разрядов "фазы" - это адрес
    	mov h, c	; 4  ; очередного отсчёта семпла для вывода в ЦАП
    
    	cmp b		; 4  ; проверяем, что семпл ещё не закончился
    	jnc over	; 10 ; (про выравнивание семпла написано выше)
    			     ; это то самое место, где хорошо экономятся
    			     ; такты
    
    	mov a, m	; 7  ; получаем значение текущего отсчёта
    	out DAC		; 10 ; выводим его в ЦАП
    	jmp loop	; 10 ; повторяем цикл
    
    over:
    	lhld spsav
    	sphl
    	ret
    
    spsav: dw 0
    
    sample_start: dw 0
    sample_end: dw 0
    pitch: dw 0
    
    end
    За счёт некоторого количества фокусов цикл воспроизведения семпла занимает 106 тактов (если с тактами не напутал и если в коде нет ошибок), что при тактовой 2 Мгц даёт частоту дискретизации 18867 Гц, а при тактовой 2,5 Мгц - 23584 Гц.

    Кстати не помню XRA A - чистит бит переноса или нет. Если не чистит,
    то можно выиграть три такта на сложении переноса:
    Код:
    	xra a		; 4  ; прибавляем перенос к старшим 8 разрядам
    	adc c		; 4  ; которые хранятся в регистре C
    	mov c, a	; 4
    Учитывая, что у перкуссиям питч не нужен - всякие хэты можно выдавать и на более высокой частоте.
    Музей цифровой археологии: http://www.asvcorp.ru/darch/
    Занимаюсь разработкой облачного САПР для электронщиков: https://sapr.asvcorp.ru/

  7. #36
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,116
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    655
    Поблагодарили
    402 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от hdc Посмотреть сообщение
    Кстати не помню XRA A - чистит бит переноса или нет.
    Чистит.
    Больше игр нет

  8. #37
    Member
    Регистрация
    30.05.2009
    Адрес
    Novosibirsk, Russia
    Сообщений
    86
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    Чистит.
    Тогда, если в "нормальном" состоянии порт CMD будет возвращать ноль,
    то это можно использовать для оптимизации на целых семь тактов - предварительно чистить аккумулятор не надо будет.
    Музей цифровой археологии: http://www.asvcorp.ru/darch/
    Занимаюсь разработкой облачного САПР для электронщиков: https://sapr.asvcorp.ru/

  9. #38
    Member
    Регистрация
    30.05.2009
    Адрес
    Novosibirsk, Russia
    Сообщений
    86
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    hdc - я так понял Вы прикинули и всё как вроде нормально при тактовой частоте 2 МГц.
    Не то, чтобы нормально, но достаточно, чтобы имело смысл этим заниматься. Звук, конечно, будет глуховат. 2.5 МГц звук сделали бы ощутимо звонче.

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Так же объясните, зачем нам 4 канала, что это даёт и для чего. Я так понял эти четыре канала будут представлять собой 4 шт. ЦПА, например КР572ПА1 с операционником на выходе?
    Количество каналов в данном случае можно условно рассматривать как количество одновременно звучащих инструментов. Четыре канала - это в каком-то роде необходимый минимум. "Типовая" раскладка: один канал - аккорды (семплы, в которых сразу записано звучание аккордов), второй - сольный, третий - бас, четвёртый - ударные.

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

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Так же я решил потихонечку начинать чертить электрическую принципиальную схему. Но тут вопрос появился. Как мы будем связываться с центральным процессором, я так понял для этих целей нам вполне хватит ППА КР580ВВ55А.
    Такой способ подключения как минимум обеспечит облегчённую совмещаемость разрабатываемой железки с другими компьютерами.
    Сколько разрядов потребуется - станет видно в процессе работы.

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Схема которого описана в красной книжке на страницах 112, 113. Если нам его достаточно и будет применяться именно эта схема, то мне немного не понятно как к нему будет обращаться центральный процессор.

    Насколько я понимаю у нас в микросхеме ВВ55 имеется 4 доступных регистра, регистр порта А, регистр порта В, регистр порта С и регистр управляющего слова (РУС). Соответственно для центрального процессора они доступны как внешние порты и у нас должно быть как минимум 4 адреса порта. Соответственно как поставить поставить перемычки и какие номера портов, каким регистрам будут соответствовать, объясните пожалуйста, а то я запутался.
    У ВМ80 всего может быть 256 портов (для чего требуется 8 адресных линий. На схеме это A0 - A7).

    У ВВ55 4 порта, поэтому две младшие адресные линии уходят прямо на него (A0, A1).

    Остальные линии идут на дешифратор адреса.

    Чтобы произошла выборка ВВ55 линии A4 - A7 обязательно должны иметь нулевое значение.

    В зависимости от установленных перемычек будет требоваться разное значение линий A2 и A3. Если они пропускаются через инверторы D14,D15 - то ВВ55 будет активироваться только когда сигналы A2 и A3 равны нулю. В этом случае порты ВВ55 расположены по адресу 00h, 01h, 02h и 03h.

    Если A2 и A3 подаются напрямую на D2, то то ВВ55 будет активироваться только когда сигналы A2 и A3 равны единице. В этом случае порты ВВ55 расположены по адресу 0ch, 0dh, 0eh и 0fh.

    Как перемычки установлены на схеме - порты расположены по адресам 04h, 05h, 06h и 07h. (подпись на схеме по поводу адреса похоже содержит ошибку).

    По поводу памяти - напрашивается объём порядка 512 кб, в идеале доступной сразу всем четырём процессорам. Т.е. смотреть надо в сторону РУ7. Процессоры не должны тормозить друг друга и регенерация памяти не должна тормозить процессор - отличная головоломка на мой взгляд.
    Музей цифровой археологии: http://www.asvcorp.ru/darch/
    Занимаюсь разработкой облачного САПР для электронщиков: https://sapr.asvcorp.ru/

  10. #39
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,116
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    655
    Поблагодарили
    402 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По-моему система с четырьмя ВМ80 обречена, нельзя такие задачи решать в лоб: прирост пользы линейный, а рост сложности экспоненциальный.

    Выборка семплов из памяти и выдача их на ЦАП ничем принципиально не отличается от схемы обновления экрана в любом 8-битном компьютере. Например, вот Вектор: в нем 4 банка памяти, из них одновременно выбираются байты для 4-х экранных плоскостей. Это те же 4 канала звука. Разница в том, что для видео адреса считаются один за другим, а для звука надо выбирать их согласно значению аккумулятора фазы, или по таблице.
    Больше игр нет

  11. #40
    Member
    Регистрация
    30.05.2009
    Адрес
    Novosibirsk, Russia
    Сообщений
    86
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    По-моему система с четырьмя ВМ80 обречена, нельзя такие задачи решать в лоб: прирост пользы линейный, а рост сложности экспоненциальный.

    Выборка семплов из памяти и выдача их на ЦАП ничем принципиально не отличается от схемы обновления экрана в любом 8-битном компьютере. Например, вот Вектор: в нем 4 банка памяти, из них одновременно выбираются байты для 4-х экранных плоскостей. Это те же 4 канала звука. Разница в том, что для видео адреса считаются один за другим, а для звука надо выбирать их согласно значению аккумулятора фазы, или по таблице.
    Я пока ни в одном из вариантов не уверен, поэтому надо немного покопать. Для этого я прикинул примерную структурную схему "синтезатора" на ВМ80:

    Скрытый текст



    [свернуть]


    Самое сложное - это генератор и арбитр шины. В случае тактовой процессоров 2 МГц, частота общей шины (с учётом регенерации) получится 10 МГц. В этом месте я в первую очередь начинаю сомневаться в способностях отечественных микросхем ОЗУ и ПЗУ (поэтому-то я и не настаиваю на 2,5 МГц).
    Общее ОЗУ хочется хочется сделать, чтобы любой инструмент можно было направить в любой канал, а общее ПЗУ - ну просто зачем четыре экземпляра одного и того же. Да и вообще количество проводов при таком подходе меньше.

    Есть также сомнения в том, что получится "развести" на двухсторонней печатной плате... хотя можно поиграться с "трёхмерным" монтажом.

    И для такой схемы скорее всего ничего из набора системной логики серии 580 пристроить не получится. Слишком всё "нестандартно".
    Музей цифровой археологии: http://www.asvcorp.ru/darch/
    Занимаюсь разработкой облачного САПР для электронщиков: https://sapr.asvcorp.ru/

Страница 4 из 7 ПерваяПервая 1234567 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •