Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Unsorted (http://zx-pk.ru/forumdisplay.php?f=13)
-   -   ПЛИС и всё что с ними связано (http://zx-pk.ru/showthread.php?t=9342)

psb 5th September 2009 23:59

эээ... если 3 канала мешать - делить надо на 3, чтобы быть в том же диапазоне отсчетов, что и 1 канал. т.е. все зависит от запаса по разрядности звука.
последний вариант лучше, т.к. ничего не теряется, но надо учитывать диапазон.

AlexBel 6th September 2009 14:41

Quote:

Originally Posted by psb (Post 217342)
эээ... если 3 канала мешать - делить надо на 3, чтобы быть в том же диапазоне отсчетов, что и 1 канал. т.е. все зависит от запаса по разрядности звука.
последний вариант лучше, т.к. ничего не теряется, но надо учитывать диапазон.

Пока что оставил формулу
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 12th September 2009 22:21

http://zx.pk.ru/showthread.php?p=218628
Веселье продолжается... :)

AlexBel 22nd September 2009 22:46

Ничего не понимаю, подскажите, где лопухнулся. Прикручиваю ПЗУ 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
[свернуть]

Подскажите, где в тексте верилога ошибка?

tnt23 22nd September 2009 22:59

Тебе надо, чтобы always срабатывал по уровню CLOCK или по фронту? Если по фронту, то используй always @(posedge CLOCK) или @(negedge CLOCK), в зависимости от фронта.

AlexBel 22nd September 2009 23:44

Quote:

Originally Posted by tnt23 (Post 220957)
Тебе надо, чтобы always срабатывал по уровню CLOCK или по фронту? Если по фронту, то используй always @(posedge CLOCK) или @(negedge CLOCK), в зависимости от фронта.

Пробовал до этого - тоже не работает. Самое интересное, что когда подключал AY на FPGA, то его регистры совершенно защелкивались по negedge и все работало...

ZEK 22nd September 2009 23:55

Quote:

Originally Posted by AlexBel (Post 220952)
Подскажите, где в тексте верилога ошибка?

Если дословно перевести VHDL то будет так
Code:

always @ (RESET or posedege CLK)
if (!RESET) TRDOS = 0;
else
  if (ADDR[15:8]==8'h3D & ~(nM1 | nRD | nMREQ)  & ROMSEL) TRDOS = 1;
  else if (ADDR[15:14]!=0 & ~(nM1 | nRD | nMREQ)) TRDOS = 0;


tnt23 23rd September 2009 00:00

Quote:

Originally Posted by AlexBel (Post 220962)
Пробовал до этого - тоже не работает. Самое интересное, что когда подключал AY на FPGA, то его регистры совершенно защелкивались по negedge и все работало...

А симулятором квартусовским ты не пользуешься? Клевая штука.

ZEK 23rd September 2009 00:03

Quote:

Originally Posted by AlexBel (Post 220952)
else if(CLOCK)

на не синхронной логике это в этом контексте коряво, а при синхронной (в always posedge CLOCK) не корректно, так как CLOCK может быть как 0 так и 1

tnt23 23rd September 2009 00:15

А кстати да, куда делся ROMSEL? в VHDL он есть, в Verilog'овском коде его уже нет.


All times are GMT +4. The time now is 06:41.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.