106 lines
4.4 KiB
VHDL
106 lines
4.4 KiB
VHDL
library IEEE;
|
|
use IEEE.STD_LOGIC_1164.ALL;
|
|
use IEEE.NUMERIC_STD.ALL;
|
|
|
|
entity axi_crc is
|
|
generic (
|
|
DATA_WIDTH : integer := 32; -- Datenwortbreite
|
|
ID_WIDTH : integer := 4 -- AXI ID Wortbreite
|
|
);
|
|
port (
|
|
CLK : in std_logic;
|
|
RESETN : in std_logic;
|
|
INTERRUPT : out std_logic;
|
|
|
|
-- AXI Master Interface (Memory)
|
|
M_AXI_ARREADY : in std_logic := '1';
|
|
M_AXI_ARVALID : out std_logic;
|
|
M_AXI_ARADDR : out std_logic_vector(31 downto 0);
|
|
M_AXI_ARID : out std_logic_vector(ID_WIDTH-1 downto 0);
|
|
M_AXI_ARLEN : out std_logic_vector( 3 downto 0);
|
|
M_AXI_ARSIZE : out std_logic_vector( 2 downto 0);
|
|
M_AXI_ARBURST : out std_logic_vector( 1 downto 0);
|
|
M_AXI_ARPROT : out std_logic_vector( 2 downto 0);
|
|
M_AXI_ARCACHE : out std_logic_vector( 3 downto 0);
|
|
M_AXI_RREADY : out std_logic;
|
|
M_AXI_RVALID : in std_logic;
|
|
M_AXI_RDATA : in std_logic_vector(DATA_WIDTH-1 downto 0);
|
|
M_AXI_RRESP : in std_logic_vector( 1 downto 0);
|
|
M_AXI_RID : in std_logic_vector(ID_WIDTH-1 downto 0);
|
|
M_AXI_RLAST : in std_logic;
|
|
|
|
M_AXI_AWREADY : in std_logic := '0';
|
|
M_AXI_AWVALID : out std_logic;
|
|
M_AXI_AWADDR : out std_logic_vector(31 downto 0);
|
|
M_AXI_AWLEN : out std_logic_vector( 3 downto 0);
|
|
M_AXI_AWSIZE : out std_logic_vector( 2 downto 0);
|
|
M_AXI_AWID : out std_logic_vector(ID_WIDTH-1 downto 0);
|
|
M_AXI_AWBURST : out std_logic_vector( 1 downto 0);
|
|
M_AXI_AWPROT : out std_logic_vector( 2 downto 0);
|
|
M_AXI_AWCACHE : out std_logic_vector( 3 downto 0);
|
|
M_AXI_WREADY : in std_logic := '0';
|
|
M_AXI_WVALID : out std_logic;
|
|
M_AXI_WDATA : out std_logic_vector(DATA_WIDTH-1 downto 0);
|
|
M_AXI_WSTRB : out std_logic_vector(DATA_WIDTH/8-1 downto 0);
|
|
M_AXI_WLAST : out std_logic;
|
|
M_AXI_WID : out std_logic_vector(ID_WIDTH-1 downto 0);
|
|
M_AXI_BREADY : out std_logic;
|
|
M_AXI_BVALID : in std_logic := '0';
|
|
M_AXI_BID : in std_logic_vector( ID_WIDTH-1 downto 0);
|
|
M_AXI_BRESP : in std_logic_vector( 1 downto 0);
|
|
|
|
-- AXI-Lite Slave Interface
|
|
S_AXIL_AWADDR : in std_logic_vector(7 downto 0);
|
|
S_AXIL_AWVALID : in std_logic;
|
|
S_AXIL_AWREADY : out std_logic;
|
|
S_AXIL_WDATA : in std_logic_vector(31 downto 0);
|
|
S_AXIL_WVALID : in std_logic;
|
|
S_AXIL_WREADY : out std_logic;
|
|
S_AXIL_WSTRB : in std_logic_vector((32/8)-1 downto 0);
|
|
S_AXIL_BVALID : out std_logic;
|
|
S_AXIL_BREADY : in std_logic;
|
|
S_AXIL_BRESP : out std_logic_vector(1 downto 0);
|
|
S_AXIL_ARADDR : in std_logic_vector(7 downto 0);
|
|
S_AXIL_ARVALID : in std_logic;
|
|
S_AXIL_ARREADY : out std_logic;
|
|
S_AXIL_RDATA : out std_logic_vector(31 downto 0);
|
|
S_AXIL_RVALID : out std_logic;
|
|
S_AXIL_RREADY : in std_logic;
|
|
S_AXIL_RRESP : out std_logic_vector(1 downto 0)
|
|
);
|
|
end axi_crc;
|
|
|
|
architecture rtl of axi_crc is
|
|
|
|
-- AXIL Registers
|
|
-- signal
|
|
|
|
begin
|
|
|
|
----------------------------------------------------------------------------
|
|
-- AXIL Interface
|
|
----------------------------------------------------------------------------
|
|
|
|
|
|
----------------------------------------------------------------------------
|
|
-- AXI Master Interface to Memory
|
|
----------------------------------------------------------------------------
|
|
|
|
|
|
----------------------------------------------------------------------------
|
|
-- CRC Calculation component
|
|
----------------------------------------------------------------------------
|
|
|
|
|
|
----------------------------------------------------------------------------
|
|
-- Main control state machine
|
|
----------------------------------------------------------------------------
|
|
|
|
|
|
----------------------------------------------------------------------------
|
|
-- Block RAM Memory
|
|
----------------------------------------------------------------------------
|
|
|
|
|
|
end Behavioral;
|