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

📄 tech_virtex.vhd

📁 ARM7的源代码
💻 VHD
📖 第 1 页 / 共 3 页
字号:
    r0 : RAMB4_S16_S16 port map ( di(31 downto 16), di(15 downto 0),    	enable, enable, write, write, gnd, gnd, clk, clk, xa(7 downto 0),        ya(7 downto 0), do(31 downto 16), do(15 downto 0));  end generate;  a8 : if ((abits <= 7) and (dbits > 32)) or (abits = 8) generate    x : for i in 0 to ((dbits-1)/16) generate      r : RAMB4_S16 port map ( di (((i+1)*16)-1 downto i*16), 	  enable, write, gnd, clk, xa(7 downto 0), 	  do (((i+1)*16)-1 downto i*16));    end generate;  end generate;  a9 : if abits = 9 generate    x : for i in 0 to ((dbits-1)/8) generate      r : RAMB4_S8 port map ( di (((i+1)*8)-1 downto i*8), 	  enable, write, gnd, clk, xa(8 downto 0), 	  do (((i+1)*8)-1 downto i*8));    end generate;  end generate;  a10 : if abits = 10 generate    x : for i in 0 to ((dbits-1)/4) generate      r : RAMB4_S4 port map ( di (((i+1)*4)-1 downto i*4), 	  enable, write, gnd, clk, xa(9 downto 0), 	  do (((i+1)*4)-1 downto i*4));    end generate;  end generate;  a11 : if abits = 11 generate    x : for i in 0 to ((dbits-1)/2) generate      r : RAMB4_S2 port map ( di (((i+1)*2)-1 downto i*2), 	  enable, write, gnd, clk, xa(10 downto 0), 	  do (((i+1)*2)-1 downto i*2));    end generate;  end generate;  a12 : if abits = 12 generate    x : for i in 0 to (dbits-1) generate      r : RAMB4_S1 port map ( di(i downto i), 	  enable, write, gnd, clk, xa(11 downto 0), 	  do (i downto i));    end generate;  end generate;end;LIBRARY ieee;use IEEE.std_logic_1164.all;use work.leon_iface.all;use work.virtex_complib.all;entity virtex_dpram is  generic (     abits : integer := 4; dbits : integer := 32  );  port (    address1 : in std_logic_vector((abits -1) downto 0);    clk1     : in std_logic;    datain1  : in std_logic_vector((dbits -1) downto 0);    dataout1 : out std_logic_vector((dbits -1) downto 0);    enable1  : in std_logic;    write1   : in std_logic;    address2 : in std_logic_vector((abits -1) downto 0);    clk2     : in std_logic;    datain2  : in std_logic_vector((dbits -1) downto 0);    dataout2 : out std_logic_vector((dbits -1) downto 0);    enable2  : in std_logic;    write2   : in std_logic);end;architecture behav of virtex_dpram issignal gnd, vcc : std_logic;signal do1, do2, di1, di2 : std_logic_vector(129 downto 0);signal addr1, addr2 : std_logic_vector(19 downto 0);begin  gnd <= '0'; vcc <= '1';  dataout1 <= do1(dbits-1 downto 0); dataout2 <= do2(dbits-1 downto 0);  di1(dbits-1 downto 0) <= datain1; di1(129 downto dbits) <= (others => '0');  di2(dbits-1 downto 0) <= datain2; di2(129 downto dbits) <= (others => '0');  addr1(abits-1 downto 0) <= address1; addr1(19 downto abits) <= (others => '0');  addr2(abits-1 downto 0) <= address2; addr2(19 downto abits) <= (others => '0');  a8 : if abits <= 8 generate    x : for i in 0 to ((dbits-1)/16) generate      r0 : RAMB4_S16_S16 port map ( 	di1(((i+1)*16)-1 downto i*16), di2(((i+1)*16)-1 downto i*16),   	enable1, enable2, write1, write2, gnd, gnd, clk1, clk2,	addr1(7 downto 0), addr2(7 downto 0), 	do1(((i+1)*16)-1 downto i*16), do2(((i+1)*16)-1 downto i*16));    end generate;  end generate;  a9 : if abits = 9 generate    x : for i in 0 to ((dbits-1)/8) generate      r0 : RAMB4_S8_S8 port map ( 	di1(((i+1)*8)-1 downto i*8), di2(((i+1)*8)-1 downto i*8),   	enable1, enable2, write1, write2, gnd, gnd, clk1, clk2,	addr1(8 downto 0), addr2(8 downto 0), 	do1(((i+1)*8)-1 downto i*8), do2(((i+1)*8)-1 downto i*8));    end generate;  end generate;  a10: if abits = 10 generate    x : for i in 0 to ((dbits-1)/4) generate      r0 : RAMB4_S4_S4 port map ( 	di1(((i+1)*4)-1 downto i*4), di2(((i+1)*4)-1 downto i*4),   	enable1, enable2, write1, write2, gnd, gnd, clk1, clk2,	addr1(9 downto 0), addr2(9 downto 0), 	do1(((i+1)*4)-1 downto i*4), do2(((i+1)*4)-1 downto i*4));    end generate;  end generate;  a11: if abits = 11 generate    x : for i in 0 to ((dbits-1)/2) generate      r0 : RAMB4_S2_S2 port map ( 	di1(((i+1)*2)-1 downto i*2), di2(((i+1)*2)-1 downto i*2),   	enable1, enable2, write1, write2, gnd, gnd, clk1, clk2,	addr1(10 downto 0), addr2(10 downto 0), 	do1(((i+1)*2)-1 downto i*2), do2(((i+1)*2)-1 downto i*2));    end generate;  end generate;  a12: if abits = 12 generate    x : for i in 0 to ((dbits-1)/1) generate      r0 : RAMB4_S1_S1 port map ( 	di1(((i+1)*1)-1 downto i*1), di2(((i+1)*1)-1 downto i*1),   	enable1, enable2, write1, write2, gnd, gnd, clk1, clk2,	addr1(11 downto 0), addr2(11 downto 0), 	do1(((i+1)*1)-1 downto i*1), do2(((i+1)*1)-1 downto i*1));    end generate;  end generate;end;LIBRARY ieee;use IEEE.std_logic_1164.all;use work.leon_iface.all;use work.tech_virtex.all;entity virtex_regfile is  generic (     rftype : integer := 1;    abits : integer := 8; dbits : integer := 32; words : integer := 128  );  port (    rst      : in std_logic;    clk      : in std_logic;    clkn     : in std_logic;    rfi      : in rf_in_type;    rfo      : out rf_out_type);end;architecture behav of virtex_regfile issignal vcc : std_logic;signal gnd : std_logic_vector(127 downto 0);begin  vcc <= '1'; gnd <= (others => '0');  rf0 : if rftype = 1 generate    r0 : virtex_dpram generic map (abits, dbits)      port map (        rfi.rd1addr((abits -1) downto 0), clkn, gnd((dbits -1) downto 0),        rfo.data1((dbits -1) downto 0), vcc, gnd(0),        rfi.wraddr((abits -1) downto 0), clkn, rfi.wrdata((dbits -1) downto 0),        open, rfi.wren, rfi.wren);    r1 : virtex_dpram generic map (abits, dbits)      port map (        rfi.rd2addr((abits -1) downto 0), clkn, gnd((dbits -1) downto 0),        rfo.data2((dbits -1) downto 0), vcc, gnd(0),        rfi.wraddr((abits -1) downto 0), clkn, rfi.wrdata((dbits -1) downto 0),        open, rfi.wren, rfi.wren);  end generate;  rf1 : if rftype = 2 generate    r0 : virtex_dpram generic map (abits, dbits)      port map (        rfi.rd1addr((abits -1) downto 0), clkn, gnd((dbits -1) downto 0),        rfo.data1((dbits -1) downto 0), vcc, gnd(0),        rfi.wraddr((abits -1) downto 0), clk, rfi.wrdata((dbits -1) downto 0),        open, rfi.wren, rfi.wren);    r1 : virtex_dpram generic map (abits, dbits)      port map (        rfi.rd2addr((abits -1) downto 0), clkn, gnd((dbits -1) downto 0),        rfo.data2((dbits -1) downto 0), vcc, gnd(0),        rfi.wraddr((abits -1) downto 0), clk, rfi.wrdata((dbits -1) downto 0),        open, rfi.wren, rfi.wren);  end generate;end;LIBRARY ieee;use IEEE.std_logic_1164.all;use work.leon_iface.all;use work.virtex_complib.all;entity virtex_regfile_cp is  generic (     abits : integer := 4; dbits : integer := 32; words : integer := 16  );  port (    rst      : in std_logic;    clk      : in std_logic;    rfi      : in rf_cp_in_type;    rfo      : out rf_cp_out_type);end;architecture behav of virtex_regfile_cp issignal gnd, vcc : std_logic;signal do1, do2, di1, di2 : std_logic_vector(129 downto 0);signal ra1, ra2, wa : std_logic_vector(19 downto 0);signal gnd16 : std_logic_vector(15 downto 0);begin  gnd <= '0'; vcc <= '1'; gnd16 <= (others => '0');  rfo.data1 <= do1(dbits-1 downto 0); rfo.data2 <= do2(dbits-1 downto 0);  di1(dbits-1 downto 0) <= rfi.wrdata; di1(129 downto dbits) <= (others => '0');  di2(129 downto 0) <= (others => '0');  ra1(abits-1 downto 0) <= rfi.rd1addr; ra1(19 downto abits) <= (others => '0');  ra2(abits-1 downto 0) <= rfi.rd2addr; ra2(19 downto abits) <= (others => '0');  wa(abits-1 downto 0) <= rfi.wraddr; wa(19 downto abits) <= (others => '0');  a8 : if abits <= 8 generate    x : for i in 0 to ((dbits-1)/16) generate      r0 : RAMB4_S16_S16 port map ( 	di1(((i+1)*16)-1 downto i*16), gnd16,   	vcc, vcc, rfi.wren, gnd, gnd, gnd, clk, clk, wa(7 downto 0), 	ra1(7 downto 0), open, do1(((i+1)*16)-1 downto i*16));      r1 : RAMB4_S16_S16 port map ( 	di1(((i+1)*16)-1 downto i*16), gnd16,   	vcc, vcc, rfi.wren, gnd, gnd, gnd, clk, clk, wa(7 downto 0), 	ra2(7 downto 0), open, do2(((i+1)*16)-1 downto i*16));    end generate;  end generate;end;-- input PCI padlibrary IEEE;use IEEE.std_logic_1164.all;use work.virtex_complib.all;entity virtex_pciinpad is port (q : out std_ulogic; pad : in std_logic); end; architecture rtl of virtex_pciinpad is begin op : IBUF_PCI33_3 port map (O => q, I => pad); end;-- output PCI padlibrary IEEE;use IEEE.std_logic_1164.all;use work.virtex_complib.all;entity virtex_pcioutpad is port (d : in  std_logic; pad : out  std_logic); end; architecture rtl of virtex_pcioutpad is begin op : OBUF_PCI33_3 port map (O => pad, I => d); end;-- tri-state output PCI padlibrary IEEE;use IEEE.std_logic_1164.all;use work.virtex_complib.all;entity virtex_pcitoutpad is port (d, en : in  std_logic; pad : out  std_logic); end; architecture rtl of virtex_pcitoutpad is begin   op : OBUFT_PCI33_3 port map (O => pad, I => d, T => en);end;-- bi-directional PCI padlibrary IEEE;use IEEE.std_logic_1164.all;use work.virtex_complib.all;entity virtex_pciiopad is   port (d, en : in  std_logic; q : out std_ulogic; pad : inout  std_logic); end; architecture rtl of virtex_pciiopad is begin  op : IOBUF_PCI33_3   port map (O => q, IO => pad, I => d, T => en);end;-- bi-directional open-drain PCI padlibrary IEEE;use IEEE.std_logic_1164.all;use work.virtex_complib.all;entity virtex_pciiodpad is   port (d : in  std_logic; q : out std_ulogic; pad : inout  std_logic); end; architecture rtl of virtex_pciiodpad is signal gnd : std_ulogic;begin  gnd <= '0';  op : IOBUF_PCI33_3 port map (O => q, IO => pad, I => gnd, T => d);end;library IEEE;use IEEE.std_logic_1164.all;use work.leon_target.all;use work.leon_iface.all;use work.leon_config.all;--library unisim;--use unisim.vcomponents.all;entity virtex_clkgen isgeneric ( clk_mul : integer := 1 ; clk_div : integer := 1);port (    clkin   : in  std_logic;    pciclkin: in  std_logic;    clk     : out std_logic;			-- main clock    clkn    : out std_logic;			-- inverted main clock    sdclk   : out std_logic;			-- SDRAM clock    pciclk  : out std_logic;			-- PCI clock    cgi     : in clkgen_in_type;    cgo     : out clkgen_out_type);end;architecture rtl of virtex_clkgen is  component CLKDLL    port (      CLK0    : out std_ulogic;      CLK180  : out std_ulogic;      CLK270  : out std_ulogic;      CLK2X   : out std_ulogic;      CLK90   : out std_ulogic;      CLKDV   : out std_ulogic;      LOCKED  : out std_ulogic;      CLKFB   : in  std_ulogic;      CLKIN   : in  std_ulogic;      RST     : in  std_ulogic      );  end component;  component IBUFG port ( O : out std_logic; I : in std_logic); end component;  component BUFG port ( O : out std_logic; I : in std_logic); end component;  component IBUFG_PCI33_3 port ( O : out std_logic; I : in std_logic); end component;  component BUFGDLL port ( O : out std_logic; I : in std_logic); end component;  signal gnd, Clk_i, Clk_j, Clk_k, dll0rst, dll0lock, dll1lock, dll1rst : std_logic;  signal Clk0B, Clk_FB, Clkint, CLK2X, CLKDV, CLK180, pciclkint : std_logic;begin  gnd <= '0'; clk <= clk_i; clkn <= not clk_i;  c0 : if not PCI_SYSCLK generate    ibufg0 : IBUFG port map (I => Clkin, O => Clkint);  end generate;  c1 : if PCI_SYSCLK generate    ibufg0 : IBUFG port map (I => pciclkin, O => Clkint);  end generate;  c2 : if PCIEN generate    p0 : if PCI_CLKDLL generate      u0 : IBUFG port map (I => pciclkin, O => pciclkint);      u1 : BUFGDLL port map (O => pciclk, I => pciclkint);    end generate;    p1 : if not PCI_CLKDLL generate      u0 : if not PCI_SYSCLK generate        u1 : BUFG port map (I => pciclkin, O => pciclkint);      end generate;      pciclk <= clk_i when PCI_SYSCLK else pciclkint;    end generate;  end generate;  c3 : if not PCIEN generate    pciclk <= Clkint;  end generate;  bufg0 : BUFG port map (I => Clk0B, O => Clk_i);  bufg1 : BUFG port map (I => Clk_j, O => Clk_k);  ibufg1 : IBUFG port map (I => cgi.pllref, O => Clk_FB);  dll0rst <= not cgi.pllrst;  dll0 : CLKDLL     port map (CLKIN => Clkint, CLKFB => Clk_k, CLK0 => Clk_j, CLK180 => CLK180,    CLK2X => CLK2X, CLKDV => CLKDV, LOCKED => dll0lock, RST => dll0rst);     Clk0B <= CLK2X when clk_mul = 2 else CLKDV when clk_div = 2 else Clk_j;  sd0 : if SDRAMEN and not SDINVCLK generate    dll1rst <= not dll0lock; cgo.clklock <= dll1lock;    dll1 : CLKDLL       port map (CLKIN => Clk_i, CLKFB => Clk_FB, RST => dll1rst, CLK0 => sdclk,	LOCKED => dll1lock);  end generate;  sd1 : if not (SDRAMEN and not SDINVCLK) generate    sdclk <= not clk_i; cgo.clklock <= dll0lock;  end generate;  cgo.pcilock <= '1';end;

⌨️ 快捷键说明

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