📄 sdr_sdram.vhd
字号:
end component;
attribute syn_black_box of pll1: component is true;
-- signal declarations
signal ISA : std_logic_vector(11 downto 0); --SDRAM address output
signal IBA : std_logic_vector(1 downto 0); --SDRAM bank address
signal ICS_N : std_logic_vector(1 downto 0); --SDRAM Chip Selects
signal ICKE : std_logic; --SDRAM clock enable
signal IRAS_N : std_logic; --SDRAM Row address Strobe
signal ICAS_N : std_logic; --SDRAM Column address Strobe
signal IWE_N : std_logic;
signal DQIN : std_logic_vector(DSIZE-1 downto 0);
signal IDATAOUT : std_logic_vector(DSIZE-1 downto 0);
signal DQOUT : std_logic_vector(DSIZE-1 downto 0); --SDRAM write enable
signal saddr : std_logic_vector(ASIZE-1 downto 0);
signal sc_cl : std_logic_vector(1 downto 0);
signal sc_rc : std_logic_vector(1 downto 0);
signal sc_rrd : std_logic_vector(3 downto 0);
signal sc_pm : std_logic;
signal sc_bl : std_logic_vector(3 downto 0);
signal load_mode : std_logic;
signal nop : std_logic;
signal reada : std_logic;
signal writea : std_logic;
signal refresh : std_logic;
signal precharge : std_logic;
signal oe : std_logic;
signal ref_req : std_logic;
signal ref_ack : std_logic;
signal cm_ack : std_logic;
signal CLK133 : std_logic;
signal CLK133B : std_logic;
signal clklocked : std_logic;
begin
-- instantiate the control interface module
control1 : control_interface
generic map (
ASIZE => ASIZE
)
port map (
CLK => CLK133,
RESET_N => RESET_N,
CMD => CMD,
ADDR => ADDR,
REF_ACK => ref_ack,
CM_ACK => cm_ack,
NOP => nop,
READA => reada,
WRITEA => writea,
REFRESH => refresh,
PRECHARGE => precharge,
LOAD_MODE => load_mode,
SADDR => saddr,
SC_CL => sc_cl,
SC_RC => sc_rc,
SC_RRD => sc_rrd,
SC_PM => sc_pm,
SC_BL => sc_bl,
REF_REQ => ref_req,
CMD_ACK => CMDACK
);
-- instantiate the command module
command1 : command
generic map(
ASIZE => ASIZE,
DSIZE => DSIZE,
ROWSIZE => ROWSIZE,
COLSIZE => COLSIZE,
BANKSIZE => BANKSIZE,
ROWSTART => ROWSTART,
COLSTART => COLSTART,
BANKSTART => BANKSTART
)
port map (
CLK => CLK133,
RESET_N => RESET_N,
SADDR => saddr,
NOP => nop,
READA => reada,
WRITEA => writea,
REFRESH => refresh,
PRECHARGE => precharge,
LOAD_MODE => load_mode,
SC_CL => sc_cl,
SC_RC => sc_rc,
SC_RRD => sc_rrd,
SC_PM => sc_pm,
SC_BL => sc_bl,
REF_REQ => ref_req,
REF_ACK => ref_ack,
CM_ACK => cm_ack,
OE => oe,
SA => ISA,
BA => IBA,
CS_N => ICS_N,
CKE => ICKE,
RAS_N => IRAS_N,
CAS_N => ICAS_N,
WE_N => IWE_N
);
-- instantiate the data path module
data_path1 : sdr_data_path
generic map (
DSIZE => DSIZE
)
port map (
CLK => CLK133,
RESET_N => RESET_N,
OE => oe,
DATAIN => DATAIN,
DM => DM,
DATAOUT => IDATAOUT,
DQM => DQM,
DQIN => DQIN,
DQOUT => DQOUT
);
pll : pll1
port map (
inclock => CLK,
locked => clklocked,
clock1 => CLK133
);
-- Add a level flops to the sdram i/o that can be place
-- by the router into the I/O cells
process(CLK133)
begin
if rising_edge(CLK133) then
SA <= ISA;
BA <= IBA;
CS_N <= ICS_N;
CKE <= ICKE;
RAS_N <= IRAS_N;
CAS_N <= ICAS_N;
WE_N <= IWE_N;
DQIN <= DQ;
DATAOUT <= IDATAOUT;
end if;
end process;
-- tri-state the data bus using the OE signal from the main controller.
DQ <= DQOUT when OE = '1' else (others => 'Z');
end RTL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -