HPM SDK
HPMicro Software Development Kit
hpm_plb_drv.h File Reference
#include "hpm_common.h"
#include "hpm_plb_regs.h"

Go to the source code of this file.

Data Structures

union  plb_type_a_truth_t
 PLB truth table configuration unit. More...
 

Macros

#define PLB_SLICE_MASK   (0xf)
 
#define PLB_SLICE_HIGH_BIT_MASK_SET(slice)   (PLB_SLICE_MASK << ((slice - plb_type_b_slice_8) << 2))
 
#define PLB_SLICE_HIGH_BIT_SHIFT(slice)   ((slice - plb_type_b_slice_8) << 2)
 
#define PLB_SLICE_LOW_BIT_MASK_SET(slice)   (PLB_SLICE_MASK << (slice << 2))
 
#define PLB_SLICE_LOW_BIT_SHIFT(slice)   (slice << 2)
 

Typedefs

typedef enum plb_chn plb_chn_t
 plb channels More...
 
typedef enum plb_type_a_lut_num plb_type_a_lut_num_t
 PLB look-up table unit. More...
 
typedef enum plb_type_b_lut_slice plb_type_b_lut_slice_t
 Index of slice. More...
 
typedef enum plb_type_b_slice_opt plb_type_b_slice_opt_t
 Configuration of slice. More...
 
typedef enum plb_type_b_cmp plb_type_b_cmp_t
 Comparator index. More...
 
typedef enum plb_type_b_cmp_mode plb_type_b_cmp_mode_t
 Comparator operation. More...
 

Enumerations

enum  plb_chn
 plb channels More...
 
enum  plb_type_a_lut_num
 PLB look-up table unit. More...
 
enum  plb_type_b_lut_slice {
  plb_type_b_slice_0 = 0 , plb_type_b_slice_1 = 1 , plb_type_b_slice_2 = 2 , plb_type_b_slice_3 = 3 ,
  plb_type_b_slice_4 = 4 , plb_type_b_slice_5 = 5 , plb_type_b_slice_6 = 6 , plb_type_b_slice_7 = 7 ,
  plb_type_b_slice_8 = 8 , plb_type_b_slice_9 = 9 , plb_type_b_slice_10 = 10 , plb_type_b_slice_11 = 11 ,
  plb_type_b_slice_12 = 12 , plb_type_b_slice_13 = 13 , plb_type_b_slice_14 = 14 , plb_type_b_slice_15 = 15
}
 Index of slice. More...
 
enum  plb_type_b_slice_opt {
  plb_slice_opt_keep = 0 , plb_slice_opt_get_cmp0_val = 1 , plb_slice_opt_get_cmp1_val = 2 , plb_slice_opt_get_cmp2_val = 3 ,
  plb_slice_opt_add_one = 4 , plb_slice_opt_add_two = 5 , plb_slice_opt_sub_one = 6 , plb_slice_opt_sub_two = 7 ,
  plb_slice_opt_shift_left = 4 << 8 , plb_slice_opt_shift_left_add_one = 5 << 8 , plb_slice_opt_shift_right = 6 << 8 , plb_slice_opt_shift_right_add_one = 7 << 8
}
 Configuration of slice. More...
 
enum  plb_type_b_cmp { plb_type_b_cmp0 = PLB_TYPE_B_CMP_0 , plb_type_b_cmp1 = PLB_TYPE_B_CMP_1 , plb_type_b_cmp2 = PLB_TYPE_B_CMP_2 , plb_type_b_cmp3 = PLB_TYPE_B_CMP_3 }
 Comparator index. More...
 
enum  plb_type_b_cmp_mode {
  plb_cmp_mode_out_zero = 0 , plb_cmp_mode_out_one = 1 , plb_cmp_mode_gt = 2 , plb_cmp_mode_lt = 3 ,
  plb_cmp_mode_eq = 4 , plb_cmp_mode_ne = 5 , plb_cmp_mode_ge = 6 , plb_cmp_mode_le = 7 ,
  plb_cmp_mode_and_mask = 10 , plb_cmp_mode_or_mask = 11 , plb_cmp_mode_xor_mask = 12 , plb_cmp_mode_nand_mask = 13 ,
  plb_cmp_mode_nor_mask = 14 , plb_cmp_mode_xnor_mask = 15
}
 Comparator operation. More...
 

Functions

static void plb_type_a_set_lut (PLB_Type *plb, plb_chn_t chn, plb_type_a_lut_num_t lut_num, plb_type_a_truth_t *truth)
 Configuring the truth table for lookup tables. More...
 
static void plb_type_a_inject_by_sw (PLB_Type *plb, plb_chn_t chn, uint8_t inject_val)
 The software injects a cycle value into the TYPE A channel. More...
 
static void plb_type_b_set_cmp_val (PLB_Type *plb, plb_chn_t chn, plb_type_b_cmp_t cmp_index, uint32_t val)
 Configure the value of the CMP. More...
 
static void plb_type_b_set_cmp_mode (PLB_Type *plb, plb_chn_t chn, plb_type_b_cmp_t cmp_index, plb_type_b_cmp_mode_t cmp_mode)
 Setting the mode of the CMP. More...
 
static void plb_type_b_inject_by_sw (PLB_Type *plb, plb_chn_t chn, uint32_t val)
 Software injection values. More...
 
static uint32_t plb_type_b_get_counter (PLB_Type *plb, plb_chn_t chn)
 Get the counter value for PLB Type B. More...
 
void plb_type_b_set_lut (PLB_Type *plb, plb_chn_t chn, plb_type_b_lut_slice_t slice, plb_type_b_slice_opt_t opt)
 Configuring the PLB type_b's lookup table. More...
 
void plb_type_b_set_lut_range_mask (PLB_Type *plb, plb_chn_t chn, uint16_t mask, plb_type_b_slice_opt_t opt)
 Batch set plb lut b type data, the unit corresponding to the bit marked with a mask of 1 is configured. More...
 
void plb_type_b_set_all_slice (PLB_Type *plb, plb_chn_t chn, plb_type_b_slice_opt_t opt)
 Configure all lut to the same configuration. More...