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

Nguyễn Hạnh
BÁO CÁO
Hệ thống thu phát OFDM sử dụng công nghệ DSP
Sơ đồ khối hệ thống
(Phần code lấy ở bản 28/2 nhận chính xác 100% của các anh K50)
1
Nguyễn Hạnh
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)
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

- Đầu ra: 96 phần tử mảng SymbolOutPilot or SymbolOutData
nnnbbbhhh.
3
Nguyễn Hạnh
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
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
4
i=0;
MinSqr[0 5]=0;
i=0;
MinSqr[0 5]=0;
i=0;
MinSqr[0 5]=0;
MinSqr[i]= ∑((A[i+2]-A[i])
2

(96*2*2)
Nguyễn Hạnh
T
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]

Kiểu int int int int …
Giá trị a b c d …
OutSynchronous OutSynchronous[k] OutSynchronous[k+1] …
Kiểu CFLOAT CFLOAT …
Giá trị {a/10000,b/10000} {a/10000,b/10000} …
c. RemoveGardLengh(FrameInReceiver, FrameWithoutGard,
FFTLengh, GardLengh, NumDataofFrame)
6
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

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
8


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status