Chương 1: Mở đầu. 3
Chương 2: Kiến thức cơ sở. 5
2.1 Điều chế và lý thuyết modem . 5
2.1.1 Điều chế. 5
2.1.2 Điều chế QAM . 7
2.1.3 Bộ phát QAM số. 11
2.1.4 Bộ thu QAM số. 13
2.2 FPGA15
Chương 3: Bộ điều chế QAM . 21
3.1 Tổng quan. 21
3.2 Bộ điều chế QAM . 21
3.2.1 Nguyên tắc thực hiện. 21
3.2.2 Mô hình bộ điều chế QAM xây dựng. 22
3.3 Kết quả. 26
Chương 4: Xử lý dấu phẩy động. 28
4.1. Chuẩn dấu phẩy động IEEE28
4.2 Một số ngoại lệ trong tính toán dấu phẩy động. 29
4.2.1 Ngoại lệ phép toán sai. 30
4.2.2 Ngoại lệ chia cho 0. 30
4.2.3 Ngoại lệ tính toán không đúng. 30
4.2.4 Ngoại lệ tràn dưới. 31
4.2.5 Ngoại lệ tràn trên. 31
4.2.6 Ngoại lệ không xác định. 31
4.2.7 Ngoại lệ không. 31
4.3 Các chế độ làm tròn. 31
4.3.1 Làm tròn đến giá trị chẵn gần nhất. 32
4.3.2 Làm tròn về 0. 32
4.3.3 Làm tròn tăng, giảm . 32
4.4. Các phép toán trên dấu phẩy động. 33
4.4.1 Phép cộng và trừ33
4.4.2 Phép nhân. 35
4.4.3 Phép chia. 36
4.5. Thiết kế phần cứng. 38
Chương 5: Khôi phục nhịp ký hiệu. 41
5.1 Tổng quan. 41
5.2 Các kỹ thuật khôi phục nhịp ký hiệu. 42
5.2.1 Kỹ thuật khôi phục nhịp ký hiệu gấp đôi. 43
5.2.2 Kỹ thuật khôi phục nhịp ký hiệu biên độ tối đa. 43
5.2.3 Kỹ thuật khôi phục nhịp ký hiệu sớm-muộn. 44
5.2.4 Kỹ thuật khôi phục nhịp ký hiệu cắt không. 45
5.3 Kỹ thuật khôi phục nhịp ký hiệu bằng phương pháp tương quan. 46
5.3.1 Bộ xét tương quan. 47
5.3.2 Quá trình xét tương quan. 49
Chương 6: Khôi phục sóng mang và giải điều chế QAM . 51
6.1 Tổng quan. 51
6.2 Khôi phục sóng mang. 52
6.3 Các kỹ thuật khôi phục sóng mang. 54
6.3.1 Kỹ thuật khôi phục sóng mang có gửi kèm tần số phao tiêu (pilot tone)54
6.3.2 Vòng lặp vuông (Squaring Loop). 54
6.3.3 Vòng lặp Costas. 55
6.3.4 Vòng khóa pha phản hồi quyết định. 56
6.4 Giải điều chế QAM sử dụng phương pháp tương quan. 57
Kết luận. 59
TÀI LIỆU THAM KHẢO60
60 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3723 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Nghiên cứu, thiết kế, xây dựng bộ điều chế và giải điều chế qam - 16 trên FPGA, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
*[-2sin(2fct)]} (2.14)
AQ’(t)=LPF{-AI(t)[sin(4fct)] + AQ(t)[1-cos(4fct)]} (2.15)
AQ’(t)=LPF{-AI(t)sin(4fct) + AQ(t) - AQ(t)cos(4fct)} (2.16)
AQ’(t) = AQ(t) (2.17)
Mối liên hệ giữa sóng sin và cos được sử dụng cho bộ giải điều chế vuông pha được tạo ra nhờ khối khôi phục sóng. Chương 6 sẽ miêu tả chi tiết về bộ giải điều chế và lý thuyết khôi phục sóng mang.
Khối RRC (Raise Root Cosin) lọc đầu ra của bộ giải điều chế vuông pha để khử nhiễu, giao thoa và ISI. Sau đó, các khối giải ánh xạ ký hiệu, giải mã Gray và chuyển đổi song song sang nối tiếp làm ngược lại các khối ánh xạ biểu tượng, mã hóa Gray và nối tiếp sang song song ở bộ phát để khôi phục lại dữ liệu ban đầu.
2.2 FPGA
FPGA là một loại thiết bị logic khả trình. Với một chip FPGA chúng ta có thể tiến hành lập trình các kết nối cho các ứng dụng cụ thể (như card âm thanh, video, bộ vi xử lý 8 bit, 16 bit, hay là bất cứ một chip khả trình nào như 8051 chẳng hạn) mà không phải tốn hàng ngàn đô cho chi phí sản xuất. FPGA là chip dành cho nguời dùng phát triển các hệ thông bằng phần mềm sau khi IC đã chế tạo.
FPGA là viết tắt của Field Programmable Gate Array, vậy Field Programmable ở đây chúng ta có thể hiểu như thế nào. Điều này có thể hiểu là chức năng của FPGA được quyết định nhiều bởi người lập trình hơn là bởi nhà sản xuất. Các mạch tích hợp thông thường thì chức năng của nó đã được xác định bởi người sản xuất. Ngược lại, chức năng của FPGA lại được xác định bởi người dùng bằng chính chương trình mà họ viết ra.
Trước khi có sự phát triển của logic khả trình, thì các mạch logic thông thường được xây dựng trên mức bo mạch với các linh kiện thông thường, hoặc với mức cổng cho các ứng dụng mở rộng, FPGA là một mạch tích hợp chứa rất nhiều tế bào logic (logic cell), có thể xem như là các linh kiện chuẩn. Các logic cell độc lập với nhau trong các thiết kế mang tính cá nhân. Các cell tách biệt với nhau được kết nối trong với nhau bởi ma trận dây và chuyển mạch. Khi thiết kế các hàm logic đơn giản cho mỗi cell, người dùng thực hiện bằng cách điều khiển các chuyển mạch trong ma trận kết nối trong. Một mảng các cell và các kết nối tạo nên những khối kết nối cơ bản cho mạch. Một thiết kế phức tạp là sự kết nối của các khối trên, tạo nên mạch mong muốn.
Như đã nêu qua ở trên, có thể hình dung được cấu trúc của FPGA một cách cở bản nhất phải chứa đủ ba thành phần:
Logic cells
Interconnection
I/O blocks
Hình 2.11: Cấu trúc cơ bản của FPGA
Logic cell: là nơi thức hiện các tính toán, lưu trữ thông tin, nó là thành phần quan trọng nhất trong FPGA. Số logic cell thay đổi theo từng họ linh kiện. Tổ hợp logic của cell theo quy luật tự nhiên có thể thực hiên được như một bảng khóa bộ nhớ nhỏ LUT hoặc như là một thiết lập của nhiều cổng AND. Mô hình LUT dẫn tới bit có thể linh động hơn và cung cấp nhiều lối vào hơn so với mô hình kết hợp nhiều cổng AND trong cùng điều kiện về độ trễ.
I/O blocks: Cung cấp các giao tiếp với bên ngoài.
Interconnection: Là ma trận hàng và cột thực hiện kết nối bên trong giữa các cell với nhau, và giữa khối I/O và Cell.
Trên thị trường hiện nay có rất nhiều nhà cung cấp linh kiện FPGA nhưng Altera và Xilinx là hai nhà cung cấp phổ biến nhất đối với thị trường trong nước. Chúng ta có thể đặt mua trực tiếp qua mạng hoặc qua công ty đại diện tại Việt Nam, ngoài ra cũng có thể mua được một số linh kiện tại một số cửa hàng trên địa bàn Hà Nội. Các linh kiện của các hãng khác nhau có những cấu trúc khác nhau, trong một hãng các họ khác nhau cũng được thiết kế với các cấu trúc khác nhau. Mỗi họ đều có nhưng đặc tính riêng của nó. Trong đề tài này tôi lựa chọn chíp APEX EP20K200EQC208 (thuộc họ APEX20K) của Altera bởi tính phù hợp của nó đối với yêu cầu của đề tài và sự ổn định cao trong linh kiện của hãng Altera.
Tính năng
Số cổng tối đa
Số cổng tiêu chuẩn
LE (Logic Element)
ESB (Embedded System Block)
Số bit RAM tối đa
Số macrocell tối đa
I/O Num Max
EP20K30E
113000
30000
1200
12
24576
192
128
EP20K60E
162000
60000
2560
16
32768
256
196
EP20K100
263000
100000
4160
26
53248
416
252
EP20K100E
263000
100000
4160
26
53248
416
246
EP20K160E
404000
160000
6400
40
81920
640
316
EP20K200
526000
200000
8320
52
106496
832
382
EP20K200E
526000
200000
8320
52
106496
832
376
EP20K300E
728000
300000
11520
72
147456
1152
408
EP20K400
1052000
400000
16640
104
212992
1664
502
EP20K400E
1052000
400000
16640
104
212992
1664
488
EP20K600E
1537000
600000
24320
152
311296
2432
588
EP20K1000E
1772000
1000000
38400
160
327680
2560
708
EP20K1500E
2392000
1500000
51840
216
442368
3456
808
Hình 2.12: Một số thông số cơ bản của APEX EP20K
APEX20K chứa các khối chính sau: LUT-based logic, Product-Term-based logic, và bộ nhớ. Các tín hiệu được trao đổi bên trong nhờ kết nối trong FastTrack (một ma trận dây liên tục gồm hàng và cột chạy dọc theo chiều ngang và dọc của thiết bị).
Mỗi chân lối vào được chỉ dẫn bởi một IOE (I/O Element) đặt ở đầu cuối của mỗi hàng và cột của kết nối trong FastTrack. Mỗi IOE chứa một bộ đệm hai hướng vào ra, một thanh ghi được sử dụng như là thanh ghi lối vào, lối ra hoặc hai hướng của tín hiệu. Khi sử dụng các chân clock chuyên dụng thì thanh ghi này cung cấp cho các thực thi đặc biệt.
Hình 2.13: Sơ đồ khối thiết bị APEX 20K
Các chíp trong họ EP20K được thiết kế với một chuỗi kiến trúc MegaLAB. Một MegaLAB bao gồm 16 LAB, một ESB và một kết nối trong MegaLAB. Các đời cao hơn trong EP20K có thể có nhiều LAB hơn trong một MegaLAB, tín hiệu liên kết giữa MegaLAB và các chân vào ra đuợc thực hiện bởi kết nối nội FastTrack.
Hình 2.14: Cấu trúc của MegaLAB
Như ở trên chúng ta thấy một LAB gồm 10 LE, các bộ kết nối trong cục bộ của MegaLAB, và các tín hiệu điều khiển LAB.
LE là đơn vị logic nhỏ nhất trong kiến trúc của EP20K, mỗi LE chứa 4 lối vào LUT có chức năng thực hiện nhanh chóng bất cứ vai trò nào của 4 biến, LE có thể dùng để điều khiên các kết nối cục bộ, kết nối MegaLAB hoặc kết nối FastTrack.
Chương 3:
Bộ điều chế QAM
3.1 Tổng quan
Từ những kiến thức cơ bản có được, trong chương này, tôi tiến hành xây dựng một bộ điều chế QAM-16 trên FPGA bằng ngôn ngữ thiết kế phần cứng VHDL. Dữ liệu lối vào được lấy song song từ Kit phát dữ liệu một cách đồng bộ còn tần số ký hiệu có thể thay đổi trong một phạm vi nhất định.
Toàn bộ quá trình được thực hiện với tín hiệu dạng số. Sau khi quá trình xử lý số được tiến hành, dữ liệu QAM số sẽ được đưa ra DAC để có thể quan sát được trên dao động ký.
3.2 Bộ điều chế QAM
3.2.1 Nguyên tắc thực hiện:
Phát lặp
dữ liệu
Thay đổi tần số ký hiệu
Khối điều chế QAM
Mã hóa QAM
Phát sin
DAC
Tín hiệu QAM
Hình 3.1: Sơ đồ khối hệ thống
Bộ điều chế được xây dựng với sơ đồ khối như trên gồm:
Khối lặp phát dữ liệu để tạo dữ liệu số đưa vào bộ điều chế
Khối thay đổi tần số ký hiệu gồm các phím tăng giảm tần số để thay đổi tần số trong một dải nhất định từ fc đến 10fc.
Khối điều chế QAM: gồm các khối nhỏ như khối phát sóng mang để tạo tín hiệu sin, cos số đưa vào điều chế, khối mã hóa QAM để tính toán biểu thức QAM với dữ liệu nhận được và khối biến đổi DAC để chuyển đổi số-tương tự nhằm tạo ra tín hiệu QAM có thế quan sát trên dao động kí.
3.2.2 Mô hình bộ điều chế QAM xây dựng:
Quá trình thực hiện được tiến hành trên 2 Kit với 2 chip FPGA là APEX II và Cyclone II[3] của Altera với sơ đồ khối như sau:
Cyclone II
Phát lặp dữ liệu
APEX II
I
Q
Quay 90 độ
Bộ tạo sóng mang
Thay đổi tần số
∑
DAC
Clock 11M
Clock 50M
SPI
Phát giả dữ liệu
Hình 3.2: Mô hình QAM-16 được thiết lập
3.2.2.1 Khối phát lặp dữ liệu:
Sử dụng Kit DE2 của phòng thí nghiệm, phát 16 tín hiệu chọn bit có thể thay đổi được bằng 16 công tắc gạt bên ngoài, trạng thái các bit của công tắc đều được hiển thị trên led.
16 bit trạng thái của công tắc được phân thành 4 nhóm: A,B,C,D như Hình 9. Mỗi nhóm chứa 4 bit sẽ tạo thành một điểm chòm sao. Điểm chòm sao này sẽ được tách ra, rồi đưa vào các kênh I,Q, mỗi kênh 2 bit (Hình 10). Các kênh I,Q này sẽ được đưa sang chip APEX II để ánh xạ vào trường dữ liệu bằng phương pháp truyền thông SPI.
B8
B15
B14
B13
B12
B11
B10
B9
B7
B6
B5
B4
B3
B2
B1
B0
Nhóm D
Nhóm C
Nhóm B
Nhóm A
Hình 3.3: Các nhóm bit trạng thái của công tắc
B3
B2
B1
B0
Q
I
Hình 3.4: Tách bit I,Q
3.2.2.2 Truyền thông nối tiếp SPI:
Truyền thông giữa hai chip sử dụng kỹ thuật truyền thông SPI có bắt tay. Trong phương pháp này, Cyclone II sẽ kiểm tra chân vào Sync của mình, tới khi chân này nhận được một sườn xung (âm hoặc dương) từ APEX II thông báo sẵn sàng nhận (RR) thì Cyclone II sẽ truyền các bit I,Q lần lượt của các nhóm A,B,C,D sang cho APEX II rồi đợi tín hiệu RR tiếp theo.
Truyền thông SPI vừa tạo ra sự đồng bộ giữa hai loại chip FPGA hoạt động trong chu kỳ xung nhịp khác nhau vừa tạo ra sự độc lập tương đối giữa hai khối chọn dữ liệu và điều chế. Nhờ có truyền thông SPI, tần số sóng mang có thể dễ dàng thay đổi mà vẫn giữ được sự đồng bộ với khối ánh xạ ký hiệu. Ngược lại, ta có thể tạo ra các chòm sao cấp cao hơn, có số bit lớn hơn đưa sang điều chế mà ko gây ra nhiều thay đổi cho khối điều chế.
Ready
RR
Sync
Dữ liệu
I
Q
Hình 3.5: Truyền thông nối tiếp SPI
3.2.2.3 Bộ tạo sóng mang:
Nhằm mục đích tạo tín hiệu sin chuẩn để đưa vào điều chế. Do dữ liệu sin số được xuất ra từ phần mềm PASCAL, mà phần mềm này lấy mẫu tín hiệu sin đều nên nếu lấy mẫu cả một chu kì sin xử lý đưa ra DAC thì tín hiệu quan sát được sẽ có dạng hình tam giác, không có độ cong của tín hiệu sin. Để khắc phục nhược điểm này, chúng tôi tiến hành xuất ra 630 mẫu của một phần tư chu kì sin rồi lập trình hiệu chỉnh lại trên FPGA để tạo ra đủ một chu kì sin với 2520 mẫu. Nguyên tắc hiệu chỉnh được mô tả ở Hình 11:
Hình 3.6: Hiệu chỉnh sin
Do sóng các mẫu lấy từ tín hiệu sin trong PASCAL đều có giá trị nhỏ hơn 1 nên phải tiến hành nhân các tín hiệu đó với một hệ số thích hợp để tăng biên độ sóng mang.
3.2.2.4 Bộ thay đổi tần số sóng mang:
Nhân tín hiệu từ hai nút điều khiển tăng giảm tần số có thể thay đổi tần số trong dải từ fc đến 10fc. Bộ thay đổi tần số này tác động trực tiếp vào bộ phát sóng mang để thay đổi tần số các sóng sin, cos được tạo ra. Nguyên tắc làm việc của bộ thay đổi tần số là tăng/giảm số mẫu trong một chu kì sóng mang để thay đổi tần số (Hình 12). Nguyên tắc của bộ thay đổi tần số sóng mang này giống với các bộ lấy mẫu tăng, giảm.
Tăng
Giảm
Hình 3.7: Bộ thay đổi tần số sóng mang
Dễ thấy trong QAM, khi tần số sóng mang thay đổi sẽ làm thay đổi tần số ký hiệu, sẽ ảnh hưởng đến khối phát lặp ký hiệu để ánh xạ lên trường dữ liệu. Tuy nhiên, trong bộ phát QAM chúng tôi xây dựng, nhờ tính ưu việt của truyền thông nối tiếp SPI có bắt tay như đã nói ở trên, tần số sóng mang cũng như ký hiệu có thể thay đổi dễ dàng mà không ảnh hưởng gì khối phát lặp dữ liệu để tạo ký hiệu.
3.2.2.5 Bộ quay 90 độ:
Sóng mang số hình sin đưa vào đây sẽ được làm trễ đi 630 mẫu (1/4 chu kì) để tạo ra sóng mang hình cos (lệch pha 90 độ với sóng mang hình sin). Sơ đồ của bộ quay:
Trễ ¼ chu kì
Hình 3.8: Bộ quay pha 90 độ
3.2.2.6 Bộ nhân số:
Bộ nhân số nhân sóng mang với dữ liệu của kênh I hoặc Q mà ký hiệu ánh xạ đến để tạo ra tín hiệu AQ(n) và AI(n) như phương trình 1.4. Bộ nhân số có dạng như sau:
Q
AQ(n)
I
AI(n)
(b)
Hình 3.9: Bộ nhân số
Bộ nhân số thực hiện phép nhân dữ liệu số của kênh I với 2520 mẫu của sóng mang hình sin và dữ liệu kênh Q với 2520 mẫu của sóng mang hình cos rồi đưa kết quả ra bộ cộng.
3.2.2.7 Bộ cộng số:
Bộ cộng số thực hiện phép cộng số học các dữ liệu vừa được tính toán ở bộ nhân để kết hợp các tín hiệu các kênh I,Q để tạo ra tín hiệu QAM. Ngoài ra, khi sau khi cộng các tín hiệu I,Q do sóng mang có dạng hình sin nên chứa cả thành phần âm, dương trong khi bộ biến đổi DAC bên ngoài chỉ nhận đúng các số dương nên phải nâng thành phần một chiều của tín hiệu QAM số lên bằng cách cộng vào nó một hằng số không đổi. Tín hiệu QAM số sau đó sẽ được đưa vào bộ chuyển đổi DAC để tạo ra tín hiệu QAM quan sát được trên dao động ký.
AI(n)
QAM
Hằng số
`
AQ(n)
Hình 3.10: Bộ cộng số
3.3 Kết quả
- Tôi đã thực hiện phát thành công tín hiệu QAM trên chip FPGA APEX II với các bit thông tin có thể thay đổi được bằng công tắc.
- Tần số sóng mang cũng như ký hiệu có thể thay đổi trong một dải nhất định
- Kết quả đầu ra có thể quan sát dễ dàng trên dao động ký.
Chương 4:
Xử lý dấu phẩy động
4.1. Chuẩn dấu phẩy động IEEE:
Để thuận lợi cho việc tính toán các số nhị phân lớn, cộng đồng các kỹ sư điện-điện tử(IEEE) đã nghiên cứu và đưa ra chuẩn IEEE 754 để xử lý dấu phấy động nhị phân. Theo chuẩn này thì khung diễn tả một dấu phảy động phải có kích thước chuẩn là 32 bit (độ chính xác đơn) và 64 bit (độ chính xác kép). Trong đề tài này, chúng tôi xây dựng hệ thống để xử lý dấu phẩy động theo chuẩn 32 bit. Như trong hình vẽ, khung 32 bit được chia thành ba nhóm riêng biệt: các bit thấp từ bit0 đến bit22 dùng để xác định phần định trị(mantissa), các bit từ 23 đến 30 để xác định số mũ, còn bit 31 là bit dấu.
Bit dấu
Phần mũ
Phần định trị
Hình 4.1: Chuẩn phẩy động 32 bit của IEEE
Gọi số thập phân được hình thành từ chuẩn dấu phẩy động này là V, ta có biểu thức:
V = (-1)S * M * 2E – 127
Với (-1)S biểu thị bit dấu (bit31: bit có trọng số lớn nhất trong khung). Ta dễ dàng nhận thấy biểu thức này sẽ biểu diễn số dương nếu S=0 và ngược lại, sẽ biểu diễn số âm khi S=1. Nhìn vào hình vẽ ta thấy, 8 bit từ bit 23 đến bit 30 biểu diễn số mũ E, như vậy, E có thể thay đổi từ 0 đến 255. Sau khi trừ số mũ cho 127 theo đúng chuẩn thì sẽ cho phép số mũ chạy từ 2-127 đến 2128. Các bit còn lại biểu thị phần định trị M, phần định trị được hình thành từ 23 bit biểu diễn một phân số dưới dạng nhị phân. Ví dụ: với số nhị phân 1,0101; có thể khai triển thành 1 + 0/2 + ¼ + 0/8 + 1/16. Dấu phẩy động khi biểu diễn các phân số cũng được chuẩn hóa như vậy. Chỉ có duy nhất một kí tự khác không bên trái dấu phẩy động, số đó trong hệ 2 hiển nhiên là 1. Do vậy, bit đứng đầu phần định trị được mặc định là 1, và bit đó được lưu trữ trong khung. Giả sử m22, m21, …. m0 biểu thị 23 bit trong khung chuẩn của IEEE thì số định trị M được hiểu là:
M = 1.m22.m21……m0.
Biểu diễn thập phân của M là:
M = 1 + m22 * 2-1 + m21 * 2-2 + m20 * 2-3 + ……
Đối với các khung nhị phân biểu diễn dấu phẩy động, 0 là một số đặc biệt, số 0 có toàn bộ phần định trị và số mũ bằng 0 và bit dấu có thể là 1 hoặc 0. Bảng dưới đây sẽ cho chúng ta hiểu hơn về cách tính dấu phẩy động và các giới hạn của nó.
Hình 4.2: Một số giá trị phẩy động
4.2 Một số ngoại lệ trong tính toán dấu phẩy động
Chuẩn IEEE định nghĩa năm ngoại lệ mà mỗi khi chúng khởi tạo sẽ được báo hiệu bằng một cờ trạng thái.
4.2.1 Ngoại lệ phép toán sai
Một vài phép toán số học không đúng như chia cho 0 hay căn bậc hai của một số âm. Kết quả của một phép toán sai được gọi là NaN. Có hai loại NaN: NaN tĩnh (QNaN) và NaN báo hiệu (SNaN) có dạng như sau (s là bit dấu):
QNaN = s 11111111 10000000000000000000000
SNaN = s 11111111 00000000000000000000001.
Kết quả của mọi phép toán sai sẽ là một chuỗi QNaN với ngoại lệ là QNaN hoặc SNaN. Còn SNaN sẽ chỉ báo hiệu mỗi khi một toán hạng đầu vào là một chuỗi SNaN. Các phép toán số học sau đây là phép toán sai nên sẽ cho kết quả là một chuỗi QNaN và báo hiệu một ngoại lệ QNaN.
Bất kì phép toán nào với một NaN
Cộng hoặc trừ:
Phép nhân:
Phép chia: hoặc
Căn bậc hai: Với các toán hạng nhỏ hơn 0.
4.2.2 Ngoại lệ chia cho 0:
Phép chia của bất kì số nào cho 0 đều cho một kết quả không xác định hay thậm chí ngay trong việc cộng hoặc nhân của hai số cũng có thể tạo ra kết quả không thể xác định. Để có thể phân biệt được hai trường hợp đó, một ngoại lệ chia cho 0 phải được thực hiện.
4.2.3 Ngoại lệ tính toán không đúng
Ngoại lệ này sẽ báo hiệu khi kết quả của phép toán không thật sự chính xác cho giới hạn của số mũ và (hay) vùng chính xác.
4.2.4 Ngoại lệ tràn dưới
Ngoại lệ tràn dưới sẽ được báo khi phép tính có độ nhỏ hoặc không chính xác. Độ nhỏ đó sẽ được phát hiện trước hoặc sau khi làm tròn khi kết quả nằm giữa . Sự mất chính xác được phát hiện khi kết quả không chính xác hay khi một mất mát giải chuẩn hóa xảy ra. Nhân FPU sẽ báo hiệu một ngoại lệ tràn dưới mỗi khi độ nhỏ được phát hiện sau khi làm tròn, khi đó, kết quả đưa ra sẽ không chính xác.
4.2.5 Ngoại lệ tràn trên
Ngoại lệ tràn trên sẽ được báo mỗi khi kết quả vượt quá giá trị tối đa nó có thể đạt đến do giới hạn của số mũ. Tuy nhiên nó sẽ không báo khi một toán tử không xác định do số không xác định vẫn đúng. Ngoài ra ngoại lệ này cũng sẽ không báo khi chia cho 0.
4.2.6 Ngoại lệ không xác định
Ngoại lệ này sẽ được báo mỗi khi kết quả đầu ra không xác định mà không cần quan tâm phép toán như thế nào. Ngoại lệ này không được đưa thành chuẩn nhưng được dùng thêm để phát hiện nhanh hơn các kết quả không xác định.
4.2.7 Ngoại lệ không
Ngoại lệ này sẽ báo mỗi khi kết quả đầu ra là 0 mà không cần quan tâm đến phép toán diễn ra như thế nào. Ngoại lệ này cũng không được đưa thành chuẩn nhưng được dùng thêm để phát hiện kết quả 0 nhanh hơn.
4.3 Các chế độ làm tròn
Do khó có thể xác định được kết quả chính xác, nên ta nhiều lúc phải tiến hành làm tròn. Trong khối xử lý này, chế độ “làm tròn gần nhất” sẽ cho kết quả gần đúng nhất. Ba bit tạm thời được thêm vào trong phân số thực là bit bảo đảm, bit làm tròn và bit mềm. Các bit bảo đảm và làm tròn được sử dụng làm chuẩn để lưu trữ còn bit mềm là ‘1’ khi ‘1’ được dịch ra ngoài vùng.
Ví dụ như ta có 5 bit nhị phân: 1.1001. Nếu ta dịch trái 4 bit ta sẽ được số 0.0001, số này không thể làm tròn được nên kết quả sẽ không chính xác. Còn nếu ta tiến hành đệm thêm 3 bit thì số đó sẽ là 0.0001 101 (bit cuối phải là 1 do 1 đã được dịch ra ngoài). Nếu lúc này chúng ta làm tròn về lại 5 bit đầu thì sẽ được: 0.0010, nên kết quả sẽ có độ chính xác cao hơn.
4.3.1 Làm tròn đến giá trị chẵn gần nhất
Đây cũng là giá trị làm tròn mặc định chuẩn. Giá trị sẽ được làm tròn lên hoặc xuống đến kết quả đúng gần nhất. Nếu số cần làm tròn ở chính giữa hai giá trị nguyên, thì số đó sẽ được làm lên đến giá trị nguyên gần nhất.
Ví dụ:
Số chưa làm tròn
Số đã làm tròn
3.4
3
5.6
6
3.5
4
2.5
3
4.3.2 Làm tròn về 0
Các số trong chế độ này về cơ bản không được làm tròn, số bit vượt quá ngưỡng cho phép sẽ bị cắt đi. Ví dụ như 3.47 sẽ bị cắt thành 3.4.
4.3.3 Làm tròn tăng, giảm
Các số được đặt ở chế độ làm tròn tăng sẽ được làm tròn hướng tới . Ví dụ như 3.2 sẽ được làm tròn lên 4 còn -3.2 sẽ được làm tròn thành -3.
Ngược lại, ở chế độ làm tròn giảm, các số sẽ được làm tròn hướng về . Ví dụ như 3.2 sẽ được làm tròn về 3 còn -3.2 sẽ được làm tròn thành -4.
4.4. Các phép toán trên dấu phẩy động
Trong phần này, tôi sẽ đề cập đến các giải thuật cơ sở để thực hiện các phép toán dấu phẩy động trong khối xử lý dấu phẩy động (FPU).
4.4.1 Phép cộng và trừ
Các phép toán cộng và trừ trên các số phẩy động khó hơn nhiều so với các số nguyên. Giải thuật để cộng và trừ các số phẩy động được biểu diễn trong giản đồ sau:
Ví dụ sau đây sẽ miêu tả từng bước một sự hoạt động của khối cộng/ trừ hai số phẩy động.
Giả sử ta muốn cộng hai số phẩy động nhị phân 5 bit:
-------------------------------
Bước 1: Lấy số mũ của số lớn hơn trừ đi số mũ của số nhỏ hơn.
eL = 24, eS = 22 nên diff = 4 - 2 = 2
Bước 2: Dịch phần thập phân của số có số mũ nhỏ hơn sang bên phải diff bit. Lúc này, ta phải tách phần mũ ra mới có thể dịch được.
1.1001 000
+ 0.0100 100
------------------------
Bước 3: Sau khi dịch và đệm thêm bit, ta tiến hành cộng hai phần thập phân vào nhau.
1.1001 000
+ 0.0100 100
------------------------
1.1101 100
Toán hạngA = dấuA & eA & fracA
Toán hạngB = dấuB & eB & fracB
eA > eB ?
eL = eA
eS = eB
fracL=fracA
fracS=fracB
eL = eB
eS = eA
fracL=fracB
fracS=fracA
diff = eL*eS
dịch phải fracS diff bit
frac0 = fracS +/- fracL
e0 = eL
Làm tròn frac0
Kiểm tra ngoại lệ
Báo hiệu ngoại lệ
Chuẩn hóa
Ra = dấu0 & e0 & frac0
Có
Không
Đúng
Sai
Hình 4.3 Lưu đồ giải thuật phép cộng/trừ số phấy động
Bước 4: Sau khi cộng xong phần thập phân, ta tiến hành làm tròn đến số chẵn gần nhất. Ví dụ như số vừa được tính là 1.1101 100 sẽ được làm tròn thành 1.1110
Bước 5: Sau khi tính toán xong xuôi, ta ghép phần dấu và mũ vào phần thập phân vừa tính được rồi đẩy kết quả ra đầu ra. Như trong ví dụ này, kết quả sẽ là
4.4.2 Phép nhân
Bộ nhân trong khối xử lý phẩy động này sử dụng khả năng xử lý song song của FPGA để tiết kiệm xung nhịp đồng hồ. Nếu được sử dụng phương pháp xử lý nối tiếp để làm bộ nhân thì sẽ mất 32 xung nhịp trong khi thực hiện xử lý song song chỉ cần 5 nhịp. Tuy nhiên, bộ nhân xử lý song song sẽ tốn tài nguyên FPGA gấp 3 lần khối xử lý nối tiếp. Sau đây sẽ là lưu đồ giải thuật của bộ nhân dấu phấy động thực hiện trên FPGA.
Toán hạngA = dấuA & eA & fracA
Toán hạngB = dấuB & eB & fracB
Làm tròn frac0
Kiểm tra ngoại lệ
Báo hiệu ngoại lệ
Chuẩn hóa
Ra = dấu0 & e0 & frac0
Có
Không
frac0 = fracA fracB
sign0 = signA xor signB
e0 = eA + eB - bias(127)
Hình 4.4 Lưu đồ giải thuật phép nhân số phẩy động
Để có thể hiểu rõ hơn lưu đồ giải thuật trên, ta sẽ làm theo lưu đồ trên với một phép nhân hai số phẩy động nhị phân 5 bit:
-------------------------------
Bước1: Ở bước này, ta tiến hành tách riêng phần thập phân, số mũ, dấu của toán hạng đưa vào rồi nhân phần thập phân của hai số với nhau.
1.1001
1.0100
------------------------
1.11000010
Vậy ta có frac0 = 1.11000010. Cùng việc nhân phần thập phân vào nhau, ta cũng tiến hành tính số mũ: e0 = 2100+110-bias = 283
Bước 2: Sau khi đã tính được các kết quả trên, ta sẽ làm tròn phần thạp phân về số nguyên gần nhất: frac0 = 1.1100
Bước 3: Sau khi đã tính được đủ các thông số, ta ghép lại phần mũ và dấu sẽ được kết quả là: 283 1.1100
4.4.3 Phép chia
Phép chia trong khối xử lý phấy động này được thực hiện nối tiếp với giải thuật căn bản là phép trừ liên tục các số. Do phép chia không được dùng thường xuyên như phép nhân, nên nó được lập trình xử lý nối tiếp để tiết kiệm tài nguyên FPGA.
Để có thể hiểu rõ hơn các khối trong phép chia phẩy động ở lưu đồ trên, ta thử tiến hành phép chia từng bước một với hai số phẩy động nhị phân 5 bit:
Bước 1: Đếm các số 0 ở phía trước phần thập phân của hai số cần tính. Ở trong ví dụ này ta dễ thấy zA = 0, zB = 3.
Bước 2: Sau khi đã tìm được zA và zB, ta tiến hành dịch trái phần thập phân của các số đó theo zA, zB sẽ được:
fracA = 10000 00000
fracB = 00000 11000
Trong khi dịch các phần thập phân theo zA, zB ta cũng tiến hành tính số mũ của kết quả: e0 = 2110-100+bias-0+3 = 2140
Toán hạngA = dấuA & eA & fracA
Toán hạngB = dấuB & eB & fracB
Làm tròn frac0
Kiểm tra ngoại lệ
Báo hiệu ngoại lệ
Chuẩn hóa
Ra = dấu0 & e0 & frac0
Có
Không
frac0 = fracA / fracB
sign0 = signA xor signB
e0 = eA - eB + bias(127) – zA + zB
Dịch trái fracA zA bit
Dịch trái fracB zB bit
Đếm các bit 0 ở đầu các phần thập phân: zA, zB
Hình 4.5: Lưu đồ giải thuật phép chia số phẩy động
Bước 3: Sau khi đã có được các thông số fracA, fracB đã được dịch, ta tiến hành phép chia:
-----------------------
1,0101
Bước 4: Sau khi các bước tính toán trên đã thực hiện xong xuôi, ta sẽ ghép các bit dấu, bit mũ và bit thập phân lại rồi đẩy kết quả ra đầu ra. Trong ví dụ này, kết quả sẽ là: 1,0101 2140
4.5. Thiết kế phần cứng
Kiến trúc căn bản của khối xử lý phẩy động được miêu tả trong hình sau:
Hình 4.6: Kiến trúc khối xử lý dấu phẩy động
Hình 4.7: Đường ống bộ cộng/trừ phẩy động
Hình 4.8: Đường ống bộ nhân/chia phẩy động
Khối xử lý phẩy động (FPU) được xây dựng để tính toán bốn phép toán:
Phép cộng
Phép trừ
Phép nhân
Phép chia
Do các khối phép tính độc lập với nhau, khi một khối tính toán hoạt động, có thể tắt các khối tính khác để tiết kiệm các phần tử logic trên FPGA. Nhìn vào kiến trúc trên, ta có thể nhận thấy, khối mọi khối tính toán đều gồm ba phần:
1. Bộ tiền chuẩn hóa: Toán hạng được chuyển thành các khuôn chuẩn để các phần sau có thể xử lý dễ dàng, hiệu hơn.
2. Bộ xử lý tính toán: Tiến hành thực hiện các phép toán cộng, trừ, nhân chia từ các khuôn nhận được từ bộ tiền chuẩn hóa rồi đưa kết quả ra bộ chuẩn hóa cuối
3. Bộ chuẩn hóa cuối: Nhận được kết quả xử lý từ bộ xử lý tính toán theo đúng khuôn dạng dữ liệu được từ bộ tiền xử lý, bộ chuẩn hóa cuối sẽ chuẩn hóa lại một lần nữa (nếu bit đầu trước dấu phẩy là 1). Rồi sau đó, bộ chuẩn hóa cuối sẽ ghép lại các khuôn dạng thu được để đưa ra đầu ra dữ liệu phẩy động nhị phần theo đúng chuẩn IEEE-754.
Chương 5
Khôi phục nhịp ký hiệu
5.1 Tổng quan
Trong một hệ thống truyền thông số, tín hiệu thu phải được lấy mẫu ở tốc độ mẫu và pha thích hợp nhất. Để làm được điều này, bộ thu phải tạo ra nhịp lấy mẫu thay đổi được để tiến hành lấy mẫu. Tuy nhiên, do bộ phát và bộ thu sử dụng tần số dao động khác nhau, nên nhịp ký hiệu bị dịch đi là khó tránh khỏi. Quá trình đồng bộ nhịp lấy mẫu trong bộ nhận với tín hiệu thu được, gọi là khôi phục nhịp ký hiệu.
Hình 5.1 biểu diễn một giản đồ mắt với ba nhịp ký hiệu khác nhau mô tả tầm quan trọng của việc khôi phục nhịp ký hiệu cho tín hiệu QAM-256. Giản đồ mắt là đồ thị của biên độ tín hiệu theo thời gian trong các chu kì ký hiệu nhất định. Sau một số chu kì ký hiệu nhất định, đường đi của biên độ tín hiệu theo thời gian lại bắt đầu từ bên trái đồ thị để tạo ra một lượng lớn các đường cong chồng lên nhau.
Trên giản đồ mắt, các đường chấm dọc biểu diễn các điểm lấy mẫu tối ưu. Ta nhận thấy, tại tâm các điểm lấy mẫu tối ưu có một số vùng không có đường cong đi qua, các vùng này có hình dạng giống con mắt nên giản đồ mới có tên là giản đồ mắt. Kích thước của mắt biểu diễn mép nhiễu và mép nhịp của tín hiệu nhận được. Độ cao của mắt biểu diễn mép nhiễu hoặc lượng nhiễu thêm vào để gây ra lỗi. Độ rộng của mắt biểu diễn mép nhịp hay độ dịch của nhịp đủ để tạo ra lỗi.
Ngoài giản đồ mắt, hình 5.1 còn mô tả ba xung nhịp để diễn tả tầm quan trọng của việc đồng bộ nhịp ký hiệu. Nhịp A trong hình vẽ mô tả nhịp lấy mẫu được đồng bộ với tín hiệu trong giản đồ mắt. Nhịp B mô tả nhịp lấy mẫu đã có sự lệch pha so với nhịp lấy mẫu tối ưu. Nhịp C mô tả nhịp lấy mẫu có tần số không phù hợp với tần số của dạng sóng trong giản đồ mắt. Nhịp lấy mẫu được sẽ được đồng bộ với nhịp ký hiệu tại điểm có độ dịch bằng không nhưng do độ lệch pha giữa dạng sóng trong giản đồ mắt và nhịp lấy mẫu tăng theo thời gian xử lý, nên các ký hiệu chính xác khó có thể tìm ra từ các mẫu lấy được.
Hình 5.1: Lấy mẫu
5.2 Các kỹ thuật khôi phục nhịp ký hiệu
Đồng bộ ký hiệu có thể được thực hiện bằng nhiều cách. Một trong số đó là bộ phát và bộ thu được đồng bộ với một xung nhịp chủ, để dựa vào đó, bộ thu có thể tính toán độ trễ từ bộ phát đến nó. Một phương pháp khác là tryền nhịp ký hiệu hay bội số của nó theo tín hiệu thông tin. Sự khác biệt của việc phát nhịp ký hiệu đi cùng thông tin là gửi đi các “chuỗi âm thanh” tuần hoàn, bộ thu sẽ tìm kiếm các “chuỗi âm thanh” đó để thiết lập nhịp mẫu và sẽ sử dụng chúng cho tới khi “chuỗi âm thanh” khác được nhận. Các kĩ thuật này khá đơn giản nhưng nếu thực hiện, bộ phát sẽ phải phân phối một phần công suất và băng thông để truyền thông tin về nhịp ký hiệu nên chúng không được sử dụng rộng rãi. Ngoài các phương pháp trên, phương pháp được sử dụng rộng rãi nhất hiện nay là khôi phục xung nhịp ngay trên dữ liệu nhận được, phương pháp này được gọi là phương pháp tự đồng bộ.
Các kỹ thuật tự đồng bộ bao gồm kỹ thuật gấp đôi, kỹ thuật biên độ tối đa, kỹ thuật sớm-muộn và kỹ thuật cắt không. Các kỹ thuật này đều hoạt động hiệu quả với dữ liệu ngẫu nhiên và sẽ được giới thiệu lần lượt sau đây.
5.2.1 Kỹ thuật khôi phục nhịp ký hiệu gấp đôi
Kỹ thuật khôi phục gấp đôi nhịp ký hiệu dựa trên đặc điểm: tín hiệu dữ liệu gồm các chuỗi lặp lại các ký hiệu có biên độ dương, âm luân phiên nhau. Các chuỗi này sẽ chứa một tần số bằng nửa tốc độ lấy mẫu. Nếu tín hiệu là vuông, thành phần tần số bằng nửa tốc độ ký hiệu sẽ được gấp đôi trong miền tần số. Một bộ lọc thông dải hẹp có thể được sử dụng để lấy ra xung nhịp mẫu từ tín hiệu vuông.
Kỹ thuật này tỏ ra khá hiệu quả với QAM-4 do phương pháp điều chế này có xác suất lặp lại các ký hiệu có biên độ dương, âm luân phiên nhau tương đối cao. Tuy nhiên, khi tăng khi bậc điều chế, sẽ tạo ra nhiều điểm chòm sao trên giản đồ hơn làm kỹ thuật này trở nên kém hiệu quả do xác suất các ký hiệu liên tiếp lặp lại nhỏ hơn nhiều.
5.2.2 Kỹ thuật khôi phục nhịp ký hiệu biên độ tối đa
Kỹ thuật đồng bộ biên độ tối đa xuất phát từ kỹ thuật ước lượng xấp xỉ cực đại. Kỹ thuật dựa trên nguyên tắc: khi lấy trung bình một vài ký hiệu, giá trị tuyệt đối biên độ của một tín hiệu sẽ là cao nhất ở điểm lấy mẫu tối ưu được biểu diễn ở Hình 5.2.
Hình 5.2: Biên độ ký hiệu trung bình là hàm của thời gian
Kỹ thuật đồng bộ biên độ cực đại được thực hiện bằng cách lấy mẫu tín hiệu thu được với J mẫu một ký hiệu. Do đó, các mẫu J có pha cách đều nhau. Từ các mẫu này, các giá trị trung bình của J được tính toán cho mỗi trường hợp pha. Từ các kết quả đó, trường hợp pha có giá trị trung bình lớn nhất được sử dụng là điểm mẫu để việc bắt đầu khôi phục nhịp dữ liệu từ tín hiệu thu được.
5.2.3 Kỹ thuật khôi phục nhịp ký hiệu sớm-muộn
Kỹ thuật khôi phục nhịp ký hiệu sớm-muộn cũng dựa trên nguyên tắc: khi trung bình hóa một vài ký hiệu, giá trị tuyệt đối biên độ của một tín hiệu là cao nhất ở điểm mẫu tối ưu. Tuy nhiên, không giống như kỹ thuật đồng bộ biên độ tối đa, lấy mẫu từ tín hiệu thu được J lần mỗi ký hiệu, kỹ thuật đồng bộ sớm-muộn lấy mẫu ba lần một ký hiệu: một mẫu được coi là mẫu có độ dịch pha tối ưu, một δ ký hiệu trước độ dịch pha tối ưu và một δ ký hiệu sau độ dịch pha tối ưu. Nếu bộ nhận thật sự lấy mẫu ở độ dịch pha tối ưu như trong hình 5.3. Giá trị trung bình tuyệt đối của các mẫu sớm sẽ bằng với giá trị trung bình tuyệt đối của các mẫu muộn. Nếu bộ thu lấy mẫu ở các điểm không có độ dịch pha tối ưu, các giá trị trung bình sớm và muộn sẽ không bằng nhau. Khi đó, dựa trên sự khác biệt giữa các mẫu trung bình sớm và các mẫu trung bình muộn sẽ tiến hành để nâng lên hay làm trễ một nhịp lấy mẫu.
Hình 5.3: Lẫy mẫu sớm-muộn
5.2.4 Kỹ thuật khôi phục nhịp ký hiệu cắt không
Kỹ thuật đồng bộ cắt không dựa trên nguyên tắc: về mặt trung bình, cắt không xảy ra ở giữa ký hiệu trước điểm lấy mẫu tối ưu. Hình 5.4 biểu diễn giản đồ mắt được tạo ra từ một chuỗi QAM-4 ngẫu nhiên xác định vị trí tương đối của điểm cắt không và lấy mẫu tối ưu. Nếu việc lấy mẫu diễn ra quá sớm, giá trị cắt không trung bình sẽ diễn ra lớn hơn một nửa ký hiệu sau thời gian lấy mẫu. Do đó, độ trễ giữa khoảng thời gian lấy mẫu và cắt không phải được xem xét để nâng lên hay làm trễ một nhịp lấy mẫu.
Hinhg 5.4: Giản đồ 4 mắt của QAM
Cũng như kỹ thuật trước, kỹ thuật khôi phục nhịp cắt không cũng không được ứng dụng rộng rãi cho các modem được thiết kế bằng các phần tử logic số hoặc modem hoạt động trong các chòm sao phức tạp. Trở ngại chính khi đưa kỹ thuật này vào các phần tử logic số là rất khó để có thể tìm ra vị trí của các điểm cắt không từ các mẫu dữ liệu số. Ngoài ra, một khó khăn khác của kỹ thuật khôi phục nhịp ký hiệu cắt không trong các chòm sao lớn là sự xuất hiện của nhiều jitter lớn tại các điểm cắt không và nhiều sự dịch chuyển ký hiệu mà không cắt không. Tuy nhiên, Daniel Aspel và Klymyshyn đã chỉ ra rằng, kỹ thuật cắt không có thể mở ra để hoạt động trên các chòm sao phức và đưa ra kỹ thuật dự đoán biên để tìm ra sự chuyển biên của các ký hiệu thay thế cho kỹ thuật cắt không.
Kỹ thuật dự đoán biên đã vượt qua cả các jitter cắt không do dịch chuyển ký hiệu mà cắt bậc biên độ không và cho phép sử dụng của sự dịch chuyển ký hiệu mà không cắt không. Do việc dự đoán biên được quyết định trực tiếp nên kỹ thuật này không bị ảnh hưởng bởi sự cắt không ngẫu nhiên của chuỗi dữ liệu. Vì vậy, kỹ thuật dự đoán biên tạo ra sự giám sát đường cong khi BER thấp. Hơn nữa, những sự dịch chuyển mà không cắt không vẫn sẽ phải cắt ngưỡng biên độ đã dự đoán. Vì thế, kỹ thuật dự đoán biên là sự lựa chọn thích hợp cho các hệ thống M-QAM vì khi BERs thấp thì sẽ có rất nhiều sự dịch chuyển ký hiệu mà không cắt không.
Kỹ thuật dự đoán biên đã và đang được phát triển để đồng bộ cho các hệ thống M-QAM phức tạp. Tuy nhiên, phương pháp xây dựng của Daniel Aspel và Klymyshyn khá phức tạp, đòi hỏi nhiều khâu tính toán, đồng bộ. Trong khóa luận này, tôi tiến hành xây dựng hệ thống khôi phục nhịp dữ liệu dựa trên phương pháp tương quan cho hệ thống QAM-16.
5.3 Kỹ thuật khôi phục nhịp ký hiệu bằng phương pháp tương quan
Bộ khôi phục nhịp ký hiệu được biểu diễn trong hình vẽ sau:
Tạo sóng
Xét tương quan
Tín hiệu vào
Tín hiệu ra
Hình 5.5: Bộ khôi phục nhịp ký hiệu
Về mặt tổng quan, bộ tạo xung nhịp bao gồm hai khối lớn: khối tạo lại sóng mang và khối xét tương quan sóng mang với tín hiệu vào. Khối tạo sóng mang sẽ tạo lại sóng sin số để đưa vào một đầu của bộ xét tương quan, đầu còn lại của bộ xét tương quan sẽ là tín hiệu QAM thu được. Bộ xét tương quan sẽ tiến hành chuẩn hóa các tín hiệu và đưa ra đầu ra ký hiệu gần đúng nhất với ký hiệu thu được.
5.3.1 Bộ xét tương quan
Các khối con của bộ xét tương quan được miêu tả trong hình 5.6
Chuẩn hóa biên độ
Xoay pha
Xét tương quan
Tín hiệu vào
Tín hiệu ra
Sóng mang
Hình 5.6: Bộ xét tương quan
Để tăng tính chính xác của việc xét tương quan, bộ tạo sóng mang sẽ phát ra các mẫu sin số của hai chu kì sóng mang. Các mẫu của hai chu kì sóng mang ngay sau đó sẽ được chuẩn hóa biên độ.
Khối chuẩn hóa biên độ: Khối chuẩn hóa biên độ sẽ nhân các mẫu của hai chu kỳ sóng mang mang đưa vào với một hệ số thích hợp để biên độ sóng mang bằng với biên độ của ký hiệu đưa vào. Hệ số nhân chính bằng mẫu lớn nhất (biên độ) của ký hiệu thu được. Do bản chất của QAM là một sóng sin được điều chế pha-biên độ nên khối này sẽ hỗ trợ tìm lại biên độ của sóng QAM.
Khối xoay pha: Sau khi biên độ được chuẩn hóa, các mẫu sóng mang đã được chuẩn hóa đó sẽ được đưa vào khối xoay pha. Từ các mẫu của hai chu kì sóng mang có được, khối xoay pha sẽ tiến hành lấy mẫu lại các mẫu đó cũng với tần số như vậy nhưng dịch pha 10 mức khác nhau. Việc lấy mẫu lại sẽ tạo ra 10 sóng mang khác pha nhau mà mỗi sóng có số mẫu nhỏ hơn 10 lần sóng mang ban đầu.
Khối xét tương quan: Đây là khối quan trọng nhất của bộ xét tương quan. Như đã nói ở trên, khối xoay pha sẽ đưa ra 10 sóng mang số với 10 mức pha khác nhau đẩy vào bộ xét tương quan. Bộ xét tương quan sẽ so sánh các mẫu của ký hiệu thu được với các mẫu sóng mang phát ra từ khối xoay pha. Về mặt chi tiết, khối xét tương quan sẽ trượt ký hiệu thu được trên từng sóng mang một, sóng mang nào cho sai số tích lũy nhỏ nhất sẽ được coi là ký hiệu QAM chính xác và được đưa về xử lý ở các phần tiếp theo. Mô tả chi tiết quá trình xét tương quan sẽ được nêu ở phần tiếp theo của khóa luận.
Hình 5.7: Tương quan của một sóng QAM
5.3.2 Quá trình xét tương quan
5.3.2.1 Quá trình đồng bộ ký hiệu đầu tiên
Khi bộ thu được bật lên và bắt đầu thu được sóng QAM, nhiệm vụ đầu tiên là phải đồng bộ được ký hiệu đầu tiên rồi lấy đó làm nền để tạo ra nhịp đồng bộ ký hiệu. Do vậy, quá trình đồng bộ đầu tiên là vô cùng quan trọng, vì nó liên quan đến nhịp đồng bộ của cả hệ thống. Tuy nhiên, không phải bắt chuẩn được ký hiệu đầu là xung nhịp lúc nào cũng đúng nên các ký hiệu sau cũng phải có chế độ tự đồng bộ theo sóng QAM, quá trình tự đồng bộ sẽ được mô tả ở phần tiếp theo còn trong phần này, tôi sẽ giới thiệu sâu về cách thức tìm ký hiệu đầu tiên thật chuẩn.
Về mặt tổng quan, ngay khi bộ thu được bật lên, bộ xét tương quan sẽ liên tục quét tín hiệu đầu vào đến khi tìm được ký hiệu có sai số tích lũy đủ nhỏ để có thể chấp nhận đó là một ký hiệu. Giả sử lấy 24 mẫu một ký hiệu, thì sau khi khởi động, bộ xét tương quan sẽ liên tục lấy 24 mẫu đầu vào bất kể đó là nhiễu, ký hiệu khác hay tín hiệu DC tới khi bắt được một ký hiệu thật sự. Ta sẽ dễ dàng nhận ra một ký hiệu đúng do khi đó, các mẫu của nó sẽ cho sai số tích lũy nhỏ hơn hẳn so với các mẫu không phải của một ký hiệu QAM chuẩn. Tuy nhiên, có một số trường hợp đặc biệt làm quá trình lấy mẫu bị sai cũng như đưa ra một nhịp ký hiệu không chuẩn.
Các ký hiệu đầu tiên là một chuỗi liên tiếp giống nhau:
Hình 5.8 sẽ mô tả các ký hiệu đầu tiên giống nhau dịch chuyển, giả sử 0 là thời điểm bộ thu bắt đầu được khởi tạo, bộ xét tương quan trong bộ thu sẽ liên tục quét đầu vào để tìm chuỗi có sai số tích lũy đủ nhỏ. Hình 5.8a mô tả bộ thu được khởi động trước bộ phát, khi đó, cho đến khi bắt được ký hiệu đầu tiên, các mẫu trước đó sẽ chỉ là 0 hoặc nhiễu. Hình 5.8b mô tả bộ thu được bật và thu được một tín hiệu ở giữa chừng, khi đó, các mẫu trước ký hiệu đầu tiên thực sự tương quan được sẽ là mẫu của một ký hiệu trước đó.
Trở ngại lớn nhất khi xử lý các ký hiệu liên tục này là nếu ta lấy 24 mẫu cho một ký hiệu QAM, thì bất kì 24 mẫu nào trong vùng các ký tự liên tiếp (từ mẫu 15 đến mẫu 62 trong hình 5.8) đều sẽ cho sai số tích lũy nhỏ hơn ngưỡng xét (thậm chí bằng ký hiệu thật sự). Do vậy, sẽ tạo ra xung nhịp đồng bộ lệch do tác động của chuỗi liên tục này.
Để khắc phục hiện tượng lệch xung nhịp này, ta buộc phải tiến hành loại bỏ các ký hiệu liên tục cho đến khi bắt được ký hiệu mới. Giả sử ta xét tín hiệu QAM được lấy 24 mẫu một ký hiệu, nếu ta thấy các mẫu trong khoảng từ i đến i+23 có sai số tích lũy nằm trong ngưỡng, ta xét tiếp các mẫu trong khoảng từ i+1 đến i+24 tức là vùng tiếp theo, nếu các mẫu này có sai số tích lũy lớn hơn ngưỡng tức là đã có một sự nhảy biên độ tại vị trí này, khi đó, các mẫu trong khoảng từ i đến i+23 sẽ được nhận là một ký hiệu và nhịp đồng bộ ký hiệu sẽ được phát ra dựa vào ký hiệu đầu tiên này.
a)
b)
Hình 5.8: Các ký tự đầu tiên là chuỗi liên tiếp giống nhau
5.3.2.2 Quá trình tự đồng bộ các ký hiệu sau ký hiệu đầu tiên.
Sau khi bắt đúng được ký hiệu đầu tiên, nhịp ký hiệu sẽ được phát ra dựa vào ký hiệu đó và nhịp này có tần số đúng bằng tần số của tín hiệu QAM đến. Về mặt lý thuyết thì từ thời điểm này, nhịp ký hiệu tái tạo đã hoàn toàn đồng bộ với dữ liệu QAM. Tuy nhiên, do có những độ lệch nhất định do nhiễu khi truyền, quá trình truyền có thể đột ngột bị mất đồng bộ. Do đó, trong quá trình thu, nhịp đồng bộ cũng phải tự đồng bộ với dữ liệu thu được để nếu có lỗi thì lỗi đó sẽ không gây ảnh hưởng lớn đến dữ liệu thu được.
Quá trình tự đồng bộ cũng bao gồm hai phần. Một phần là đồng bộ các dữ liệu lệch pha nhau, với các dữ liệu này, có thể dễ dàng đồng bộ chuẩn với nhịp khôi phục. Phần còn lại là dữ liệu liên tiếp không có sự lệch pha.
Ta lại xét tín hiệu QAM được lấy 24 mẫu một ký hiệu. Nếu sai số tích lũy của các mẫu trong vùng từ i đến i+23 thỏa mãn nhỏ hơn ngưỡng mà sai số tích lũy của i+1 đến i+24 lớn hơn ngưỡng tức là tại mẫu i+24 đã có sự thay đổi pha làm nên không thể bắt được đúng ký hiệu, tại đây, các mẫu trong vùng từ i đến i+23 được coi là một ký hiệu đúng. Ngược lại, nếu sai số tích lũy của i+1 và i+24 nhỏ hơn ngưỡng, điều đó chứng tỏ ký hiệu đó đã lặp lại, ta tạm coi các mẫu trong vùng i đến i+23 là một ký hiệu, rồi xét tiếp các mẫu trong các vùng i+24 đến i+37 và i+25 đến i+38 như trên đến khi nhận được sự lệch pha như trên sẽ nắn chỉnh lại.
Chương 6
Khôi phục sóng mang và giải điều chế QAM
6.1 Tổng quan
Hiện nay, có hai phương pháp giải điều chế phổ biến là giải điều chế kết hợp và không kết hợp. Trong hai phương pháp này, giải điều chế không kết hợp không yêu cầu khôi phục sóng mang trong khi điều này là rất cần thiết khi tiến hành giải điều chế kết hợp. Một số phương pháp điều chế như điều chế biên độ hay điều chế dịch pha sóng mang có thể tiến hành giải điều chế bằng các kỹ thuật giải điều chế không kết hợp. Tuy nhiên, đối với các phương pháp điều chế khác như QAM đòi hỏi nhiều kiến thức để xác định sóng mang, nên chỉ có thể sử dụng phương pháp giải điều chế kết hợp.
Có hai phương pháp tiến hành giải điều chế kết hợp trong QAM: Phương pháp thứ nhất sử dụng một bộ tạo dao động nội có tần số điều chỉnh được để có thể thay đổi nhịp giải điều chế. Còn phương pháp thứ hai sử dụng bộ tạo dao động nội có tần số cố định rồi dùng một bộ giải quay số để khắc phục sự dịch của tần số và pha sóng mang. Mỗi phương pháp đều có những ưu, nhược điểm riêng nên sử dụng phương pháp nào phải quyết định dựa trên các điều kiện cụ thể.
6.2 Khôi phục sóng mang
Nếu bộ dao động nội trong bộ thu không đồng bộ với tín hiệu QAM thu được, dữ liệu nhận được sẽ không thể khôi phục chuẩn xác. Hình 6.1 biểu diễn sự dịch pha và tần số trong bộ dao động nội. Hình 6.1a biểu diễn một chòm sao QAM-64 mà được giải điều chế bằng bộ dao động nội có độ dịch pha và tần số bằng không. Hình 6.1b cũng biếu diễn chòm sao QAM như vậy nhưng lần này bộ dao động nội dịch pha 10 độ so với sóng QAM. Trong trường hợp này, chòm sao bị quay đi 10 độ gây ra lỗi bit do các điểm chòm sao đã dịch chuyển cắt đường giới hạn. Hình 6.1c cũng biểu diễn chòm sao như hình 6.1a và b nhưng độ dịch pha của bộ dao động nội lần này không chỉ dừng tại một vị trí mà thay đổi liên tục. Nhìn vào hình vẽ ta có thể nhận thấy, khi độ dịch pha thay đổi liên tục theo thời gian thì các điểm chòm sao có quỹ tích là các vòng tròn lồng nhau.
Hình 6.1: Kết quả của độ dịch pha sóng mang và tần số
Ta có thể biểu diễn một tín hiệu QAM sai pha như phương trình 6.1:
(6.1)
Với AI(t) là biên độ của kênh I(đồng pha) như một hàm biến đổi theo thời gian, còn AQ(t) là biên độ của kênh Q(vuông pha) cũng như một hàm của thời gian, fc là tần số sóng mang và φ là pha của sóng mang được điều chế. Nếu tín hiệu QAM được giải điều chế bởi các phương trình cI(t) và cQ(t) tương ứng với các kênh I,Q như ở Phương trình 6.2 và 6.3.
(6.2)
(6.3)
Với Φd là pha của các tín hiệu được sử dụng để giải điều chế s(t). Qua đó, sẽ khôi phục được các thành phần đồng pha AI´(t) như phương trình 6.4 và các thành phần vuông pha AQ´(t) như phương trình 6.5.
(6.4)
(6.5)
Từ phương trình 6.4 và 6.5, ta thấy rằng các biên độ AI´(t) và AQ´(t) giảm cos(Φ-Φd) lần so với biên độ thật sự của chúng khi không có sự dịch pha. Do công suất tỉ lệ với bình phương biên độ nên công suất của AI´(t) và AQ´(t) giảm cos2(Φ-Φd) lần so với công suất thật sự chúng (không có dịch pha). Ngoài ra, phương trình 6.4 và 6.5 cũng chỉ ra rằng nhiễu xuyên âm được sinh ra giữa các thành phần đồng pha và vuông pha.
6.3 Các kỹ thuật khôi phục sóng mang
Có hai loại kỹ thuật đồng bộ sóng mang là: gửi kèm (assisted) và mù (blind). Cơ sở của kỹ thuật cộng tác là phân chia tín hiệu thu được thành hai tín hiệu: tín hiệu phao tiêu (pilot) và dữ liệu. Còn kỹ thuật đồng bộ mù lại tiến hành ước lượng pha sóng mang trực tiếp từ tín hiệu điều chế. Phương pháp này thường được sử dụng trong thực tiễn nhiều hơn vì khi đó, toàn bộ công suất của bộ phát có thể sử dụng cho thành phần tín hiệu chứa thông tin.
6.3.1 Kỹ thuật khôi phục sóng mang có gửi kèm tần số phao tiêu (pilot tone)
Hệ thống sử dụng kỹ thuật khôi phục sóng mang có gửi kèm tần số phao tiêu phân phân chia tín hiệu thu được thành hai phần: một phần là tín hiệu có tần số không được điều chế (tone) còn phần còn lại là tín hiệu thông tin. Tần số gửi kèm thường được cộng vào chính tần số sóng mang (Hình 6.2) hoặc là tích của tần số sóng mang. Dựa vào đó, bộ nhận sẽ sử dụng vòng khóa pha để thu lại thành phần sóng mang. Vòng khóa pha sử dụng phải có băng thông đủ nhỏ để tín hiệu thông tin không ảnh hưởng nhiều tới sự việc ước lượng sóng mang.
Hình 6.2: Tín hiệu phao tiêu được truyền cùng tín hiệu thông tin.
6.3.2 Vòng lặp vuông (Squaring Loop)
Các thiết bị sử dụng vòng lặp vuông được sử dụng rộng rãi để ước lượng pha của sóng mang đối với các tín hiệu có sóng mang được nén bên trong PAM. PAM không có năng lượng kết hợp tại tần số sóng mang nên nếu ta đặt một bộ lọc thông dải để lọc tín hiệu thu được tại tần số sóng mang thì vẫn sẽ không thể khôi phục sóng mang. Tuy nhiên, có thể vuông hóa tín hiệu thu được để tạo ra một thành phần tần số gấp đôi tần số sóng mang. Thành phần tần số này có thể sử dụng để điều khiển một bộ PLL để tạo ra tín hiệu đồng bộ với sóng mang. Kỹ thuật này được miêu tả ở Hình 6.3.
Tiếc thay, phương pháp này không thể sử dụng với QAM. Tín hiệu QAM có công suất bằng nhau trên cả hai nhánh, do đó, nếu vuông hóa QAM, tín hiệu trên các nhánh sẽ có xu hướng cắt bỏ các tín hiệu tần số thấp trong khi phải sử dụng chúng mới có thể khôi phục sóng mang. Nhược này có thể khắc phục bằng các vòng lặp tiếp theo.
Hình 6.3: Tạo quy luật sóng vuông dựa trên PLL cho
việc khôi phục sóng mang
6.3.3 Vòng lặp Costas
Vòng lặp Costas được phát triển vào năm 1956 không những khôi phục sóng mang từ các tín hiệu có sóng mang nén bên trong giống với thành vòng lặp vuông mà còn có thể khôi phục pha sóng mang của tín hiệu QAM. Sơ đồ khối của vòng lặp Costas được mô tả trong Hình 6.4.
Tín hiệu thu được chia làm hai nhánh. Nhánh thứ nhất được nhân với sóng mang đã được khôi phục còn nhánh thứ hai cũng nhân với sóng mang đó nhưng bị dịch pha 90 độ. Đầu ra các nhánh này được đưa vào bộ lọc thông thấp. Kết quả của chúng được nhân với nhau để tạo ra tín hiệu lỗi, tín hiệu này được sử dụng để điều khiển bộ dao động điều khiển điện thế (VCO).
Hình 6.4: Vòng lặp Costas
6.3.4 Vòng khóa pha phản hồi quyết định
Cả vòng lặp vuông và vòng lặp Costas đều xem các tín hiệu thông tin là một chuỗi ngẫu nhiên và sử dụng giá trị trung bình thống kê của nó để khôi phục thông tin sóng mang bên trong nó.
Hình 6.5: PLL phản hồi quyết định cho QAM
Thông thường, PLL phản hồi quyết định tạo ra ít nhịp jitter hơn các bộ không quyết định, các hệ thống khôi phục sóng mang trực tiếp có BER nhỏ hơn 10-2 do các lỗi bit gây ra tác động không đáng kể lên sự ước lượng pha sóng mang được tạo ra bởi bộ lọc lặp.
6.4 Giải điều chế QAM sử dụng phương pháp tương quan
Để thuận lợi cho việc tính toán, tôi phát triển hệ thống được biểu diễn bởi hình 6.6, hệ thống này được thiết kế để phù hợp với việc tính toán, xét tương quan ký hiệu.
A/D
Chuyển đổi nhị phân sang phẩy động
Xét tương quan
Khôi phục xung nhịp
Quay 90 độ
Tạo lại sóng mang
Bộ tích phân
Bộ tích phân
I
Q
Xung nhịp lấy mẫu
Hình 6.6: Hệ thống giải điều chế QAM sử dụng phương pháp tương quan
Bộ A/D: Dữ liệu thu được sẽ được lấy mẫu bằng bộ A/D với xung nhịp có thể thay đổi được. Do có thể điều chỉnh được nhịp lấy mẫu AD nên ta có thể thay đổi số lượng mẫu mỗi ký hiệu để tạo thuận lợi cho bộ tính tương quan.
Khối chuyển đổi nhị phân sang phẩy động: Khối này đã được miêu tả chi tiết ở chương 4. Do dữ liệu đẩy ra từ khối A/D là dữ liệu nhị phân số, trong khi quá trình xử lý trên FPGA của hệ thống đòi hỏi tính toán các số rất lớn, các số nhị phân, số nguyên thông thường không thể đáp ứng được nên khối nhị phân sang phẩy động sẽ chuyển đổi các số nhị phân sang khuôn dạng dấu phẩy động để toàn bộ các phép toán của các khối bên trong sẽ hoàn toàn được tính toán thông qua khối xử lý dấu phẩy động FPU.
Khối xét tương quan: Khối này đã được mô tả chi tiết ở chương 5, nhiệm vụ của khối này là tìm đúng điểm bắt đầu và kết thúc của ký hiệu để có thể tạo ra xung nhịp ký hiệu chuẩn bằng khối khôi phục xung nhịp. Dữ liệu chuẩn từ khối khôi phục xung nhịp sẽ là dữ liệu đồng bộ mà cả hệ thống dựa vào để đồng bộ các khối vào nhau và giải điều chế.
Khối tạo lại sóng mang, khối quay 90 độ: Hai khối này có nhiệm vụ tạo lại sóng mang sin và sóng mang cos dựa trên cơ sở nhịp đồng bộ của khối khôi phục xung nhịp. Sau đó, các sóng mang sẽ được nhân tín hiệu vào để tạo ra tín hiệu các kênh I,Q. Bộ tích phân có vai trò như một bộ lọc thông thấp, sẽ khử đi các thành phân xoay chiều, giữ lại thành phần một chiều chính là vị trí của điểm chòm sao trên các kênh I, Q đó.
Kết luận
Trong khóa luận này, tôi tiến hành thiết kế một bộ điều chế và giải điều chế QAM-16 trên FPGA. Trước khi xây dựng trên FPGA, tôi đã tiến hành thiết kế, mô phỏng hệ thống của mình trước trên Matlab. Sau khi xem xét, lựa chọn giữa nhiều kỹ thuật khác nhau, tôi nhận thấy, kỹ thuật khôi phục nhịp ký hiệu lấy nền tảng là kỹ thuật tương quan là phù hợp nhất, có thể thực hiện được nền tôi đã tiến hành thiết kế, xây dựng hệ thống của mình trên cơ sở của kỹ thuật tương quan.
Sau khi đã thiết kế, mô phỏng hệ thống thành công trên Matlab, tôi đã tiến hành xây dựng trên FPGA. Bộ điều chế đã được xây dựng thành công trên FPGA, tín hiệu QAM đã được phát ra trên nhiều băng tần số khác nhau và có thể quan sát được trên dao động ký. Đối với bộ giải điều chế, khối tính toán dấu phẩy động để thực hiện các phép tính cơ bản đã được xây dựng thành công. Nhờ có khả năng tính toán nhanh và mạnh của khối này, bộ giải điều chế sẽ sớm được hoàn thiện.
Hướng phát triển tiếp theo của đề tài:
Tiếp tục hoàn thiện khối giải điều chế QAM
Nghiên cứu, triền khai QAM 1024 với tần số ký hiệu cao
Kết hợp FFT/IFFT để phát đa sóng mang.
TÀI LIỆU THAM KHẢO
[1] Circuit design with VHDL, Volnei A. Pedron, M.I.T press, Massachusetts Institute of Technology
[2] L. Mintzer, “Soft Radios and Modems on FPGS,” Communications System Design, pp.52-57, Feb. 2000.
[3] “Quartus II Development Software”, Altera Corporation,
, February 2004.
[4] “802.16TM IEEE Standard for Local and metropolitan area networks, Part 16: Air Interface for Fixed Broadband Wireless Access Systems,” The Institute of Electrical and Electronics Engineers, Inc., New York, NY, 2002.
[5] V. Eklund et al., “IEEE Standard 802.16: A Technical Overview of the Wireless MAN™ Air Interface for Broadband Wireless Access,” IEEE Communications Magazine, pp. 98-107, June 2002.
[6] APEX 20K Programmable Logic Family, Altera Coporation, website:
[7] Cyclone II Device Family Data Sheet, website:
[8] L. Couch, Digital and Analog Communication Systems, Prentice Hall, Upper Saddle River, NJ, 1997.
[9] L. Yang and L. Hanzo, “Recursive Algorithm for the Error Probability Evaluation of M-QAM,” IEEE Communications Letters, vol. 4, no. 10, pp. 304-306, October 2000.
[10] W. Reuter, “Source and Synthesizer Phase Noise Requirements for QAM Radio Applications,”
[11] K. Cho and D. Yoon, “On the General Expression of One- and Two-Dimensional Amplitude Modulations,” IEEE Transactions on Communications, vol. 50, no. 7, pp. 1074-1080, 2002.
Các file đính kèm theo tài liệu này:
- Nghiên cứu, thiết kế, xây dựng bộ điều chế và giải điều chế qam-16 trên fpga.doc