1
0
mirror of https://github.com/Gehstock/Mist_FPGA.git synced 2026-01-13 23:26:43 +00:00

Use Common Sound Unit

This commit is contained in:
Marcel 2020-06-01 17:38:11 +02:00
parent ec05d014fb
commit ac1bd7f19d
3 changed files with 38 additions and 27 deletions

View File

@ -39,7 +39,6 @@ localparam CONF_STR = {
};
assign LED = ~ioctl_downl;
assign AUDIO_R = AUDIO_L;
assign SDRAM_CLK = clock_48;
assign SDRAM_CKE = 1;
@ -61,10 +60,10 @@ wire [7:0] joystick_0;
wire [7:0] joystick_1;
wire scandoublerD;
wire ypbpr;
wire [7:0] audio;
wire [11:0] audio_l, audio_r;
wire hs, vs;
wire hb, vb;
wire blankn = ~(hb | vb);
//wire hb, vb;
//wire blankn = ~(hb | vb);
wire [3:0] r, g, b;
wire key_strobe;
wire key_pressed;
@ -154,8 +153,8 @@ bombjack_top bombjack_top(
.O_VIDEO_B(b),
.O_HSYNC(hs),
.O_VSYNC(vs),
.O_HBLANK(hb),
.O_VBLANK(vb),
// .O_HBLANK(hb),
// .O_VBLANK(vb),
.p1_sw({"000",m_fire,m_down,m_up,m_left,m_right}),
.p2_sw({"000",m_fire,m_down,m_up,m_left,m_right}),
.s_sys({"1111",btn_two_players,btn_one_player,1'b1,btn_coin}),
@ -163,7 +162,8 @@ bombjack_top bombjack_top(
.cpu_rom_data(rom_addr[0] ? rom_do[15:8] : rom_do[7:0]),
.bg_rom_addr(bg_addr),
.bg_rom_data(bg_do),
.s_audio(audio),
.O_AUDIO_L(audio_l),
.O_AUDIO_R(audio_r),
.RESETn(~reset),
.clk_4M_en(clock_4),
.clk_6M_en(clock_6),
@ -212,13 +212,20 @@ user_io #(.STRLEN(($size(CONF_STR)>>3)))user_io(
.status (status )
);
dac #(.C_bits(16))dac(
dac #(.C_bits(12))dac_l(
.clk_i(clock_48),
.res_n_i(1),
.dac_i({audio,audio}),
.dac_i(audio_l),
.dac_o(AUDIO_L)
);
dac #(.C_bits(12))dac_r(
.clk_i(clock_48),
.res_n_i(1),
.dac_i(audio_r),
.dac_o(AUDIO_R)
);
// Rotated Normal
wire m_up = ~status[2] ? btn_left | joystick_0[1] | joystick_1[1] : btn_up | joystick_0[3] | joystick_1[3];
wire m_down = ~status[2] ? btn_right | joystick_0[0] | joystick_1[0] : btn_down | joystick_0[2] | joystick_1[2];

View File

@ -67,7 +67,8 @@ entity bombjack_top is
bg_rom_data : in std_logic_vector(23 downto 0) := (others => '0');
-- Sound out
s_audio : out std_logic_vector(7 downto 0);
O_AUDIO_L : out std_logic_vector (11 downto 0);
O_AUDIO_R : out std_logic_vector (11 downto 0);
-- Active high external buttons
RESETn : in std_logic;
@ -711,10 +712,10 @@ O_VSYNC <= s_vsync_n;
I_PSG1_n => s_psg1_n,
I_PSG2_n => s_psg2_n,
I_PSG3_n => s_psg3_n,
I_CHEN => "111111111",
I_SD => psg_data_in,
O_SD => psg_data_out,
O_AUDIO => s_audio
O_AUDIO_L => O_AUDIO_L,
O_AUDIO_R => O_AUDIO_R
);
-- ---------------------------------

View File

@ -47,10 +47,10 @@ entity psgs is
I_PSG1_n : in std_logic;
I_PSG2_n : in std_logic;
I_PSG3_n : in std_logic;
I_CHEN : in std_logic_vector( 8 downto 0);
I_SD : in std_logic_vector (7 downto 0);
O_SD : out std_logic_vector (7 downto 0);
O_AUDIO : out std_logic_vector (7 downto 0)
O_AUDIO_L : out std_logic_vector (11 downto 0);
O_AUDIO_R : out std_logic_vector (11 downto 0)
);
end psgs;
@ -70,9 +70,12 @@ architecture RTL of psgs is
signal s_34A_data : std_logic_vector( 7 downto 0) := (others => '0');
signal s_34C_data : std_logic_vector( 7 downto 0) := (others => '0');
signal s_34D_data : std_logic_vector( 7 downto 0) := (others => '0');
signal s_psg1_out : std_logic_vector( 7 downto 0) := (others => '0');
signal s_psg2_out : std_logic_vector( 7 downto 0) := (others => '0');
signal s_psg3_out : std_logic_vector( 7 downto 0) := (others => '0');
signal s_psg1l_out : std_logic_vector( 9 downto 0) := (others => '0');
signal s_psg1r_out : std_logic_vector( 9 downto 0) := (others => '0');
signal s_psg2l_out : std_logic_vector( 9 downto 0) := (others => '0');
signal s_psg2r_out : std_logic_vector( 9 downto 0) := (others => '0');
signal s_psg3l_out : std_logic_vector( 9 downto 0) := (others => '0');
signal s_psg3r_out : std_logic_vector( 9 downto 0) := (others => '0');
begin
-- CPU data bus mux
@ -114,8 +117,8 @@ begin
I_IOA => X"FF",
I_IOB => X"FF",
-- I_CHEN => I_CHEN(8 downto 6),
O_AUDIO => s_psg1_out
O_AUDIO_L => s_psg1l_out,
O_AUDIO_R => s_psg1r_out
);
U34C : entity work.ym2149
@ -138,8 +141,8 @@ begin
I_IOA => X"FF",
I_IOB => X"FF",
-- I_CHEN => I_CHEN(5 downto 3),
O_AUDIO => s_psg2_out
O_AUDIO_L => s_psg2l_out,
O_AUDIO_R => s_psg2r_out
);
U34A : entity work.ym2149
@ -162,14 +165,14 @@ begin
I_IOA => X"FF",
I_IOB => X"FF",
-- I_CHEN => I_CHEN(2 downto 0),
O_AUDIO => s_psg3_out
O_AUDIO_L => s_psg3l_out,
O_AUDIO_R => s_psg3r_out
);
s_audio_sum <=
(("00" & s_psg1_out) + ("00" & s_psg2_out)) + ("00" & s_psg3_out);
O_AUDIO <= s_audio_sum(9 downto 2);
O_AUDIO_L <=
(("00" & s_psg1l_out) + ("00" & s_psg2l_out)) + ("00" & s_psg3l_out);
O_AUDIO_R <=
(("00" & s_psg1r_out) + ("00" & s_psg2r_out)) + ("00" & s_psg3r_out);
end RTL;