- added 'page_mode_en' for async_port
Committed on the Free edition of March Hare Software CVSNT Server. Upgrade to CVS Suite for more features and support: http://march-hare.com/cvsnt/ git-svn-id: http://moon:8086/svn/vhdl/trunk@551 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
@@ -98,6 +98,7 @@ ARCHITECTURE behavior OF tb_mips_top IS
|
|||||||
signal sram_d : unsigned(31 downto 0);
|
signal sram_d : unsigned(31 downto 0);
|
||||||
signal flash_a : unsigned(FLASH_ADDR_WIDTH-1 downto 0);
|
signal flash_a : unsigned(FLASH_ADDR_WIDTH-1 downto 0);
|
||||||
signal flash_d : unsigned(31 downto 0);
|
signal flash_d : unsigned(31 downto 0);
|
||||||
|
signal flash_page_mode_en : std_logic;
|
||||||
|
|
||||||
signal gpo0 : unsigned(31 downto 0);
|
signal gpo0 : unsigned(31 downto 0);
|
||||||
signal gpo1 : unsigned(31 downto 0);
|
signal gpo1 : unsigned(31 downto 0);
|
||||||
@@ -132,8 +133,10 @@ mem_mux:
|
|||||||
process(ADDR_O)
|
process(ADDR_O)
|
||||||
begin
|
begin
|
||||||
mem_area <= mem_dead;
|
mem_area <= mem_dead;
|
||||||
|
flash_page_mode_en <= '0';
|
||||||
if ADDR_O(31 downto 28) = X"0" then
|
if ADDR_O(31 downto 28) = X"0" then
|
||||||
mem_area <= mem_flash;
|
mem_area <= mem_flash;
|
||||||
|
flash_page_mode_en <= '1';
|
||||||
elsif ADDR_O(31 downto 28) = X"A" then
|
elsif ADDR_O(31 downto 28) = X"A" then
|
||||||
if ADDR_O(27 downto 26) = "00" then
|
if ADDR_O(27 downto 26) = "00" then
|
||||||
if ADDR_O(18 downto 16) = "000" then
|
if ADDR_O(18 downto 16) = "000" then
|
||||||
@@ -281,6 +284,7 @@ inst_flash_port : entity work.async_port_wb
|
|||||||
ADDR_I => ADDR_O,
|
ADDR_I => ADDR_O,
|
||||||
DAT_I => DAT_O,
|
DAT_I => DAT_O,
|
||||||
DAT_O => DAT_O_flash,
|
DAT_O => DAT_O_flash,
|
||||||
|
page_mode_en => flash_page_mode_en,
|
||||||
async_a => flash_a,
|
async_a => flash_a,
|
||||||
async_d => flash_d,
|
async_d => flash_d,
|
||||||
async_cs => flash_cs_n,
|
async_cs => flash_cs_n,
|
||||||
@@ -312,6 +316,7 @@ inst_sram_port : entity work.async_port_wb
|
|||||||
ADDR_I => ADDR_O,
|
ADDR_I => ADDR_O,
|
||||||
DAT_I => DAT_O,
|
DAT_I => DAT_O,
|
||||||
DAT_O => DAT_O_sram,
|
DAT_O => DAT_O_sram,
|
||||||
|
page_mode_en => '0',
|
||||||
async_a => sram_a,
|
async_a => sram_a,
|
||||||
async_d => sram_d,
|
async_d => sram_d,
|
||||||
async_cs => sram_cs_n,
|
async_cs => sram_cs_n,
|
||||||
|
|||||||
@@ -204,6 +204,7 @@ ARCHITECTURE behavior OF mips_sys IS
|
|||||||
ADDR_I : in unsigned(31 downto 0);
|
ADDR_I : in unsigned(31 downto 0);
|
||||||
DAT_I : in unsigned(31 downto 0);
|
DAT_I : in unsigned(31 downto 0);
|
||||||
DAT_O : out unsigned(31 downto 0);
|
DAT_O : out unsigned(31 downto 0);
|
||||||
|
page_mode_en : in STD_LOGIC;
|
||||||
async_a : out unsigned(addr_width-1 downto 0);
|
async_a : out unsigned(addr_width-1 downto 0);
|
||||||
async_d : inout unsigned(data_width-1 downto 0);
|
async_d : inout unsigned(data_width-1 downto 0);
|
||||||
async_cs : out std_logic;
|
async_cs : out std_logic;
|
||||||
@@ -326,7 +327,9 @@ ARCHITECTURE behavior OF mips_sys IS
|
|||||||
signal usb_addr : unsigned(31 downto 0);
|
signal usb_addr : unsigned(31 downto 0);
|
||||||
signal flash_addr : unsigned(31 downto 0);
|
signal flash_addr : unsigned(31 downto 0);
|
||||||
signal ac97_rstn : std_logic;
|
signal ac97_rstn : std_logic;
|
||||||
|
signal mem_mapped_io : std_logic;
|
||||||
signal flash_rstn : std_logic;
|
signal flash_rstn : std_logic;
|
||||||
|
signal flash_page_mode_en : std_logic;
|
||||||
|
|
||||||
-- Arbiter
|
-- Arbiter
|
||||||
constant ARB_MAX_MASTER : natural := 2;
|
constant ARB_MAX_MASTER : natural := 2;
|
||||||
@@ -458,6 +461,7 @@ BEGIN
|
|||||||
sys_flash_byten <= '1';
|
sys_flash_byten <= '1';
|
||||||
usb_addr <= X"0000000" & "00" & ADDR_O(3 downto 2);
|
usb_addr <= X"0000000" & "00" & ADDR_O(3 downto 2);
|
||||||
flash_addr <= "0000000" & ADDR_O(25 downto 2) & '0';
|
flash_addr <= "0000000" & ADDR_O(25 downto 2) & '0';
|
||||||
|
flash_page_mode_en <= not mem_mapped_io;
|
||||||
|
|
||||||
SDAT_I_sdram <= MDAT_O & MDAT_O;
|
SDAT_I_sdram <= MDAT_O & MDAT_O;
|
||||||
SEL_I_sdram <= "0000" & SEL_O;
|
SEL_I_sdram <= "0000" & SEL_O;
|
||||||
@@ -519,9 +523,11 @@ mem_mux:
|
|||||||
process(ADDR_O)
|
process(ADDR_O)
|
||||||
begin
|
begin
|
||||||
mem_area <= mem_dead;
|
mem_area <= mem_dead;
|
||||||
|
mem_mapped_io <= '0';
|
||||||
if ADDR_O(31 downto 28) = X"0" then
|
if ADDR_O(31 downto 28) = X"0" then
|
||||||
mem_area <= mem_flash;
|
mem_area <= mem_flash;
|
||||||
elsif ADDR_O(31 downto 28) = X"A" then
|
elsif ADDR_O(31 downto 28) = X"A" then
|
||||||
|
mem_mapped_io <= '1';
|
||||||
if ADDR_O(27 downto 26) = "00" then
|
if ADDR_O(27 downto 26) = "00" then
|
||||||
if ADDR_O(18 downto 16) = "000" then
|
if ADDR_O(18 downto 16) = "000" then
|
||||||
mem_area <= mem_gpio;
|
mem_area <= mem_gpio;
|
||||||
@@ -543,7 +549,6 @@ mem_mux:
|
|||||||
end if;
|
end if;
|
||||||
elsif (ADDR_O(31 downto 28) = X"B" and ADDR_O(15) = '0') then
|
elsif (ADDR_O(31 downto 28) = X"B" and ADDR_O(15) = '0') then
|
||||||
mem_area <= mem_rom;
|
mem_area <= mem_rom;
|
||||||
-- elsif (ADDR_O(31 downto 28) = X"B" and ADDR_O(15) = '1') then
|
|
||||||
elsif (ADDR_O(31 downto 28) = X"8" or ADDR_O(30) = '1') then
|
elsif (ADDR_O(31 downto 28) = X"8" or ADDR_O(30) = '1') then
|
||||||
mem_area <= mem_sdram;
|
mem_area <= mem_sdram;
|
||||||
end if;
|
end if;
|
||||||
@@ -707,6 +712,7 @@ inst_flash_port : async_port_wb
|
|||||||
ADDR_I => flash_addr,
|
ADDR_I => flash_addr,
|
||||||
DAT_I => MDAT_O,
|
DAT_I => MDAT_O,
|
||||||
DAT_O => SDAT_O_flash,
|
DAT_O => SDAT_O_flash,
|
||||||
|
page_mode_en => flash_page_mode_en,
|
||||||
async_a => sys_flash_a,
|
async_a => sys_flash_a,
|
||||||
async_d => sys_flash_d,
|
async_d => sys_flash_d,
|
||||||
async_cs => sys_flash_ce,
|
async_cs => sys_flash_ce,
|
||||||
@@ -738,6 +744,7 @@ inst_usb_port : async_port_wb
|
|||||||
ADDR_I => usb_addr,
|
ADDR_I => usb_addr,
|
||||||
DAT_I => MDAT_O,
|
DAT_I => MDAT_O,
|
||||||
DAT_O => SDAT_O_usb,
|
DAT_O => SDAT_O_usb,
|
||||||
|
page_mode_en => '0',
|
||||||
async_a => sys_usb_a,
|
async_a => sys_usb_a,
|
||||||
async_d => sys_usb_d,
|
async_d => sys_usb_d,
|
||||||
async_cs => sys_usb_csn,
|
async_cs => sys_usb_csn,
|
||||||
|
|||||||
@@ -213,6 +213,7 @@ ARCHITECTURE behavior OF mips_sys IS
|
|||||||
ADDR_I : in unsigned(31 downto 0);
|
ADDR_I : in unsigned(31 downto 0);
|
||||||
DAT_I : in unsigned(31 downto 0);
|
DAT_I : in unsigned(31 downto 0);
|
||||||
DAT_O : out unsigned(31 downto 0);
|
DAT_O : out unsigned(31 downto 0);
|
||||||
|
page_mode_en : in STD_LOGIC;
|
||||||
async_a : out unsigned(addr_width-1 downto 0);
|
async_a : out unsigned(addr_width-1 downto 0);
|
||||||
async_d : inout unsigned(data_width-1 downto 0);
|
async_d : inout unsigned(data_width-1 downto 0);
|
||||||
async_cs : out std_logic;
|
async_cs : out std_logic;
|
||||||
@@ -382,6 +383,7 @@ ARCHITECTURE behavior OF mips_sys IS
|
|||||||
signal flash_we_n : std_logic;
|
signal flash_we_n : std_logic;
|
||||||
signal flash_d_drv : std_logic;
|
signal flash_d_drv : std_logic;
|
||||||
signal flash_bsy : std_logic;
|
signal flash_bsy : std_logic;
|
||||||
|
signal flash_page_mode_en : std_logic;
|
||||||
|
|
||||||
-- Arbiter
|
-- Arbiter
|
||||||
constant ARB_MAX_MASTER : natural := 2;
|
constant ARB_MAX_MASTER : natural := 2;
|
||||||
@@ -599,8 +601,10 @@ mem_mux:
|
|||||||
process(ADDR_O)
|
process(ADDR_O)
|
||||||
begin
|
begin
|
||||||
mem_area <= mem_dead;
|
mem_area <= mem_dead;
|
||||||
|
flash_page_mode_en <= '0';
|
||||||
if ADDR_O(31 downto 28) = X"0" then
|
if ADDR_O(31 downto 28) = X"0" then
|
||||||
mem_area <= mem_flash;
|
mem_area <= mem_flash;
|
||||||
|
flash_page_mode_en <= '1';
|
||||||
elsif ADDR_O(31 downto 28) = X"A" then
|
elsif ADDR_O(31 downto 28) = X"A" then
|
||||||
if ADDR_O(27 downto 26) = "00" then
|
if ADDR_O(27 downto 26) = "00" then
|
||||||
if ADDR_O(18 downto 16) = "000" then
|
if ADDR_O(18 downto 16) = "000" then
|
||||||
@@ -834,6 +838,7 @@ inst_usb_port : async_port_wb
|
|||||||
ADDR_I => ADDR_I_usb,
|
ADDR_I => ADDR_I_usb,
|
||||||
DAT_I => MDAT_O,
|
DAT_I => MDAT_O,
|
||||||
DAT_O => SDAT_O_usb,
|
DAT_O => SDAT_O_usb,
|
||||||
|
page_mode_en => '0',
|
||||||
async_a => sys_usb_a,
|
async_a => sys_usb_a,
|
||||||
async_d => sys_usb_d,
|
async_d => sys_usb_d,
|
||||||
async_cs => sys_usb_csn,
|
async_cs => sys_usb_csn,
|
||||||
|
|||||||
Reference in New Issue
Block a user