
Schema pouziteho DAC http://members.cox.net/ebrombaugh1/synth/audiodac/index.html


Kompomenta audiogen.vhd je nastavena pro pouziti s hodinami 50 MHz, v pripade pouziti jinych hodin je potreba
upravit delicku k signalu iCK443K tak, aby byla vysledna hodnota co nejblize 3 546 895 / 8 => 443 361.875 Hz

Vstupni hodiny pro i2s_driver.vhd byly testovany pri 16 a 50 MHz (vzorkovaci frq je pak 41.6, nebo 130kHz)
Pri pouziti jinych hodin je potreba zachovat spravne pomery a limity MCLK, SCLK a LRCK, viz. datasheet k CS4344.


Integrace I2S sound do MZ800.vhd:


...
...
...


-- komponenta I2S sound (emulace SN76489AN + audio vystup pro CTC0 pres I2S DAC)
component i2s_sound Port (
	clk : in  STD_LOGIC;				-- systemove hodiny ( 50MHz )
	RESET : in  STD_LOGIC;				-- systemovy reset (aktivni pri 1)
	DATA : in  STD_LOGIC_VECTOR (7 downto 0);	-- datova sbernice z MZ800
	WE : in STD_LOGIC;				-- povolen zapis dat do PSG (aktivni pri 0)
	CTC0_PWM : in STD_LOGIC;			-- zdroj zvuku z casovace CTC0
	I2S_MCLK : out  STD_LOGIC;			-- I2S master clock - JA(4), DIGI1_0
	I2S_SCLK : out  STD_LOGIC;			-- I2S serial clock - JA(6), DIGI1_2
	I2S_LRCK : out  STD_LOGIC;			-- I2S left/right clock - JA(5), DIGI1_1
	I2S_SDAT : out  STD_LOGIC);			-- I2S data - JA(7), DIGI1_3
end component;

...
...
...

--signaly pro napojeni I2S_sound
signal iSN76489WR : std_logic;				-- zapis do SN76489
signal iCTC0_PWM : std_logic;				-- audio vystup z CTC0


...
...
...


--generovani signalu zapisu dat pro SN76489
if iADDR(7 downto 0)=x"F2" and iWRITE='1' and iIORQ='1' then	--operace out(F2)
	iSN76489WR <=	'1';
else
	iSN76489WR <=	'0';
end if;


...
...
...


-- generovani audio vystupu z CTC0
iCTC0_PWM <= '0' when iAUDMSK = '1' and iCTC0 = '1' else '1';

-- napojeni I2S sound (emulace SN76489AN + audio vystup pro CTC0 pres I2S DAC)
psg: i2s_sound Port map(
	clk		=> iCLK50,			-- systemove hodiny ( 50MHz )
	RESET		=> not iRST,			-- systemovy reset (aktivni pri 0)
	DATA		=> iDO,				-- vstupni data (zapisovana)
	WE		=> iSN76489WR,			-- povolen zapis dat do PSG (aktivni pri 1)
	CTC0_PWM	=> iCTC0_PWM,			-- zdroj zvuku z casovace CTC0
	I2S_MCLK	=> JA(4),			-- I2S master clock - JA(4), DIGI1_0
	I2S_SCLK	=> JA(6),			-- I2S serial clock - JA(6), DIGI1_2
	I2S_LRCK	=> JA(5),			-- I2S left/right clock - JA(5), DIGI1_1
	I2S_SDAT	=> JA(7)			-- I2S data - JA(7), DIGI1_3
);

