KM3NeT CLB  2.0
KM3NeT CLB v2 Embedded Software
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
dev_ipm.h
Go to the documentation of this file.
1 /*
2  * KM3NeT CLB v2 Firmware
3  * ----------------------
4  *
5  * Copyright 2013 KM3NeT Collaboration
6  *
7  * All Rights Reserved.
8  *
9  *
10  * File : dev_ipmux.h
11  * Created : 8 aug. 2013
12  * Author : Vincent van Beveren
13  */
14 
15 #ifndef DEV_IPM_H_
16 #define DEV_IPM_H_
17 
18 /**
19  * @file
20  *
21  * @ingroup devices
22  *
23  * IPM Device description.
24  *
25  */
26 
27 #include "dev_defs.h"
28 
29 #define SDB_ID_IPMREG 0x893CD4AF //!< SDB ID IPMUX Registers
30 #define SDB_ID_IPMTXR 0xD9651827 //!< SDB ID IPMUX TX/RX
31 
32 #define IPM_UDP_PORT_SVR_MASK 0xFFFF0000 //!< Mask for server port (target)
33 #define IPM_UDP_PORT_SVR_SHIFT 16 //!< Shift for server port
34 #define IPM_UDP_PORT_MOD_MASK 0x0000FFFF //!< Mask for module port (source)
35 #define IPM_UDP_PORT_MOD_SHIFT 0 //!< Shift for module port
36 
37 #define IPM_PKT_BUF_REGS ( 9014 / 2 ) //!< No. of registers for packet buffer.
38 
39 #define IPM_ACSR_TX_REQ BIT(0) //!< TX request
40 #define IPM_ACSR_TX_GRANT BIT(1) //!< TX grant
41 
42 #define IPM_CH_0 BIT(0)
43 #define IPM_CH_1 BIT(1)
44 #define IPM_CH_2 BIT(2)
45 #define IPM_CH_3 BIT(3)
46 #define IPM_CH_C BIT(4)
47 #define IPM_CH_ALL MASK(5)
48 #define IPM_CH_HW MASK(4)
49 
50 #define IPM_ACSR_FLUSH_SHIFT 8
51 #define IPM_ACSR_FLUSH_MASK ( MASK(5) << IPM_ACSR_FLUSH_SHIFT )
52 #define IPM_ACSR_FLUSH(CH) ( ( CH << IPM_ACSR_FLUSH_SHIFT ) & IPM_ACSR_FLUSH_MASK )
53 
54 #define IPM_ACSR_EMPTY_SHIFT 16
55 #define IPM_ACSR_EMPTY_MASK ( MASK(5) << IPM_ACSR_EMPTY_SHIFT )
56 #define IPM_ACSR_EMPTY(CH) ( ( CH << IPM_ACSR_EMPTY_SHIFT ) & IPM_ACSR_EMPTY_MASK )
57 
58 #define IPM_ACSR_FULL_SHIFT 24
59 #define IPM_ACSR_FULL_MASK ( MASK(4) << IPM_ACSR_FULL_SHIFT )
60 #define IPM_ACSR_FULL(CH) ( ( CH << IPM_ACSR_FULL_SHIFT ) & IPM_ACSR_FULL_MASK )
61 
62 #define IPM_FIFO_DATA_MASK 0x0000FFFF //!< Data mask
63 #define IPM_FIFO_DATA_SHIFT 0 //!< Data shift
64 #define IPM_FIFO_EOP BIT(16) //!< End of packet marker
65 #define IPM_FIFO_SOP BIT(17) //!< Start of packet marker
66 
67 #define IPM_TXSTM_INFO_SEL_SHIFT 0
68 #define IPM_TXSTM_INFO_SEL_MASK ( MASK(4) << TXSTM_INFO_SEL_SHIFT )
69 #define IPM_TXSTM_INFO_SEL(CH) ( TXSTM_INFO_SEL_MASK ( CH << TXSTM_INFO_SEL_SHIFT ) )
70 
71 #define IPM_TXSTM_INFO_PKT_AVAIL_SHIFT 8
72 #define IPM_TXSTM_INFO_PKT_AVAIL_MASK ( MASK(4) << TXSTM_INFO_PKT_AVAIL_SHIFT )
73 #define IPM_TXSTM_INFO_PKT_AVAIL(CH) ( TXSTM_INFO_PKT_AVAIL_MASK & ( CH << TXSTM_INFO_PKT_AVAIL_SHIFT ) )
74 
75 #define IPM_TXSTM_INFO_PKT_DONE_SHIFT 12
76 #define IPM_TXSTM_INFO_PKT_DONE_MASK ( MASK(4) << IPM_TXSTM_INFO_PKT_DONE_SHIFT )
77 #define IPM_TXSTM_INFO_PKT_DONE(CH) ( IPM_TXSTM_INFO_PKT_DONE_MASK & ( CH << IPM_TXSTM_INFO_PKT_DONE_SHIFT ) )
78 
79 
80 
81 
82 
83 /**
84  * Structure defines IPM control Device.
85  */
86 typedef struct {
87  reg_io MAC_SVR_LO; //!< MAC destination address [31:0]
88  reg_io MAC_SVR_HI; //!< MAC destination address [47:32]
89  reg_io MAC_MOD_LO; //!< MAC source address [31:0]
90  reg_io MAC_MOD_HI; //!< MAC source address [47:32]
91  reg_io IP_SVR; //!< Destination IP address
92  reg_io IP_MOD; //!< Source IP address
93  reg_io UDP_PORT[4]; //!< UDP port configuration channels
94  reg_io ACSR; //!< IPMux Access control and status
96 
97 
98 
99 /**
100  * Packet generator.
101  */
102 typedef struct {
103  reg_io DIV_RATIO;
104  reg_io NUM_WORDS;
105  reg_io NUM_PACKETS;
106  reg_io PCKT_CTRL;
107  reg_io TXSTM_INFO;
109 
110 typedef volatile unsigned int IPMFIFO_Device; //!< IPMux FIFO device.
111 
112 #endif /* DEV_IPM_H_ */
113 
volatile unsigned int MAC_MOD_LO
MAC source address [31:0].
Definition: dev_ipm.h:89
volatile unsigned int MAC_SVR_LO
MAC destination address [31:0].
Definition: dev_ipm.h:87
volatile unsigned int MAC_SVR_HI
MAC destination address [47:32].
Definition: dev_ipm.h:88
volatile unsigned int IPMFIFO_Device
IPMux FIFO device.
Definition: dev_ipm.h:110
Packet generator.
Definition: dev_ipm.h:102
volatile unsigned int IP_SVR
Destination IP address.
Definition: dev_ipm.h:91
volatile unsigned int IP_MOD
Source IP address.
Definition: dev_ipm.h:92
volatile unsigned int ACSR
IPMux Access control and status.
Definition: dev_ipm.h:94
#define reg_io
Input/Output register.
Definition: dev_defs.h:33
volatile unsigned int MAC_MOD_HI
MAC source address [47:32].
Definition: dev_ipm.h:90
This module contains some very basic type definitions used for hardware mappings. ...
Structure defines IPM control Device.
Definition: dev_ipm.h:86