эээ... если 3 канала мешать - делить надо на 3, чтобы быть в том же диапазоне отсчетов, что и 1 канал. т.е. все зависит от запаса по разрядности звука.
последний вариант лучше, т.к. ничего не теряется, но надо учитывать диапазон.
эээ... если 3 канала мешать - делить надо на 3, чтобы быть в том же диапазоне отсчетов, что и 1 канал. т.е. все зависит от запаса по разрядности звука.
последний вариант лучше, т.к. ничего не теряется, но надо учитывать диапазон.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Пока что оставил формулу
wire [8:0] audio = ((ay_A/2) + (ay_B/2) + (ay_C/2));
Лидирует модель AY8910 от ILoveSpeccy - опробовано на Exolon, Lyra II и Cybernoid 2. На игрухах звук почти нормальный, а вот в "Лире" весьма плохо. Правда, у меня AY работает только на запись, может, как-то это сказывается...
PS: В общем, теперь работает нормально или почти нормально: сделал чтение из AY выяснил, что после запуска модели необходим сброс
Если кому интересно, фото, примерно 600кб. За качество не пинайте
http://crazyroom.ru/files/AYFPGA1.jpg
http://crazyroom.ru/files/AYFPGA2.jpg
Займусь BDI...
Последний раз редактировалось AlexBel; 06.09.2009 в 19:31.
http://zx.pk.ru/showthread.php?p=218628
Веселье продолжается...
Ничего не понимаю, подскажите, где лопухнулся. Прикручиваю ПЗУ TRDOS к спектруму. Схема на VHDL, все работает:
Скрытый текст
process(nRESET,CLOCK)
begin
if( nRESET = '0' ) then DOS <= '0';
elsif (CLOCK'event and CLOCK = '1') and nM1 = '0' and nRD = '0' and nMREQ = '0' and (ADRESS(15 downto 8) = "00111101") and ROMSEL = '1' then DOS <= '1';
elsif (CLOCK'event and CLOCK = '1') and nM1 = '0' and nRD = '0' and nMREQ = '0' and (ADRESS(14) = '1' or ADRESS(15) = '1') then DOS <= '0';
end if;
end process;
[свернуть]
Схема на верилоге, нифига не работает, при выходе в тырдос происходит сброс:
Скрытый текст
always @(nRESET or CLOCK)
begin
if(~nRESET) TRDOS <= 1'b0;
else if(CLOCK)
begin
if(~nM1 && ~nRD && ~nMREQ)
begin
if(ADRESS[15:8] == 8'b00111101) TRDOS <= 1'b1;
else if(ADRESS[14] || ADRESS[15]) TRDOS <= 1'b0;
end
end
end
[свернуть]
Подскажите, где в тексте верилога ошибка?
Последний раз редактировалось AlexBel; 22.09.2009 в 21:50.
Тебе надо, чтобы always срабатывал по уровню CLOCK или по фронту? Если по фронту, то используй always @(posedge CLOCK) или @(negedge CLOCK), в зависимости от фронта.
А кстати да, куда делся ROMSEL? в VHDL он есть, в Verilog'овском коде его уже нет.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)