THIẾT KẾ HỆ THỐNG OFDM

Một phần của tài liệu Thực hiện hệ thống ofdm trên phần cứng (Trang 41 - 104)

2.3.1. Cấu trúc symbol OFDM

Một symbol OFDM là một tập hợp các subcarrier, số lượng subcarrier quyết định số điểm của phép IFFT/FFT được sử dụng. Mô tả OFDM symbol trong miền tần số chính là mô tả cấu trúc của symbol OFDM. Cấu trúc này gồm 3 loại sóng mang con như hình 2.12. Thứ nhất là sóng mang con dữ liệu (data) dùng để truyền dữ liệu. Thứ hai là sóng mang con dẫn đường (pilot) cho dùng ước lượng và đồng bộ. Cuối cùng là sóng mang con vô dụng (null) được sử dụng cho các băng bảo vệ và các sóng mang DC. Tác dụng của băng bảo vệ là làm cho hai bên phổ của OFDM symbol giảm tự nhiên, tạo nên hình dạng bức tường.

Tuỳ vào hệ thống cụ thể mà số lượng sóng mang con trên mỗi phần có thể khác nhau. Ví dụ, một cấu trúc symbol của của chuẩn 802.16 (WiMAX) như sau {28 zero, 100 data, zero, 100 data, 27 zero}. Ở đây data đã bao gồm pilot ở các vị trí đặc biệt là -88, -63, -38, -13, 13, 38, 63, 88. Một chuỗi dữ liệu phức khi ghép symbol sẽđược đánh số từ -128 đến +127.

Hình 2.12: Cấu trúc symbol OFDM [9]

2.3.2. Tính toán các thông số trong thiết kế

Để thiết kế symbol OFDM ta cần xác định các thông số quan trọng sau: BW: dải thông của OFDM symbol

Nused: số subcarrier được sử dụng trong OFDM symbol

n: hệ số lấy mẫu (sampling factor). Hệ số này cùng với BW và Nused sẽ quyết định độ rộng của mỗi subcarrier và thời gian của khoảng symbol có ích (useful symbol time).

G: hệ số tỉ lệ giữa CP và useful symbol time.

NFFT: sốđiểm lấy FFT (được chọn là luỹ thừa của 2 sao cho vừa đủ lớn hơn Nused) Fs: tần số lấy mẫu ( . / 8000).8000 s Ffloor n BW (2.20) f  : khoảng cách giữa các subcarrier / s FFT f F N   (2.21)

Tb: khoảng thời gian cho useful symbol 1/

b

T  f (2.22)

Tg: khoảng thời gian của đoạn bảo vệ (GI)

g b

TGT (2.23)

Ts: khoảng thời gian của OFDM symbol,

s b g T  T T (2.24) Thời gian lấy mẫu: / 1/ b FFT s T NF (2.25)

Chiều dài đoạn cyclic prefix: G

Khi thiết hệ thống sử dụng kỹ thuật OFDM, ta cần thực hiện theo trình tự như sau:

Đầu tiên, đoạn cyclic prefix (CP) phải được chọn càng nhỏ càng tốt để giảm năng lượng hao phí và tốc độ truyền như phải đảm bảo lớn hơn thời gian trễ .

Thứ hai là chiều dài của symbol OFDM thường lớn hơn nhiều so với thời gian đáp ứng  của kênh truyền:

NT  (2.26)

N BW

T 

  (2.27)

Thứ ba, OFDM rất nhạy cảm với ICI, vì vậy khoảng cách giữa các subcarrier 1

truyền gây ra: fD ( fD phụ thuộc vào vận tốc và hướng di chuyển của các vật trong kênh truyền) để sự dịch chuyển không làm mất đi tính trực giao của các subcarrier:

1 D f NT (2.28) 1 . D D BW N T f f   (2.29) Vậy: D BW BW N f  (2.30)

Đây là điều kiện để tính số subcarrier N. Ta còn rút ra được kết luận là: 1

D f

 . Điều này có nghĩa là nếu kênh truyền có thời gian trễ càng nhỏ (đáp ứng xung càng nhỏ) thì độ rộng tần số càng lớn, băng thông không đổi, coherent bandwidth của kênh truyền càng lớn. Đồng thời nếu tần số dịch chuyển Doppler fD

càng nhỏ (độ dời tần số càng nhỏ) thì thời gian không đổi, coherent time của kênh truyền càng lớn.

4CHƯƠNG 4: THIẾT KẾ HỆ THỐNG OFDM

Chương 4 trình bày công việc chính của đề là việc thiết kế từng khối và ghép các khối thành một hệ thống OFDM hoàn chỉnh. Để tiện theo dõi, việc thiết kếđược phân tích theo từng khối chức năng ở cả bên phát và thu. Nhiều khối trong hệ thống như ngẫu nhiên hoá, convolutional code, cấu trúc symbol OFDM, sử dụng cyclic prefix được thiết kế dựa vào chuẩn 802.16 (WiMAX).

4.1. BỘ NGẪU NHIÊN HOÁ DỮ LIỆU 4.1.1. Nguyên tắc ngẫu nhiên hoá 4.1.1. Nguyên tắc ngẫu nhiên hoá

Đây là khối thực hiện ngẫu nhiên hoá dữ liệu hay gọi chính xác là khối giả ngẫu nhiên dữ liệu. Nhiệm vụ của khối là hạn chế sự xuất hiện liên tục các bit giống nhau. Ngẫu nhiên hoá được thực hiện trên từng symbol. Từng byte data sẽ tuần tự đi qua bộ randomizer, MSB vào trước. Thanh ghi dịch của bộ randomizer sẽ được khởi tạo lại sau mỗi khối data. Nguyên tắc thực hiện ngẫu nhiên hoá dữ liệu được trình bày ở hình 4.1.

Hình 4.1: Nguyên tắc thực hiện bộ randomizer [9]

4.1.2. Thiết kế mạch ngẫu nhiên

Khi thế kế hệ thống trên DSP Builder, mạch thực hiện ngẫu nhiên hoá có thể được thiết kế như hình 4.2. Đa thức tạo chuỗi ngẫu nhiên PRBS (pseudo-random binary sequence) là “1 + X14 + X15”. Giá trị được khởi tạo cho bộ tạo ngẫu nhiên là ‘100101010000000’. Dữ liệu ngõ vào từ chân in_ran sẽ được XOR với khối tạo dữ

liệu ngõ ra của mạch tạo ngẫu nhiên. Ngõ ra của cổng XOR là out_ran. Đây là chuỗi bit đã được ngẫu nhiên hoá. Các tín hiệu ena và rst để cho phép và reset mạch tạo ngẫu nhiên. Việc derandomizer ở đầu thu được thực hiện bằng cách cho qua lại bộ randomizer. Ở đây, đề tài sử dụng dữ liệu ngõ vào là chuỗi bit nên không cần sử dụng các khối chuyển từ số nguyên sang bit ở phía phát.

Hình 4.2: Mạch thực hiện randomizer

4.2. BỘ MÃ HOÁ KÊNH 4.2.1. Bộ mã hoá 4.2.1. Bộ mã hoá

Bộ mã hoá kênh được sử dụng là bộ mã convolutional code, tốc độ mặc định là 1/2, chiều dài bộ mã hoá là 7 và dùng đa thức sinh là: G1 = 171OCT và G2 = 133OCT. Bộ mã hoá được thiết kế bằng cách kết hợp 6 bộ trễ (delay) và 2 cổng XOR 5 ngõ vào. Hình 4.3 trình bày bộ mã hoá convolutional code. In_CC là ngõ vào của bộ mã hoá và out_CC1 và out_CC2 là hai ngõ ra tương ứng của G1 và G2. Các tín hiệu ena và rst để cho phép và reset bộ mã hoá.

4.2.2. Giải mã bằng thuật toán Viterbi

Bộ giả mã được thiết kế bằng thuật toán Viterbi. Kiến trúc cơ bản của thuật toán Viterbi được trình bày ở hình 4.4. Thuật toán gồm bốn khối chính: khối tính khoảng cách nhánh (branch metric), khối cộng-so sánh-chọn (add compare and select), khối chọn đường tối ưu (survivor path metric), và khối qui hồi và giả mã (traceback and output decode block).

Khối tính khoảng cách nhánh (branch metric) dùng để tính khoảng cách Hamming của các bit (là 2 bit nếu sử dụng tốc độ mã là R=1/2) với các nhánh. Khối cộng-so sánh-chọn có nhiệm vụ tính tổng khoảng cách Hamming của nhánh với trạng thái hiện tại và giữ lại nhánh có khoảng cách ngắn nhất. Khối chọn đường tối ưu để tìm ra chuỗi trạng thái phù hợp nhất. Khối qui hồi và giả mã có nhiệm vụ chọn, dò lại chuỗi trạng thái tối ưu và quyết định chuỗi bit ở ngõ ra. Đây là chuỗi bit giải mã của thuật toán.

Hình 4.4: Mô hình thuật toán Viterbi

Add compare and select unit (ASCU)

Input data Branch metric unit

(BMU)

Add compare and select

(ACS)

Survivor path metric (SMU)

State metric storage

(SMS)

Traceback and output decode block

Hình 4.5 là ví dụ về giải mã dùng thuật toán Viterbi cho chuỗi dữ liệu thu là (11,00,01,11,10,10,11). Chuỗi trạng thái phù hợp nhất được xác định bằng cách tính khoảng cách Hamming với tất cả các đường. Khi hai đường cùng gặp nhau tại một điểm, ta chỉ giữ lại đường có khoảng cách Hamming ngắn hơn. Đường cuối cùng được chọn để quyết định trạng thái ngõ ra là đường có khoảng cách Hamming ngắn nhất. Vì vậy, chuỗi dữ liệu tối ưu nhất là (11, 01, 01, 11, 11, 10,11). Khi xác định được chuỗi dữ liệu tối ưu, ta có thể xác định chuỗi dữ liệu ở ngõ ra bộ giải mã. Trong ví dụ trên, chuỗi dữ liệu sau khi giải mã là (1100100).

Hình 4.5: Ví dụ giả mã dùng thuật toán Viterbi

Hình 4.6 trình bày phương pháp sử dụng MegaCore để thực hiện bộ giải mã dùng thuật toán Viteribi. Các đường tín hiệu cơ bản để điều khiển bộ giải mã được trình bày ở hình 4.7. Thuật toán Viterbi dựa vào chuỗi trạng thái phù hợp nhất. Vì vậy, việc xác định độ dài của chuỗi sẽảnh hưởng đến hiệu quả của bộ giải mã. Nếu chiều dài được chọn quá dài sẽ làm cho tăng các phép tính toán, sử dụng nhiều bộ nhớ, và tăng thời gian trễ. Ngược lại, nếu chọn chiều dài quá ngắn sẽ hạn chế khả năng sửa lỗi của thuật toán. Chiều dài qui hồi thường được chọn gấp 6 lần chiều dài bộ mã trong trường hợp không bỏ bớt. Trong trường hợp có bỏ bớt, chiều dài được chọn tối đa dài gấp 15 lần chiều dài bộ mã. Trong thiết kế này, chiều dài bộ mã là 7

và không sử dụng kỹ thuật bỏ bớt nên chiều dài qui hồi được chọn là 42. Chi tiết các đường tín hiệu được diễn tảở bảng 4.1. Bộ giải mã Viterbi được thiết kế với dữ liệu ra bị trễ khoảng 4 lần chiều dài qui hồi. Đồng thời, các dữ liệu đến bộ giả mã là không liên tục nên dữ liệu ngõ ra của bộ giả mã là không liên tục. Các dữ liệu này sẽ được ghi vào bộ nhớ FIFO. Sau đó, tín hiệu rd_data_out sẽ đọc liên tục 192 bit dữ liệu trong bộ nhớ và đây là dữ liệu liên tục trong một symbol OFDM.

Hình 4.6: Bộ giải mã dùng thuật toán Viterbi

Bảng 4.1: Ý nghĩa các đường tín hiệu của bộ giải mã Viterbi

Tên tín hiệu Hướng Mô tả

Tín hiệu vào

sink_val Input Tín hiệu cho phép truyền dữ liệu rr Input Ngõ vào của dữ liệu cần giải mã

eras_sym Input Ngõ này được sử dụng cho kỹ thuật bỏ bớt (puncturing)

source_rdy Input Tín hiệu cho phép truyền dữ liệu ngõ ra ber_clear Input Xoá bộđếm BER

Tín hiệu ra

source_val Output Báo dữ liệu ngõ ra

decbit Output Ngõ ra của dữ liệu sau bộ giải mã sink_rdy Output Cho phép truyền dữ liệu ngõ vào

nomalizations Output Chứa giá trị chuẩn hoá. Đây là thông tin được dùng để tránh hiện tượng tràn của bộđếm. numerr Output Số bit lỗi

Tín hiệu cấu hình

reset Input Reset bộ giải mã

state_node_sync Input Sử dụng trong các trường hợp đặc biệt dùng để thiết lập điểm bắt đầu của dữ liệu vào

4.3. ÁNH XẠ CHÒM SAO 4.3.1. Bộ ánh xạ chòm sao 4.3.1. Bộ ánh xạ chòm sao

Ánh xạ chòm sao là phương pháp chuyển chuỗi dữ liệu có m bit thành một điểm a + jb. Trong đó, số bit m phụ thuộc vào phép ánh xạ. Ví dụ, QPSK có m bằng 2, 16_QAM có m=4. Trong hệ thống OFDM, ánh xạ chòm sao chỉ là việc chuyển chuỗi bit để cho phép truyền nhanh hơn. Khối mapper sử dụng các phương pháp của điều chế số nhưng nhiệm vụ điều chế được thực hiện ở phép biến đổi IFFT và bộ DAC ở ngõ ra. Có các phương pháp để thiết kế bộ mapper là sử dụng cấu trúc case, hoặc dùng bộ bảng tra, hoặc bộ nhớ ROM. Trong đề tài, khối mapper được thiết kế bằng bảng tra. Có hai bảng tra riêng được sử dụng để lưu giá trị trục đồng pha (I) và trục vuông pha (Q). Dữ liệu cần thực hiện ánh xạ sẽđặt vào đường địa chỉ của bảng

tra. Nội dung trong bảng tra lưu trữ giá trị tương ứng với chòm sao. Dữ liệu được ánh xạ sẽ có giá trị từ -1 đến 1. Ngõ ra của bộ DAC là 14 bit. Vì vậy, đề tài chuẩn hoá tín hiệu về dạng số có dấu chấm cốđịnh. Bảng 4.2 là các dữ liệu đặt trong bảng tra cho bộ mã hoá QPSK. Hình 4.8 trình bày nguyên tắc của phép QPSK và 16_QAM . Sơđồ mạch thực hiện phép điều chế QPSK được trình bày ở hình 4.9.

Hình 4.8: Phép điều chế QPSK và 16_QAM [9]

Bảng 4.2: Dữ liệu đặt trong bảng tra cho phép điều chế QPSK

Dữ liệu vào (địa chỉ) Ngõ ra (dữ liệu đã qua bộ Mapper)

Trục I Trục Q Hệ 10 Hệ nhị phân Giá trị (hệ 10) Số dấu chấm cốđịnh (hệ 10) Giá trị (hệ 10) Số dấu chấm cố định (hệ 10) 0 00 0.707 5792 0.707 5792 1 01 0.707 5792 -0.707 10592 2 10 -0.707 10592 0.707 5792 3 11 -0.707 10592 -0.707 10592 Hình 4.9: Mạch thực hiện phép điều chế QPSK

Bảng 4.3: Dữ liệu đặt trong bảng tra cho phép điều chế 16-QAM

Dữ liệu vào (địa chỉ) Ngõ ra (dữ liệu đã Mapper)

Trục I Trục Q Hệ 10 Hệ nhị phân Giá trị (hệ 10) Số dấu chấm cốđịnh (hệ 10) Giá trị (hệ 10) Số dấu chấm cốđịnh (hệ 10) 0 0000 0.316 2589 0.316 2589 1 0001 0.316 2589 0.949 7774 2 0010 0.316 2589 -0.316 13795 3 0011 0.316 2589 -0.949 8610 4 0100 0.949 7774 0.316 2589 5 0101 0.949 7774 0.949 7774 6 0110 0.949 7774 -0.316 13795 7 0111 0.949 7774 -0.949 8610 8 1000 -0.316 13795 0.316 2589 9 1001 -0.316 13795 0.949 7774 10 1010 -0.316 13795 -0.316 13795 11 1011 -0.316 13795 -0.949 8610 12 1100 -0.949 8610 0.316 2589 13 1101 -0.949 8610 0.949 7774 14 1110 -0.949 8610 -0.316 13795 15 1111 -0.949 8610 -0.949 8610 Hình 4.10: Mạch thực hiện phép điều chế 16-QAM

4.3.2. Bộ giải ánh xạ chòm sao

Ở đầu thu, các điểm chòm sao ở bộ truyền sẽ bị thay đổi do tác động của kênh truyền. Vì vậy, bộ giải ánh xạ chòm sao phải chọn ngưỡng để xác định điểm chòm sao ở phía thu. Khối giải ánh xạ chòm sao (demapper) được thiết kế bằng ngôn ngữ Verilog. Nguyên tắc của của bộ demapper là so sánh giá trị nhận được trên đường I và Q với các điểm lân cận trong chòm sao. Điểm được chọn ở ngõ ra là điểm có khoảng cách Euclid gần nhất với tín hiệu nhận được. Khi sử dụng phép QPSK, bộ demapper được thực hiện đơn giản bằng cách cho giá trị ngõ ra là bit có ý nghĩa lớn nhất (MSB) của chuỗi bit nhận được. Đây là bit dấu của chuỗi dữ liệu. Đối với phương pháp 16_QAM, bộ demapper được thiết kế theo qui luật IF – THEN. Dữ liệu ở ngõ ra sẽđược đặt vào bộ nhớ FIFO để chuẩn bịđi vào bộ giải mã kênh. Trong 256 giá trị của symbol OFDM có 192 giá trị là dữ liệu cần truyền. Vì vậy, bộ nhớ FIFO cần 192 từ nhớ. Mỗi từ có 2 bit nhớ tương ứng với phép điều chế QPSK và 4 bit nhớ đối với phép điều chế 16-QAM. Hình 4.11 là mạch thực hiện demapper.

Hình 4.11: Khối Demapper

4.4. SYMBOL OFDM

Trong symbol OFDM gồm dữ liệu, pilot, các giá trị 0. Vì vậy, trước khi tiến hành ghép symbol cần phải tạo các pilot. Các pilot này dùng để ước lượng kênh truyền phía bên thu.

4.4.1. Mạch tạo pilot

Để tạo pilot, ta cần bộ tạo ngẫu nhiên như hình 4.12. Đa thức sinh của PRBS này là: 1 + X9 + X11. Giá trị khởi tạo cho đa thức sinh là 10101010101B. Tín hiệu pilot ứng với OFDM symbol thứ k sẽ được suy ra từ các wk. Các vị trí dùng để chèn pilot và giá trị chèn được tính như sau:

c-88 = c-38 = c13 = c38 = c63 = c88 = 1-2wk và c-63 = c-13 = 1-2(!wk)

Hình 4.12: Bộ ngẫu nhiên hoá pilot [9]

Mạch tạo pilot được trình bày ở hình 4.13. Mạch gồm khối tạo các giá trị ngẫu nhiên LFSR, khối so sánh để chọn các vị trí cho !wk. Cuối cùng, là các mạch nhân và cộng để thực hiện tính biểu thức 1-2wk hoặc 1-2(!wk). Nếu đánh chỉ số của symbol là từ 0 đến 255 thì giá trị -63 và -13 sẽ trở thành 65 và 115. Tín hiệu index dùng để xác định vị trí bit trong symbol OFDM. Tín hiệu ena và rst dùng để cho phép và reset lại mạch. Tín hiệu pilot là ngõ ra của bộ cộng.

4.4.2. Mạch ghép và tách symbol

Đây là mạch sắp xếp và ghép chuỗi dữ liệu theo một trình tự hợp lý để truyền đi. Một symbol OFDM dùng trong chuẩn 802.16 được định nghĩa như sau: {28 số zero,100 data, zero, 100 data, 27 số zero}. Trong đó các vị trí chèn pilot là c-88, c-63, c-38, c-13, c13, c38, c63 và c88. Phần tạo symbol được thiết kế bằng ngôn ngữ Verilog.

Một phần của tài liệu Thực hiện hệ thống ofdm trên phần cứng (Trang 41 - 104)