⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ofdm.h

📁 完整的OFDM系统,含Matlab仿真代码和DSP源代码下载.平台Tms320C6000.含项目说明文档.绝对高质量的源代码.
💻 H
字号:
//ofdm.h
//
// Project Red 2002: High Performance OFDM Modem 
// Against Channel Imperfections
// Auther: Linus Falk

#ifndef OFDM
#define OFDM

#define _TI_ENHANCED_MATH_H 1
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#include <dma.h>	/* TMS320C6x Peripheral Support Library DMA Support */
#include <intr.h>	/* TMS320C6x Peripheral Support Library Interrupt Support */
#include <mcbsp.h>	/* TMS320C6x Peripheral Support Library McBSP Support */
#include <regs.h>	/* TMS320C6x Peripheral Support Library CPU Register Support */
#include <board.h>	/* TMS320C6x Peripheral Support Library Board Support */
#include <codec.h>	/* Codec Library API Functions */

//extern int HOST_READY;
#define HOST_READY	(*(unsigned int*)0x03000000)


//Get data from host
#define INIT_START_MM	1
#define FILL_HOSTBUFFER1_MM	3
#define FILL_HOSTBUFFER2_MM	4
#define FILL_BITLOADBUFFER1_MM 5
#define FILL_BITLOADBUFFER2_MM 6
#define HostBufferSize 128 //numbers of 8 bit segments in each HostBuffer
#define HostBufferBitLength (HostBufferSize*8) //numbers of bits in HostBuffer
//extern volatile unsigned char HostBuffer1[HostBufferSize+1]; //buffer 1 , +1 for register
//extern volatile unsigned char HostBuffer2[HostBufferSize+1]; //buffer 2 , +1 for register
//extern volatile unsigned char *CurrentHostBuffer; //current buffer used
extern unsigned int offset;

//training data
//#define TRAINING_SEQ 0x4DAE1577
//#define TRAIN {1,0,3,1,2,2,3,2,0,1,1,1,1,3,1,3}

//codec
#define SAMPLING_FREQ	44100
#define MIC_SELECT		0	/* Input source: Mic-1, Line-0 */

//fft
#define FFT_SIZE		256
#define PREFIX_LENGTH	32

#define BUFFER_SIZE		FFT_SIZE
#define BLOCK_SIZE		BUFFER_SIZE * 2	/* Total number of both left and right short elements in a buffer */
#define NR_OF_CHANNELS	(FFT_SIZE/2 -1)		//Number of channels
#define FRAME_LENGTH	(PREFIX_LENGTH + BLOCK_SIZE)

#define N				FFT_SIZE	 		/* N point DFT */
#define n				16                  /* Size of index, calculate using formula in bitrev.asm */
#define PI				3.14159265358979323846264338327950288419716939937510
#define DELTA			2 * PI / N
#define ONE_OVER_SQRT_N	0.0625				/* 1/sqrt(N) */

//modulation
#define QAM_AMPLITUDE	1	// bit amplitude

extern volatile float signalf[BLOCK_SIZE];

extern float dft[N];	/* Number of coefficients needed for the DFT routine is N */
extern float idft[N];	/* Number of coefficients needed for the IDFT routine is N */

extern const short index[n];
extern int exponent2;

#define TRUE	1
#define FALSE	0

//bitload
#define BitLoadBufferSize 127
//bitload struct
typedef struct{
	unsigned int use_from_frame;
	unsigned char channel_modulation[BitLoadBufferSize];
}bitload_struct;

//bitload buffers
extern volatile bitload_struct BitLoadBuffer1;
extern volatile bitload_struct BitLoadBuffer2;
extern volatile bitload_struct *CurrentBitLoadBuffer;
extern volatile bitload_struct *NextBitLoadBuffer;
extern volatile bitload_struct TempBitLoadBuffer;

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -