OpenCores
URL https://opencores.org/ocsvn/viterbi_decoder_axi4s/viterbi_decoder_axi4s/trunk

Subversion Repositories viterbi_decoder_axi4s

[/] [viterbi_decoder_axi4s/] [trunk/] [packages/] [pkg_components.vhd] - Diff between revs 2 and 6

Only display areas with differences | Details | Blame | View Log

Rev 2 Rev 6
--!
--!
--! Copyright (C) 2011 - 2012 Creonic GmbH
--! Copyright (C) 2011 - 2014 Creonic GmbH
--!
--!
--! This file is part of the Creonic Viterbi Decoder, which is distributed
--! This file is part of the Creonic Viterbi Decoder, which is distributed
--! under the terms of the GNU General Public License version 2.
--! under the terms of the GNU General Public License version 2.
--!
--!
--! @file
--! @file
--! @brief  Component declarations for Viterbi decoder
--! @brief  Component declarations for Viterbi decoder
--! @author Markus Fehrenz
--! @author Markus Fehrenz
--! @date   2011/04/07
--! @date   2011/04/07
--!
--!
--!
--!
 
 
library ieee;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.numeric_std.all;
 
 
library dec_viterbi;
library dec_viterbi;
use dec_viterbi.pkg_param.all;
use dec_viterbi.pkg_param.all;
use dec_viterbi.pkg_param_derived.all;
use dec_viterbi.pkg_param_derived.all;
use dec_viterbi.pkg_types.all;
use dec_viterbi.pkg_types.all;
 
 
package pkg_components is
package pkg_components is
 
 
 
        component axi4s_buffer is
 
                generic (
 
                        DATA_WIDTH : natural := 1
 
                );
 
                port (
 
                clk            : in  std_logic;
 
                rst            : in  std_logic;
 
 
 
                input          : in  std_logic_vector(DATA_WIDTH - 1 downto 0);
 
                input_valid    : in  std_logic;
 
                input_last     : in  std_logic;
 
                input_accept   : out std_logic;
 
 
 
                output         : out std_logic_vector(DATA_WIDTH - 1 downto 0);
 
                output_valid   : out std_logic;
 
                output_last    : out std_logic;
 
                output_accept  : in  std_logic
 
                );
 
        end component axi4s_buffer;
 
 
        component branch_distance is
        component branch_distance is
                generic(
                generic(
                        EDGE_WEIGHT : in std_logic_vector(NUMBER_PARITY_BITS - 1 downto 0)
                        EDGE_WEIGHT : in std_logic_vector(NUMBER_PARITY_BITS - 1 downto 0)
                );
                );
                port(
                port(
                        clk : in std_logic;
                        clk : in std_logic;
                        rst : in std_logic;
                        rst : in std_logic;
 
 
                        s_axis_input_tvalid : in  std_logic;
                        s_axis_input_tvalid : in  std_logic;
                        s_axis_input_tdata  : in  t_input_block;
                        s_axis_input_tdata  : in  t_input_block;
                        s_axis_input_tlast  : in  std_logic;
                        s_axis_input_tlast  : in  std_logic;
                        s_axis_input_tready : out std_logic;
                        s_axis_input_tready : out std_logic;
 
 
                        m_axis_output_tvalid : out std_logic;
                        m_axis_output_tvalid : out std_logic;
                        m_axis_output_tdata  : out std_logic_vector(BW_BRANCH_RESULT - 1 downto 0);
                        m_axis_output_tdata  : out std_logic_vector(BW_BRANCH_RESULT - 1 downto 0);
                        m_axis_output_tlast  : out std_logic;
                        m_axis_output_tlast  : out std_logic;
                        m_axis_output_tready : in  std_logic
                        m_axis_output_tready : in  std_logic
 
 
                );
                );
        end component branch_distance;
        end component branch_distance;
 
 
        component acs is
        component acs is
                generic(
                generic(
                        initialize_value : in signed(BW_MAX_PROBABILITY - 1 downto 0)
                        initialize_value : in signed(BW_MAX_PROBABILITY - 1 downto 0)
                );
                );
                port(
                port(
                        clk                    : in std_logic;
                        clk                    : in std_logic;
                        rst                    : in std_logic;
                        rst                    : in std_logic;
 
 
                        s_axis_inbranch_tvalid     : in  std_logic;
                        s_axis_inbranch_tvalid     : in  std_logic;
                        s_axis_inbranch_tdata_low  : in  std_logic_vector(BW_BRANCH_RESULT - 1 downto 0);
                        s_axis_inbranch_tdata_low  : in  std_logic_vector(BW_BRANCH_RESULT - 1 downto 0);
                        s_axis_inbranch_tdata_high : in  std_logic_vector(BW_BRANCH_RESULT - 1 downto 0);
                        s_axis_inbranch_tdata_high : in  std_logic_vector(BW_BRANCH_RESULT - 1 downto 0);
                        s_axis_inbranch_tlast      : in  std_logic;
                        s_axis_inbranch_tlast      : in  std_logic;
                        s_axis_inbranch_tready     : out std_logic;
                        s_axis_inbranch_tready     : out std_logic;
 
 
                        s_axis_inprev_tvalid     : in  std_logic;
                        s_axis_inprev_tvalid     : in  std_logic;
                        s_axis_inprev_tdata_low  : in  std_logic_vector(BW_MAX_PROBABILITY - 1 downto 0);
                        s_axis_inprev_tdata_low  : in  std_logic_vector(BW_MAX_PROBABILITY - 1 downto 0);
                        s_axis_inprev_tdata_high : in  std_logic_vector(BW_MAX_PROBABILITY - 1 downto 0);
                        s_axis_inprev_tdata_high : in  std_logic_vector(BW_MAX_PROBABILITY - 1 downto 0);
                        s_axis_inprev_tready     : out std_logic;
                        s_axis_inprev_tready     : out std_logic;
 
 
                        m_axis_outprob_tvalid  : out std_logic;
                        m_axis_outprob_tvalid  : out std_logic;
                        m_axis_outprob_tdata   : out std_logic_vector(BW_MAX_PROBABILITY - 1 downto 0);
                        m_axis_outprob_tdata   : out std_logic_vector(BW_MAX_PROBABILITY - 1 downto 0);
                        m_axis_outprob_tready  : in  std_logic;
                        m_axis_outprob_tready  : in  std_logic;
 
 
                        m_axis_outdec_tvalid   : out std_logic;
                        m_axis_outdec_tvalid   : out std_logic;
                        m_axis_outdec_tdata    : out std_logic;
                        m_axis_outdec_tdata    : out std_logic;
                        m_axis_outdec_tlast    : out std_logic;
                        m_axis_outdec_tlast    : out std_logic;
                        m_axis_outdec_tready   : in  std_logic
                        m_axis_outdec_tready   : in  std_logic
                );
                );
        end component acs;
        end component acs;
 
 
        component ram_ctrl is
        component ram_ctrl is
                port(
                port(
                        clk       : in std_logic;
                        clk       : in std_logic;
                        rst       : in std_logic;
                        rst       : in std_logic;
 
 
                        s_axis_input_tvalid : in  std_logic;
                        s_axis_input_tvalid : in  std_logic;
                        s_axis_input_tdata  : in  std_logic_vector(NUMBER_TRELLIS_STATES - 1 downto 0);
                        s_axis_input_tdata  : in  std_logic_vector(NUMBER_TRELLIS_STATES - 1 downto 0);
                        s_axis_input_tlast  : in  std_logic;
                        s_axis_input_tlast  : in  std_logic;
                        s_axis_input_tready : out std_logic;
                        s_axis_input_tready : out std_logic;
 
 
                        m_axis_output_tvalid       : out std_logic_vector(1 downto 0);
                        m_axis_output_tvalid       : out std_logic_vector(1 downto 0);
                        m_axis_output_tdata        : out t_ram_rd_data;
                        m_axis_output_tdata        : out t_ram_rd_data;
                        m_axis_output_tlast        : out std_logic_vector(1 downto 0);
                        m_axis_output_tlast        : out std_logic_vector(1 downto 0);
                        m_axis_output_tready       : in  std_logic_vector(1 downto 0);
                        m_axis_output_tready       : in  std_logic_vector(1 downto 0);
                        m_axis_output_window_tuser : out std_logic_vector(1 downto 0);
                        m_axis_output_window_tuser : out std_logic_vector(1 downto 0);
                        m_axis_output_last_tuser   : out std_logic_vector(1 downto 0);
                        m_axis_output_last_tuser   : out std_logic_vector(1 downto 0);
 
 
                        s_axis_ctrl_tvalid : in  std_logic;
                        s_axis_ctrl_tvalid : in  std_logic;
                        s_axis_ctrl_tdata  : in  std_logic_vector(31 downto 0);
                        s_axis_ctrl_tdata  : in  std_logic_vector(31 downto 0);
                        s_axis_ctrl_tready : out std_logic
                        s_axis_ctrl_tready : out std_logic
                );
                );
        end component ram_ctrl;
        end component ram_ctrl;
 
 
        component generic_sp_ram is
        component generic_sp_ram is
                generic(
                generic(
                        DISTR_RAM : boolean;
                        DISTR_RAM : boolean;
                        WORDS     : integer;
                        WORDS     : integer;
                        BITWIDTH  : integer
                        BITWIDTH  : integer
                );
                );
                port(
                port(
                        clk : in std_logic;
                        clk : in std_logic;
                        rst : in std_logic;
                        rst : in std_logic;
 
 
                        wen : in std_logic;
                        wen : in std_logic;
                        en  : in std_logic;
                        en  : in std_logic;
 
 
                        a   : in std_logic_vector(BW_MAX_WINDOW_LENGTH - 1 downto 0);
                        a   : in std_logic_vector(BW_MAX_WINDOW_LENGTH - 1 downto 0);
                        d   : in  std_logic_vector(BITWIDTH - 1 downto 0 );
                        d   : in  std_logic_vector(BITWIDTH - 1 downto 0 );
                        q   : out std_logic_vector(BITWIDTH - 1 downto 0)
                        q   : out std_logic_vector(BITWIDTH - 1 downto 0)
                );
                );
        end component generic_sp_ram;
        end component generic_sp_ram;
 
 
        component trellis_traceback is
        component trellis_traceback is
                port(
                port(
                        clk : in std_logic;
                        clk : in std_logic;
                        rst : in std_logic;
                        rst : in std_logic;
 
 
                        s_axis_input_tvalid       : in std_logic;
                        s_axis_input_tvalid       : in std_logic;
                        s_axis_input_tdata        : in std_logic_vector(NUMBER_TRELLIS_STATES - 1 downto 0);
                        s_axis_input_tdata        : in std_logic_vector(NUMBER_TRELLIS_STATES - 1 downto 0);
                        s_axis_input_tlast        : in std_logic;
                        s_axis_input_tlast        : in std_logic;
                        s_axis_input_tready       : out std_logic;
                        s_axis_input_tready       : out std_logic;
                        s_axis_input_window_tuser : in std_logic;
                        s_axis_input_window_tuser : in std_logic;
                        s_axis_input_last_tuser   : in std_logic;
                        s_axis_input_last_tuser   : in std_logic;
 
 
                        m_axis_output_tvalid     : out std_logic;
                        m_axis_output_tvalid     : out std_logic;
                        m_axis_output_tdata      : out std_logic;
                        m_axis_output_tdata      : out std_logic;
                        m_axis_output_tlast      : out std_logic;
                        m_axis_output_tlast      : out std_logic;
                        m_axis_output_last_tuser : out std_logic;
                        m_axis_output_last_tuser : out std_logic;
                        m_axis_output_tready     : in  std_logic
                        m_axis_output_tready     : in  std_logic
                );
                );
        end component trellis_traceback;
        end component trellis_traceback;
 
 
        component reorder is
        component reorder is
                port(
                port(
                        clk : in std_logic;
                        clk : in std_logic;
                        rst : in std_logic;
                        rst : in std_logic;
 
 
                        s_axis_input_tvalid     : in  std_logic;
                        s_axis_input_tvalid     : in  std_logic;
                        s_axis_input_tdata      : in  std_logic;
                        s_axis_input_tdata      : in  std_logic;
                        s_axis_input_tlast      : in  std_logic;
                        s_axis_input_tlast      : in  std_logic;
                        s_axis_input_last_tuser : in  std_logic;
                        s_axis_input_last_tuser : in  std_logic;
                        s_axis_input_tready     : out std_logic;
                        s_axis_input_tready     : out std_logic;
 
 
                        m_axis_output_tvalid     : out std_logic;
                        m_axis_output_tvalid     : out std_logic;
                        m_axis_output_tdata      : out std_logic;
                        m_axis_output_tdata      : out std_logic;
                        m_axis_output_tlast      : out std_logic;
                        m_axis_output_tlast      : out std_logic;
                        m_axis_output_last_tuser : out std_logic;
                        m_axis_output_last_tuser : out std_logic;
                        m_axis_output_tready     : in  std_logic
                        m_axis_output_tready     : in  std_logic
                );
                );
        end component reorder;
        end component reorder;
 
 
        component recursion is
        component recursion is
                port(
                port(
                        clk : in std_logic;
                        clk : in std_logic;
                        rst : in std_logic;
                        rst : in std_logic;
 
 
                        s_axis_input_tvalid     : in  std_logic;
                        s_axis_input_tvalid     : in  std_logic;
                        s_axis_input_tdata      : in  std_logic;
                        s_axis_input_tdata      : in  std_logic;
                        s_axis_input_tlast      : in  std_logic;
                        s_axis_input_tlast      : in  std_logic;
                        s_axis_input_tready     : out std_logic;
                        s_axis_input_tready     : out std_logic;
 
 
                        m_axis_output_tvalid     : out std_logic;
                        m_axis_output_tvalid     : out std_logic;
                        m_axis_output_tdata      : out std_logic;
                        m_axis_output_tdata      : out std_logic;
                        m_axis_output_tlast      : out std_logic;
                        m_axis_output_tlast      : out std_logic;
                        m_axis_output_tready     : in  std_logic
                        m_axis_output_tready     : in  std_logic
                );
                );
        end component recursion;
        end component recursion;
 
 
end package pkg_components;
end package pkg_components;
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.