TS-Labs wrote:Могу согласиться с тем сомнительным аргументом, что ГС можно юзать как сопроцессор
TS-Labs wrote:на совместимость (на уровне интерфейса ГС) это не повлияет
TS-Labs wrote:и если писать для АВР
TS-Labs wrote:Я не очень знаю возможности ФПГА
TS-Labs wrote:Прошивку для ФПГА я тоже собираюсь писать сам.
TS-Labs wrote:- собственный доступ к памяти с целью чтения 44100 раз в секунду байта (или 2 байт - 16битные инструменты)
TS-Labs wrote:- увеличивать значение адреса на дробную величину (1 байт до запятой и 2 после) - обычный 24 битный сумматор (2 байта для "суб-адреса")
TS-Labs wrote:- интерполяция (алгоритм прост как двери, но требуется апаратное умножение)
TS-Labs wrote:- прочитанную выборку умножать на коэф. громкости для левого, а потом для правого канала - требуется апаратное умножение, значения суммировать отдельно
TS-Labs wrote:следить, чтоб они не перевалили за 16 бит
TS-Labs wrote:48MHz/44100/32
TS-Labs wrote:А насколько их можно тиражировать? 4 умножателя столбом сделать можно? тогда, это уже 80 тактов.
TS-Labs wrote:Если мы начали говорить про 37кГц, то давайте вспомним, что многие породистые компакты раньше выпускались в 12 битах (младший байт тупо шел с 4-мя младшими нулями, сдирал треки, видел вот этими глазами). То бишь, 12 бит - это "эверест" качества, тем более для трекерных музонов. Причем ДЛЯ РЕЗУЛЬТИРУЮЩЕГО ЗВУКА. То есть, выборку для 1 канала (после интерполяции и громкости) можно хранить в виде 8 бит и не париться.
TS-Labs wrote:Да. Но это когда количество каналов равно степени 2. А когда их 20?
TS-Labs wrote:Лолшто.
TS-Labs wrote:Да, но мы же не будем слушать 1 канал на максимальной громкости колонок. А так, в общем потоке 1/16 громкости и будет звучать как 1/16 громкости.
TS-Labs wrote:и громкость=20/32=0,625 от максимальной. Ну, в принципе, можно подогнать через индивидуальные громкости.
TS-Labs wrote:(блин, есть какой-то термин для этого?)
TS-Labs wrote: используется 1 байт до запятой и 2 байта после
TS-Labs wrote:Имеем, ADDR - адрес выборки wave-формы, SADDR - субадрес (1 байт). Читаем байт из ADDR - B(ADDR). Формула:DAC=PSM*(256-SADDR)+B(ADDR)*SADDR.Далее, увеличиваем SADDR на некий шаг, если перевалило за нуль, то 1) B(ADDR)->PSM, 2) ADDR+1->ADDR.
TS-Labs wrote:- между тем занимаюсь раздуплением VHDL и FPGA (по срокам, к приезду железа уже буду писать на обоях вхдл)
TS-Labs wrote:Ситуация такая:
TS-Labs wrote:Опишите кто-нибудь, по какой технологии используют ГС как сопроцессор: для него код пишется отдельно, или он как-то эмулирует основной компьютер? Если код пишется отдельно, то что стоит писать его под атмел? ПРОФИТ!!!
Return to NeoGS - софт и железо
Users browsing this forum: No registered users and 0 guests