0
Tải bản đầy đủ (.pdf) (94 trang)

Thiết kế và tính toán

Một phần của tài liệu NGHIÊN CỨU TỐI ƯU HÓA KIẾN TRÚC BỘ THU TRỰC TIẾP CHO CÁC ỨNG DỤNG THÔNG TIN (Trang 85 -85 )

4.6.1 Đặt vấn đề

Bộ thu GPS sử dụng công nghệ SDR được thực hiện trên bộ DSP của Texas Instrument là TMS320C6416. Một kênh máy thu thực hiện trên DSP được hiển thị trên hình 4.3. Sau đây em sẽ tiến hành mô phỏng khối dò sóng tín hiệu (Acquisition). Khối dò sóng là khối đầu tiên mà DSP thực hiện, đầu vào của khối là đầu vào DSP tức là đầu ra của bộ ADC.

Khối dò sóng thực hiện các chức năng: - Xác định vệ tinh nhìn thấy.

- Xác định giá trị tần số sóng mang tương ứng của vệ tinh. - Xác định pha mã thô của vệ tinh dò được.

Đầu ra của khối dò sóng là đầu vào của khối theo dõi sóng mang và mã (Tracking).

Phương pháp thực hiện khối dò sóng trong mô phỏng này là phương pháp: “Dò sóng dò tìm pha mã song song”.

4.6.2 Giải quyết bài toán

4.6.2.1 Thuật toán

Chức năng dò sóng dò tìm pha mã song song được trình bày chi tiết trong mục 4.3.3. Sự thực hiện được dựa trên biểu đồ khối ở hình 4.6. Biểu đồ luồng được thực hiện trên Matlab được biểu diễn ở hình dưới đây:

Hình 4.23.Biểu đồ luồng thuật toán dò tìm pha mã song song

Chức năng dò sóng tín hiệu GPS với bước tần số 0.5KHz. Với mỗi mã PRN chúng ta phải dò tìm tất cả các tần số sóng mang có thể IF 7 KHz tức là 29 tần số. Tiếp theo chúng ta tìm giá trị tương quan cao nhất trong kết quả từ các tần số sóng mang đó, rồi ta tìm đỉnh tương quan thứ hai sau đó lấy tỷ lệ của hai đỉnh tương quan rồi đem so sánh với AcqThreshold = 2.5. Nếu lớn hơn giá trị này thì mã PRN đó ứng với vệ tinh nhìn thấy và ta tìm các giá trị tần số sóng mang, pha mã của vệ tinh đó.

4.6.2.2. Các thông số đầu vào

- Tần số sóng mang không Doppler: IF = 4.1304e6 Hz

- Tần số lấy mẫu:

Sampling Freq = 16.3676 Hz - Tốc độ chip mã PRN:

CodeFreqBasis = 1.023e6 chip/s - Độ dài mã PRN hoàn chỉnh: CodeLength = 1023

- Số vệ tinh: 32

- Tần số sai lệch do Doppler: ± 7 KHz - Ngưỡng xác định vệ tinh dò được: AcqThreshold = 2.5

- Số kênh bộ thu: Channels = 12

- Tín hiệu tới: Tín hiệu từ đầu ra bộ ADC. Trong mô phỏng này dữ liệu 11ms được lấy từ file Multipath.bin với các bit -3, -1, 1, 3.

- Bộ tạo sóng mang: Chuỗi mấu có độ dài 1ms được tạo ra với sóng mang exp(j*2*pi**fc*ts*nn); fc là tần số sóng mang có Doppler; ts =1/fs; nn là mảng với các số từ 0 đến 16367.

- Bộ tạo mã PRN: 32 mã PRN, mỗi mã PRN hoàn chỉnh với độ dài 1ms là 1023 chip được lấy mẫu với tần số16.3676 e6 Hz. 1023 chip của mã C/A được thực hiện theo sơ đồ bộ tạo mã C/A[8]

Qua quá trình tìm hiểu lý thuyết em đã đưa ra mô hình mô phỏng một bộ thu trên nền C++ với ADC 1-bits. Đây chính là ví dụ thể hiện kết quả áp dụng SDR vào một máy thu GPS. Mã nguồn được thể hiện như bên dưới:

#include <string.h> #include <stdlib.h> #include <stdio.h> #include <math.h> const double PI = 3.14159265358979323846;

struct CACODE { // GPS coarse acquisition (C/A) code generator. Sequence length = 1023.

char g1[11], g2[11], *tap[2];

CACODE(int t0, int t1) { // Mỗi GPS có 1 taps duy nhất tap[0] = g2+t0; tap[1] = g2+t1; memset(g1+1, 1, 10); memset(g2+1, 1, 10); } int Chip() {

return g1[10] ^ *tap[0] ^ *tap[1] ? 1 : -1; } void Clock() { g1[0] = g1[3] ^ g1[10]; g2[0] = g2[2] ^ g2[3] ^ g2[6] ^ g2[8] ^ g2[8] ^ g2[10]; memmove(g1+1, g1, 10); memmove(g2+1, g2, 10); } }; double Noise() { // static double x1, x2; static int i; if (i=!i) { // x1,x2 x1 = (rand()+1)/32768.0; x2 = (rand()+1)/32768.0; // Box-Muller transform return sqrt(-2*log(x1))*cos(2*PI*x2); } else return sqrt(-2*log(x1))*sin(2*PI*x2); } void main(void) { #define BP 50

const double Ac = 100; // -130 dBm = 71nV RMS = 100nV Peak = GPS signal @ antenna

const double DC = 50; // Anten DC offset

const double fc = 9975e3; // Tần số IF trung tâm (as S53MV design) const double fs = 6138e3; // Lấy mẫu (as S53MV design)

//

__int64 lo_rate = __int64(2301.1e3 / fs * pow(2, BP)), lo_phase = 0; __int64 ca_rate = __int64(1023.1e3 / fs * pow(2, BP)), ca_phase = 1000i64<<BP;

//

CACODE sv1(2,6), sv2(3,7), sv3(4,8), *target = &sv2;

char code[1023];

for (int i=0; i<1023; target->Clock()) code[i++] = target->Chip(); double t=0;

const __int64 dither = 1i64<<(BP-1); // Half-chip = 1i64<<(BP- 1); full chip = 1i64<<(BP-0)

#if 1

const int lo_sin[] = {1,1,-1,-1}; const int lo_cos[] = {1,-1,-1,1}; #else

const int lo_sin[] = {0,1,0,-1}; const int lo_cos[] = {1,0,-1,0}; #endif

for (int b=0; b<200; b++) { // Data bits int I=0, Q=0;

for (int r=0; r<20; r++) { // 20 code repeats in 20ms; GPS data rate = 50bps

int ie=0, qe=0, ip=0, qp=0, il=0, ql=0; // 1ms decimation integrators

for (int j=0; j<1023; j++) { // Code length = 1023

for (int k=0; k<6; k++) { // 6 samples per chip as per S53MV design (fs=6*1023=6138)

double y = sin(2*PI*fc*t); //

double v = Ac * sv1.Chip() * (((b>>0)&2)-1) * y // Data = 00110011 ... + Ac * sv2.Chip() * (((b>>1)&2)-1) * y // 0000111100001111 ... + Ac * sv3.Chip() * (((b>>2)&2)-1) * y // 0000000011111111 ... + An * Noise(); // DC offset v += DC + v*v + v*v*v;

//

int d = v>0? 1 : -1; // Đồng bộ nội

int LO_I = lo_sin[lo_phase>>(BP-2)]; int LO_Q = lo_cos[lo_phase>>(BP-2)]; // Early, late & punctual code

int ca_e = code[((ca_phase+dither)>>BP) % 1023]; int ca_p = code[ (ca_phase >>BP) % 1023]; int ca_l = code[((ca_phase-dither)>>BP) % 1023]; // Mixer ie += d*ca_e*LO_I; qe += d*ca_e*LO_Q; ip += d*ca_p*LO_I; qp += d*ca_p*LO_Q; il += d*ca_l*LO_I; ql += d*ca_l*LO_Q; // Code NCO ca_phase += ca_rate; ca_phase %= 1023i64<<BP; // Carrier NCO lo_phase += lo_rate;

lo_phase &= (1i64<<BP) - 1; t += 1/fs;

}

sv1.Clock(), sv2.Clock(), sv3.Clock(); }

I += ip; Q += qp;

// Power(E) - Power(L) = (IE^2+QE^2) - (IL^2+QL^2) = (IE+IL)*(IE-IL) + (QE+QL)*(QE-QL)

__int64 err = (ie+il) * (ie-il) + (qe+ql) * (qe-ql); // Code lock PI controller

ca_phase += err << (BP-19); ca_rate += err << (BP-40);

// Costas loop balanced mixer: I*Q = data(t)^2 * sin(2*phase_error) / 2

err = (ip * qp) >> 1; #if 0

// ATAN method

double theta = atan2(double(qp), double(ip)); lo_phase += theta/2/PI * pow(2, BP);

//fprintf(fp, "%g\n", theta); #else

// Carrier lock PI controller lo_phase += err << (BP-19); lo_rate += err << (BP-40); #endif

ca_phase %= 1023i64<<BP; lo_phase &= (1i64<<BP) - 1; } printf("%-3d %8.1f %7d %7d %9.3f %7.0f %9.0f %9.0f\n", b, double(ca_phase>>(BP-4))/16, I, Q, atan2(double(Q),double(I))/2/PI, sqrt(I*I+Q*Q), lo_rate * fs / pow(2, BP), ca_rate * fs / pow(2, BP) ); } } .

KẾT LUẬN

Công nghệ SDR với những ứng dụng thực tế đã và đang được triển khai sẽ mang lại những giá trị vô cùng to lớn. Với sự phát triển mạnh mẽ của ngành công nghiệp phần mềm thì SDR hứa hẹn sẽ là công nghệ phát triển trong tương lai. Đồ án đã trình bày những tìm hiểu của em về công nghệ SDR và ứng dụng của nó cho bộ thu trực tiếp GPS – một thiết bị đang được sử dụng phổ biến hiện nay. Nghiên cứu của em đã chỉ ra tính ưu việt của công nghệ SDR trong một ứng dụng cụ thể đó là bộ thu GPS. Bộ thu GPS áp dụng công nghệ SDR đã thay thế một số khối phần cứng chuyên dụng trong kiến trúc bộ thu phần cứng thông thường bằng phần mềm để mang lại những khả năng mới cho bộ thu đáp ứng yêu cầu ngày càng cao của người dùng như tính mềm dẻo, thích ứng cao và đặc biệt là khả năng tích hợp và hội tụ mạng. Trên cơ sở lý thuyết tìm hiểu được, em đã xây dựng được thuật toán mô phỏng khối dò sóng tín hiệu. Em hi vọng những tìm hiểu của em sẽ giúp ích cho các nghiên cứu sau này về công nghệ SDR áp dụng cho các thiết bị vô tuyến khác. Hướng nghiên cứu tiếp theo của em sẽ là chế tạo ra chiếc máy thu GNSS dựa trên công nghệ SDR có thể thu đồng thời nhiều tín hiệu vệ tinh của cả hệ thống GPS và Galileo.

Trong quá trình làm đồ án, dù đã cố gắng nhưng cũng không thể tránh khỏi những thiếu sót, em rất mong nhận được những ý kiến đóng góp quý báu của các thầy cô và các bạn!

Cuối cùng, em xin được gửi lời cám ơn sâu sắc đến thầy PGS.TS Nguyễn Hữu Trung, cô PGS.TS Nguyễn Thúy Anh đã giúp đỡ tận tình và tạo điều kiện để em hoàn thành đồ án này!

DANH MỤC CÁC TỪ VIẾT TẮT

Từ viết tắt Nội dung Ý nghĩa

GNSS Global Navigation Satellite System Hệ thống vệ tinh dẫn đường toàn cầu GPS Global Positioning System Hệ thống định vị toàn cầu

GLONASS G Orbiting Navigation Satellite System Hệ thống định vi toàn cầu Liên xô CDMA Code Division Multiple Access Đa truy nhập phân chia theo mã FDMA Frequency Division Multiple Access Đa truy nhập phân chia theo tần số QBSK Quadrature Phase Shift Keying Điều chế pha cầu phương

PRN Pseudo random noise Nhiễu giả ngẫu nhiên IF Intermediate Frequency Trung tần

BPF Bandpass Filter Bộ lọc thông dải

SSB Baseband Băng cơ bản

ADC Analog to Digital Converter Bộ chuyển đổi tương tự số LO Local Oscillator Bộ tạo dao động nội

LPF Low pass filter Bộ lọc thông thấp BER Bit Error Rate Tốc độ lỗi bit

LNA Low noise Ampliper Trung tâm truyền thông quả SDR Software-Defined Radio Công nghệ vô tuyến phần mềm QoS Quality of Service Chất lượng dịch vụ

FPGA Field programmable gate array Vi mạch có khả năng lập trình được DSP Digital signal processor Bộ xử lý tín hiệu số

MIMM Mode Identification and Monitoring

Module Phân hệ xác định và giám sát mode MNSN Mode Negotiation and Monitoring

Module Phân hệ đàm phán và giám sát mode SDM Service Deployment Manager Bộ quản lý triển khai dịch vụ

JRRM Joint Radio Resource Management

TÀI LIỆU THAM KHẢO

[1] Md. Maruf Hossain, “Design of RF Front End for Multi_Band Multi-System GNSS Receivers”, pp. 9-14, 31/1/2008

[2] SDR Forum, “SDRF Cognitive Radio Definitions”, Working Document SDRF-06- R-0011-V1.0.0, ra ngày 8/11/2007.

[3] Walter Tuttlebee, “Software Defined Radio: Origins, Drivers and International Perspectives”, John Wiley & Sons, Ltd, England 2002.

[4] SDR Forum, “Base Station System Structure”, Document No. SDRF-01-P-0006- V2.0.0, ra ngày 15/1/2002.

[5] Vito Giannini, Jan Craninckk, Andrea Baschirotto, “Baseband Analog Circuits for Software Defined Radio”, Springer, Netherlands 2008.

[6] Markus Dillinger, Kambiz Madani, Nancy Alonistioti, “Software Defined Radio: Architectures, Systems and Functions”, John Wiley & Sons, Ltd, England 2003.

[7] Kai Borre - Dennis M. Akos - Nicolaj Bertelsen - Peter Rinder - Soren Holdt Jensen – A Software-Defined GPS and Galileo Receiver - A Single-Frequency Approach.

[8] Jaizki Mendizabal Roc Berenguer Juan Menlendz - GPS_GALELIO Reciver Design in 2009.

Một phần của tài liệu NGHIÊN CỨU TỐI ƯU HÓA KIẾN TRÚC BỘ THU TRỰC TIẾP CHO CÁC ỨNG DỤNG THÔNG TIN (Trang 85 -85 )

×