⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ddrrec.vhd

📁 free hardware ip core about sparcv8,a soc cpu in vhdl
💻 VHD
📖 第 1 页 / 共 2 页
字号:
     w_data_valid     : std_logic_vector((log2(buffersize)-1) downto 0);          sync_adr         : std_logic_vector((bufferadr-1) downto 0);     sync_wdata       : std_logic_vector(2*(maxdqsize+maxdmsize)-1 downto 0);     sync_write       : std_ulogic;     sync_busy        : std_ulogic;     sync_busy_adr    : std_logic_vector((bufferadr-1) downto 0);     sync2_adr        : std_logic_vector((log2(buffersize)-1) downto 0);     sync2_wdata      : std_logic_vector((ahbadr-1+1) downto 0);     sync2_write      : std_ulogic;     sync2_busy       : std_ulogic;     doRead           : std_ulogic;     doWrite          : std_ulogic;     new_burst        : std_ulogic;     startp           : integer range 0 to 7;     ahbstartp        : integer range 0 to 7;     even_odd_write   : integer range 0 to 1;     burst_hsize      : integer range 1 to 8;     offset           : std_logic_vector(2 downto 0);     ahboffset        : std_logic_vector(2 downto 0);     read_data        : std_logic_vector(maxdqsize-1 downto 0);     cur_hrdata       : std_logic_vector((ahbdata-1) downto 0);     cur_hready       : std_ulogic;     cur_hresp        : std_logic_vector(1 downto 0);     prev_retry       : std_ulogic;     prev_error       : std_ulogic;     burst_dm         : burst_mask_type;   end record;------------------------------------------------------------------------------- -- APB controller - Local variables   type apb_reg_type is record     ddrcfg_reg    : std_logic_vector(31 downto 0);   end record;------------------------------------------------------------------------------- -- High speed RW - Local variables   type rw_reg_type is record     cbufstate      : cmdbuffercycletype;     cmdstate       : cmdcycletype;     rwstate        : rwcycletype;     cur_buf        : two_buf_adr_type;     cur_ahb        : integer range 0 to 1;     use_bl         : integer range 2 to 8;     use_ml         : integer range 1 to 8;     use_buf        : std_logic_vector((log2(buffersize)-1) downto 0);     use_ahb        : integer range 0 to 1;     use_cas        : std_ulogic;     rw_cmd         : std_logic_vector(2 downto 0);     rw_bl          : integer range 2 to 8;     rw_cas         : integer range 2 to 3;     next_bl        : integer range 2 to 8;     next_ml        : integer range 1 to 8;     next_buf       : std_logic_vector((log2(buffersize)-1) downto 0);     next_ahb       : integer range 0 to 1;     next_cas       : std_logic_vector(1 downto 0);     next_adr       : std_logic_vector(adrbits-1 downto 0);     next_cs        : std_logic_vector(1 downto 0);     next_cmd       : std_logic_vector(2 downto 0);     set_cmd        : std_logic_vector(2 downto 0);     set_adr        : std_logic_vector(adrbits-1 downto 0);     set_cs         : std_logic_vector(1 downto 0);     set_cke        : std_ulogic;     hs_busy        : std_ulogic;     cmdDone        : two_buf_adr_type;      begin_read     : std_ulogic;     begin_write    : std_ulogic;     dq_dqs_oe      : std_ulogic;     w_ce           : std_ulogic;     r_ce           : std_ulogic;      cnt            : integer range 0 to 8;     holdcnt        : integer range 0 to 31;     r2wholdcnt     : integer range 0 to 15;     act2precnt     : integer range 0 to 15;     wait_time      : integer range 0 to 31;     readwait       : std_logic_vector(6 downto 0);     writewait      : std_logic_vector(1 downto 0);     bufwait        : bufwaittype;     ahbwait        : ahbwaittype;     blwait         : blwaittype;     mlwait         : mlwaittype;     caswait        : std_logic_vector(6 downto 0);     dm1_o          : std_logic_vector((maxdmsize-1) downto 0);     dm2_o          : std_logic_vector((maxdmsize-1) downto 0);     dqs1_o         : std_ulogic;     sync_adr       : two_buf_data_type;     sync_write     : std_logic_vector(1 downto 0);     sync_wdata     : std_logic_vector(2*(maxdqsize+maxdmsize)-1 downto 0);                end record;------------------------------------------------------------------------------- -- High speed CMD - Local variables   type cmd_reg_type is record     cur_cmd        : std_logic_vector(2 downto 0);     cur_cs         : std_logic_vector(1 downto 0);     cur_adr        : std_logic_vector(adrbits-1 downto 0);     next_cmd       : std_logic_vector(2 downto 0);     next_cs        : std_logic_vector(1 downto 0);     next_adr       : std_logic_vector(adrbits-1 downto 0);   end record;------------------------------------------------------------------------------- -- Main controller - Local variables   type main_reg_type is record     -- For main controller     mainstate        : maincycletype;         loadcmdbuffer    : std_ulogic;     cmdbufferdata    : std_logic_vector(2 downto 0);     adrbufferdata    : std_logic_vector(adrbits-1 downto 0);     use_ahb          : integer range 0 to 1;     use_bl           : integer range 2 to 8;     use_cas          : std_logic_vector(1 downto 0);     use_buf          : std_logic_vector((log2(buffersize)-1) downto 0);     burstlength      : integer range 2 to 8;     rw_cmd_done      : two_buf_adr_type;     lmradr           : std_logic_vector(adrbits-1 downto 0);     memCmdDone       : std_ulogic;     lockAHB          : std_logic_vector(1 downto 0);     pre_row          : pre_row_type;     pre_chg          : std_logic_vector(7 downto 0);     pre_bankadr      : two_pre_bank_type;     sync2_adr        : two_buf_adr_type;     -- For init statemachine     initstate   : initcycletype;     doMemInit   : std_ulogic;     memInitDone : std_ulogic;     initDelay   : integer range 0 to 255;     cs          : std_logic_vector(1 downto 0);      -- For address calculator     coladdress    : two_ddr_adr_type;     tmpcoladdress : two_ddr_adr_type;     rowaddress    : two_ddr_adr_type;     addressrange  : integer range 0 to 31;     tmpcolbits    : integer range 0 to 15;     colbits       : integer range 0 to 15;     rowbits       : integer range 0 to 15;     bankselect    : two_ddr_bank_type;     intbankbits   : two_ddr_bank_type;          -- For refresh timer statemachine     timerstate     : timercycletype;     doRefresh      : std_ulogic;     refreshDone    : std_ulogic;     refreshTime    : integer range 0 to 4095;     maxRefreshTime : integer range 0 to 32767;     idlecnt        : integer range 0 to 10;     refreshcnt     : integer range 0 to 65535;     -- For DDRCFG register (APB)     apbstate         : apbcycletype;     apb_cmd_done : std_ulogic;     ready        : std_ulogic;     ddrcfg       : config_out_type;   end record;--------------------------------------------------------------------------------- Components-------------------------------------------------------------------------------     component ahb_slv     generic (       hindex   :     integer := 0;       haddr    :     integer := 0;       hmask    :     integer := 16#f80#;       sepclk   :     integer := 0;       dqsize   :     integer := 64;       dmsize   :     integer := 8;       tech     :     integer := virtex2);     port (       rst      : in  std_ulogic;       hclk     : in  std_ulogic;       clk0     : in  std_ulogic;       csi      : in  ahb_ctrl_in_type;       cso      : out ahb_ctrl_out_type);   end component;   component ddr_in     generic (       tech     : integer);     port (       Q1       : out std_ulogic;       Q2       : out std_ulogic;       C1       : in std_ulogic;       C2       : in std_ulogic;       CE       : in std_ulogic;--       DQS      : in std_logic; -- used for lattice--       DDRCLKPOL: in std_logic; -- used for lattice       D        : in std_ulogic;       R        : in std_ulogic;       S        : in std_ulogic);   end component;   component ddr_out     generic (       tech     : integer);     port (       Q        : out std_ulogic;       C1       : in std_ulogic;       C2       : in std_ulogic;       CE       : in std_ulogic;       D1       : in std_ulogic;       D2       : in std_ulogic;       R        : in std_ulogic;       S        : in std_ulogic);   end component;   component hs     generic(       tech      : in integer;       dqsize    : in integer;       dmsize    : in integer;       strobesize: in integer;       clkperiod : in integer);     port (       rst       : in std_ulogic;       clk0      : in std_ulogic;       clk90     : in std_ulogic;       clk180    : in std_ulogic;       clk270    : in std_ulogic;       hclk      : in std_ulogic;       hssi      : in hs_in_type;       hsso      : out hs_out_type);   end component;   end ddrrec;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -