- added AC-97 controller

git-svn-id: http://moon:8086/svn/vhdl/trunk@132 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
2008-11-01 21:47:15 +00:00
parent a41b5f572a
commit 755b318e7a
7 changed files with 188 additions and 38 deletions
+28 -4
View File
@@ -37,7 +37,8 @@ END tb_mips_sys;
ARCHITECTURE behavior OF tb_mips_sys IS
constant CLK_PERIOD : time := 10 ns;
constant CLK_PERIOD : time := 10 ns;
constant AC97_CLK_PERIOD : time := 100 ns;
signal sys_rst_n_in : std_logic := '0';
signal sys_clk_in : std_logic := '1';
signal dip : unsigned(7 downto 0) := (others => '0');
@@ -83,7 +84,7 @@ ARCHITECTURE behavior OF tb_mips_sys IS
signal sys_flash_ssram_oe_n : std_logic;
signal sys_flash_ce : std_logic;
signal sys_flash_rstn : std_logic;
signal sys_flash_ac97_rstn : std_logic;
signal sys_flash_byten : std_logic;
signal sys_ssram_clk_fb : std_logic;
@@ -96,6 +97,11 @@ ARCHITECTURE behavior OF tb_mips_sys IS
signal sys_ssram_mode : std_logic;
signal sys_ssram_zz : std_logic;
SIGNAL sys_ac97_bit_clk : std_logic := '0';
SIGNAL sys_ac97_sdata_out : std_logic;
SIGNAL sys_ac97_ssync : std_logic;
SIGNAL sys_ac97_sdata_in : std_logic;
signal flash_reg : word_t;
type flash_data_t is array (natural range 0 to 2**16-1) of word_t;
@@ -152,7 +158,7 @@ uut: entity work.mips_sys
sys_flash_ssram_we_n => sys_flash_ssram_we_n,
sys_flash_ssram_oe_n => sys_flash_ssram_oe_n,
sys_flash_ce => sys_flash_ce,
sys_flash_rstn => sys_flash_rstn,
sys_flash_ac97_rstn => sys_flash_ac97_rstn,
sys_flash_byten => sys_flash_byten,
sys_ssram_clk_fb => sys_ssram_clk_fb,
@@ -165,6 +171,11 @@ uut: entity work.mips_sys
sys_ssram_mode => sys_ssram_mode,
sys_ssram_zz => sys_ssram_zz,
sys_ac97_bit_clk => sys_ac97_bit_clk,
sys_ac97_sdata_out => sys_ac97_sdata_out,
sys_ac97_ssync => sys_ac97_ssync,
sys_ac97_sdata_in => sys_ac97_sdata_in,
sys_error => sys_error
);
@@ -237,9 +248,22 @@ CLK_GEN: process
sys_clk_in <= not sys_clk_in;
end process;
sys_ac97_sdata_in <= '1'; --sys_ac97_sdata_out;
ac97_clk_gen : PROCESS
begin
if (sys_flash_ac97_rstn = '0') then
sys_ac97_bit_clk <= '0';
wait until sys_flash_ac97_rstn = '1';
wait for 150 us;
end if;
wait for AC97_CLK_PERIOD/2;
sys_ac97_bit_clk <= not sys_ac97_bit_clk;
END PROCESS;
FLASH_READ: process(sys_rst_n_in, sys_flash_ce, sys_flash_ssram_oe_n, sys_flash_ssram_a)
type file_t is file of integer;
file load_flash : file_t open read_mode is "test_bui.flash.bin";
file load_flash : file_t open read_mode is "test_ac97.flash.bin";
variable instr : integer;
variable index : natural;
variable temp : signed(31 downto 0);