Commit 59e9e2e8 authored by gabrielC's avatar gabrielC

Merge tag '2017.w15' into ue_dlsch_dual_buffer_fix

parents 8f758785 c124e32a
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -2,4 +2,6 @@ This directory contains files related to initialization of variables/structures
init_top.c : initialize top-level variables and signal buffers, FFT twiddle factors, etc.
lte_init.c : LTE specific initlization routines (DLSCH/ULSCH signal buffers for RX, data buffers for TX, etc.)
init.c : non-LTE initialization routines (to be removed)
lte_param_init.c: used only in unitary simulations. initializes the global variables eNB and UE.
lte_parms.c: contains init_frame_parms to initialize frame parameters structure
......@@ -230,7 +230,7 @@ typedef struct DCI1A_10MHz_TDD_1_6 DCI1A_10MHz_TDD_1_6_t;
/// DCI Format Type 0 (20 MHz,TDD1-6, 27 bits)
struct DCI0_20MHz_TDD_1_6 {
/// Padding
uint32_t padding:2;
uint32_t padding:3;
/// CQI request
uint32_t cqi_req:1;
/// DAI
......
This folder contains the software for the device driver of CBMIMO1 and the physical layer signal processing.
|-- ARCH // contains drivers for hardware
| |-- CBMIMO1 // contains everything related to CBMIMO1
| | `-- DEVICE_DRIVER
| | |-- Makefile // main Makefile used to compile the driver; usually invoked from the top level Makefile
| | |-- cbmimo1_device.c // main file for device driver (initializes the card, bigphys, main variables)
| | |-- cbmimo1_device.h
| | |-- cbmimo1_dma.c
| | |-- cbmimo1_fileops.c // file that processes IOCTL commands coming from the userspace control utility (USERSPACE_TOOLS/OPENAIR_RF/)
| | |-- cbmimo1_generate_fs4.c // generates test signals (DEBUGGING)
| | |-- cbmimo1_generate_ofdm.c // generates test signals (DEBUGGING)
| | |-- cbmimo1_get_frame.c // code to grab a frame from the card
| | |-- cbmimo1_init.c // code to set up the registers of the card
| | |-- cbmimo1_pci.h
| | |-- cbmimo1_proc.c // generates the proc entries /proc/openair1/bch_stats and /proc/openair1/openair1_state
| | |-- cbmimo1_rf_cntl.c // controls the RF chipset on the card
| | |-- cbmimo1_test.c
| | |-- from_grlib_softconfig.h
| | |-- from_grlib_softregs.h
| | |-- defs.h
| | |-- extern.h
| | `-- vars.h
| |-- COMMON // common for all hardware (mainly bigphys)
| |-- EXPRESS_MIMO // contains everything related to EXPRESS MIMO
|-- DOCS // Documentation
| |-- DOXYGEN // Automaitcally generated DOXYGEN documentation in latex and html
| `-- PAPERS // papers related to openair1
|-- EMOS // this contains everything related to Eurecom MIMO Openair Sounder (EMOS)
| |-- DOC
| |-- DUMP // program that dumps channel estimate to disk using a FIFO
| |-- GUI
| |-- MATLAB // Matlab code to process measurements
| |-- SIM // EMOS simulator (for DEBUGGING)
| `-- UTIL
|-- MAC_INTERFACE // interface with MAC layer (in openair2)
|-- PHY // contains all signal processing related to physical layer (used in real-time AND simulation)
General remarks: every directory contains at least defs.h (for declaration of structure and functions), vars.h (for definitions of variables), and extern.h (variables are defined only once in cbmimo1_device.c (for real-time HW operation) or a top-level simulation (in SIMULATION/xxx), if variables are needed in another file, use extern.h)
......@@ -57,17 +22,19 @@ General remarks: every directory contains at least defs.h (for declaration of st
| |-- spec_defs_top.h
| |-- types.h
| `-- vars.h
|-- SCHED // schedules the different PHY functions according to the nodes role (CH=BS, MR=UE)
|-- SCHED // schedules the different PHY functions according to the nodes role
| |-- defs.h
| |-- extern.h
| |-- phy_procedures.c // non-LTE PHY procedures this is used in synchronized mode to schedule the slot processing
| |-- phy_procedures_emos.c // non-LTE PHY procedures for EMOS
| |-- phy_procedures_emos.h
| |-- phy_procedures_lte_eNb.c // LTE PHY procedures for eNB (from 36-213)
| |-- phy_procedures_lte_ue.c // LTE PHY procedures for UE (from 36-213)
| |-- phy_procedures_lte_common.c // LTE PHY procedures common for UE and eNB (from 36-213)
| |-- phy_mac_stub.c //MAC stub that generates channels when used in phy-test-mode
| |-- pucch_pc.c // power control for PUCCH
| |-- pusch_pc.c // power control for PUSCH
| |-- srs_pc.c // power control for SRS
| |-- rt_compat.h
| |-- sched.c // contains the top level scheduler (only for CBMIMO1 HW)
| |-- sched_lte.c // same as sched.c for LTE (only for CBMIMO1 HW)
| `-- vars.h
|-- SIMULATION // contains simulation routines to test PHY
| |-- LTE_PHY // LTE simulation testbenches for unitary simulation of transport/physical channels
......@@ -76,17 +43,9 @@ General remarks: every directory contains at least defs.h (for declaration of st
| | |-- dlsim.c // PDSCH simulation testbench
| | |-- ulsim.c // PUSCH simulation testbench
| | |-- pucchsim.c // PUCCH simulation testbench
| |-- LTE_PHY_L2 // LTE simulation testbench for full system simulation (PHY,MAC,RLC,RRC,PDCP)
| `-- TOOLS
| |-- RF
|-- USERSPACE_TOOLS // tools that run in userspace (not kernel)
| |-- OCTAVE
| | |-- AGILE_RF_TOOLS // octave tools to test agile RF
| | |-- CBMIMO1_TOOLS // octave interface for CBMIMO1
| | |-- GPIB // octave tools to control signal generator (used for calibration)
| | `-- PHY_SIM // octave implementation of sync
| |-- OPENAIR_RF // tool to interface with the device driver using IOCTL
| |-- SCOPE // tool to visualize data from PHY (channel estimates, IQ plots, etc.). Communicates with kernel module using shared memory.
| `-- SENSING // tools related to sensing
| |-- ETH_TRANSPORT
| `-- TOOLS
......@@ -70,7 +70,7 @@ void fill_dci(DCI_PDU *DCI_pdu,PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
uint32_t bcch_pdu;
uint64_t dlsch_pdu;
LOG_I(PHY,"frame %d, subframe %d, transmission_mode %d\n",proc->frame_tx,proc->subframe_tx,transmission_mode);
LOG_D(PHY,"frame %d, subframe %d, transmission_mode %d\n",proc->frame_tx,proc->subframe_tx,transmission_mode);
DCI_pdu->Num_common_dci = 0;
DCI_pdu->Num_ue_spec_dci=0;
......@@ -380,25 +380,25 @@ void fill_dci(DCI_PDU *DCI_pdu,PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
if (eNB->frame_parms.frame_type == FDD) {
DCI_pdu->dci_alloc[0].dci_length = sizeof_DCI1_20MHz_FDD_t;
((DCI1_20MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc; //computeRIV(100,10,3);
harq_pid_value = ( ((proc->frame_tx * 10) + subframe) % 8 );
if (!(subframe&1)) // even subframe
dci_ndi_toggle_tmp = &(dci_ndi_toggle_even[harq_pid_value]);
else // odd subframe
dci_ndi_toggle_tmp = &(dci_ndi_toggle_odd[harq_pid_value]);
((DCI1_20MHz_FDD_t *)&dlsch_pdu)->rballoc = 0x1ffffff; //rballoc; //computeRIV(100,10,3);
((DCI1_20MHz_FDD_t *)&dlsch_pdu)->TPC = 0;
((DCI1_20MHz_FDD_t *)&dlsch_pdu)->harq_pid = subframe % 5;
((DCI1_20MHz_FDD_t *)&dlsch_pdu)->harq_pid = harq_pid_value;
((DCI1_20MHz_FDD_t *)&dlsch_pdu)->mcs = eNB->target_ue_dl_mcs;
//((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((eNB->frame%1024)%28);
((DCI1_20MHz_FDD_t *)&dlsch_pdu)->ndi = subframe / 5;
((DCI1_20MHz_FDD_t *)&dlsch_pdu)->ndi = (*dci_ndi_toggle_tmp);
((DCI1_20MHz_FDD_t *)&dlsch_pdu)->rv = 0;
((DCI1_20MHz_FDD_t *)&dlsch_pdu)->rah = 0;
(*dci_ndi_toggle_tmp) = ((*dci_ndi_toggle_tmp) + 1) & 1;
memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&dlsch_pdu,sizeof(DCI1_20MHz_FDD_t));
((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rballoc = rballoc;
((DCI1_5MHz_FDD_t *)&dlsch_pdu)->TPC = 0;
((DCI1_5MHz_FDD_t *)&dlsch_pdu)->harq_pid = subframe % 5;
((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = eNB->target_ue_dl_mcs;
//((DCI1_5MHz_FDD_t *)&dlsch_pdu)->mcs = (unsigned char) ((eNB->frame%1024)%28);
((DCI1_5MHz_FDD_t *)&dlsch_pdu)->ndi = subframe/5;
((DCI1_5MHz_FDD_t *)&dlsch_pdu)->rv = 0;
memcpy((void*)&DCI_pdu->dci_alloc[0].dci_pdu[0],(void *)&dlsch_pdu,sizeof(DCI1_5MHz_TDD_t));
/*
//user2
DCI_pdu->dci_alloc[1].dci_length = sizeof_DCI1_5MHz_TDD_t;
......
......@@ -885,7 +885,7 @@ abort();
rb_table_index=UE_template->pre_allocated_rb_table_index_ul;
} else {
mcs=10;//cmin (10, openair_daq_vars.target_ue_ul_mcs);
rb_table_index=13; // for PHR
rb_table_index=5; // for PHR
}
UE_list->eNB_UE_stats[CC_id][UE_id].ulsch_mcs2=mcs;
......
......@@ -63,7 +63,7 @@
# define RLC_AM_MIN_SEGMENT_SIZE_REQUEST 8
/** Max SDUs that can fit in a PDU. */
# define RLC_AM_MAX_SDU_IN_PDU 32
# define RLC_AM_MAX_SDU_IN_PDU 128
/** Max fragments for a SDU. */
# define RLC_AM_MAX_SDU_FRAGMENTS 32
......
......@@ -53,7 +53,7 @@
// UM_Window_Size = 512 when a 10 bit SN is configured and UM_Window_Size = 0
// when the receiving UM RLC entity is configured for MCCH or MTCH.
// li field (values shifted 1 bit left)
# define RLC_UM_SEGMENT_NB_MAX_LI_PER_PDU 24
# define RLC_UM_SEGMENT_NB_MAX_LI_PER_PDU 128
//----------------------------------------------------------
// Events defined for state model of the acknowledged mode entity
/** Internal event defined for state model of the RLC UM. */
......
......@@ -183,7 +183,7 @@ int rlc_um_read_length_indicators(unsigned char**data_ppP, rlc_um_e_li_t* e_liP,
// AssertFatal(*data_size_pP >= 0, "Invalid data_size!");
}
if (*num_li_pP >= RLC_UM_SEGMENT_NB_MAX_LI_PER_PDU) {
if (*num_li_pP > RLC_UM_SEGMENT_NB_MAX_LI_PER_PDU) {
return -1;
}
}
......
......@@ -34,7 +34,7 @@ eNBs =
downlink_frequency = 2680000000L;
uplink_frequency_offset = -120000000;
Nid_cell = 0;
N_RB_DL = 50;
N_RB_DL = 25;
Nid_cell_mbsfn = 0;
nb_antenna_ports = 1;
nb_antennas_tx = 1;
......@@ -62,7 +62,7 @@ eNBs =
pusch_nDMRS1 = 0;
phich_duration = "NORMAL";
phich_resource = "ONESIXTH";
srs_enable = "ENABLE";
srs_enable = "DISABLE";
srs_BandwidthConfig =2;
srs_SubframeConfig =13;
srs_ackNackST ="DISABLE";
......
......@@ -1388,11 +1388,6 @@ int main( int argc, char **argv ) {
memset(tx_max_power,0,sizeof(int)*MAX_NUM_CCs);
char command_line[500];
sprintf(command_line,"git log -1");
if (background_system(command_line) != 0)
printf("ERROR failed command '%s'", command_line);
set_latency_target();
// set default parameters
......@@ -1524,6 +1519,12 @@ int main( int argc, char **argv ) {
check_clock();
#ifndef PACKAGE_VERSION
# define PACKAGE_VERSION "UNKNOWN-EXPERIMENTAL"
#endif
LOG_I(HW, "Version: %s\n", PACKAGE_VERSION);
// init the parameters
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment