- Loading app from Flash instead User ROM
- Removed User ROM git-svn-id: http://moon:8086/svn/vhdl/trunk@91 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
@@ -69,12 +69,6 @@ ARCHITECTURE behavior OF tb_mips_sys IS
|
||||
signal sys_error : unsigned(1 downto 0); -- indicates DCM Errors
|
||||
signal sys_sdr_clk_fb : std_logic;
|
||||
|
||||
constant UROM_ADDR_WIDTH : integer := 18;
|
||||
signal sys_user_rom_clk : std_logic;
|
||||
signal sys_user_rom_en : std_logic;
|
||||
signal sys_user_rom_din : word_t;
|
||||
signal sys_user_rom_addr : word_t;
|
||||
|
||||
signal sys_usb_d : unsigned(15 downto 0) := (others => '0');
|
||||
signal sys_usb_a : unsigned(1 downto 0);
|
||||
signal sys_usb_csn : std_logic;
|
||||
@@ -104,8 +98,8 @@ ARCHITECTURE behavior OF tb_mips_sys IS
|
||||
|
||||
signal flash_reg : word_t;
|
||||
|
||||
type urom_data_t is array (natural range 0 to 2**(UROM_ADDR_WIDTH-2)-1) of word_t;
|
||||
signal urom_data : urom_data_t;
|
||||
type flash_data_t is array (natural range 0 to 2**16-1) of word_t;
|
||||
signal flash_data : flash_data_t;
|
||||
|
||||
BEGIN
|
||||
|
||||
@@ -131,11 +125,6 @@ uut: entity work.mips_sys
|
||||
sys_lcd_rs => sys_lcd_rs,
|
||||
sys_lcd_rw => sys_lcd_rw,
|
||||
|
||||
sys_user_rom_addr => sys_user_rom_addr,
|
||||
sys_user_rom_din => sys_user_rom_din,
|
||||
sys_user_rom_en => sys_user_rom_en,
|
||||
sys_user_rom_clk => sys_user_rom_clk,
|
||||
|
||||
sys_sdr_clk_p => sys_sdr_clk_p,
|
||||
sys_sdr_clk_n => sys_sdr_clk_n,
|
||||
sys_sdr_cke_q => sys_sdr_cke_q,
|
||||
@@ -236,35 +225,39 @@ i_mt46v16m16_1 : entity work.mt46v16m16
|
||||
);
|
||||
|
||||
sys_sdr_clk_fb <= sys_sdr_clk_p after 2300 ps;
|
||||
sys_ssram_clk_fb <= sys_ssram_clk after 4 ns;
|
||||
sys_ssram_clk_fb <= sys_ssram_clk after 0.5 ns;
|
||||
|
||||
refresh <= true when falling_edge(sys_sdr_ras_qn) and falling_edge(sys_sdr_cas_qn) and sys_sdr_we_qn='1' else false;
|
||||
|
||||
sys_usb_d <= X"1234" after 20 ns when sys_usb_csn = '0' and sys_usb_rdn = '0' else (others => 'Z') after 5 ns;
|
||||
|
||||
CLK_GEN: process
|
||||
begin
|
||||
wait for CLK_PERIOD/2;
|
||||
sys_clk_in <= not sys_clk_in;
|
||||
end process;
|
||||
|
||||
UROM_READ: process(sys_rst_n_in, sys_user_rom_clk)
|
||||
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_urom : file_t open read_mode is "test_bui.bin";
|
||||
file load_flash : file_t open read_mode is "test_bui.flash.bin";
|
||||
variable instr : integer;
|
||||
variable index : natural;
|
||||
variable temp : signed(31 downto 0);
|
||||
begin
|
||||
if sys_rst_n_in = '0' then
|
||||
index := 0;
|
||||
while not endfile(load_urom) loop
|
||||
read(load_urom, instr);
|
||||
while not endfile(load_flash) loop
|
||||
read(load_flash, instr);
|
||||
temp := to_signed(instr, word_t'length);
|
||||
urom_data(index) <= unsigned(temp);
|
||||
flash_data(index) <= unsigned(temp);
|
||||
index := index + 1;
|
||||
end loop;
|
||||
elsif rising_edge(sys_user_rom_clk) and sys_user_rom_en = '1' then
|
||||
index := to_integer(sys_user_rom_addr(UROM_ADDR_WIDTH+1 downto 2));
|
||||
sys_user_rom_din <= urom_data(index);
|
||||
else
|
||||
sys_flash_ssram_d <= (others => 'Z') after 10 ns;
|
||||
if sys_flash_ssram_oe_n = '0' and sys_flash_ce = '1' then
|
||||
index := to_integer(sys_flash_ssram_a(24 downto 1));
|
||||
sys_flash_ssram_d <= flash_data(index) after 10 ns;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
@@ -275,14 +268,6 @@ FLASH_WRITE: process(sys_flash_ce, sys_flash_ssram_we_n, sys_flash_ssram_d)
|
||||
end if;
|
||||
end process;
|
||||
|
||||
FLASH_READ: process(sys_flash_ce, sys_flash_ssram_oe_n, flash_reg)
|
||||
begin
|
||||
sys_flash_ssram_d <= (others => 'Z') after 10 ns;
|
||||
if sys_flash_ssram_oe_n = '0' and sys_flash_ce = '1' then
|
||||
sys_flash_ssram_d <= flash_reg after 10 ns;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
STIMULUS: process
|
||||
|
||||
begin
|
||||
|
||||
Reference in New Issue
Block a user