- Switched to 64-Bit SDRAM- and VGA-controller

git-svn-id: http://moon:8086/svn/vhdl/trunk@110 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
2008-10-25 11:48:04 +00:00
parent 7cdfa6929d
commit ed47f478f8
2 changed files with 47 additions and 34 deletions
+23 -17
View File
@@ -260,7 +260,7 @@ ARCHITECTURE behavior OF mips_sys IS
); );
END COMPONENT; END COMPONENT;
COMPONENT vga_frontend COMPONENT vga_frontend64
GENERIC GENERIC
( (
sys_freq : integer; sys_freq : integer;
@@ -279,13 +279,13 @@ ARCHITECTURE behavior OF mips_sys IS
CYC_O : out STD_LOGIC; CYC_O : out STD_LOGIC;
STB_O : out STD_LOGIC; STB_O : out STD_LOGIC;
WE_O : out STD_LOGIC; WE_O : out STD_LOGIC;
SEL_O : out unsigned(3 downto 0); SEL_O : out unsigned(7 downto 0);
ACK_I : in STD_LOGIC; ACK_I : in STD_LOGIC;
SRDY_I : in STD_LOGIC; SRDY_I : in STD_LOGIC;
MRDY_O : out STD_LOGIC; MRDY_O : out STD_LOGIC;
ADDR_O : out unsigned(31 downto 0); ADDR_O : out unsigned(31 downto 0);
MDAT_I : in unsigned(31 downto 0); MDAT_I : in unsigned(63 downto 0);
MDAT_O : out unsigned(31 downto 0); MDAT_O : out unsigned(63 downto 0);
-- JBUS Slave signals -- JBUS Slave signals
CYC_I : in STD_LOGIC; CYC_I : in STD_LOGIC;
@@ -353,14 +353,15 @@ ARCHITECTURE behavior OF mips_sys IS
-- VGA Master -- VGA Master
signal MRDY_O_vga : std_logic; signal MRDY_O_vga : std_logic;
signal MDAT_O_vga : word_t;
signal ADDR_O_vga : word_t; signal ADDR_O_vga : word_t;
signal SEL_O_vga : unsigned(3 downto 0); signal SEL_O_vga : unsigned(7 downto 0);
signal WE_O_vga : std_logic; signal WE_O_vga : std_logic;
signal CYC_O_vga : std_logic; signal CYC_O_vga : std_logic;
signal STB_O_vga : std_logic; signal STB_O_vga : std_logic;
signal SRDY_I_vga : std_logic; signal SRDY_I_vga : std_logic;
signal ACK_I_vga : std_logic; signal ACK_I_vga : std_logic;
signal MDAT_I_vga : unsigned(63 downto 0);
signal MDAT_O_vga : unsigned(63 downto 0);
-- Slaves -- Slaves
signal CYC_I_flash : std_logic; signal CYC_I_flash : std_logic;
@@ -376,7 +377,9 @@ ARCHITECTURE behavior OF mips_sys IS
signal CYC_I_sdram : std_logic; signal CYC_I_sdram : std_logic;
signal ACK_O_sdram : std_logic; signal ACK_O_sdram : std_logic;
signal SRDY_O_sdram : std_logic; signal SRDY_O_sdram : std_logic;
signal SDAT_O_sdram : unsigned(31 downto 0); signal SDAT_O_sdram : unsigned(63 downto 0);
signal SDAT_I_sdram : unsigned(63 downto 0);
signal SEL_I_sdram : unsigned(7 downto 0);
signal CYC_I_ram : std_logic; signal CYC_I_ram : std_logic;
signal ACK_O_ram : std_logic; signal ACK_O_ram : std_logic;
@@ -435,13 +438,15 @@ BEGIN
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';
SDAT_I_sdram <= MDAT_O & MDAT_O;
SEL_I_sdram <= "0000" & SEL_O;
--------------------------------------------------------------- ---------------------------------------------------------------
-- Arbiter -- Arbiter
MRDY_O <= MRDY_O_cpu when arb_gnt(0) = '1' else MRDY_O_vga when arb_gnt(1) = '1' else '0'; MRDY_O <= MRDY_O_cpu when arb_gnt(0) = '1' else MRDY_O_vga when arb_gnt(1) = '1' else '0';
MDAT_O <= MDAT_O_cpu when arb_gnt(0) = '1' else MDAT_O_vga when arb_gnt(1) = '1' else (others => '0'); MDAT_O <= MDAT_O_cpu when arb_gnt(0) = '1' else MDAT_O_vga(31 downto 0) when arb_gnt(1) = '1' else (others => '0');
ADDR_O <= ADDR_O_cpu when arb_gnt(0) = '1' else ADDR_O_vga when arb_gnt(1) = '1' else (others => '0'); ADDR_O <= ADDR_O_cpu when arb_gnt(0) = '1' else ADDR_O_vga when arb_gnt(1) = '1' else (others => '0');
SEL_O <= SEL_O_cpu when arb_gnt(0) = '1' else SEL_O_vga when arb_gnt(1) = '1' else (others => '0'); SEL_O <= SEL_O_cpu when arb_gnt(0) = '1' else SEL_O_vga(3 downto 0) when arb_gnt(1) = '1' else (others => '0');
WE_O <= WE_O_cpu when arb_gnt(0) = '1' else WE_O_vga when arb_gnt(1) = '1' else '0'; WE_O <= WE_O_cpu when arb_gnt(0) = '1' else WE_O_vga when arb_gnt(1) = '1' else '0';
CYC_O <= CYC_O_cpu when arb_gnt(0) = '1' else CYC_O_vga when arb_gnt(1) = '1' else '0'; CYC_O <= CYC_O_cpu when arb_gnt(0) = '1' else CYC_O_vga when arb_gnt(1) = '1' else '0';
STB_O <= STB_O_cpu when arb_gnt(0) = '1' else STB_O_vga when arb_gnt(1) = '1' else '0'; STB_O <= STB_O_cpu when arb_gnt(0) = '1' else STB_O_vga when arb_gnt(1) = '1' else '0';
@@ -453,6 +458,7 @@ BEGIN
arb_req(0) <= CYC_O_cpu; arb_req(0) <= CYC_O_cpu;
arb_req(1) <= CYC_O_vga; arb_req(1) <= CYC_O_vga;
MDAT_I_vga <= SDAT_O_sdram(63 downto 32) & MDAT_I;
arbiter_proc: arbiter_proc:
process(clk) process(clk)
@@ -559,7 +565,7 @@ signal_mux:
------------------------------------------------------------------ ------------------------------------------------------------------
SRDY_I <= SRDY_O_flash or SRDY_O_usb or SRDY_O_sdram or SRDY_O_ram or SRDY_O_rom or SRDY_O_uart or SRDY_O_gpio or SRDY_O_vga; SRDY_I <= SRDY_O_flash or SRDY_O_usb or SRDY_O_sdram or SRDY_O_ram or SRDY_O_rom or SRDY_O_uart or SRDY_O_gpio or SRDY_O_vga;
ACK_I <= ACK_O_flash or ACK_O_usb or ACK_O_sdram or ACK_O_ram or ACK_O_rom or ACK_O_uart or ACK_O_gpio or ACK_O_vga; ACK_I <= ACK_O_flash or ACK_O_usb or ACK_O_sdram or ACK_O_ram or ACK_O_rom or ACK_O_uart or ACK_O_gpio or ACK_O_vga;
MDAT_I <= SDAT_O_sdram when CYC_I_sdram = '1' else MDAT_I <= SDAT_O_sdram(31 downto 0) when CYC_I_sdram = '1' else
SDAT_O_ram when CYC_I_ram = '1' else SDAT_O_ram when CYC_I_ram = '1' else
SDAT_O_rom when CYC_I_rom = '1' else SDAT_O_rom when CYC_I_rom = '1' else
SDAT_O_flash when CYC_I_flash = '1' else SDAT_O_flash when CYC_I_flash = '1' else
@@ -734,12 +740,12 @@ inst_uart_wb : uart_wb
); );
inst_sdram_ctrl_frontend_wb : entity work.sdram_ctrl_frontend_wb inst_sdram_ctrl_frontend_wb : entity work.sdram_ctrl_frontend64_wb
GENERIC MAP GENERIC MAP
( (
BL => BURST_LEN, BL => BURST_LEN,
f_sysclk => ddr_frequency_hz, f_sysclk => ddr_frequency_hz,
fifo_depth => 6 fifo_depth => 5
) )
PORT MAP PORT MAP
( (
@@ -750,13 +756,13 @@ inst_sdram_ctrl_frontend_wb : entity work.sdram_ctrl_frontend_wb
CYC_I => CYC_I_sdram, CYC_I => CYC_I_sdram,
STB_I => STB_O, STB_I => STB_O,
SEL_I => SEL_O, SEL_I => SEL_I_sdram,
WE_I => WE_O, WE_I => WE_O,
ACK_O => ACK_O_sdram, ACK_O => ACK_O_sdram,
MRDY_I => MRDY_O, MRDY_I => MRDY_O,
SRDY_O => SRDY_O_sdram, SRDY_O => SRDY_O_sdram,
ADDR_I => ADDR_O, ADDR_I => ADDR_O,
DAT_I => MDAT_O, DAT_I => SDAT_I_sdram,
DAT_O => SDAT_O_sdram, DAT_O => SDAT_O_sdram,
-- SDRAM signals -- SDRAM signals
@@ -795,7 +801,7 @@ inst_clockgen : entity work.clockgen
error_out => open error_out => open
); );
inst_vga_frontend : vga_frontend inst_vga_frontend : vga_frontend64
GENERIC MAP GENERIC MAP
( (
sys_freq => 100E6, sys_freq => 100E6,
@@ -819,7 +825,7 @@ inst_vga_frontend : vga_frontend
SRDY_I => SRDY_I_vga, SRDY_I => SRDY_I_vga,
MRDY_O => MRDY_O_vga, MRDY_O => MRDY_O_vga,
ADDR_O => ADDR_O_vga, ADDR_O => ADDR_O_vga,
MDAT_I => MDAT_I, MDAT_I => MDAT_I_vga,
MDAT_O => MDAT_O_vga, MDAT_O => MDAT_O_vga,
-- JBUS Slave signals -- JBUS Slave signals
+24 -17
View File
@@ -304,7 +304,7 @@ ARCHITECTURE behavior OF mips_sys IS
); );
END COMPONENT; END COMPONENT;
COMPONENT vga_frontend COMPONENT vga_frontend64
GENERIC GENERIC
( (
sys_freq : integer; sys_freq : integer;
@@ -323,13 +323,13 @@ ARCHITECTURE behavior OF mips_sys IS
CYC_O : out STD_LOGIC; CYC_O : out STD_LOGIC;
STB_O : out STD_LOGIC; STB_O : out STD_LOGIC;
WE_O : out STD_LOGIC; WE_O : out STD_LOGIC;
SEL_O : out unsigned(3 downto 0); SEL_O : out unsigned(7 downto 0);
ACK_I : in STD_LOGIC; ACK_I : in STD_LOGIC;
SRDY_I : in STD_LOGIC; SRDY_I : in STD_LOGIC;
MRDY_O : out STD_LOGIC; MRDY_O : out STD_LOGIC;
ADDR_O : out unsigned(31 downto 0); ADDR_O : out unsigned(31 downto 0);
MDAT_I : in unsigned(31 downto 0); MDAT_I : in unsigned(63 downto 0);
MDAT_O : out unsigned(31 downto 0); MDAT_O : out unsigned(63 downto 0);
-- JBUS Slave signals -- JBUS Slave signals
CYC_I : in STD_LOGIC; CYC_I : in STD_LOGIC;
@@ -411,14 +411,15 @@ ARCHITECTURE behavior OF mips_sys IS
-- VGA Master -- VGA Master
signal MRDY_O_vga : std_logic; signal MRDY_O_vga : std_logic;
signal MDAT_O_vga : word_t;
signal ADDR_O_vga : word_t; signal ADDR_O_vga : word_t;
signal SEL_O_vga : unsigned(3 downto 0); signal SEL_O_vga : unsigned(7 downto 0);
signal WE_O_vga : std_logic; signal WE_O_vga : std_logic;
signal CYC_O_vga : std_logic; signal CYC_O_vga : std_logic;
signal STB_O_vga : std_logic; signal STB_O_vga : std_logic;
signal SRDY_I_vga : std_logic; signal SRDY_I_vga : std_logic;
signal ACK_I_vga : std_logic; signal ACK_I_vga : std_logic;
signal MDAT_I_vga : unsigned(63 downto 0);
signal MDAT_O_vga : unsigned(63 downto 0);
-- Slaves -- Slaves
signal CYC_I_flash : std_logic; signal CYC_I_flash : std_logic;
@@ -434,7 +435,9 @@ ARCHITECTURE behavior OF mips_sys IS
signal CYC_I_sdram : std_logic; signal CYC_I_sdram : std_logic;
signal ACK_O_sdram : std_logic; signal ACK_O_sdram : std_logic;
signal SRDY_O_sdram : std_logic; signal SRDY_O_sdram : std_logic;
signal SDAT_O_sdram : unsigned(31 downto 0); signal SDAT_O_sdram : unsigned(63 downto 0);
signal SDAT_I_sdram : unsigned(63 downto 0);
signal SEL_I_sdram : unsigned(7 downto 0);
signal CYC_I_ram : std_logic; signal CYC_I_ram : std_logic;
signal ACK_O_ram : std_logic; signal ACK_O_ram : std_logic;
@@ -500,6 +503,9 @@ BEGIN
ADDR_I_flash <= "0000000" & ADDR_O(25 downto 2) & '0'; ADDR_I_flash <= "0000000" & ADDR_O(25 downto 2) & '0';
ADDR_I_ssram <= ("0000000000000" & ADDR_O(19 downto 2)) & '0'; ADDR_I_ssram <= ("0000000000000" & ADDR_O(19 downto 2)) & '0';
SDAT_I_sdram <= MDAT_O & MDAT_O;
SEL_I_sdram <= "0000" & SEL_O;
sys_flash_ssram_out: sys_flash_ssram_out:
process(clk) process(clk)
@@ -529,9 +535,9 @@ sys_flash_ssram_out:
--------------------------------------------------------------- ---------------------------------------------------------------
-- Arbiter -- Arbiter
MRDY_O <= MRDY_O_cpu when arb_gnt(0) = '1' else MRDY_O_vga when arb_gnt(1) = '1' else '0'; MRDY_O <= MRDY_O_cpu when arb_gnt(0) = '1' else MRDY_O_vga when arb_gnt(1) = '1' else '0';
MDAT_O <= MDAT_O_cpu when arb_gnt(0) = '1' else MDAT_O_vga when arb_gnt(1) = '1' else (others => '0'); MDAT_O <= MDAT_O_cpu when arb_gnt(0) = '1' else MDAT_O_vga(31 downto 0) when arb_gnt(1) = '1' else (others => '0');
ADDR_O <= ADDR_O_cpu when arb_gnt(0) = '1' else ADDR_O_vga when arb_gnt(1) = '1' else (others => '0'); ADDR_O <= ADDR_O_cpu when arb_gnt(0) = '1' else ADDR_O_vga when arb_gnt(1) = '1' else (others => '0');
SEL_O <= SEL_O_cpu when arb_gnt(0) = '1' else SEL_O_vga when arb_gnt(1) = '1' else (others => '0'); SEL_O <= SEL_O_cpu when arb_gnt(0) = '1' else SEL_O_vga(3 downto 0) when arb_gnt(1) = '1' else (others => '0');
WE_O <= WE_O_cpu when arb_gnt(0) = '1' else WE_O_vga when arb_gnt(1) = '1' else '0'; WE_O <= WE_O_cpu when arb_gnt(0) = '1' else WE_O_vga when arb_gnt(1) = '1' else '0';
CYC_O <= CYC_O_cpu when arb_gnt(0) = '1' else CYC_O_vga when arb_gnt(1) = '1' else '0'; CYC_O <= CYC_O_cpu when arb_gnt(0) = '1' else CYC_O_vga when arb_gnt(1) = '1' else '0';
STB_O <= STB_O_cpu when arb_gnt(0) = '1' else STB_O_vga when arb_gnt(1) = '1' else '0'; STB_O <= STB_O_cpu when arb_gnt(0) = '1' else STB_O_vga when arb_gnt(1) = '1' else '0';
@@ -543,6 +549,7 @@ sys_flash_ssram_out:
arb_req(0) <= CYC_O_cpu; arb_req(0) <= CYC_O_cpu;
arb_req(1) <= CYC_O_vga; arb_req(1) <= CYC_O_vga;
MDAT_I_vga <= SDAT_O_sdram(63 downto 32) & MDAT_I;
arbiter_proc: arbiter_proc:
process(clk) process(clk)
@@ -657,7 +664,7 @@ signal_mux:
SRDY_I <= SRDY_O_flash or SRDY_O_ssram or SRDY_O_usb or SRDY_O_sdram or SRDY_O_ram or SRDY_O_rom or SRDY_O_uart or SRDY_O_gpio or SRDY_O_vga; SRDY_I <= SRDY_O_flash or SRDY_O_ssram or SRDY_O_usb or SRDY_O_sdram or SRDY_O_ram or SRDY_O_rom or SRDY_O_uart or SRDY_O_gpio or SRDY_O_vga;
ACK_I <= ACK_O_flash or ACK_O_usb or ACK_O_sdram or ACK_O_ssram or ACK_O_ram or ACK_O_rom or ACK_O_uart or ACK_O_gpio or ACK_O_vga; ACK_I <= ACK_O_flash or ACK_O_usb or ACK_O_sdram or ACK_O_ssram or ACK_O_ram or ACK_O_rom or ACK_O_uart or ACK_O_gpio or ACK_O_vga;
MDAT_I <= SDAT_O_ssram when CYC_I_ssram = '1' else MDAT_I <= SDAT_O_ssram when CYC_I_ssram = '1' else
SDAT_O_sdram when CYC_I_sdram = '1' else SDAT_O_sdram(31 downto 0) when CYC_I_sdram = '1' else
SDAT_O_ram when CYC_I_ram = '1' else SDAT_O_ram when CYC_I_ram = '1' else
SDAT_O_rom when CYC_I_rom = '1' else SDAT_O_rom when CYC_I_rom = '1' else
SDAT_O_flash when CYC_I_flash = '1' else SDAT_O_flash when CYC_I_flash = '1' else
@@ -878,12 +885,12 @@ inst_ssram_port_wb : entity work.ssram_port_wb
ssram_bw_n => sys_ssram_bw_n ssram_bw_n => sys_ssram_bw_n
); );
inst_sdram_ctrl_frontend_wb : entity work.sdram_ctrl_frontend_wb inst_sdram_ctrl_frontend_wb : entity work.sdram_ctrl_frontend64_wb
GENERIC MAP GENERIC MAP
( (
BL => BURST_LEN, BL => BURST_LEN,
f_sysclk => ddr_frequency_hz, f_sysclk => ddr_frequency_hz,
fifo_depth => 6 fifo_depth => 5
) )
PORT MAP PORT MAP
( (
@@ -894,13 +901,13 @@ inst_sdram_ctrl_frontend_wb : entity work.sdram_ctrl_frontend_wb
CYC_I => CYC_I_sdram, CYC_I => CYC_I_sdram,
STB_I => STB_O, STB_I => STB_O,
SEL_I => SEL_O, SEL_I => SEL_I_sdram,
WE_I => WE_O, WE_I => WE_O,
ACK_O => ACK_O_sdram, ACK_O => ACK_O_sdram,
MRDY_I => MRDY_O, MRDY_I => MRDY_O,
SRDY_O => SRDY_O_sdram, SRDY_O => SRDY_O_sdram,
ADDR_I => ADDR_O, ADDR_I => ADDR_O,
DAT_I => MDAT_O, DAT_I => SDAT_I_sdram,
DAT_O => SDAT_O_sdram, DAT_O => SDAT_O_sdram,
-- SDRAM signals -- SDRAM signals
@@ -939,14 +946,14 @@ inst_clockgen : entity work.clockgen
error_out => open error_out => open
); );
inst_vga_frontend : vga_frontend inst_vga_frontend : vga_frontend64
GENERIC MAP GENERIC MAP
( (
sys_freq => 100E6, sys_freq => 100E6,
fifo_depth => 2048, fifo_depth => 2048,
fifo_almost_full_thresh => 1860, fifo_almost_full_thresh => 1860,
fifo_almost_empty_thresh => 256, fifo_almost_empty_thresh => 256,
tsvga => ts_vga_800_600_72 tsvga => ts_vga_testbench
) )
PORT MAP PORT MAP
( (
@@ -963,7 +970,7 @@ inst_vga_frontend : vga_frontend
SRDY_I => SRDY_I_vga, SRDY_I => SRDY_I_vga,
MRDY_O => MRDY_O_vga, MRDY_O => MRDY_O_vga,
ADDR_O => ADDR_O_vga, ADDR_O => ADDR_O_vga,
MDAT_I => MDAT_I, MDAT_I => MDAT_I_vga,
MDAT_O => MDAT_O_vga, MDAT_O => MDAT_O_vga,
-- JBUS Slave signals -- JBUS Slave signals