Revision 1551
Added by markw about 24 hours ago
| pokeymax.vhd | ||
|---|---|---|
|
signal DEVICE_ADDR : std_logic_vector(3 downto 0);
|
||
|
|
||
|
signal POKEY_AUDIO_UNSIGNED : UNSIGNED_AUDIO_TYPE(3 downto 0);
|
||
|
signal POKEY_AUDIO_SIGNED : SIGNED_AUDIO_TYPE(3 downto 0);
|
||
|
|
||
|
signal AUDIO_MIXED_SIGNED : SIGNED_AUDIO_TYPE(3 downto 0);
|
||
|
|
||
| ... | ... | |
|
signal PSG_ENABLE_1Mhz : std_logic;
|
||
|
signal PSG_ENABLE : std_logic;
|
||
|
signal PSG_AUDIO_UNSIGNED : UNSIGNED_AUDIO_TYPE(1 downto 0);
|
||
|
signal PSG_AUDIO_SIGNED : SIGNED_AUDIO_TYPE(1 downto 0);
|
||
|
|
||
|
signal PSG_CHANNEL : PSG_CHANNEL_TYPE(5 downto 0);
|
||
|
signal PSG_CHANGED : std_logic_vector(1 downto 0);
|
||
| ... | ... | |
|
signal fir_data_ready :std_logic;
|
||
|
|
||
|
signal SIO_AUDIO_UNSIGNED : unsigned(15 downto 0);
|
||
|
signal SIO_AUDIO_SIGNED : signed(15 downto 0);
|
||
|
|
||
|
-- paddles
|
||
|
signal PADDLE_ADJ : std_logic_vector(7 downto 0);
|
||
| ... | ... | |
|
PROFILE_DATA => flash_do_slow(15 downto 0)
|
||
|
);
|
||
|
|
||
|
pokey1_dc_blocker : entity work.dc_blocker
|
||
|
PORT MAP
|
||
|
(
|
||
|
CLK => CLK,
|
||
|
RESET_N => RESET_N,
|
||
|
ENABLE_CYCLE => ENABLE_CYCLE,
|
||
|
|
||
|
AUDIO_IN => POKEY_AUDIO_UNSIGNED(0),
|
||
|
AUDIO_OUT => POKEY_AUDIO_SIGNED(0)
|
||
|
);
|
||
|
pokey2_dc_blocker : entity work.dc_blocker
|
||
|
PORT MAP
|
||
|
(
|
||
|
CLK => CLK,
|
||
|
RESET_N => RESET_N,
|
||
|
ENABLE_CYCLE => ENABLE_CYCLE,
|
||
|
|
||
|
AUDIO_IN => POKEY_AUDIO_UNSIGNED(1),
|
||
|
AUDIO_OUT => POKEY_AUDIO_SIGNED(1)
|
||
|
);
|
||
|
pokey3_dc_blocker : entity work.dc_blocker
|
||
|
PORT MAP
|
||
|
(
|
||
|
CLK => CLK,
|
||
|
RESET_N => RESET_N,
|
||
|
ENABLE_CYCLE => ENABLE_CYCLE,
|
||
|
|
||
|
AUDIO_IN => POKEY_AUDIO_UNSIGNED(2),
|
||
|
AUDIO_OUT => POKEY_AUDIO_SIGNED(2)
|
||
|
);
|
||
|
pokey4_dc_blocker : entity work.dc_blocker
|
||
|
PORT MAP
|
||
|
(
|
||
|
CLK => CLK,
|
||
|
RESET_N => RESET_N,
|
||
|
ENABLE_CYCLE => ENABLE_CYCLE,
|
||
|
|
||
|
AUDIO_IN => POKEY_AUDIO_UNSIGNED(3),
|
||
|
AUDIO_OUT => POKEY_AUDIO_SIGNED(3)
|
||
|
);
|
||
|
|
||
|
flash_off : if enable_flash=0 generate
|
||
|
shared_pokey_mixer : entity work.pokey_mixer
|
||
|
port map
|
||
| ... | ... | |
|
-- PSG
|
||
|
--------------------------------------------------------
|
||
|
psg_off : if enable_psg=0 generate
|
||
|
PSG_AUDIO_UNSIGNED(0) <= to_unsigned(0,16);
|
||
|
PSG_AUDIO_UNSIGNED(1) <= to_unsigned(0,16);
|
||
|
PSG_AUDIO_SIGNED(0) <= to_signed(0,16);
|
||
|
PSG_AUDIO_SIGNED(1) <= to_signed(0,16);
|
||
|
PSG_DO(0) <= (others=>'0');
|
||
|
PSG_DO(1) <= (others=>'0');
|
||
|
end generate psg_off;
|
||
| ... | ... | |
|
PROFILE_DATA => flash_do_slow(15 downto 0)
|
||
|
);
|
||
|
|
||
|
psg1_dc_blocker : entity work.dc_blocker
|
||
|
PORT MAP
|
||
|
(
|
||
|
CLK => CLK,
|
||
|
RESET_N => RESET_N,
|
||
|
ENABLE_CYCLE => ENABLE_CYCLE,
|
||
|
|
||
|
AUDIO_IN => PSG_AUDIO_UNSIGNED(0),
|
||
|
AUDIO_OUT => PSG_AUDIO_SIGNED(0)
|
||
|
);
|
||
|
psg2_dc_blocker : entity work.dc_blocker
|
||
|
PORT MAP
|
||
|
(
|
||
|
CLK => CLK,
|
||
|
RESET_N => RESET_N,
|
||
|
ENABLE_CYCLE => ENABLE_CYCLE,
|
||
|
|
||
|
AUDIO_IN => PSG_AUDIO_UNSIGNED(1),
|
||
|
AUDIO_OUT => PSG_AUDIO_SIGNED(1)
|
||
|
);
|
||
|
|
||
|
end generate psg_on;
|
||
|
|
||
|
--------------------------------------------------------
|
||
| ... | ... | |
|
B_CH0_EN => GTIA_ENABLE_REG,
|
||
|
B_CH1_EN => "1100",
|
||
|
|
||
|
L_CH0 => unsigned_to_signed(POKEY_AUDIO_UNSIGNED(0)),
|
||
|
R_CH0 => unsigned_to_signed(POKEY_AUDIO_UNSIGNED(1)),
|
||
|
L_CH1 => unsigned_to_signed(POKEY_AUDIO_UNSIGNED(2)),
|
||
|
R_CH1 => unsigned_to_signed(POKEY_AUDIO_UNSIGNED(3)),
|
||
|
L_CH0 => POKEY_AUDIO_SIGNED(0),
|
||
|
R_CH0 => POKEY_AUDIO_SIGNED(1),
|
||
|
L_CH1 => POKEY_AUDIO_SIGNED(2),
|
||
|
R_CH1 => POKEY_AUDIO_SIGNED(3),
|
||
|
L_CH2 => SAMPLE_AUDIO_SIGNED(0),
|
||
|
R_CH2 => SAMPLE_AUDIO_SIGNED(1),
|
||
|
L_CH3 => SID_AUDIO_SIGNED(0),
|
||
|
R_CH3 => SID_AUDIO_SIGNED(1),
|
||
|
L_CH4 => unsigned_to_signed(PSG_AUDIO_UNSIGNED(0)),
|
||
|
R_CH4 => unsigned_to_signed(PSG_AUDIO_UNSIGNED(1)),
|
||
|
L_CH4 => PSG_AUDIO_SIGNED(0),
|
||
|
R_CH4 => PSG_AUDIO_SIGNED(1),
|
||
|
B_CH0 => GTIA_AUDIO_SIGNED,
|
||
|
B_CH1 => unsigned_to_signed(SIO_AUDIO_UNSIGNED),
|
||
|
B_CH1 => SIO_AUDIO_SIGNED,
|
||
|
|
||
|
MUTE_CHANNEL => mixer_mute,
|
||
|
|
||
| ... | ... | |
|
|
||
|
SIO_AUDIO_UNSIGNED <= unsigned(not(adc_use_reg(15))&adc_use_reg(14 downto 0));
|
||
|
|
||
|
sio_audio_dc_blocker : entity work.dc_blocker
|
||
|
PORT MAP
|
||
|
(
|
||
|
CLK => CLK,
|
||
|
RESET_N => RESET_N,
|
||
|
ENABLE_CYCLE => ENABLE_CYCLE,
|
||
|
|
||
|
AUDIO_IN => SIO_AUDIO_UNSIGNED,
|
||
|
AUDIO_OUT => SIO_AUDIO_SIGNED
|
||
|
);
|
||
|
|
||
|
process(adc_reg,adc_output,adc_valid,ADC_VOLUME_REG)
|
||
|
variable adc_shrunk : signed(19 downto 0);
|
||
|
begin
|
||
Move dc blocker to be per unsigned channel. Works better for recording and now everything is signed in priciple with no dc offset for the mixer.