DRAM_ABITS => 24,
DRAM_ALINES => 1,
DRAM_DLINES => 16,
+ DRAM_CKLINES => 1,
DRAM_PORT_WIDTH => 128,
PAYLOAD_FILE => DRAM_INIT_FILE,
PAYLOAD_SIZE => ROM_SIZE
DRAM_ABITS => 24,
DRAM_ALINES => 1,
DRAM_DLINES => 16,
+ DRAM_CKLINES => 1,
DRAM_PORT_WIDTH => 128,
PAYLOAD_FILE => DRAM_INIT_FILE,
PAYLOAD_SIZE => DRAM_INIT_SIZE
signal spi_sdat_oe : std_ulogic_vector(3 downto 0);
signal spi_sdat_i : std_ulogic_vector(3 downto 0);
+ -- ddram clock signals as vectors
+ signal ddram_clk_p_vec : std_logic_vector(0 downto 0);
+ signal ddram_clk_n_vec : std_logic_vector(0 downto 0);
+
-- Fixup various memory sizes based on generics
function get_bram_size return natural is
begin
-- but for now, assert it's 100Mhz
assert CLK_FREQUENCY = 100000000;
+ ddram_clk_p_vec <= (others => ddram_clk_p);
+ ddram_clk_n_vec <= (others => ddram_clk_n);
+
reset_controller: entity work.soc_reset
generic map(
RESET_LOW => false,
DRAM_ABITS => 26,
DRAM_ALINES => 16,
DRAM_DLINES => 16,
+ DRAM_CKLINES => 1,
DRAM_PORT_WIDTH => 128,
PAYLOAD_FILE => RAM_INIT_FILE,
PAYLOAD_SIZE => PAYLOAD_SIZE
ddram_dq => ddram_dq,
ddram_dqs_p => ddram_dqs_p,
ddram_dqs_n => ddram_dqs_n,
- ddram_clk_p => ddram_clk_p,
- ddram_clk_n => ddram_clk_n,
+ ddram_clk_p => ddram_clk_p_vec,
+ ddram_clk_n => ddram_clk_n_vec,
ddram_cke => ddram_cke,
ddram_odt => ddram_odt,
ddram_reset_n => ddram_reset_n
signal gpio_out : std_ulogic_vector(NGPIO - 1 downto 0);
signal gpio_dir : std_ulogic_vector(NGPIO - 1 downto 0);
+ -- ddram clock signals as vectors
+ signal ddram_clk_p_vec : std_logic_vector(0 downto 0);
+ signal ddram_clk_n_vec : std_logic_vector(0 downto 0);
+
-- Fixup various memory sizes based on generics
function get_bram_size return natural is
begin
end if;
end process;
+ ddram_clk_p_vec <= (others => ddram_clk_p);
+ ddram_clk_n_vec <= (others => ddram_clk_n);
+
dram: entity work.litedram_wrapper
generic map(
DRAM_ABITS => 24,
DRAM_ALINES => 14,
DRAM_DLINES => 16,
+ DRAM_CKLINES => 1,
DRAM_PORT_WIDTH => 128,
PAYLOAD_FILE => RAM_INIT_FILE,
PAYLOAD_SIZE => PAYLOAD_SIZE
ddram_dq => ddram_dq,
ddram_dqs_p => ddram_dqs_p,
ddram_dqs_n => ddram_dqs_n,
- ddram_clk_p => ddram_clk_p,
- ddram_clk_n => ddram_clk_n,
+ ddram_clk_p => ddram_clk_p_vec,
+ ddram_clk_n => ddram_clk_n_vec,
ddram_cke => ddram_cke,
ddram_odt => ddram_odt,
ddram_reset_n => ddram_reset_n
signal spi_sdat_oe : std_ulogic_vector(3 downto 0);
signal spi_sdat_i : std_ulogic_vector(3 downto 0);
+ -- ddram clock signals as vectors
+ signal ddram_clk_p_vec : std_logic_vector(0 downto 0);
+ signal ddram_clk_n_vec : std_logic_vector(0 downto 0);
+
-- Fixup various memory sizes based on generics
function get_bram_size return natural is
begin
rst_out => open
);
+ ddram_clk_p_vec <= (others => ddram_clk_p);
+ ddram_clk_n_vec <= (others => ddram_clk_n);
+
dram: entity work.litedram_wrapper
generic map(
DRAM_ABITS => 25,
DRAM_ALINES => 15,
DRAM_DLINES => 32,
+ DRAM_CKLINES => 1,
DRAM_PORT_WIDTH => 256,
PAYLOAD_FILE => RAM_INIT_FILE,
PAYLOAD_SIZE => PAYLOAD_SIZE
ddram_dq => ddram_dq,
ddram_dqs_p => ddram_dqs_p,
ddram_dqs_n => ddram_dqs_n,
- ddram_clk_p => ddram_clk_p,
- ddram_clk_n => ddram_clk_n,
+ ddram_clk_p => ddram_clk_p_vec,
+ ddram_clk_n => ddram_clk_n_vec,
ddram_cke => ddram_cke,
ddram_odt => ddram_odt,
ddram_reset_n => ddram_reset_n
signal spi_sdat_oe : std_ulogic_vector(3 downto 0);
signal spi_sdat_i : std_ulogic_vector(3 downto 0);
+ -- ddram clock signals as vectors
+ signal ddram_clk_p_vec : std_logic_vector(0 downto 0);
+ signal ddram_clk_n_vec : std_logic_vector(0 downto 0);
+
-- Fixup various memory sizes based on generics
function get_bram_size return natural is
begin
end if;
end process;
+ ddram_clk_p_vec <= (others => ddram_clk_p);
+ ddram_clk_n_vec <= (others => ddram_clk_n);
+
dram: entity work.litedram_wrapper
generic map(
DRAM_ABITS => 25,
DRAM_ALINES => 15,
DRAM_DLINES => 16,
+ DRAM_CKLINES => 1,
DRAM_PORT_WIDTH => 128,
PAYLOAD_FILE => RAM_INIT_FILE,
PAYLOAD_SIZE => PAYLOAD_SIZE
ddram_dq => ddram_dq,
ddram_dqs_p => ddram_dqs_p,
ddram_dqs_n => ddram_dqs_n,
- ddram_clk_p => ddram_clk_p,
- ddram_clk_n => ddram_clk_n,
+ ddram_clk_p => ddram_clk_p_vec,
+ ddram_clk_n => ddram_clk_n_vec,
ddram_cke => ddram_cke,
ddram_odt => ddram_odt,
ddram_reset_n => ddram_reset_n
ddram_dm : out std_ulogic_vector(1 downto 0);
ddram_dq : inout std_ulogic_vector(15 downto 0);
ddram_dqs_p : inout std_ulogic_vector(1 downto 0);
- ddram_clk_p : out std_ulogic;
+ ddram_clk_p : out std_ulogic_vector(0 downto 0);
-- only the positive differential pin is instantiated
--ddram_dqs_n : inout std_ulogic_vector(1 downto 0);
- --ddram_clk_n : out std_ulogic;
+ --ddram_clk_n : out std_ulogic_vector(0 downto 0);
ddram_cke : out std_ulogic;
ddram_odt : out std_ulogic;
ddram_reset_n : out std_ulogic;
DRAM_ABITS => 24,
DRAM_ALINES => 14,
DRAM_DLINES => 16,
+ DRAM_CKLINES => 1,
DRAM_PORT_WIDTH => 128,
NUM_LINES => 8, -- reduce from default of 64 to make smaller/timing
PAYLOAD_FILE => RAM_INIT_FILE,
signal spi_sdat_oe : std_ulogic_vector(3 downto 0);
signal spi_sdat_i : std_ulogic_vector(3 downto 0);
+ -- ddram clock signals as vectors
+ signal ddram_clk_p_vec : std_ulogic_vector(0 downto 0);
+ signal ddram_clk_n_vec : std_ulogic_vector(0 downto 0);
+
-- Fixup various memory sizes based on generics
function get_bram_size return natural is
begin
end if;
end process;
+ ddram_clk_p_vec <= (others => ddram_clk_p);
+ ddram_clk_n_vec <= (others => ddram_clk_n);
+
dram: entity work.litedram_wrapper
generic map(
DRAM_ABITS => 24,
DRAM_ALINES => 14,
DRAM_DLINES => 16,
+ DRAM_CKLINES => 1,
DRAM_PORT_WIDTH => 128,
PAYLOAD_FILE => RAM_INIT_FILE,
PAYLOAD_SIZE => PAYLOAD_SIZE
ddram_dq => ddram_dq,
ddram_dqs_p => ddram_dqs_p,
ddram_dqs_n => ddram_dqs_n,
- ddram_clk_p => ddram_clk_p,
- ddram_clk_n => ddram_clk_n,
+ ddram_clk_p => ddram_clk_p_vec,
+ ddram_clk_n => ddram_clk_n_vec,
ddram_cke => ddram_cke,
ddram_odt => ddram_odt,
ddram_reset_n => ddram_reset_n
DRAM_ABITS : positive;
DRAM_ALINES : natural;
DRAM_DLINES : natural;
+ DRAM_CKLINES : natural;
DRAM_PORT_WIDTH : positive;
-- Pseudo-ROM payload
ddram_dq : inout std_ulogic_vector(DRAM_DLINES-1 downto 0);
ddram_dqs_p : inout std_ulogic_vector(DRAM_DLINES/8-1 downto 0);
ddram_dqs_n : inout std_ulogic_vector(DRAM_DLINES/8-1 downto 0);
- ddram_clk_p : out std_ulogic;
- ddram_clk_n : out std_ulogic;
+ ddram_clk_p : out std_ulogic_vector(DRAM_CKLINES-1 downto 0);
+ ddram_clk_n : out std_ulogic_vector(DRAM_CKLINES-1 downto 0);
ddram_cke : out std_ulogic;
ddram_odt : out std_ulogic;
ddram_reset_n : out std_ulogic
ddram_dq : inout std_ulogic_vector(DRAM_DLINES-1 downto 0);
ddram_dqs_p : inout std_ulogic_vector(DRAM_DLINES/8-1 downto 0);
ddram_dqs_n : inout std_ulogic_vector(DRAM_DLINES/8-1 downto 0);
- ddram_clk_p : out std_ulogic;
- ddram_clk_n : out std_ulogic;
+ ddram_clk_p : out std_ulogic_vector(DRAM_CKLINES-1 downto 0);
+ ddram_clk_n : out std_ulogic_vector(DRAM_CKLINES-1 downto 0);
ddram_cke : out std_ulogic;
ddram_odt : out std_ulogic;
ddram_reset_n : out std_ulogic;
ddram_dq : inout std_ulogic_vector(15 downto 0);
ddram_dqs_p : inout std_ulogic_vector(1 downto 0);
ddram_dqs_n : inout std_ulogic_vector(1 downto 0);
- ddram_clk_p : out std_ulogic;
- ddram_clk_n : out std_ulogic;
+ ddram_clk_p : out std_ulogic_vector(0 downto 0);
+ ddram_clk_n : out std_ulogic_vector(0 downto 0);
ddram_cke : out std_ulogic;
ddram_odt : out std_ulogic;
ddram_reset_n : out std_ulogic;