1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu tìm hiểu hệ thống thu phát OFDM

9 358 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 9
Dung lượng 646,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

a. Data2symbol(unsigned char DataTrans, unsigned char QamSymbolIn, int NumDataTrans, int QamLevel): NumDataTrans = 16 Input: Mảng Char 8 bit (16 phần tử) Output: Mảng đầu vào QAM (32 phần tử) Cách thực hiện: Inputk gồm 8 bit vd: 10011010  Output2k= 1010 (lấy 4 bit thấp bằng cách lấy inputk AND 00001111)  Output2k+1 = 1001 (Lấy 4 bit cao bằng cách lấy kết quả của inputk AND 11110000 đem dịch phải)  2 phần tử liên tiếp (outputk output2k+1 chứa 1 kí tự kiểu Char) QAMtrans(unsigned char QamSymbolIn, CCHAR QamSymbolOut, int QamsymbolLengh,int QamLevel) > thực hiện ánh xạ QAM Input: Mảng QamSymbolIn gồm 32 phần tử 4bit  giá trị từ 0 > 15  kiểu char không dấu.

Trang 1

BÁO CÁO

Hệ thống thu phát OFDM sử dụng công nghệ DSP

Sơ đồ khối hệ thống

Bit In

Biến đổi tương tự/ số

Kênh vô tuyến

Biến đổi số/ tương tự

Chèn chuỗi bảo vệ IFFT

Pilot

Cân bằng

Tách chỗi bảo vệ Đồng bộ

AWGN

Giải điều chế QAM

Khôi phục kênh truyền

Tách Pilot

Bit out

Điều chế QAM

IFFT

Chèn chuỗi bảo vệ

Đóng khung

Trang 2

(Phần code lấy ở bản 28/2 nhận chính xác 100% của các anh K50)

Bên phát

a Data2symbol(unsigned char * DataTrans, unsigned char *

QamSymbolIn, int NumDataTrans, int QamLevel):

NumDataTrans = 16

- Input: Mảng Char 8 bit (16 phần tử)

- Output: Mảng đầu vào QAM (32 phần tử)

Cách thực hiện:

Input[k] gồm 8 bit vd: 10011010

 Output[2k]= 1010 (lấy 4 bit thấp bằng cách lấy input[k] AND 00001111)

 Output[2k+1] = 1001 (Lấy 4 bit cao bằng cách lấy kết quả của input[k] AND 11110000 đem dịch phải)

 2 phần tử liên tiếp (output[k] & output[2k+1] chứa 1 kí tự kiểu Char)

QAMtrans(unsigned char * QamSymbolIn, CCHAR * QamSymbolOut, int QamsymbolLengh,int QamLevel) -> thực hiện ánh xạ QAM

- Input: Mảng QamSymbolIn gồm 32 phần tử 4bit  giá trị từ 0 -> 15

 kiểu char không dấu

- Output: Mảng QamSymbolOut gồm 32 phần tử kiểu Cchar (Số phức ứng với các điểm trong chòm sao QAM)

2

Trang 3

OrderPilotSymbol(PilotSymbolOrder, NullLow, NullHigh, IFFTLengh) IFFTLength =64

 Tạo mảng PilotSymbolOrder gồm 64 phần tử kiểu Cint tạo thành 1 symbol Pilot trước khi biến đổi IFFT

 Mảng này không có NullLow & NullHigh

OrderDataSymhol(QamSymbolOut, DataSymbolOrder,

IFFTLengh, NullLow, NullHigh)

- Đầu tiên khởi tạo mảng 64 phần tử kiểu Cint gồm toàn phần tử {0,0}

để đưa các phần tử NullLow & NullHigh vào vị trí

- Sau đó chèn Data vào các vị trí còn lại

Null

Low

1

Data 16

NullHigh 15

NullHigh 15

Data 16

NullLow

1

Tạo thành mảng DataSymbolOrder kiểu CIn chứa data trước khi đưa vào biến đổi IFFT

b IFFT

- Đầu vào: Mảng PilotSymbolOrder & mảng DataSymbolOrder kiểu CIN (64 phần tử)

- Đầu ra: Tương ứng là mảng OutIFFTPilot & mảng OutIFFTData kiểu CFLOAT (64 phần tử)

Trang 4

c InsertGard

- Đầu vào: 64 phần tử mảng OutIFFTPilot or OutIFFTData

- Copy 32 phần tử cuối chèn vào phía đầu của mảng

- Đầu ra: 96 phần tử mảng SymbolOutPilot or SymbolOutData nnnbbbhhh

d FramePack(SymbolOutPilot, SymbolOutData, gBufferXmtPong,

NumDataofFrame, IFFTLengh + GardLengh)

 Thực hiện đóng gói khung

- Lần lượt 3 symbol (SymbolOutPilot – SymbolOutData –

SymbolOutPilot) sẽ được đưa vào nửa trước bộ đệm gBufferXmtPing (hoặc gBufferXmtPong)

- Khi đó mỗi phần tử của symbolOutPilot & symbolOutData sẽ được tách thành thực ảo rồi nhân với 10000 và làm tròn trước khi đưa vào

bộ đệm

- Nửa bộ đệm còn lại là bản copy của nửa bộ đệm phía trước

Như vậy một MultiFrame sẽ bao gồm 2 Frame giống nhau.

Bên thu

4

Trang 5

a SynFrameInReceiver(Int16 * DoubleFrame, int FFTLengh, int

GardLengh, int NumDataofFrame)  Trả về điểm đồng bộ kiểu int

o Đồng bộ thô  Tìm khoảng chứa điểm đồng bộ

Chia dữ liệu nhận được ở bộ đệm bên thu thành các khối có chiều dài Lsymbol/2 Để đơn giản, ta coi các khối đó là một phần tử của mảng A

T

F

5

i=0;

MinSqr[0 5]=0;

MinSqr[i]= ∑((A[i+2]-A[i]) 2 )

i=i+1

i<6

Trang 6

o Đồng bộ tinh  Tìm điểm đồng bộ chính xác

T

F

6

MinSqr[i]= ∑((A[i+2]-A[i])2) i=i+1

Cho i: 0 -> 5 tìm min của Minsqr  i+2 là cửa sổ chứa điểm bắt đầu khung;

TempPoint= (i+2)*ShiftLength

Dịch=False

dịch TempPoint đi

1 Frame (+96*3*2) Dich=True

TempPoint <

độ dài 2 symbol (96*2*2)

TempPoint <

độ dài 2 symbol (96*2*2)

Trang 7

b Getdata(Int16 * BufferIn, CFLOAT * OutSynchronuos, int

iFrameTransLengh)

Nhận dữ liệu từ bộ đệm ping/pong về bộ đệm chương trình

- Một khung đầy đủ sẽ được lưu vào Mảng OutSynchorous bao gồm 64*3 phần tử kiểu CFLOAT (re,im)

BufferI

n

BufferIn[2 k]

BufferIn[2k +1]

BufferIn[2K +2]

BufferIn[2k +3]

OutSynchronous OutSynchronous[k] OutSynchronous[k+1] …

Bằng Phương pháp Bình phương tối thiểu, So sánh mảng A với mảng B có độ dài đúng bằng 1 Frame với điểm đầu của mảng A trượt dần từ TempPoint đến TempPoint – L (hình vẽ)

 Tìm được SynPoint

Dich=

True?

Dich=

True?

Dịch SynPoint ngược lại 1 khoảng đúng bằng

1 Frame (-96*3*2)

Trang 8

c RemoveGardLengh(FrameInReceiver, FrameWithoutGard,

FFTLengh, GardLengh, NumDataofFrame)

- Input: FrameInReceiver :3*96 phần tử kiểu CFLOAT

- Output:FrameWithoutGard: 3*64 phần tử kiểu CFLOAT

d FrameFFT(FrameWithoutGard, WnFFT, FFTLengh, FFTExp,

NumDataofFrame)

- Input: FrameWithoutGard 3*64 phần tử kiểu CFLOAT

- Output: FrameWithoutGard 3*64 phần tử kiểu CFLOAT

e ChannelEstimation(CFLOAT * FrameWithoutGard, CFLOAT *

EstimationOut, int FFTLengh, int NumDataofFrame, int NullLow, int

NullHigh)

- Input: FrameWithoutGard 3*64 phần tử kiểu CFLOAT

8

Trang 9

- Output: EstimationOut 32 phần tử kiểu CFLOAT (64-2NullLow-2NullHigh)

f QamInvert(EstimationOut, QamOut,

NumDataofFrame*(FFTLengh-NullLow-NullHigh));

- Input: 32 phần tử kiểu CFLOAT

- Output: 32 phần tử kiểu int

 Thực hiện bằng việc ánh xạ ngược từ đồ thị QAM

g Symbol2Data( QamOut, DataOut,

NumDataofFrame*(FFTLengh-NullLow-NullHigh)

- Input: 32 phần tử kiểu int

- Output: 16 phần tử kiểu int

 Ghép 2 phần tử kiểu int liên tiếp tạo thành 1 phần tử kiểu int mới ứng với 1 kí tự char 8 bit trong bảng mã ASCII

Ngày đăng: 11/11/2014, 14:40

HÌNH ẢNH LIÊN QUAN

Sơ đồ khối hệ thống - Nghiên cứu tìm hiểu hệ thống thu phát OFDM
Sơ đồ kh ối hệ thống (Trang 1)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w