Files
openairinterface5g/openair1
Cedric Roux 64615dcc8e hotfix: correct PHICH generation
The PHICH generation is wrong.
HARQ process X is uplink scheduled at TTI n.
At TTI n+4 the eNB receives the data.
At TTI n+8 the eNB sends ACK/NACK on the PHICH.

The problem is that PHICH generation is done after scheduling.
And PHICH generation uses "first_rb" and "n_DMRS" to compute
"ngroup_PHICH" and "nseq_PHICH".

So at TTI n+8 if the eNB has reused the HARQ process X for
a new uplink scheduling the values "first_rb" and "n_DMRS"
may have changed.

We need to use the previous values.

One solution would have been to do PHICH generation before
scheduling. The problem is that "generate_phich_top" does more
than PHICH generation. It has to setup parameters to sort of
"emulate" a DCI0 in case of retransmission scheduled without
DCI0. So part of it has to be done after scheduling. We would
have to split the function.

The simple adopted fix is to store old values of "first_rb"
and "n_DMRS" and use those values in "generate_phich_top".

This fix has only been tested with FDD. TDD may miserably fail.
2016-11-18 09:40:14 +01:00
..
2016-11-18 09:40:14 +01:00
2016-11-18 09:40:14 +01:00
2015-04-10 13:30:16 +00:00

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)

|   |-- CODING		   // turbo and convolutional (de-)coders, rate-matching, crc generation (implementation of 36-212)
|   |   `-- TESTBENCH      // This contains unitary testbenches for the different channel coders/decoders
|   |-- INIT		   // variables defined in vars.h are initialzed here (memory allocation)
|   |-- LTE_ESTIMATION     // estimation for LTE
|   |-- LTE_REFSIG 	   // reference signals for LTE (sync and pilot sequences) reference signals from 36-211 
|   |-- LTE_TRANSPORT      // these are the top level routines for different transport and physical channels (for example DL-SCH, PSS) implements a subset of 36-211,36-212
|   |-- MODULATION	   // modulation and demodulation includes FFT/SC-FDMA front-end processing from 36-211
|   |-- TOOLS		   // tools like (I)FFT, vector operations, matrix multiplication, etc.
|   |   `-- FFTTEST        // unitary testbench for FFT routines
|   |-- defs.h		  // top level defs.h (includes spec_defs, impl_defs and all defs.h of subdirectories)
|   |-- extern.h
|   |-- impl_defs.h       // non-LTE openair implementation
|   |-- impl_defs_lte.h   // lte implementation
|   |-- impl_defs_top.h   // general implementaion defs
|   |-- spec_defs.h
|   |-- spec_defs_top.h
|   |-- types.h
|   `-- vars.h		  
|-- SCHED		  // schedules the different PHY functions according to the nodes role (CH=BS, MR=UE)
|   |-- 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)
|   |-- 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
|   |   |-- pbchsim.c       // PBCH simulation testbench
|   |   |-- pdcchsim.c      // PCFICH/PHICH/PDCCH (DCI) simulation testbench
|   |   |-- 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