📄 leon_eth_pci.vhd
字号:
----------------------------------------------------------------------------
-- This file is a part of the LEON VHDL model
-- Copyright (C) 1999 European Space Agency (ESA)
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public
-- License as published by the Free Software Foundation; either
-- version 2 of the License, or (at your option) any later version.
--
-- See the file COPYING.LGPL for the full details of the license.
-----------------------------------------------------------------------------
-- Entity: leon_pci
-- File: leon_pci.vhd
-- Author: Jiri Gaisler - ESA/ESTEC
-- Description: Complete processor with PCI pads
------------------------------------------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all;
use work.leon_target.all;
use work.leon_config.all;
use work.leon_iface.all;
use work.tech_map.all;
-- pragma translate_off
use work.debug.all;
-- pragma translate_on
entity leon_eth_pci is
port (
resetn : in std_logic; -- system signals
clk : in std_logic;
pllref : in std_logic;
plllock : out std_logic;
errorn : out std_logic;
address : out std_logic_vector(27 downto 0); -- memory bus
data : inout std_logic_vector(31 downto 0);
ramsn : out std_logic_vector(4 downto 0);
ramoen : out std_logic_vector(4 downto 0);
rwen : inout std_logic_vector(3 downto 0);
romsn : out std_logic_vector(1 downto 0);
iosn : out std_logic;
oen : out std_logic;
read : out std_logic;
writen : inout std_logic;
brdyn : in std_logic;
bexcn : in std_logic;
-- sdram i/f
sdcke : out std_logic_vector ( 1 downto 0); -- clk en
sdcsn : out std_logic_vector ( 1 downto 0); -- chip sel
sdwen : out std_logic; -- write en
sdrasn : out std_logic; -- row addr stb
sdcasn : out std_logic; -- col addr stb
sddqm : out std_logic_vector ( 3 downto 0); -- data i/o mask
sdclk : out std_logic;
pio : inout std_logic_vector(15 downto 0); -- I/O port
wdogn : out std_logic; -- watchdog output
dsuen : in std_logic;
dsutx : out std_logic;
dsurx : in std_logic;
dsubre : in std_logic;
dsuact : out std_logic;
test : in std_logic;
pci_rst_in_n : in std_logic; -- PCI bus
pci_clk_in : in std_logic;
pci_gnt_in_n : in std_logic;
pci_idsel_in : in std_logic; -- ignored in host bridge core
pci_lock_n : inout std_logic; -- Phoenix core: input only
pci_ad : inout std_logic_vector(31 downto 0);
pci_cbe_n : inout std_logic_vector(3 downto 0);
pci_frame_n : inout std_logic;
pci_irdy_n : inout std_logic;
pci_trdy_n : inout std_logic;
pci_devsel_n : inout std_logic;
pci_stop_n : inout std_logic;
pci_perr_n : inout std_logic;
pci_par : inout std_logic;
pci_req_n : inout std_logic; -- tristate pad but never read
pci_serr_n : inout std_logic; -- open drain output
pci_host : in std_logic;
pci_66 : in std_logic;
pci_arb_req_n : in std_logic_vector(0 to 3);
pci_arb_gnt_n : out std_logic_vector(0 to 3);
power_state : out std_logic_vector(1 downto 0);
pme_enable : out std_logic;
pme_clear : out std_logic;
pme_status : in std_logic;
-- ethernet
emdio : inout std_logic;
etx_clk : in std_logic;
erx_clk : in std_logic;
erxd : in std_logic_vector(3 downto 0);
erx_dv : in std_logic;
erx_er : in std_logic;
erx_col : in std_logic;
erx_crs : in std_logic;
etxd : out std_logic_vector(3 downto 0);
etx_en : out std_logic;
etx_er : out std_logic;
emdc : out std_logic;
emddis : out std_logic;
epwrdwn : out std_logic;
ereset : out std_logic;
esleep : out std_logic;
epause : out std_logic
);
end;
architecture rtl of leon_eth_pci is
component mcore
port (
resetn : in std_logic;
clk : in clk_type;
clkn : in clk_type;
pciclk : in clk_type;
memi : in memory_in_type;
memo : out memory_out_type;
ioi : in io_in_type;
ioo : out io_out_type;
pcii : in pci_in_type;
pcio : out pci_out_type;
dsi : in dsuif_in_type;
dso : out dsuif_out_type;
sdo : out sdram_out_type;
ethi : in eth_in_type;
etho : out eth_out_type;
cgo : in clkgen_out_type;
test : in std_logic
);
end component;
signal vcc, gnd, clko, sdclkl, resetno : std_logic;
signal clkm, clkn, pciclk : clk_type;
signal memi : memory_in_type;
signal memo : memory_out_type;
signal ioi : io_in_type;
signal ioo : io_out_type;
signal pcii : pci_in_type;
signal pcio : pci_out_type;
signal dsi : dsuif_in_type;
signal dso : dsuif_out_type;
signal sdo : sdram_out_type;
signal cgi : clkgen_in_type;
signal cgo : clkgen_out_type;
signal pci_aden : std_logic_vector(31 downto 0);
signal pci_cbeen : std_logic_vector(3 downto 0);
signal pci_frame_en : std_logic;
signal pci_irdy_en : std_logic;
signal pci_trdy_en : std_logic;
signal pci_devsel_en : std_logic;
signal pci_stop_en : std_logic;
signal pci_perr_en : std_logic;
signal pci_par_en : std_logic;
signal pci_req_en : std_logic;
signal pci_serr_en : std_logic;
signal pci_lock_en : std_logic;
signal pci_lock_out : std_logic;
signal pci_req_in_dummy : std_logic;
signal pci_clk : std_logic;
signal ethi : eth_in_type;
signal etho : eth_out_type;
begin
gnd <= '0'; vcc <= '1';
cgi.pllctrl <= "00"; cgi.pllrst <= resetno; cgi.pllref <= pllref;
-- main processor core
mcore0 : mcore
port map (
resetn => resetno, clk => clkm, clkn => clkn, pciclk => pciclk,
memi => memi, memo => memo, ioi => ioi, ioo => ioo,
pcii => pcii, pcio => pcio, dsi => dsi, dso => dso, sdo => sdo,
ethi => ethi, etho => etho, cgo => cgo, test => test);
-- clock generator
clkgen0 : clkgen
port map ( clko, pci_clk, clkm, clkn, sdclkl, pciclk, cgi, cgo);
-- pads
-- clk_pad : inpad port map (clk, clko); -- clock
clko <= clk; -- avoid buffering during synthesis
reset_pad : smpad port map (resetn, resetno); -- reset
brdyn_pad : inpad port map (brdyn, memi.brdyn); -- bus ready
bexcn_pad : inpad port map (bexcn, memi.bexcn); -- bus exception
ds : if DEBUG_UNIT generate
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -