Việc phát triển các bộ giải mã viterbi để giải mã mã chập có ý nghĩa vô cùng to lớn bởi vì nó cho phép ta thực hiện các bộ thu phát tương thích với các tiêu chuẩn đang được sử dụng.. Luậ
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
Trang 2Cán bộ hướng dẫn khoa học : PGS.TS PHẠM HỒNG LIÊN
Trang 3Tp HCM, ngày tháng năm
NHIỆM VỤ LUẬN VĂN THẠC SĨ
Chuyên ngành: Kỹ thuật điện tử
MSHV: 01408370
1- TÊN ĐỀ TÀI:
THIẾT KẾ VÀ CẢI TIẾN LÕI GIẢI MÃ VITERBI QUYẾT ĐỊNH MỀM
2- NHIỆM VỤ LUẬN VĂN:
Tìm hiểu cơ sở lý thuyết mã chập, thuật toán giải mã viterbi
Tìm hiểu FPGAvà ngôn ngữ mô tả phần cứng Verilog® HDL
Mô phỏng và đánh giá giải mã viterbi trên môi trường matlab
Thiết kế và mô phỏng lõi giải mã viterbi
Kiểm tra thiết kế trên môi trường FPGA và đánh giá kết quả
3- NGÀY GIAO NHIỆM VỤ :
5- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN (Ghi đầy đủ học hàm, học vị ):
PGS.TS PHẠM HỒNG LIÊN
Nội dung và đề cương Luận văn thạc sĩ đã được Hội Đồng Chuyên Ngành thông qua
(Họ tên và chữ ký) QUẢN LÝ CHUYÊN NGÀNH (Họ tên và chữ ký)
(Họ tên và chữ ký)
Trang 4Tôi xin gởi lời cảm ơn trân trọng nhất đến cô PGS.TS Phạm Hồng Liên, người đã tận tình quan tâm, hướng dẫn, giúp đỡ và tạo mọi điều kiện thuận lợi cho tôi thực hiện hoàn thành đề tài tốt nghiệp
Tôi cũng cảm ơn các thầy cô giáo giảng dạy chương trình Cao học, chuyên ngành Kỹ thuật điện tử trường Đại Học Bách Khoa TP.HCM, đã truyền đạt nhiều kiến thức quý báu trong suốt khoảng thời gian học tập và nghiên cứu
Xin gởi lời cảm ơn chân thành đến bạn bè và đồng nghiệp, những người đã luôn bên cạnh giúp đỡ, trao đổi thông tin, kiến thức cũng như động viên tinh thần để tôi vượt qua những khó khăn và thử thách trong quá trình học tập cũng như thực hiện luận văn
Cuối cùng là lời cảm ơn ba mẹ, người thân và gia đình là chỗ dựa vững chắc
và nguồn động viên to lớn để con có điều kiện học tập, nghiên cứu và thực hiện những ước mơ của mình
Tp.Hồ Chí Minh, ngày 25 tháng 6 năm 2010
NGUYỄN THẾ HOÀNG
Trang 5Luận văn này là kết quả của quá trình tự nghiên cứu của bản thân từ các tài liệu, sách báo trên mạng, từ các sách và công trình đã được đề cập trong phần tài liệu tham khảo Những kết quả có được từ luận văn này là thành quả của cá nhân với sự giúp đỡ của trước hết là giáo viên trực tiếp hướng dẫn PGS.TS Phạm Hồng Liên, sau đó là các bạn bè, đồng nghiệp, và các bạn học viên cao học khóa kỹ thuật điện tử 2008 Tác giả xin cam đoan luận văn này hoàn toàn không phải là tài liệu sao chép lại bất kì một công trình nào đã có từ trước, cũng như được công bố ở bất
cứ đâu
Trang 6Như chúng ta đã biết, mã chập đóng vai trò vô cùng quan trọng trong truyền thông vô tuyến Việc phát triển các bộ giải mã viterbi để giải mã mã chập có ý nghĩa vô cùng to lớn bởi vì nó cho phép ta thực hiện các bộ thu phát tương thích với các tiêu chuẩn đang được sử dụng Luận văn này sẽ thực hiện bộ giải mã viterbi cho các tiêu chuẩn mã hóa tích chập thường được sử dụng trong thực tế
Luận văn sẽ xây dựng, mô phỏng bộ giải mã viterbi và thực hiện chúng trên FPGA Phần mô phỏng trên matlab sẽ thực hiện mô phỏng kênh truyền với bộ mã hóa tích chập, bộ tăng tốc độ puncturing, bộ viterbi quyết định mềm 4 bit, sử dụng điều chế BPSK và kênh truyền nhiễu trắng AWGN Mô phỏng sẽ thực hiện kiểm tra tốc độ lỗi bit với nhiều tốc độ truyền khác nhau để làm chuẩn so sánh với các kết quả thu được từ phần cứng Phần thiết kế RTL sẽ chỉ mô phỏng và thiết kế bộ giải
mã viterbi với tốc độ cố định rate ½, quyết định mềm 4 bit với các tỷ lệ tín hiệu trên nhiễu SNR khác nhau Kết quả thực hiện trên phần cứng sẽ được so sánh với kết quả mô phỏng matlab để đánh giá hiệu quả của thiết kế.
Trang 7communications The development of Viterbi decoder for decoding the code gathering has enormous significance because it allows us to perform the transponders are compatible with standards being used nowaday This thesis will perform Viterbi decoder for integrated gathering encoding standard commonly used
in practice
In this thesis, Viterbi decoder will build, simulation and implementation on FPGA MATLAB code will simulations telecomunication channel with convolutional encoders , puncturing, 4 bit-soft decision Viterbi, using BPSK modulation and AWGN channel Simulation will perform bit error rate (BER) test with many different transfer speeds to benchmark comparisons with results obtained from the hardware Viterbi decoder core in RTL code will only design with a fixed rate ½, 4-bit soft decision The Core with be tested on many different SNR,and the results from implementation on the hardware will be compared to MATLAB
simulation about performance of the design
Trang 8………
………
……… ………
………
………
………
………
……… ………
………
………
………
………
………
………
………
………
………
………
……… ………
………
Cán bộ hướng dẫn (ký & ghi rõ họ tên)
Trang 9Mục lục
-oOo -
1 GIỚI THIỆU 7U 2 LÝ THUYẾT THUẬT TOÁN VITERBI 8
2.1 Mã hóa xoắn (mã chập) 9
2.2 Khoảng cách Euclidean 12
2.3 Thuật toán Viterbi 13
3 MÔ HÌNH HÀNH VI CỦA BỘ GIẢI MÃ VITERBI 16
3.1 Tổng quan hệ thống 16
3.2 Bộ tạo dữ liệu 16
3.3 Mã hóa chập 16
3.4 Tăng tốc độ truyền với kỹ thuật puncturing 18
3.5 Bộ điều chế (Modulator) 20
3.6 Kênh truyền nhiễu Gause (AWGN channel) 21
3.7 Giải điều chế BPSK/QPSK và output decision: 23
3.8 Quá trình De-puncturing 25
3.9 Giải mã Viterbi 25
4 QUY TRÌNH THIẾT KẾ CHIP VÀ CÔNG NGHỆ FPGA 27
4.1 Giới thiệu 27
4.1.1 Cấu trúc FPGA 27
4.1.2 Quy trình thiết kế FPGA 29
4.2 Kiến trúc và công cụ phát triển FPGA của Altera 32
4.2.1 Kiến trúc FPGA của Altera 32
4.2.2 Các công cụ phát triển của Altera 34
5 MÔ PHỎNG MATLAB 38
5.1 Sơ đồ khối 38
5.2 Khối mã hóa 39
5.3 Kênh truyền 39
5.4 Khối giải mã 40
5.5 Khối convertor: 41
6 THIẾT KẾ VÀ THỰC HIỆN 42
Sơ đồ khối bộ Viterbi decoder: 42
Trang 106.2 Khối ACS 46
6.3 Khối Trace-Forward 51
6.4 Khối Buffer 52
6.5 Khối Trace-Back 53
6.6 Khối ước lượng BER 55
6.7 Thực hiện testbench và mô phỏng modelsim 57
6.7.1 Sơ đồ khối 57
6.7.2 Mô phỏng modelsim 58
6.8 Kết quả 62
6.8.1 Kết quả mô phỏng matlab: 62
6.8.2 Kết quả thực hiện với bộ gỉai mã viterbi decoder 63
7 ĐÁNH GIÁ NHẬN XÉT 65
7.1 Kết quả đề tài 65
7.2 Đánh giá thiết kế 65
7.3 Ưu và nhược điểm 66
7.4 Những cải tiến trong tương lai 66
Bảng sử dụng tài nguyên từ phần mềm altera quartus 67
TÀI LIỆU THAM KHẢO 68
PHỤ LỤC 69
TÓM TẮT LÝ LỊCH KHOA HỌC 72
Trang 11Thuật ngữ tiếng anh và từ viết tắt
ACS Cộng – So sánh – Chọn lựa(Add-Compare-Select)
ASIC Application Specific Integrated Circuit
BER Tỷ lệ lỗi bit (Bit Error Rate)
BMP Xử lý nhánh metric (Branch Metric Processing)
BMC Tính toán nhánh metric (Branch Metric Calculation)
DSP Digital Signal Processing
DSS Hê thống vệ tinh (Digital Satellite System)
DVB-T Truyền hình số (Digital Video Broadcast)
FPGA Field Programmable Gate Array
HDL Hardware Description Language
I/O Input/Output
IP Intellectual Property
RTL Register Transfer Level
SoC System on Chip
SUR Đường tồn tại (Survivor)
TRB Truy ngược về (Tracing back)
VLSI Very Large Scale Integration
Trang 12Danh mục hình
Hình 2-1 hệ thống sử dụng mã hóa xoắn (mã chập) đơn giản 8
Hình 2-2 Mã hóa chập tốc độ 1/2, chiều dài constrain length là 3 9
Hình 2-3 : Sơ đồ máy trạng thái của mã hóa chập ½ 10
Hình 2-4 Sơ đồ Trellis mô tả quá trình mã hóa 11
Hình 2-5 Khoảng cách Eulidean 13
Hình 2-6 : Quy trình giải mã Viterbi 14
Hình 3-1 Sơ đồ khối kênh mô phỏng kênh truyền 16
Hình 3-2 mã hóa chập tiêu chuẩn tốc độ ½ của hệ thống DVB, DSS 17
Hình 3-3 Kỹ thuật puncturing 19
Hình 3-4 Tăng tốc độ lên ¾ từ tốc độ ban đầu 1/2 19
Hình 3-5 Tín hiệu BPSK 21
Hình 3-6 Kênh truyền có nhiễu 21
Hình 3-7 Phân bố gaussian 22
Hình 3-8 Tỷ lệ lỗi BER của điều chế BPSK trong kênh truyền AWGN (kết quả mô phỏng từ matlab) 23
Hình 3-9 Quyết định mềm và quyết định cứng 24
Hình 3-10 Quyết định mềm 24
Hình 3-11 Sơ đồ giải mã viterbi 25
Hình 4-1 Cấu trúc FPGA điển hình (hình từ Bob Zeidman) 29
Hình 4-2 Một logic block điển hình 29
Hình 4-3 Lưu đồ thiết kế thông thường 31
Hình 4-4 Một FPGA họ Cyclone I của Altera 32
Hình 4-5 Cấu trúc một logic Array block 33
Hình 4-6 Cấu trúc một phần tử logic của altera (Logic Element ) 34
Hình 4-7 Quy trình thiết kế FPGA của Altera 34
Hình 4-8 : Các kiểu nhập thiết kế 35
Hình 4-9 : Pin planner 36
Hình 4-10 : Altera FPGA programmer 37
Hình 4-11 Quy trình thiết kế FPGA của Altera 37
Hình 5-1 : Sơ đồ mô phỏng matlab 38
Hình 5-2 Khối mã hóa chập 39
Hình 5-3 Khối tạo nhiễu 40
Hình 5-4 Khối tạo dữ liệu test 41
Hình 6-1 Sơ đồ khối bộ Viterbi decoder 42
Hình 6-2 Sơ đồ chân module Viterbi 42
Hình 6-3 Cấu trúc viterbi core 43
Hình 6-4 Khối tính toán nhánh 44
Hình 6-5 Tính toán khoảng cách Euclidean 45
Hình 6-6 Khối ACS 46
Hình 6-7 Bảng chuyển trạng thái 48
Trang 13Hình 6-8 : Sơ đồ con bướm 49
Hình 6-9 Tính tóan branch metric 49
Hình 6-10 Tính khoảng cách tích lũy và lưu quyết định hiện thời 50
Hình 6-11 thanh ghi dec[63:0] 51
Hình 6-12 Trace-Forward Module 51
Hình 6-13 Khối buffer 52
Hình 6-14 Khối truy ngược lại 54
Hình 6-15 Khối ước lượng BER 55
Hình 6-16 Sơ đồ khối ước lượng BER kênh truyền 55
Hình 6-17 Mô hình testbench 57
Hình 6-18 Mô phỏng viterbi rate ½ , SNR = 1dB 58
Hình 6-19 Mô phỏng viterbi rate ½ , SNR = 1.5dB 59
Hình 6-20 Mô phỏng viterbi rate ½ , SNR = 2dB 59
Hình 6-21 Mô phỏng viterbi rate ½ , SNR = 3dB 60
Hình 6-22 Mô phỏng viterbi rate ½ , unnoise 61
Hình 6-23 Kết quả mô phỏng 62
Hình 6-24 Kết quả mô phỏng matlab và mô phỏng Viterbi Core tốc độ 1/2 63
Trang 14Danh mục bảng
Bảng 2-1 : Bảng tạo đa thức mã hóa theo chiều dài constrain length và tốc độ 12
Bảng 3-1 thông số bộ mã hóa chập 17
Bảng 3-2 Bảng vector puncturing với các tốc độ khác nhau 20
Bảng 6-1 Pin of Viterbi Core 43
Bảng 6-2 Danh sách các module 44
Bảng 6-3 Sơ đồ chân 45
Bảng 6-4 Sơ đồ chân 46
Bảng 6-5 Sơ đồ chân 52
Bảng 6-6 Sơ đồ chân 53
Bảng 6-7 Sơ đồ chân 54
Bảng 6-8 Sơ đồ chân 57
Bảng 6-9 Kết quả mô phỏng RTL 61
Bảng 7-1 Tài nguyên sử dụng của lõi viterbi 67
Trang 151 GIỚI THIỆU
Bộ giải mã viterbi sử dụng thuật toán viterbi để giải mã chuỗi bit mà được mã hóa dựa trên mã hóa chập (Convolutional code) Loại mã hóa này thuộc họ mã hóa sửa lỗi trước, vì dữ liệu truyền đi đã bao gồm cả thông tin sửa lỗi để giúp cho bên thu kiểm tra và sửa lỗi mà không cần các thao tác như truyền lại…
Cũng có một số thuật toán khác để giải mã các chuỗi bit mã hóa chập như thuật toán Fano, thuật toán viterbi dù phức tạp và sử dụng nhiều tài nguyên nhất nhưng nó giải
mã theo khả năng cao nhất sử dụng lý thuyết về xác suất Thuật toán viterbi rất thường dùng để giải mã mã chập có độ dài constraint length K <= 15
Thuật toán giải mã viterbi được phát triển bởi Andrew J Viterbi và xuất bản trong bài báo "Error Bounds for Convolutional Codes and an Asymptotically
Optimum Decoding Algorithm", IEEE Transactions on Information Theory,
Volume IT-13, trang 260-269, tháng 4, năm 1967
Bộ giải mã thường được hiện thực trên cả nền tảng phần mềm (sử dụng công nghệ DSP), cũng như phần cứng (ASIC, FPGA) Việc thực hiện trên phần cứng có thể giúp tích hợp chức năng giải mã viterbi vào các chip khác cũng như tăng hiệu suất và tốc độ giải mã
Giải mã viterbi tương thích với nhiều tiêu chuẩn công nghiệp như DVB, 3GPP2, 3GPP LTE, IEEE 802.16 Hiperlan và Intelsat IESS-308/309
Trang 162 LÝ THUYẾT THUẬT TOÁN VITERBI
Mã hóa xoắn (mã chập), như chúng ta đều biết, đã được sử dụng rộng rãi trong các hệ thống truyền thông bao gồm truyền thông không gian và truyền thông không dây, như IEEE 802.11a / g, WiMax,DAB/DVB, WCDMA, và GSM Hình sau mô
tả một hệ thống sử dụng mã hóa xoắn (mã chập) đơn giản
Khối giải mã Viterbi
Mã hóa xoắn
Nhiễu
Hình 2-1 hệ thống sử dụng mã hóa xoắn (mã chập) đơn giản
Thuật toán Viterbi là thuật toán giải mã cho mã hóa tích chập (mã xoắn) dựa trên lý thuyết về xác suất để xác định chuỗi bit có khả năng cao nhất (maximum-
likely-hood) Trong phần này ta sẽ tìm hiểu về mã hóa tích chập sử dụng giản đồ trellis cho quá trình mã hóa Sau đó ta sẽ tìm hiểu về khoảng cách Euclidean, mà sẽ
sử dụng để tính toán khoảng cách cho đầu vào mềm sẽ được giới thiệu kỹ hơn ở
phần sau Nếu sử dụng đầu vào cứng, thì khoảng cách hamming sẽ được dùng để tính khoảng cách, khoảng cách hamming đơn giản chỉ là đếm số bit khác nhau,
nhưng khoảng cách Euclidean thì phức tạp hơn, vì nó cho phép tính khoảng cách giữa các vector có chiều bất kỳ Cuối cùng, ta sẽ xem xét giải thuật giải mã viterbi cho mã hóa chập
Trang 172.1 Mã hóa xoắn (mã chập)
Mã xoắn lần đầu tiên được giới thiệu bởi Elias vào năm 1955, nó cho phép thay thế cho mã khối để truyền thông tin qua một kênh truyền có nhiễu Mã hóa xoắn có thể được áp dụng cho một chuỗi bit đầu vào liên tục (mà không thể được thực hiện với mã khối), cũng như các khối dữ liệu đầu vào Trong thực tế, một bộ
mã hóa xoắn có thể được xem như là một máy trạng thái hữu hạn Nó tạo ra một chuỗi dữ liệu mã hóa từ một dòng dữ liệu đầu vào Nó thường bao gồm một thanh ghi dịch (shift register) và một mạng các cổng XOR (Exclusive-OR) Một ví dụ về
mã hóa tích chập thể hiện trong Hình 2.2 sau đây:
Hình 2-2 Mã hóa chập tốc độ 1/2, chiều dài constrain length là 3
Trang 18Hình 2-3 : Sơ đồ máy trạng thái của mã hóa chập ½
Giản đồ trellis thường được sử dụng để theo dõi các trạng thái trong quá trình mã hóa tích chập Giản đồ trellis xây dựng dựa trên biểu đồ trạng thái (Hình 2.3b ), các trạng thái chuyển tiếp được thực hiện cho từng bit đầu vào,ở hình 2.3b giá trị 00,11,01,10 thể hiện giá trị mã hóa ở đầu ra bộ mã hóa, đường đậm là khi bit
dữ liệu đầu vào bằng không, đường nét đứt là khi dữ liệu đầu vào bằng một Si là các trạng thái nội của bộ mã hóa
Ví dụ sau mô tả giản đồ trellis cho quá trình mã hóa xoắn cho chuỗi bit 1101,
và các chuỗi bit mã hóa đầu ra lần lượt sẽ là 11, 01, 01, 00 xác định theo biểu đồ trạng thái ở trên Đường màu đỏ thể hiện trạng thái đi qua của bộ encode với chuỗi bit đầu vào 1101 Chú ý là tại thời điểm bắt đầu (t=0), mặc định trạng thái của bộ
mã hóa bao giờ cũng là 00 Sau khi nhận đầu vào là 1, nó đổi trạng thái sang 10 (đường nét đứt đậm tại t=0 sang t =1) và tạo ra giá trị đã được mã hóa ở đầu ra là
11 Sau đó nó tiếp tục chuyển trạng thái sang 11 vì đầu vào tiếp tục là mức 1, và nó tạo ra gái trị mã hóa đầu ra là 01 Tại t=2 , bộ mã hóa nhận đầu vào là bit 0 nên chuyển trạng thái sang 01 và tạo ra giá trị mã hóa đầu ra là 01 Cuối cùng tại t=3, nó nhận bit đầu vào là 1 nên chuyển trạng thái sang 10, và gái trị mã hóa đầu ra là 00
Trang 19Hình 2-4 Sơ đồ Trellis mô tả quá trình mã hóa
Đường nét liền là khi bit dữ liệu đầu vào bằng không, đường nét đứt là khi
dữ liệu đầu vào bằng một
Đường màu đỏ (đường nét to) thể hiện trạng thái đi qua của bộ encode với
chuỗi bit đầu vào 1101
Chưa có cơ sở lý thuyết nào chỉ ra cách thiết kế tối ưu của thanh ghi dịch kết nối các cổng XOR Mà người ta dựa trên một phương pháp tiếp cận thực nghiệm Bảng sau đây giới thiệu cách tạo các hệ số đa thức của xoắn mã hóa với chiều dài
constraint length từ 7 tới 9
Trang 20Bảng 2-1 : Bảng tạo đa thức mã hóa theo chiều dài constrain length và tốc độ
Trạng thái ban đầu của một bộ mã hóa xoắn luôn là 0, có nghĩa là lúc bắt đầu quá trình mã hóa, tất cả các giá trị của thanh ghi dịch đều là "0" Ngoài ra sau khi tất cả các symbol thông tin được truyền hết, bộ mã hóa thường là phải bắt buộc trở lại tình trạng ban đầu bằng cách đưa vào chuỗi đầu vào cố định được gọi là chuỗi reset, sau khi truyền hết dữ liệu, mà tất cả các bit đều là "0" Bằng cách này, sơ đồ trellis sẽ dần dần tiến tới trạng thái thiết lập ban đầu Chúng ta cũng nên chú ý rằng chỉ có một đường duy nhất cho mọi từ mã mà bắt đầu và kết thúc với cùng trái thái ban đầu
2.1 Khoảng cách Euclidean
Khoảng cách Euclidean thường dùng để tính toán khoảng cách theo đường thẳng giữa hai điểm Trong một mặt phẳng P1 tại (x1, y1) và P2 tại (x2, y2), khoảng cách giữa hai điểm P1, P2 là √ ((x1 - x2)² + (y1 - y2)²)
Trang 21Trong thuật toán Viterbi, có hai cách để tính khoảng cách để chọn ra đường
có khả năng cao nhất Một là khoảng cách hamming, sẽ liên quan đến quyết định cứng (hard decision) Cách thứ hai là khoảng cách Euclidean liên quan tới quyết định mềm (soft decision)
Hình 2-5 Khoảng cách Eulidean
2.2 Thuật toán Viterbi
A J Viterbi đã đề xuất một thuật toán được biết tới như là phương pháp tối ưu tiệm cận để giải mã mã chập của kênh truyền không nhớ Thuật toán Viterbi
(Viterbi Algorithm -VA) cũng được biết dưới tên thuật toán giải mã theo khả năng lớn nhất (maximum likelihood decoding algorithm) cho mã hóa chập Như chỉ ra trong hình sau đây, chuỗi dữ liệu x được mã hóa sẽ tạo ra một chuỗi từ mã y, sau đó
y được truyền trên kênh truyền có nhiễu Bộ giải mã chập sẽ thu được vector r và tạo ra một ước lượng z với khả năng cao nhất của từ mã được truyền đi Bộ giải mã
Trang 22khả năng lớn nhất (ML- Maximum likelihood) sẽ chọn ước lượng nào có khả năng lớn nhất p (r|z)
Hình sau chỉ cho ta thấy quy trình giải mã viterbi
Hình 2-6 : Quy trình giải mã Viterbi
Trang 23Đầu tiên chúng ta phải khởi tạo bộ giải mã Viterbi cho cùng trạng thái ban đầu của máy trạng thái hữu hạn (Finite State Machine - FSM) và sơ đồ trellis cũng như bộ mã hóa xoắn Sau đó, trong mỗi chu kỳ xung nhịp, bộ giải mã tính khoảng cách Hamming (hay Euclidean) có thể có của metric Đối với mỗi trạng thái, khối ACS tính toán khoảng cách Euclidean tích lũy của hai con đường có thể có và chọn cái nào nhỏ hơn Đồng thời, khối ACS sẽ ghi lại trạng thái còn giữ lại của metric Một sơ đồ trellis cũng được xây dựng theo con đường chứa các sự chuyển tiếp trạng thái cùng với tất cả các thông tin có liên quan như đường đi và bit quyết định (bit giải mã được) Khi tất cả các bit dữ liệu đã nhận được, và sơ đồ trellis đã được hoàn thành, trạng thái cuối cùng của sơ đồ trellis sẽ được sử dụng như là điểm khởi đầu
để truy tìm ngược trở lại (trace-back) các bit nằm trên đường tồn tại, đây chính là các bit thông tin giải mã Khối trace-back có thể xác định được đầu ra bởi vì nó truy ngược các các bit nằm trên đường có khả năng cao nhất
Trang 243 MÔ HÌNH HÀNH VI CỦA BỘ GIẢI MÃ VITERBI
3.1 Tổng quan hệ thống
Để đánh giá hiệu suất của bộ giải mã Viterbi, một hệ thống mô phỏng đã được thiết kế Để dễ sử dụng, và nhiều chức năng toán học được định nghĩa trước, công cụ MATLAB luôn là ưu tiên lựa chọn hàng đầu Việc bố trí hệ thống mô phỏng được xây dựng như trong hình
Hình 3-1 Sơ đồ khối kênh mô phỏng kênh truyền
3.2 Bộ tạo dữ liệu
Trong khối này, một bộ tạo dữ liệu ngẫu nhiên sẽ tạo ra dữ liệu đưa vào bộ
mã hóa xoắn Dữ liệu được tạo theo định dạng byte, sau đó được chuyển thành chuỗi bit và đưa vào bộ mã hóa chập
3.3 Mã hóa chập
Trang 25Hình 3-2 mã hóa chập tiêu chuẩn tốc độ ½ của hệ thống DVB, DSS
Thông số của bộ mã hóa xoắn, cũng như bộ giải mã viterbi được thiết kế trong luận văn này thể hiện trong bảng 3.1 này Nguyên nhân chọn các thông số như vậy là vì đây là các thông số theo tiêu chuẩn của các chuẩn truyền không dây phổ biến như IEEE 802.11a / g và 802.16,DVB,…
Bảng 3-1 thông số bộ mã hóa chập
Trang 26Từ các thông số của bộ mã hóa chập, cũng như bộ giải mã, ta có thể tính toán
ra là có tới 64 trạng thái thiết lập của bộ mã hóa theo công thức :
5 2 1 0
S S S S I Y
S S S S I X
3.4 Tăng tốc độ truyền với kỹ thuật puncturing
Với kỹ thuật puncturing, chúng ta có thể đạt được tốc độ truyền cao hơn cho toàn bộ hệ thống Ý tưởng của kỹ thuật này như sau Giả sử trong mỗi trường nhiễu tương đối thấp mà yêu cầu về BER không cần khắt khe lắm, ta có thể cố tình không truyền các bit ở một số vị trí nhất định nào đó Và ở phía thu, ta sẽ chèn tại các vị trí
đó các bit 0, như thế ta có xác suất lỗi tại các vị trí đó là 50%, vì các vị trí mà ta thay thế có thể là bit 0, hoặc 1 Như vậy quá trình giải mã Viterbi sẽ phải có gắng
Trang 27giải mã ra các bit đó như là các lỗi gây ra do kênh truyền Bằng cách này, ta có thể tăng tốc độ của hệ thống từ tốc độ ban đầu r bằng ½ thành các tốc độ cao hơn như 2/3, ¾, 5/6, 7/8 … bằng cách bỏ đi không truyền các bit ở các vị trí nhất định nào
đó
Convolutional Encoder
Puncturing Block
Chuỗi bit và̀o Đầu ra X1
Đầu ra Y1
Đầu ra X Đầu ra Y
B5 Chuỗi bit vào
Chuỗi bit mã hóa
Chuỗi bit qua xử lý
puncturing rate 3/4
Hình 3-4 Tăng tốc độ lên ¾ từ tốc độ ban đầu 1/2
Như vậy với tốc độ ½ thông thường, để truyền đi 6 bit dữ liệu đầu vào, ta phải truyền đi 12 bit sau mã hóa tích chập Nhưng với kỹ thuật puncturing rate ¾ như trên, để truyền đi 6 bit dữ liệu đầu vào, ta chỉ phải truyền 8 bit dữ liệu sau mã hóa, chính vì thế ta mới có tốc độ ¾ Bảng sau chỉ ra các tốc độ phổ biến và các vị trí bỏ bit tương ứng
Trang 28
Bảng 3-2 Bảng vector puncturing với các tốc độ khác nhau
Các vị trí 0 là các vị trí bỏ bit, các vị trí 1 là vị trí giữ lại bit
Tốc độ K/N là tỷ số thể hiện số bit thông tin trên số bit truyền đi.Ví dụ rate 7/8 có nghĩa là để truyền đi 7 bit dữ liệu, ta phải truyền đi 8 bit thông tin
3.5 Bộ điều chế (Modulator)
Bộ điều chế cần thiết phải sử dụng trong các hệ thống viễn thông nhằm truyền thông tin đi xa trên môi trường nhiễu, có nhiều cách điều chế thường dùng với các hệ thống sử dụng mã hóa chập như BPSK, QPSK, QAM hay điều chế trải phổ Tuy nhiên trong phạm vi luận văn này, ta sẽ không tập trung nhiều đến các kỹ thuật điều chế, mà chỉ chú trọng thiết kế và đánh giá bộ giải mã viterbi, do đó ta sẽ
sử dụng điều chế BPSK là điều chế tương đối đơn giản và phổ biến trong thực tế, trong quá trình mô phỏng cũng như thực hiện hệ thống
BPSK là dạng đơn giản nhất của điều chế dịch pha PSK Nó sử dụng hai pha lệch nhau 180°như hình vẽ
Trang 29Q
1 0
Hình 3-5 Tín hiệu BPSK
Chuỗi dữ liệu được chuyển thành các tín hiệu sau:
Đối với bit ‘0’:
) 2 cos(
2 )
(
T
E t
2 )
2 cos(
2 )
(
T
E t
f T
E t
b
b c
b
=
3.6 Kênh truyền nhiễu Gause (AWGN channel)
Khi môi trường truyền có nhiễu, dữ liệu phát đi sẽ bị ảnh hưởng của nhiễu, để đánh giá ảnh hưởng của nhiễu, cần phải xem xét các mô hình nhiễu, và đánh giá ảnh hưởng của chúng lên tín hiệu
Hình 3-6 Kênh truyền có nhiễu
Trang 30Có nhiều mô hình nhiễu khác nhau, nhưng thông dụng nhất là mô hình nhiễu Gaussian (AWGN:Nhiễu trắng phân bố Gaussian)
Nhiễu Gaussian có phân bố như sau :
Hình 3-7 Phân bố gaussian
πσσ
πσ
πσσ
2
606.0
~)(
2
1)0(
2
1)
e x
(Tại biên độ bằng ±σ,xác xuất xảy ra bằng 0.606 xác xuất đỉnh ở x=0)
Trong trường hợp nhiễu Gaussian xen chồng lên tín hiệu có mức trung bình m (mean) thì hàm phân bố xác suất nhiễu sẽ trở thành:
e x m x x
p ( )2/2 2
2
1)
σπ
−
−
=
Thông số nhiễu của môi trường được đánh giá bằng tỷ số tín hiệu trên nhiễu SNR:
SNR=10*log (E b /N o ) (dB) ,giá trị này càng lớn thì nhiễu càng ít, và ngược lại
Trong đó Eb : năng lượng bit
Trang 31No : mật độ phổ công suất nhiễu
Hình 3-8 Tỷ lệ lỗi BER của điều chế BPSK trong kênh truyền AWGN (kết quả
mô phỏng từ matlab)
3.7 Giải điều chế BPSK/QPSK và output decision:
Khối giải điều chế sẽ thực hiện lấy mẫu và lượng tử tín hiệu thu được, bao gồm cả nhiễu Giá trị thu được là giá trị thực của tín hiệu Và ở đây, ta có hai cách
để xác định tín hiệu nhận được là bit ‘0’ hay bit ‘1’ Cách thứ nhất là so sánh với một ngưỡng nào đó để quyết định ta đã thu được bit ‘0’ hay bit ‘1’, cách này gọi là quyết định cứng (hard-decision) Cách còn lại phức tạp hơn, đó là chúng ta lượng tử lại lần nữa với một số bit nhất định, trong trường hợp này, ta không đưa ra được quyết định đó là bit ‘0’ hay bit ‘1’, nhưng ta lại có thông tin chính xác hơn về giá trị
Trang 32mà ta thu được, thông tin đó thể hiện mức độ nghi ngờ (hay mức độ chắc chắn về tín hiệu thu được) Cách này gọi là quyết định mềm (soft-decision) Chú ý rằng hard decision chính là trường hợp đặc biệt của soft-decision với số bit mềm là 1
BPSK/QPSK
D emodulation
analog signals Hard Descision
Biên độ<0 =>bit0 Biên độ>0 =>bit1
Hình 3-10 Quyết định mềm
Các giá trị ‘011’ và ‘100’ cho ta các giá trị không chắc chắn lắm về bit ‘0’ hoặc bit ‘1’ mà ta thu được Tuy nhiên, dù sao đi nữa rõ ràng là quyết định mềm
Trang 33cho ta nhiều thông tin hơn là quyết định cứng, và người ta đã chứng minh rằng, quyết định mềm cho phép tăng hiệu suất của toàn hệ thống lên tới 2-3dB
3.8 Quá trình De-puncturing
Ở phía thu, ta sẽ phải có một quá trình ngược lại với quá trình puncturing, đó
là quá trình de-puncturing Quá trình này sẽ thêm vào các bit ‘0’ tại các vị trí đã bị xóa ở phía thu để tạo ra chuỗi có chiều dài tương ứng với chuỗi phía mã hóa để đưa vào bộ giải mã viterbi
3.9 Giải mã Viterbi
Hình 3-11 Sơ đồ giải mã viterbi
Trang 34Như sơ đồ hình 3.11, khối giải mã Viterbi gồm có 5 bước để hoàn thành việc giải
mã khối dữ liệu Đầu tiên là khối tính toán nhánh sẽ tính ra khoảng cách Euclidean của bốn trạng thái có thể có của nhánh, tương ứng với 00, 01, 10, và 11
Bộ ACS (Cộng-So sánh và chọn Add-Compare-Select) sẽ nhận các số liệu khoảng cách Euclidean từ các nhánh và lưu trữ giá trị của các trạng thái của lưới ma trận Các module ACS sẽ cộng từng giá trị mới của mỗi nhánh với các giá trị đã lưu trước đó của từng nhánh và so sánh các kết quả tích lũy giữa hai nhánh để chọn ra cái nhỏ hơn Sau đó, nó sẽ cập nhật giá trị lưu trữ của các số liệu từng node bằng giá trị được chọn
Khối State metric storage - khối này sẽ lưu trữ khoảng cách Euclidean của các
đường cục bộ của mỗi nhánh
Khối Survivor path storage - khối này sẽ ghi lại đường tồn tại của mỗi trạng thái
mà đã được lựa chọn bởi các bộ ACS
Khối Trace-back và output decode - Đầu tiên khối trace back sẽ truy ngược lại
con đường tồn tại với khả năng cao nhất, bắt đầu từ trạng thái cuối cùng ngược trở lại trạng thái đầu tiên của lưới trellis, Sau đó nó tạo ra chuỗi bit đầu ra
Trang 354 QUY TRÌNH THIẾT KẾ CHIP VÀ CÔNG NGHỆ FPGA
4.1.1 Cấu trúc FPGA
FPGA là mảng cổng lập trình được dạng trường (field-programable gate
arrays), FPGA thuộc họ ASIC lập trình được FPGA là một con chip cho phép chúng ta (với vai trò là người thiết kế) có thể lập trình lại chúng Các công ty chế tạo ra FPGA với các kết nối bị thiếu, và công việc đầu tiên của chúng ta là thiết kế
và mô phỏng Sau đó , một phần mềm sẽ tạo ra một chuỗi bit mô tả các kết nối mới
để tạo ra thiết kế của chúng ta, chúng gọi là file cấu hình Sau đó chúng ta sẽ kết nối với máy tính để tải file cấu hình lên chip FPGA, với những kết nối mới do ta định nghĩa thêm vào, chip FPGA sẽ hoạt động theo những gì mà chúng ta đã thiết kế FPGA rất phổ biến đối với các nhà thiết kế vi hệ thống, bởi vì chúng đã thừa hưởng được những ưu điểm của ASICs, mà lại khắc phục được các nhược điểm về giá thành và thời gian phát triển…FPGA còn lý tưởng cho việc thực hiện các hệ thống thử nghiệm (prototype) hoặc các sản phẩm số lượng thấp
Hầu hết các FPGA đều có cấu trúc tương đối giống nhau Chúng được hình thành từ các tế bào logic cơ bản (thường gọi là LUT), và các tế bào logic này có thể
Trang 36được cấu hình thành bằng các kỹ thuật lập trình khác nhau Các logic đầu vào, đầu
ra thì sử dụng các tế bào logic I/O đặc biệt, khác với tế bào logic cơ bản Một hệ thống liên kết nối có thể lập trình được dùng để kết nối giữa các tế bào logic để tạo nên các khối logic cao hơn
Các thành phần logic cơ bản có thể được lập trình để thực hiện các chức năng của cổng logic cơ bản như AND, OR, XOR, NOT hoặc các tổ hợp chức năng phức tạp hơn như bộ giải mã hay các chức năng toán học đơn giản Trong hầu hết các FPGA, các thành phần logic có thể lập trình được (hay còn gọi là các khối logic) cũng bao gồm cả các phần tử nhớ, có thể đơn giản chỉ là flip-flops hoặc phức tạp hơn là các khối bộ nhớ (memory block), các khối I/O, đôi khi chúng còn có cả các khối chuyên thực hiện các chức năng thường gặp như bộ nhân , hay các thao tác DSP Mỗi một chức năng thiết kế sẽ được giao cho một khối khác nhau (hoặc nhiều khối ghép lại) của FPGA và chúng hoạt động độc lập
Các kiến trúc cơ bản điển hình của FPGA bao gồm một mảng các khối logic cấu hình được (CLBs – Configurable logic blocks) và một ma trận kết nối Các chân I/O thì được xếp xung quanh Ngoài ra, nó còn có thể bao gồm thêm các mảng bộ nhớ
và cây clock để phân phối clock đến toàn bộ chip với độ delay và jitter thấp nhất
Trang 37Hình 4-1 Cấu trúc FPGA điển hình (hình từ Bob Zeidman)
Hình sau đây chỉ ra kiến trúc của một khối logic phổ biến.Khối logic này có 4 đầu vào và một đầu ra, cho phép ta có thể cấu hình thành bất cứ hàm logic nào mà có 4 ngõ vào và 1 ngõ ra, đồng thời ta có thể quyết định là đầu ra đó sẽ ở dạng thanh ghi hay dạng bất đồng bộ
Hình 4-2 Một logic block điển hình 4.1.2 Quy trình thiết kế FPGA
Trang 38Để định nghĩa hành vi của FPGA theo một chức năng mong muốn, đơn giản nhất là chúng ta thiết kế sơ đồ mạch, tuy nhiên để cho linh hoạt người ta thường sử dụng một ngôn ngữ gọi là ngôn ngữ mô tả phần cứng (HDL - hardware description language) Các ngôn ngữ HDL thông dụng nhất là Verilog và VHDL Sau đó, sẽ cần có một công cụ thiết kế tự động làm nhiện vụ tạo ra netlist (danh sách các đối tượng và kết nối giữa chúng) bằng kỹ thuật ánh xạ Sau đó, netlist cần phải được thể hiện trên FPGA bằng kỹ thuật gọi là đặt và đi dây (place and route), thông thường phần mềm này do chính các hãng sản xuất FPGA thiết kế Người dùng cũng có thể thay đổi kết quả của sơ đồ,vị trí đặt hoặc đi dây bằng cách quy định các yêu cầu về định thời, phân tích nhiệt, công suất…Sau khi quá trình này hoàn thành, một chuỗi bit được tạo ra để cấu hình lại thiết bị FPGA Để đơn giản hóa các thiết kế phức tạp trong FPGA, người ta tạo sẵn các thư việc các chức năng thường gặp, các chức năng này đã được thử nghiệm, kiểm tra và tối ưu rất tốt, tuy nhiên chúng thường là các sản phẩm bản quyền (IP cores) và chúng ta phải có bản quyền nếu muốn sử dụng chúng
Hình 4.3 thể hiện một lưu đồ thiết kế ứng dụng liên quan tới FPGA điển hình, người phát triển sẽ phải thiết kế kiến trúc trước khi thực hiện với bất kỳ công
cụ thiết kế nào Sau đó là quá trình thực hiện thiết kế mức RTL bằng một ngôn ngữ
mô tả phần cứng Một môi trường phát triển khác như C,C++ hoặc matlab … có thể được sử dụng để mô phỏng thiết kế nhằm so sánh với thiết kế mức RTL Quá trình thiết kế mức RTL phải được kiểm tra kỹ lưỡng bằng cách mô phỏng với dữ liệu vào
và quan sát kết quả, quá trình này gọi là testbench Sau khi quá trình này thực hiện xong, về cơ bản ta đã có một thiết kế tương đối hoàn chỉnh ở mức logic Sau đó, công cụ tổng hợp sẽ tạo ra netlist từ thiết kế, netlist sau đó được chuyển sang mức cổng, và ánh xạ lên FPGA, lúc này các giá trị trễ hay các hiệu ứng có thể làm cho chip hoạt động không đúng như thiết kế logic, do đó nó cần phải được kiểm tra, đánh giá và phải thỏa mãn các ràng buộc về định thời, nhiệt độ và công suất…quá trình thiết kế này được lặp đi lặp lại cho đến khi nào thiết kế hoàn chỉnh
Trang 39Hình 4-3 Lưu đồ thiết kế thông thường
Trang 404.2 Kiến trúc và công cụ phát triển FPGA của Altera
4.2.1 Kiến trúc FPGA của Altera
Về cơ bản, FPGA của altera cũng có kiến trúc tương tự, tuy nhiên mỗi hãng khác nhau có những thiết kế riêng của mình nhằm tối ưu các thông số và tăng hiệu suất Ngoài ra, FPGA của Altera còn nhúng sẵn nhiều logic phần cứng đặc biệt khác
để làm tăng hiệu suất như các PLL cho phép ta tăng hay giảm tỷ số clock với độ sái dạng thấp Hay các khối bộ nhớ cho phép ta thực hiện các bộ nhớ nhúng mà không cần dùng các phần tử logic, thậm chí là các bộ nhân tích hợp sẵn trong chip
Hệ thống liên kết nối nhiều cấp, bố trí theo dạng ma trận cũng làm tăng khả năng liên kết giữa các khối logic giúp các ràng buộc về định thời dễ dàng thỏa mãn hơn
Hình 4-4 Một FPGA họ Cyclone I của Altera