Skip to content
Snippets Groups Projects
Select Git revision
  • 958fdb48bbee3e85fa9a832f674968c4f74e363a
  • master default protected
  • L2SDP-LIFT
  • L2SDP-1113
  • HPR-158
5 results

dp_block_validate_err.vhd

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    dp_block_validate_err.vhd 12.77 KiB
    -------------------------------------------------------------------------------
    --
    -- Copyright 2021
    -- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
    -- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
    --
    -- Licensed under the Apache License, Version 2.0 (the "License");
    -- you may not use this file except in compliance with the License.
    -- You may obtain a copy of the License at
    --
    --     http://www.apache.org/licenses/LICENSE-2.0
    --
    -- Unless required by applicable law or agreed to in writing, software
    -- distributed under the License is distributed on an "AS IS" BASIS,
    -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -- See the License for the specific language governing permissions and
    -- limitations under the License.
    --
    -------------------------------------------------------------------------------
    
    -------------------------------------------------------------------------------
    -- Author: R vd Walle
    -- Purpose:
    --   Validate the error field of a DP block.
    -- Description:
    --  . The dp_block_validate_err.vhd checks the in_sosi.err field at the end of a
    --    block. Therefore the block needs to be stored, before it can be validated. 
    --    The stored block is then either forwarded when the in_sosi.err = 0, or else 
    --    it is discarded. 
    --  . The dp_block_validate_err.vhd has to maintain the a total number of in_sosi 
    --    blocks counter and a number of discarded blocks counter per bit in the 
    --    in_sosi.err field. The counters can be read via the MM interface. 
    -- Remarks:
    --   . Note that a block can have more than one bit set in the err field. This can
    --     result in multiple counters increasing per block. Therefore, it should not be 
    --     assumed that the sum of the err counters is the total amount of discarded
    --     blocks.
    --   . g_max/min_block_size indicate the minimum / maximum length of incoming blocks.
    --     The ratio of max / min is used to determine a fifo size for the outgoing
    --     sosi.valid signals. To minimize logic the g_min_block_size can be set to
    --     the expected minimum block size.
    --   . g_fifo_size can be set to g_max_block_size if there is no backpressure.
    --     If there is back pressure on the src_in, the fifo_fill_eop can be used to 
    --     to account for this backpressure by using an g_fifo_size > g_max_block_size.
    -------------------------------------------------------------------------------
    -- REGMAP
    -------------------------------------------------------------------------------
    --  wi                  Bits    R/W Name                                 Default                                         
    --  ====================================================================================
    --  0                   [31..0] RO  err_count_index_0                     0x0    
    --  1                   [31..0] RO  err_count_index_1                     0x0   
    --  .                    .      .   .                                     . 
    --  .                    .      .   .                                     . 
    --  .                    .      .   .                                     . 
    --  g_nof_err_counts-1  [31..0] RO  err_count_index_[g_nof_err_counts-1]  0x0           
    --  g_nof_err_counts    [31..0] RO  total_discarded_blocks                0x0           
    --  g_nof_err_counts+1  [31..0] RO  total_block_count                     0x0           
    --  g_nof_err_counts+2  [31..0] RW  clear                                 0x0 read or write to clear counters
    --  ====================================================================================
    -------------------------------------------------------------------------------
    LIBRARY IEEE, common_lib;
    USE IEEE.std_logic_1164.all;
    USE IEEE.numeric_std.all;
    USE work.dp_stream_pkg.ALL;
    USE common_lib.common_pkg.ALL;
    USE common_lib.common_mem_pkg.ALL;
    
    ENTITY dp_block_validate_err IS
      GENERIC (
        g_cnt_w              : NATURAL  := c_word_w; -- max is c_word_w due to mm word width