📄 bennoc.vhd
字号:
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.numeric_std.all;
entity bennoc is
port (
-- Mips clock.
MIPS_CLK: in STD_LOGIC;
-- Interface clock.
DSP_CLK: in STD_LOGIC;
-- Global reset.
RSTl: in STD_LOGIC;
-- Indicates whether Spartan can receive data.
BUSY: in STD_LOGIC;
-- Indicates whether Spartan has data to send.
EMPTY: in STD_LOGIC;
-- Indicates that ADIO is address or data.
AS_DSl: in STD_LOGIC;
-- Read/Write enable.
RENl_WENl: out STD_LOGIC;
-- Indicates if Spartan is being read or being written to.
RDl_WR: out STD_LOGIC;
-- Interrupt to Spartan.
INTl: out STD_LOGIC;
-- Test LEDs.
LEDS: out STD_LOGIC_VECTOR (3 downto 0);
-- Data IO between Spartan and Virtex.
ADIO: inout STD_LOGIC_VECTOR (31 downto 0)
);
end bennoc;
architecture arch of bennoc is
-- communication core
-- it can decode 24-bit addresses and 32 (5-bit) registers
component benif_32reg_24bmem is
port (
CLK: in STD_LOGIC;
RSTl: in STD_LOGIC;
BUSY: in STD_LOGIC;
EMPTY: in STD_LOGIC;
AS_DSl: in STD_LOGIC;
DMA_WEN: in STD_LOGIC;
DMA_REN: in STD_LOGIC;
INT: in STD_LOGIC;
RENl_WENl: out STD_LOGIC;
RDl_WR: out STD_LOGIC;
INTl: out STD_LOGIC;
ADDRESS: out STD_LOGIC_VECTOR (30 downto 0);
WRITE_STROBE: out STD_LOGIC;
READ_STROBE: out STD_LOGIC;
COUNT: out STD_LOGIC_VECTOR (31 downto 0);
DMA_ENABLE: out STD_LOGIC;
DMA_DIRECTION: out STD_LOGIC;
DMA_SEL: out STD_LOGIC_VECTOR (3 downto 0);
DMA_RDY: out STD_LOGIC;
DMA_DATA_AVAILABLE: out STD_LOGIC;
RST: out STD_LOGIC;
SYNC_RESET: out STD_LOGIC;
DMA_RESET: out STD_LOGIC;
ADIO: inout STD_LOGIC_VECTOR (31 downto 0);
DATA: inout STD_LOGIC_VECTOR (31 downto 0);
DMA_DATA: inout STD_LOGIC_VECTOR (31 downto 0)
);
end component;
-- Network on chip
component BENIF_NET is port(
MIPSCLK : in STD_LOGIC;
IFCLK : in STD_LOGIC;
DMA_WEN : out STD_LOGIC;
DMA_REN : out STD_LOGIC;
ADDRESS : in STD_LOGIC_VECTOR (30 downto 0);
INT : out STD_LOGIC;
WRITE_STROBE : in STD_LOGIC;
READ_STROBE : in STD_LOGIC;
COUNT: in STD_LOGIC_VECTOR (31 downto 0);
DMA_ENABLE : in STD_LOGIC;
DMA_DIRECTION : in STD_LOGIC;
DMA_SEL : in STD_LOGIC_VECTOR(3 downto 0);
DMA_RDY : in STD_LOGIC;
DMA_DATA_AVAILABLE : in STD_LOGIC;
RST : in STD_LOGIC;
SYNC_RESET : in STD_LOGIC;
DMA_RESET : in STD_LOGIC;
DATA: inout STD_LOGIC_VECTOR (31 downto 0);
DMA_DATA: inout STD_LOGIC_VECTOR(31 downto 0);
LEDS : out STD_LOGIC_VECTOR(3 downto 0)
);
end component;
component BUFGDLL port
(I: in STD_LOGIC;
O: out STD_LOGIC
);
end component;
component CLKDLL
port (
CLKIN : in std_logic; -- Main Clock input
CLKFB : in std_logic; -- Clock feedback
RST : in std_logic; -- Reset signal
CLK0 : out std_logic; -- Deskewed clock 0 phase
CLK90 : out std_logic; -- Deskewed clock 90 phase
CLK180 : out std_logic; -- Deskewed Clock 180 phase
CLK270 : out std_logic; -- Deskewed Clock 270 phase
CLK2X : out std_logic; -- Deskewed Clock 2x
CLKDV : out std_logic; -- Deskewed Clock Divided
LOCKED : out std_logic); -- Locked signal
end component;
component BUFG
port (
I : in std_logic;
O : out std_logic);
end component;
component IBUFG
port (
I : in std_logic;
O : out std_logic);
end component;
signal DSP_CLKi,DSP_CLKubi,DSP_CLKibufg : std_logic;
signal RST,RST_EXT,RST_INTl : std_logic;
signal IFCLK : STD_LOGIC;
signal DMA_WEN : STD_LOGIC;
signal DMA_REN : STD_LOGIC;
signal ADDRESS : STD_LOGIC_VECTOR (30 downto 0);
signal INT : STD_LOGIC;
signal WRITE_STROBE : STD_LOGIC;
signal READ_STROBE : STD_LOGIC;
signal COUNT: STD_LOGIC_VECTOR (31 downto 0);
signal DMA_ENABLE : STD_LOGIC;
signal DMA_DIRECTION : STD_LOGIC;
signal DMA_SEL : STD_LOGIC_VECTOR(3 downto 0);
signal DMA_RDY : STD_LOGIC;
signal DMA_DATA_AVAILABLE : STD_LOGIC;
signal SYNC_RESET : STD_LOGIC;
signal DMA_RESET : STD_LOGIC;
signal DATA: STD_LOGIC_VECTOR (31 downto 0);
signal DMA_DATA: STD_LOGIC_VECTOR (31 downto 0);
begin -- arch
RST_EXT <= not(RSTl);
H3 : IBUFG
port map(
I => DSP_CLK,
O => DSP_CLKibufg
);
CLK_INDLL : CLKDLL
port map(
CLKIN => DSP_CLKibufg,
CLKFB => IFCLK,
RST => RST_EXT,
CLK0 => DSP_CLKubi,
CLK90 => open,
CLK180 => open,
CLK270 => open,
CLK2X => open,
CLKDV => open,
LOCKED => RST_INTl
);
H4 : BUFG
port map(
I => DSP_CLKubi,
O => IFCLK
);
svif : benif_32reg_24bmem port map (
-- signals from Spartan
CLK => IFCLK,
RSTl => RST_INTl,
BUSY => BUSY,
EMPTY => EMPTY,
AS_DSl => AS_DSl,
RENl_WENl => RENl_WENl,
RDl_WR => RDl_WR,
INTl => INTl,
ADIO => ADIO,
-- signals to user
DMA_WEN => DMA_WEN,
DMA_REN => DMA_REN,
INT => INT,
ADDRESS => ADDRESS,
WRITE_STROBE => WRITE_STROBE,
READ_STROBE => READ_STROBE,
COUNT => COUNT,
DMA_ENABLE => DMA_ENABLE,
DMA_DIRECTION => DMA_DIRECTION,
DMA_SEL => DMA_SEL,
DMA_RDY => DMA_RDY,
DMA_DATA_AVAILABLE => DMA_DATA_AVAILABLE,
RST => RST,
SYNC_RESET => SYNC_RESET,
DMA_RESET => DMA_RESET,
DATA => DATA,
DMA_DATA => DMA_DATA
);
noc : BENIF_NET port map (
MIPSCLK => MIPS_CLK,
IFCLK => IFCLK,
DMA_WEN => DMA_WEN,
DMA_REN => DMA_REN,
INT => INT,
ADDRESS => ADDRESS,
WRITE_STROBE => WRITE_STROBE,
READ_STROBE => READ_STROBE,
COUNT => COUNT,
DMA_ENABLE => DMA_ENABLE,
DMA_DIRECTION => DMA_DIRECTION,
DMA_SEL => DMA_SEL,
DMA_RDY => DMA_RDY,
DMA_DATA_AVAILABLE => DMA_DATA_AVAILABLE,
RST => RST,
SYNC_RESET => SYNC_RESET,
DMA_RESET => DMA_RESET,
DATA => DATA,
DMA_DATA => DMA_DATA,
LEDS => LEDS
);
end arch;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -