Như vậy, Mã Turbo (hay mã lốc) là một kỹ thuật mã hóa sửa sai (FEC). Turbo Codes thuộc họ mã lưới (mã hóa theo Trellis) và được xây dựng dựa trên 1 mã chập (Convolution Codes).
Sở dĩ gọi là mã Turbo (lốc xoáy) vì cấu trúc giải mã được thực hiện theo giải thuật vòng lặp (iteration) và sau mỗi vòng lặp, tỷ số tín hiệu trên nhiễu SNR sẽ được tăng dần.Mã Turbo là bộ mã có chất lượng tốt nhất so với các bộ mã đã biết từ trước tới nay với độ phức tạp của bộ mã hóa cũng như bộ giải mã chấp nhận được.
Luận văn với đề tài “ Nghiên cứu mã Turbo” đã nêu được vai trò của mã kênh trong hệ thông tin số, lý thuyết của Shannon và các bộ mã thường được sử dụng để nâng cao chất lượng của hệ thống như mã chập, mã kề. Các chương cũng đã phân tích được cấu trúc và nguyên lý của mã Turbo thông qua quá trình mã hóa và giải mã lặp. Đề tài đã nêu lên hai thuật toán giải mã Turbo đó là thuật toán MAP và thuật toán SOVA. Nội dung của đề tài nêu lên các ứng dụng và hạn chế của mã hóa Turbo trong hệ thống thông tin di động CDMA 2000.
134 trang |
Chia sẻ: linhlinh11 | Lượt xem: 1072 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đồ án Nghiên cứu mã Turbo, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
i < 3+length(x)
S
Xuất y
End
5.2.3. Lưu đồ thuật toán tính các ma trận của trạng thái Trellis:
Begin
g = [1011;1101;1111]
i = 1
trạng thái i
Tính các ma trận:
Next_out: đầu ra khi đầu vào là bit 0/1 ứng với thanh ghi ở trạng thái hiện tại i
Last_out:đầu ra trước khi thanh ghi chuyển đến trạng thái hiện tại i
Next_state: trạng thái thanh ghi tiếp theo khi đầu vào là bit 0/1 và thanh ghi đang ở trạng thái i
Last_state: trạng thái thanh ghi trước khi chuyển đến trạng thái hiện tại i
i = i+1
i < 8
Đ
S
Next_out
Last_out
Next_state
Last_state
End
5.2.4 Lu ®å thuËt to¸n gi¶i m· Turbo
Begin
Nhập số lần lặp
Chuỗi dữ liệu nhận được ở bên thu y
j = 1
S
Đ
S
Đ
j = j+1
i = i+1
j < lan lap
i <length(y)
i = 1
-Dựa vào sơ đồ trellis tính các metric đi vào từng nút
-So sánh các metric để tìm ra đường sống
-Lưu các đường sống theo mảng L_all
Đưa ra các bit giải mã
End
5.2.5. Lưu đồ thuật toán tính lỗi bit và lỗi khung:
Begin
- nhập thuật toán giải mã
- nhập kích thước khung
- nhập số lần lặp
- nhập tỷ lệ năng lượng
- nhập số khung lỗi
Đêm lỗi = 0
Mã hoá
cộng nhiễu
giải mã
đếm lỗi
Đ
đếm lỗi < giới hạn
S
BER
FER
End
5.3. Giao diện và kết quả chương trình mô phỏng:
Khi chọn “Exit ” chương trình sẽ thoát còn chọn “continue” chương trình sẽ tiếp tục cho ra trang nhập thông số vào
Ta nhập chuỗi dữ liệu vào, tỷ lệ tín hiệu trên nhiễu, số lần lặp giải mã, tỷ lệ mã truyền đi có 3 tỷ lệ là 1/2, 1/3, 1/4. chọn “ENCODE” để tiếp tục tới trang mã hoá
xuất hiện bộ mã hoã Turbo CDMA2000 chuỗi dữ liệu đưa vào sau khi qua bộ chèn hoán vị ngẫu nhiên cho ra chuỗi mới để đưa vào bộ mã hoá thành phần thứ hai. Ta chọn “CONTINUE” để đưa ra kết quả mã hoá.
Ta thu được kết quả mã hoá như trên hình và đưa ra chuỗi tin cần truyền đi phụ thuộc vào việc chọn tỷ lệ mã trước. chọn “BACK” để quay về trang trước, chọn “EXIT” để thoát, chọn “CONTINUE” để tiếp tục đến trang sau.
Xuất hiện sơ đồ lưới dùng để giải mã, tiến hành giải mã chuỗi tin nhận được y chuỗi này có một số bít lỗi khác với chuỗi truyền. ta tiếp tục chọn “RESULT” để đưa ra kết quả giải mã.
ta tiếp tuc chạy chương trinh tính tỷ lệ lỗi bit và lỗi khung khi nhập các thông số đầu vào khác nhau thì ta thu được những gia trị lỗi bít và lỗi khung khác nhau. Và có đồ thị khác nhau
Sau khi tính lỗi xong nó sẽ đưa kết quả đến để vẽ đồ thị
Ta chạy chương trình mô phỏng nhiều lần ta đưa ra một số nhận xét như sau:
+ Khi số lần lặp tăng từ thì tỉ lệ lỗi bit cũng như tỉ lệ lỗi khung đều giảm. việc thực hiện mã Turbo được cải tiến nhiều, điều này là do sau khi thông tin được chia sẽ giữa các bộ giải mã có nhiều thông tin về ngõ vào và vì vậy đưa ra quyết định chính xác hơn Khi số lần lặp tăng lớn hơn 2 thì việc thực hiện của mã Turbo cũng được cải tiến.Tuy nhiên,mức độ cải tiến không được cao, điều này là do sau lần lặp,các bộ giải mã đã lấy được hết thông tin của mã ngõ vào và do dó : không cho ra ở ngõ ra các giá trị biến đổi nữa như trong lần lặp thứ nhất.Vì vậy, có thể nói việc thực hiện của mã Turbo sẽ đạt đến mức ngưỡng sau vài lần lặp Nếu số lần lặp tăng hơn mức ngưỡng thì việc thực hiện mã Turbo sẽ bị giảm xuống, sau mức ngưỡng thì các lần lặp sau không đem đến thông tin khác hơn đến các bộ giải mã
Như vậy,việc thực hiện mã Turbo tăng khi số lần lặp tăng và thời gian sử dụng giải mã cũng tăng tuyến tính theo số lần lặp.Vì vậy,người thiết kế phải điều chỉnh số lần lặp sao cho phù hợp giữa việc thực hiện của mã và thời gian giải mã.
Tuy nhiên,trong quá trình giải mã,thuật toán SOVA phải chịu 2 loại méo Méo thứ nhất là các ngõ ra mềm vượt quá tối ưu thường được bù bằng hệ số chia mức Méo thứ hai là sự tương quan giữa thông tin bên ngoài và bên trong hay sự tương quan giữa ngõ ra mềm của mỗi bộ giải mã tương ứng với các bit kiểm tra chẳn lẽ của nó và chuổi dữ liệu ngõ vào thông tin
+ Nếu số lượng khung đưa vào càng lớn thì BER và FER càng thấp
+ Mã sẽ hoạt động tốt khi ta lựa chọn kích thước khung lớn.
+ Tỉ lệ lỗi khung(FER) thường lớn hơn tỉ lệ lỗi bit(BER) nhưng lần lặp càng lớn thì BER~FER
PHỤ LỤC MÔ PHỎNG BẰNG MATLAP
+++++++++++++++++++++++++++++++++++++++++++++
FiLe main.m
+++++++++++++++++++++++++++++++++++++++++++++
function main
h0 = figure('Units','points',...
'Color',[1 0.819607843137255 0.941176470588235],...
'MenuBar','none','Name','CHUONG TRINH MO PHONG',...
'NumberTitle','off',...
'PaperPosition',[18 180 576 432],...
'PaperUnits','points',...
'Position',[0 25 600 400.5],...
'Tag','Fig1','ToolBar','none');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'Callback','close;',...
'FontName','vni-times', 'FontSize',16,...
'ListboxTop',0,...
'Position',[0 0 83.25 24.75],...
'String','EXIT', 'Tag','Pushbutton1');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'FontName','vni-times',...
'FontSize',16,'ListboxTop',0,...
'callback','close all;input1',...
'Position',[510 0 90 25],...
'String','CONTINUE','Tag','Pushbutton2');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','vni-times', 'FontSize',16,...
'ListboxTop',0,...
'Position',[96.75 363 392.25 31.5],...
'String', ',...
'Style','text', 'Tag','StaticText1');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','VNI-TIMES','FontSize',16,...
'ListboxTop',0,...
'Position',[95.25 342.75 392.25 31.5],...
'String',TRUONG DAI HOC DAN LAP HAI PHONG’,...
'Style','text','Tag','StaticText2');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','VNI-TIMES','FontSize',16,...
'ListboxTop',0,...
'Position',[88.5 322.5 392.25 31.5],...
'String',KHOA DIEN TU-VIEN THONG’,...
'Style','text', 'Tag','StaticText3');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','VNI-TIMES','FontSize',25,...
'FontWeight','bold','ListboxTop',0,...
'Position',[92.25 243.75 392.25 31.5],...
'String',DO AN TOT NGHIEP,...
'Style','text','Tag','StaticText4');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','VNI-TIMES','FontSize',18,...
'FontWeight','bold','ListboxTop',0,...
'Position',[92.25 145.5 395.25 56.25],...
'String', MA HOA TURBO ',...
'Style','text','Tag','StaticText5');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','vni-times','FontSize',13,...
'FontWeight','bold','ListboxTop',0,...
'Position',[339 95.25 222.75 19.5],...
'horizontalalignment','left',...
'String','GVHD: Th.S DOAN HUU CHUC’,...
'Style','text','Tag','StaticText6');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','vni-times','FontSize',13,...
'FontWeight','bold','ListboxTop',0,...
'Position',[339 73.5 222.75 19.5],...
'horizontalalignment','left',...
'String','SVTH: HOANG HUU HIEP,...
'Style','text','Tag','StaticText7');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','VNI-TIMES','FontSize',18,...
'ListboxTop',0,...
'Position',[110.25 5.75 392.25 31.5],...
'String',Haûi Phoøng Thaùng 07 Naêm 2009',...
'Style','text','Tag','StaticText4');
if nargout > 0, fig = h0;
end;
+++++++++++++++++++++++++++++++++++++++++++++++++
File input1.m
+++++++++++++++++++++++++++++++++++++++++++++++++
clear;
h0 = figure('Color',[1 0.819607843137255 0.941176470588235],...
'NumberTitle','off',...
'MenuBar','none','Name','NHAP THONG SO',...
'PaperPosition',[18 30 576 432],...
'PaperUnits','points','Position',[1 29 800 553],...
'Tag','Fig1','ToolBar','none');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','vni-times','FontSize',20,...
'FontWeight','bold','ListboxTop',0,...
'Position',[147 350.25 305.25 27.75],...
'String','NHAÄP THOÂNG SOÁ NGOÕ VAØO',...
'Style','text','Tag','StaticTextdau');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[12.75 225.25 158.25 18.75],...
'String','Nhaäp chuoãi döõ lieäu vaøo :',...
'Style','text','Tag','StaticText1');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[171.75 222.75 105 22.5],...
'String','',...
'Style','edit','Tag','EditText1dlv',...
'callback', 'dauvao');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','vni-times',...
'FontSize',15,...
'HorizontalAlignment','left',...
'ListboxTop',0,...
'Position',[12.75 204.10 170.5 18.75],...
'String','Tyû leä tín hieäu treân nhieãu:',...
'Style','text','Tag','StaticText2');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','vni-times',...
'FontSize',15,...
'HorizontalAlignment','left',...
'ListboxTop',0,...
'Position',[280 204.10 20.5 18.75],...
'String','dB',...
'Style','text','Tag','StaticText2');
hra = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[1 1 1],...
'FontSize',13,...
'ListboxTop',0,...
'Position',[171.75 201.75 105 21],...
'String','',...
'Style','edit','Tag','EditText13nangluong',...
'callback','tyso_EbNo');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','vni-times',...
'FontSize',15,...
'HorizontalAlignment','left',...
'ListboxTop',0,...
'Position',[12.75 182.25 112.5 18.75],...
'String','Nhaäp soá laàn laëp:',...
'Style','text','Tag','StaticText3');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[1 1 1],...
'FontSize',13,...
'ListboxTop',0,...
'Position',[171.75 180 105 21.75],...
'String','',...
'Style','edit','Tag','EditText3solan',...
'callback','solan_lap');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'FontName','vni-times',...
'FontSize',15,'HorizontalAlignment','left',...
'ListboxTop',0,...
'Position',[12.75 160 112.5 18.75],...
'String','Choïn tyû leä maõ:',...
'Style','text','Tag','StaticText5');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontName','vni-times',...
'FontSize',14,'ListboxTop',0,...
'Position',[171.75 161.25 105 16.5],...
'String',' 1/2 | 1/3 | 1/4',...
'Style','popupmenu',...
'Tag','PopupMenu1tylema','Value',1,...
'callback','tyle_ma');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'Callback','close',...
'FontName','vni-times',...
'FontSize',15,...
'ListboxTop',0,...
'Position',[270.75 3.25 72 21],...
'String','EXIT','Tag','Pushbutton1');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'FontName','VNI-TIMES',...
'FontSize',15,'ListboxTop',0,...
'Position',[510.25 3.25 84.75 21],...
'callback','close all ; mahoa2',...
'String','ENCODE','Tag','Pushbutton2');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'Callback','close all ; main',...
'FontName','vni-times',...
'FontSize',15,...
'ListboxTop',0,...
'Position',[4.75 3.25 72 21],...
'String','BACK','Tag','Pushbutton3');
if nargout > 0, fig = h0; end
++++++++++++++++++++++++++++++++++++++++++++++++
File mahoa2.m
++++++++++++++++++++++++++++++++++++++++++++++++
h0 = figure('Color',[1 0.819607843137255 0.941176470588235],...
'NumberTitle','off',...
'MenuBar','none','Name','NHAP THONG SO',...
'PaperPosition',[18 30 576 432],...
'PaperUnits','points','Position',[1 29 800 553],...
'Tag','Fig1','ToolBar','none');
axis([0 18 0 16]);
axis off;
hold on;
grid;
text(3,16.5,'MAÕ HOAÙ TURBO','fontname','vni-times','fontsize',24,'color','b');
% bo ma hoa 1
p1=line([13.4 14.6 14.6 13.4 13.4],[9.5 9.5 10.5 10.5 9.5],'color','b');
p2=line([10.9 12.1 12.1 10.9 10.9],[9.5 9.5 10.5 10.5 9.5],'color','b');
p3=line([8.4 9.6 9.6 8.4 8.4],[9.5 9.5 10.5 10.5 9.5],'color','b');
plot(6.5,10,'ob','markersize',12);
plot(6.5,10,'+b');
plot(11.5,8.5,'ob','markersize',12);
plot(11.5,8.5,'+b');
p4=line([6.9 8.4],[10 10],'color','b');
p5=line([8.1 8.4 8.1],[10.2 10 9.8],'color','b');
p6=line([9.6 10.9],[10 10],'color','b');
p7=line([12.1 13.4],[10 10],'color','b');
p8=line([10.6 10.9 10.6],[10.2 10 9.8],'color','b');
p9=line([13.1 13.4 13.1],[10.2 10 9.8],'color','b');
plot(11.5,11.5,'ob','markersize',12);
plot(11.5,11.5,'+b');
plot(11.5,13.7,'ob','markersize',12);
plot(11.5,13.7,'+b');
p6=line([14.6 15.5],[10 10],'color','b');
p6=line([10 10],[10 13],'color','b');
p6=line([15.5 15.5],[8.5 13.7],'color','b');
p6=line([13 13],[9 11],'color','b');
p6=line([7.5 7.5],[10 13.7],'color','b');
p6=line([7.5 15.5],[13.7 13.7],'color','b');
p6=line([10.8 11.2 10.8],[13.9 13.7 13.5],'color','b');
p6=line([12.2 11.9 12.2],[13.9 13.7 13.5],'color','b');
p6=line([10 11.2],[13 13.4],'color','b');
p6=line([11 11.2 11.1],[13.5 13.4 13.1],'color','b');
p6=line([7.5 15.5],[11.5 11.5],'color','b');
p6=line([10.8 11.1 10.8],[11.7 11.5 11.3],'color','b');
p6=line([12.2 11.9 12.2],[11.7 11.5 11.3],'color','b');
p6=line([13 11.7],[11 11.3],'color','b');
p6=line([11.9 11.7 12],[11.1 11.3 11.4],'color','b');
p6=line([11.5 11.5],[14 14.7],'color','b');
p6=line([11.5 16],[14.7 14.7],'color','b');
p6=line([15.7 16 15.7],[14.9 14.7 14.5],'color','b');
p6=line([10 11.2],[10.5 11.3],'color','b');
p6=line([10.8 11.2 10.9],[11.4 11.3 10.8],'color','b');
p6=line([11.5 11.5],[11.8 12.5],'color','b');
p6=line([11.5 16],[12.5 12.5],'color','b');
p6=line([15.7 16 15.7],[12.7 12.5 12.3],'color','b');
p6=line([13 11.8],[9 8.7],'color','b');
p6=line([5 6.2],[10 10],'color','b');
p6=line([2 4],[10.25 10.25],'color','b');
p6=line([4 4],[9.75 8.5],'color','b');
p6=line([4 15.5],[8.5 8.5],'color','b');
p6=line([6 6.2 6],[10.2 10 9.8],'color','b');
p6=line([5.5 5.5],[10 15.3],'color','b');
p6=line([11.95 11.8 12.1],[8.9 8.7 8.6],'color','b');
p6=line([5.5 16],[15.3 15.3],'color','b');
p6=line([6.5 6.5],[8.5 9.6],'color','b');
p6=line([4 5],[10.25 10],'color','b');
p6=line([4.2 4 4.2],[10.4 10.25 10.05],'color','b');
p6=line([6.3 6.5 6.7],[9.3 9.6 9.3],'color','b');
p6=line([15.7 16 15.7],[15.5 15.3 15.1],'color','b');
p6=line([12.2 11.9 12.2],[8.7 8.5 8.3],'color','b');
plot([5 5.5 7.5 7.5 10 13 15.5 6.5 4 4 10 10 15.5],[10 10 10 11.5 10 10 10 8.5 10.25 9.75 10.5 13 11.5],'.b','markersize',12);
% bo ma hao 2
p1=line([13.4 14.6 14.6 13.4 13.4],[1.5 1.5 2.5 2.5 1.5],'color','b');
p2=line([10.9 12.1 12.1 10.9 10.9],[1.5 1.5 2.5 2.5 1.5],'color','b');
p3=line([8.4 9.6 9.6 8.4 8.4],[1.5 1.5 2.5 2.5 1.5],'color','b');
plot(6.5,2,'ob','markersize',12);
plot(6.5,2,'+b');
plot(11.5,0.5,'ob','markersize',12);
plot(11.5,0.5,'+b');
p4=line([6.9 8.4],[2 2],'color','b');
p5=line([8.1 8.4 8.1],[2.2 2 1.8],'color','b');
p6=line([9.6 10.9],[2 2],'color','b');
p7=line([12.1 13.4],[2 2],'color','b');
p8=line([10.6 10.9 10.6],[2.2 2 1.8],'color','b');
p9=line([13.1 13.4 13.1],[2.2 2 1.8],'color','b');
plot(11.5,3.5,'ob','markersize',12);
plot(11.5,3.5,'+b');
plot(11.5,5.7,'ob','markersize',12);
plot(11.5,5.7,'+b');
p6=line([14.6 15.5],[2 2],'color','b');
p6=line([10 10],[2 5],'color','b');
p6=line([15.5 15.5],[0.5 5.7],'color','b');
p6=line([13 13],[1 3],'color','b');
p6=line([7.5 7.5],[2 5.7],'color','b');
p6=line([7.5 15.5],[5.7 5.7],'color','b');
p6=line([10.8 11.2 10.8],[5.9 5.7 5.5],'color','b');
p6=line([12.2 11.9 12.2],[5.9 5.7 5.5],'color','b');
p6=line([10 11.2],[5 5.4],'color','b');
p6=line([11 11.2 11.1],[5.5 5.4 5.1],'color','b');
p6=line([7.5 15.5],[3.5 3.5],'color','b');
p6=line([10.8 11.1 10.8],[3.7 3.5 3.3],'color','b');
p6=line([12.2 11.9 12.2],[3.7 3.5 3.3],'color','b');
p6=line([13 11.7],[3 3.3],'color','b');
p6=line([11.9 11.7 12],[3.1 3.3 3.4],'color','b');
p6=line([11.5 11.5],[6 6.7],'color','b');
p6=line([11.5 16],[6.7 6.7],'color','b');
p6=line([15.7 16 15.7],[6.9 6.7 6.5],'color','b');
p6=line([10 11.2],[2.5 3.3],'color','b');
p6=line([10.8 11.2 10.9],[3.4 3.3 2.8],'color','b');
p6=line([11.5 11.5],[3.8 4.5],'color','b');
p6=line([11.5 16],[4.5 4.5],'color','b');
p6=line([15.7 16 15.7],[4.7 4.5 4.3],'color','b');
p6=line([13 11.8],[1 0.7],'color','b');
p6=line([5 6.2],[2 2],'color','b');
p6=line([3 4],[2.25 2.25],'color','b');
p6=line([4 4],[1.75 0.5],'color','b');
p6=line([4 15.5],[0.5 0.5],'color','b');
p6=line([6 6.2 6],[2.2 2 1.8],'color','b');
p6=line([5.5 5.5],[2 7.3],'color','b');
p6=line([11.95 11.8 12.1],[0.9 0.7 0.6],'color','b');
p6=line([5.5 16],[7.3 7.3],'color','b');
p6=line([6.5 6.5],[0.5 1.6],'color','b');
p6=line([4 5],[2.25 2],'color','b');
p6=line([4.2 4 4.2],[2.4 2.25 2.05],'color','b');
p6=line([6.3 6.5 6.7],[1.3 1.6 1.3],'color','b');
p6=line([15.7 16 15.7],[7.5 7.3 7.1],'color','b');
p6=line([12.2 11.9 12.2],[0.7 0.5 0.3],'color','b');
plot([5 5.5 7.5 7.5 10 13 15.5 6.5 4 4 10 10 15.5],[2 2 2 3.5 2 2 2 0.5 2.25 1.75 2.5 5 3.5],'.b','markersize',12);
% bo chen
p6=line([1.5 4.5 4.5 1.5 1.5],[5 5 7 7 5],'color','b');
p6=line([3 3],[10.25 7 ],'color','b');
p6=line([3 3],[5 2.25],'color','b');
text(1.9,6,'interleaver','fontsize',11.5,'color','r');
text(14.5,15.7,'X','fontsize',12,'color','r');
text(14.5,14.2,'Y','fontsize',12,'color','r');
text(14.9,14.1,'0','fontsize',8,'color','r');
text(14.5,12,'Y','fontsize',12,'color','r');
text(14.9,11.9,'1','fontsize',8,'color','r');
text(14.5,7.7,'X’','fontsize',12,'color','r');
text(14.5,6.2,'Y’','fontsize',12,'color','r');
text(14.9,6.1,'0','fontsize',8,'color','r');
text(14.5,4,'Y’','fontsize',12,'color','r');
text(14.9,3.9,'1','fontsize',8,'color','r');
uicontrol('Parent',h0,...
'BackgroundColor',[ 0.917647058823529 0.658823529411765 0.917647058823529 ],...
'FontName','VNI-TIMES',...
'Callback','close all;ketqua_mh;',...
'FontSize',13,...
'Position',[700 8.25 100.75 21.75],...
'String','CONTINUE',...
'Tag','Pushbutton3');
uicontrol('Parent',h0,...
'BackgroundColor',[ 0.917647058823529 0.658823529411765 0.917647058823529 ],...
'Callback','close all; input1;',...
'FontName','VNI-TIMES',...
'FontSize',13,...
'Position',[8.75 8.25 80.25 21.75],...
'String','BACK',...
'Tag','Pushbutton4');
uicontrol( 'Parent',h0,...
'FontSize',13, 'HorizontalAlignment','center',...
'Backgroundcolor','w','Position',[100 335 90 30],...
'String',vao,...
'Style','edit','Tag','EditText');
uicontrol('Parent',h0,...
'BackgroundColor',[ 0.917647058823529 0.658823529411765 0.917647058823529 ],...
'FontName','VNI-TIMES',...
'Callback','close all;',...
'FontSize',13,...
'Position',[380 8.25 81.75 21.75],...
'String','EXIT',...
'Tag','Pushbutton3');
[kqchen,n_nh,dodai]=chen(vao);
uicontrol( 'FontSize',13, 'HorizontalAlignment','center',...
'Backgroundcolor','w','Position',[160 160 90 30],...
'String',kqchen,...
'Style','edit','Tag','EditText8sc');
+++++++++++++++++++++++++++++++++++++++++++++++
File ketqua_mh.m
+++++++++++++++++++++++++++++++++++++++++++++++
h0 = figure('Color',[1 0.819607843137255 0.941176470588235],...
'NumberTitle','off',...
'MenuBar','none','Name','KET QUA MA HOA',...
'PaperPosition',[18 30 576 432],...
'PaperUnits','points','Position',[1 29 800 553],...
'Tag','Fig1','ToolBar','none');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','vni-times','FontSize',20,...
'FontWeight','bold','ListboxTop',0,...
'Position',[147 350.25 305.25 27.75],...
'String','Keát quaû ra sau khi maõ hoaù',...
'Style','text','Tag','StaticTextdau');
[y,y1,y2]=mahoa_turbo(vao);
y2=num2str(y2);
y1=num2str(y1);
y=num2str(y);
[x,x1,x2]=mahoa_turbo(kqchen);
x2=num2str(x2);
x1=num2str(x1);
x=num2str(x);
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[12.75 225.25 30.25 18.75],...
'String','X :',...
'Style','text','Tag','StaticText1');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[50 222.75 200 22.5],...
'String',y,...
'Style','edit','Tag','EditText6');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[12.75 200.25 30.25 18.75],...
'String','Y1 :',...
'Style','text','Tag','StaticText1');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[50 198.75 200 22.5],...
'String',y1,...
'Style','edit','Tag','EditText5');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[12.75 178.25 30.25 18.75],...
'String','Y2 :',...
'Style','text','Tag','StaticText1');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[50 175 200 22.5],...
'String',y2,...
'Style','edit','Tag','EditText1');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[350 225.25 35.25 18.75],...
'String','X’ :',...
'Style','text','Tag','StaticText1');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[390 222.75 200 22.5],...
'String',x,...
'Style','edit','Tag','EditText');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[350 200.25 35.25 18.75],...
'String','Y’1 :',...
'Style','text','Tag','StaticText1');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[390 198.75 200 22.5],...
'String',x1,...
'Style','edit','Tag','EditText3');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[350 178.25 35.25 18.75],...
'String','Y’2 :',...
'Style','text','Tag','StaticText1');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[390 175 200 22.5],...
'String',x2,...
'Style','edit','Tag','EditText1');
y=str2num(y);
y1=str2num(y1);
y2=str2num(y2);
x=str2num(x);
x1=str2num(x1);
x2=str2num(x2);
dodai=length(vao);
out=chuoi_truyen(y,y1,y2,x,x1,x2,tyle,dodai)
for i=1:length(out)
tr(i)=num2str(out(i));
end
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[20 130.25 130.25 18.75],...
'String','Chuoãi tin truyeàn ñi :',...
'Style','text','Tag','StaticText1');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[150 128 400 22.5],...
'String',tr,...
'Style','edit','Tag','EditText1');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[80 270 150.25 18.75],...
'String','chuoãi döõ lieäu vaøo :',...
'Style','text','Tag','StaticText1');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[200 268.75 115 22.5],...
'String',vao,...
'Style','edit','Tag','EditText1');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'Callback','close;',...
'FontName','vni-times', 'FontSize',16,...
'ListboxTop',0,...
'Position',[260 0 83.25 24.75],...
'String','EXIT', 'Tag','Pushbutton1');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'FontName','vni-times',...
'FontSize',16,'ListboxTop',0,...
'callback','close all;sdgm_turbo3',...
'Position',[510 0 100 25],...
'String','CONTINUE','Tag','Pushbutton2');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'FontName','vni-times',...
'FontSize',16,'ListboxTop',0,...
'callback','close all;mahoa2',...
'Position',[0 0 80 25],...
'String','BACK','Tag','Pushbutton2');
+++++++++++++++++++++++++++++++++++++++++++
File sdgm_turbo3.m
++++++++++++++++++++++++++++++++++++++++++++
n=dodai;
h0 = figure('Color',[1 0.819607843137255 0.941176470588235],...
'MenuBar','none', 'Name','SO DO GIAI MA TURBO',...
'NumberTitle','off', 'PaperPosition',[18 180 576 432],...
'PaperUnits','points','Position',[1 29 800 553],...
'Tag','Fig1','ToolBar','none');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','vni-times',...
'FontSize',25,...
'ListboxTop',0,...
'Position',[148.5 366.75 317.25 36],...
'String','SÔ ÑOÀ GIAÛI MAÕ SOVA',...
'Style','text',...
'Tag','StaticText1');
h2 = uicontrol('Parent',h0, 'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','vni-times', 'FontSize',13, 'ListboxTop',0,...
'Position',[18 65.25 114 21.75],'String','Chuoãi tin truyeàn x:',...
'Style','text','Tag','StaticText4');
h1 = uicontrol('Parent',h0, 'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',15,'ListboxTop',0,...
'Position',[132.75 58.5 300 27],'String',tr,...
'Style','edit','Tag','EditText3');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','vni-times','FontSize',13,'ListboxTop',0,...
'Position',[18.75 36.75 112.5 19.5], 'String','Chuoãi tin nhaän y:',...
'Style','text', 'Tag','StaticText5');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','vni-times','FontSize',13,'ListboxTop',0,...
'Position',[18.75 7.5 113.25 21],'String','Chuoãi tin giaûi maõ u:',...
'Style','text','Tag','StaticText6');
h1 = uicontrol('Parent',h0,'Units','points', 'BackgroundColor',[1 1 1],...
'FontSize',15,'ListboxTop',0,'Position',[132 8.25 78 21],...
'String',vao,'Style','edit','Tag','EditText5');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'FontSize',15,'ListboxTop',0,...
'Position',[505.5 272.25 76.5 18],'String','RESULT','Tag','Pushbutton2',...
'callback','close ;ketqua_giaima');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'FontSize',15,'ListboxTop',0,'Position',[507 241.5 76.5 20.25],...
'String','BACK', 'Tag','Pushbutton4',...
'callback','close ;ketqua_mh');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'FontSize',15,'ListboxTop',0,'Position',[507 211.5 76.5 20.25],...
'String','EXIT', 'Tag','Pushbutton4',...
'callback','close all');
h1 = axes('Parent',h0, 'Box','on','CameraUpVector',[0 1 0],...
'CameraUpVectorMode','manual','Color',[1 1 1],...
'NextPlot','add','Tag','Axes1','Visible','off','XColor',[0 0 0],...
'XGrid','on','XLim',[-1 5+n],'XLimMode','manual',...
'YColor',[0 0 0],'YGrid','on','YLim',[0 13],'YLimMode','manual',...
'ZColor',[0 0 0],'ZGrid','on');
plot([0 3],[11 11],'b.-',[0 1],[11 10],'r.:');
plot([1 2],[11 10],'r.:');
plot([1 2],[10 9],'b.-',[1 2],[10 8],'r.:');
plot([2 3],[11 10],'r.:');
plot([2 3],[10 9],'b.-',[2 3],[10 8],'r.:');
plot([2 3],[9 7],'r.:',[2 3],[9 6],'b.-');
plot([2 3],[8 5],'r.:',[2 3],[8 4],'b.-');
for i=3:3+n-1
plot([i i+1],[11 11],'b.-',[i i+1],[11 10],'r.:');
plot([i i+1],[10 9],'b.-',[i i+1],[10 8],'r.:');
plot([i i+1],[9 7],'r.:',[i i+1],[9 6],'b.-');
plot([i i+1],[8 5],'r.:',[i i+1],[8 4],'b.-');
plot([i i+1],[7 11],'r.:',[i i+1],[7 10],'b.-');
plot([i i+1],[6 9],'r.:',[i i+1],[6 8],'b.-');
plot([i i+1],[5 7],'b.-',[i i+1],[5 6],'r.:');
plot([i i+1],[4 5],'b.-',[i i+1],[4 4],'r.:');
end;
text(-1,11,'000','fontsize',13,'color','k');
text(-1,10,'100','fontsize',13,'color','k');
text(-1,9,'010','fontsize',13,'color','k');
text(-1,8,'110','fontsize',13,'color','k');
text(-1,7,'001','fontsize',13,'color','k');
text(-1,6,'101','fontsize',13,'color','k');
text(-1,5,'011','fontsize',13,'color','k');
text(-1,4,'111','fontsize',13,'color','k');
plot([3 4.5],[2.5 2.5],'b.-');
plot([3 4.5],[2 2],'r.:');
text(4.7,2.5,'Bít vaøo 0','fontname','vni-times','fontsize',15,'color','k');
text(4.7,2,'Bít vaøo 1','fontname','vni-times','fontsize',15,'color','k');
text(-1,12,'state','fontsize',15,'color','k');
for i=0:3+n
text(i,3.5,num2str(i),'fontsize',10,'color','k');
end
text(4+n,3.5,'time','fontsize',15,'color','k');
nhan=chuoinhan(y,y1,y2,x,x1,x2,tyle,dodai,EbN0);
for i=1:length(nhan)
ch_nh(i)=num2str(nhan(i));
end
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',15, 'ListboxTop',0,...
'Position',[132.75 32.25 300 24.75],'String',ch_nh,...
'Style','edit','Tag','EditText4');
++++++++++++++++++++++++++++++++++++++++++++++++
File ketqua_giaima.m
++++++++++++++++++++++++++++++++++++++++++++++++
h0 = figure('Color',[1 0.819607843137255 0.941176470588235],...
'NumberTitle','off',...
'MenuBar','none','Name','KET QUA GIAI MA',...
'PaperPosition',[18 30 576 432],...
'PaperUnits','points','Position',[1 29 800 553],...
'Tag','Fig1','ToolBar','none');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],...
'FontName','vni-times','FontSize',20,...
'FontWeight','bold','ListboxTop',0,...
'Position',[147 350.25 305.25 27.75],...
'String','KEÁT QUAÛ GIAÛI MAÕ TURBO',...
'Style','text','Tag','StaticText4');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[5.75 225.25 130.25 18.75],...
'String','Chuoãi döõ lieäu vaøo :',...
'Style','text','Tag','StaticText1');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[155.75 222.75 105 22.5],...
'String',vao,...
'Style','edit','Tag','EditText3');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[5.75 200.25 160.25 18.75],...
'String','chuoãi döõ lieäu truyeàn ñi:',...
'Style','text','Tag','StaticText1');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[155.75 197.75 215 22.5],...
'String',tr,...
'Style','edit','Tag','EditText3');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[5.75 175.25 160.25 18.75],...
'String','chuoãi döõ lieäu nhaän ñöôïc:',...
'Style','text','Tag','StaticText1');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[155.75 172.75 215 22.5],...
'String',ch_nh,...
'Style','edit','Tag','EditText4');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[5.75 150.25 160.25 18.75],...
'String','chuoãi giaûi maõ ñöôïc:',...
'Style','text','Tag','StaticText1');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[375 225.25 160.25 18.75],...
'String','Chieàu daøi chuoãi döõ lieäu:',...
'Style','text','Tag','StaticText1');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[525 222.75 40 22.5],...
'String',num2str(dodai),...
'Style','edit','Tag','EditText3');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[375 200.25 160.25 18.75],...
'String','Soá bít bò nhieãu:',...
'Style','text','Tag','StaticText1');
loi=xor(nhan,out);
s=0;
for i=1:length(loi)
s=s+loi(i);
end
s=num2str(s);
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[525 197.75 40 22.5],...
'String',s,...
'Style','edit','Tag','EditText3');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[375 175.25 160.25 18.75],...
'String','soá bít giaûi maõ sai:',...
'Style','text','Tag','StaticText1');
kq = gaima_turbo(vao,EbN0,lan);
for i=1:dodai
vao(i)=str2num(vao(i));
end
s=0;
v=xor(vao,kq(1:dodai));
for i=1:dodai
ketqua(i)=num2str(kq(i));
s=s+v(i);
end
loi=num2str(s);
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[525 172.75 40 22.5],...
'String',loi,...
'Style','edit','Tag','EditText3');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[375 150.25 160.25 18.75],...
'String','soá laàn laëp giaûi maõ:',...
'Style','text','Tag','StaticText1');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[525 147.75 40 22.5],...
'String',lan,...
'Style','edit','Tag','EditText3');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'Callback','close all ;sdgm_turbo3',...
'FontName','vni-times',...
'FontSize',15,...
'ListboxTop',0,...
'Position',[4.75 3.25 72 21],...
'String','BACK','Tag','Pushbutton3');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'Callback','close all',...
'FontName','vni-times',...
'FontSize',15,...
'ListboxTop',0,...
'Position',[260 3.25 72 21],...
'String','EXIT','Tag','Pushbutton3');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[155.75 147.75 105 22.5],...
'String',ketqua,...
'Style','edit','Tag','EditText3');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'Callback','close all;tinhloi',...
'FontName','vni-times',...
'FontSize',15,...
'ListboxTop',0,...
'Position',[520 3.25 80 21],...
'String','TINH LOI','Tag','Pushbutton3');
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
File tinhloibit_loikhung.m
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function [ber,fer]= tinhloibit_loikhung(EbN0db,dec_alg,L_total,niter,ferrlim)
EbN0db=str2num(EbN0db);
% Frame size
L_total=str2num(L_total);
dec_alg=str2num(dec_alg);
niter=str2num(niter);
ferrlim=str2num(ferrlim);
g = [ 1 1 1;1 0 1 ];
[n,K] = size(g);
m = K - 1;
nstates = 2^m;
%puncture = 0, puncturing into rate 1/2;
puncture = 0;
% Code rate
rate = 1/(2+puncture);
% Fading amplitude; a=1 in AWGN channel
a = 1;
en = 10^(EbN0db/10); % convert Eb/N0 from unit db to normal numbers
L_c = 4*a*en*rate; % reliability value of the channel
sigma = 1/sqrt(2*rate*en); % standard deviation of AWGN noise
% Clear bit error counter and frame error counter
errs = zeros(1,niter);
nferr = zeros(1,niter);
nframe = 0; % clear counter of transmitted frames
while nferr(niter)<ferrlim
nframe = nframe + 1;
x = round(rand(1, L_total-m)); % info. bits
[temp, alpha] = sort(rand(1,L_total)); % random interleaver mapping
en_output = encoderm( x, g, alpha, puncture ) ; % encoder output (+1/-1)
r = en_output+sigma*randn(1,L_total*(2+puncture)); % received bits
yk = demultiplex(r,alpha,puncture); % demultiplex to get input for decoder 1 and 2
% Scale the received bits
rec_s = 0.5*L_c*yk;
% Initialize extrinsic information
L_e(1:L_total) = zeros(1,L_total);
for iter = 1:niter
% Decoder one
L_a(alpha) = L_e; % a priori info.
if dec_alg == 0
L_all = logmapo(rec_s(1,:), g, L_a, 1); % complete info.
else
L_all = sova0(rec_s(1,:), g, L_a, 1); % complete info.
end
L_e = L_all - 2*rec_s(1,1:2:2*L_total) - L_a; % extrinsic info.
% Decoder two
L_a = L_e(alpha); % a priori info.
if dec_alg == 0
L_all = logmapo(rec_s(2,:), g, L_a, 2); % complete info.
else
L_all = sova0(rec_s(2,:), g, L_a, 2); % complete info.
end
L_e = L_all - 2*rec_s(2,1:2:2*L_total) - L_a; % extrinsic info.
% Estimate the info. bits
xhat(alpha) = (sign(L_all)+1)/2;
% Number of bit errors in current iteration
err(iter) = length(find(xhat(1:L_total-m)~=x));
% Count frame errors for the current iteration
if err(iter)>0
nferr(iter) = nferr(iter)+1;
end
end %iter
% Total number of bit errors for all iterations
errs(1:niter) = errs(1:niter) + err(1:niter);
end %while
ber=errs/nframe/ (L_total-m );
fer=nferr/nframe;
+++++++++++++++++++++++++++++++++++++++++++++++++++++
File encoder_bit.m
+++++++++++++++++++++++++++++++++++++++++++++++++++++
function [output, state] = encode_bit(g, input, state)
[n,k] = size(g);
m = k-1;
for i=1:n
output(i) = g(i,1)*input;
for j = 2:k
output(i) = xor(output(i),g(i,j)*state(j-1));
end;
end
state = [input, state(1:m-1)];
++++++++++++++++++++++++++++++++++++++++++++++++++++
File encoder.m
++++++++++++++++++++++++++++++++++++++++++++++++++++
%--------------------------------------------------------------------------
function y = rsc_encode(g, x, terminated)
[n,K] = size(g);
m = K - 1;
if terminated>0
L_info = length(x);
L_total = L_info + m;
else
L_total = length(x);
L_info = L_total - m;
end
% initialize the state vector
state = zeros(1,m);
% generate the codeword
for i = 1:L_total
if terminated0 & i<=L_info)
d_k = x(1,i);
elseif terminated>0 & i>L_info
% terminate the trellis
d_k = rem( g(1,2:K)*state', 2 );
end
a_k = rem( g(1,:)*[d_k state]', 2 );
[output_bits, state] = encode_bit(g, a_k, state);
% since systematic, first output is input bit
output_bits(1,1) = d_k;
y(n*(i-1)+1:n*i) = output_bits;
end
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
File tinhloi.m
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
h0 = figure('Color',[1 0.819607843137255 0.941176470588235],...
'NumberTitle','off',...
'MenuBar','none','Name','NHAP THONG SO TNH TY LE LOI BIT VA TY LE LOI KHUNG',...
'PaperPosition',[18 30 576 432],...
'PaperUnits','points','Position',[1 29 800 553],...
'Tag','Fig1','ToolBar','none');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[50 300 300 18.75],...
'String','Thuaät toaùn giaûi maõ log/sova(0/1):',...
'Style','text','Tag','StaticText1');
hdl = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[260 298 105 22.5],...
'String','',...
'Style','edit','Tag','EditText1thuattoan',...
'callback', 'thuattoan');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[50 275 158.25 18.75],...
'String','Choïn kích thöôùc khung:',...
'Style','text','Tag','StaticText1');
hd2 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[260 273 105 22.5],...
'String','',...
'Style','edit','Tag','EditText2kthuoc',...
'callback', 'kichthuoc');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[50 250 158.25 18.75],...
'String','Soá laàn laëp :',...
'Style','text','Tag','StaticText1');
hd3 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[260 247 105 22.5],...
'String','',...
'Style','edit','Tag','EditText3lanlap',...
'callback', 'lanlap');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[50 225 158.25 18.75],...
'String','Choïn tyû soá naêng löôïng :',...
'Style','text','Tag','StaticText1');
hd4 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[260 223 105 22.5],...
'String','',...
'Style','edit','Tag','EditText4nangluong',...
'callback', 'nangluong');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 0.819607843137255 0.941176470588235],'ListboxTop',0,...
'FontName','vni-times', 'FontSize',15,...
'HorizontalAlignment','left',...
'Position',[50 200 158.25 18.75],...
'String','choïn soá khung bò loãi :',...
'Style','text','Tag','StaticText1');
hd5 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[1 1 1],'FontSize',13,...
'ListboxTop',0,'Position',[260 198 105 22.5],...
'String','',...
'Style','edit','Tag','EditText5sokhungloi',...
'callback', 'khungloi');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'Callback','close',...
'FontName','vni-times',...
'FontSize',15,...
'ListboxTop',0,...
'Position',[270.75 3.25 72 21],...
'String','EXIT','Tag','Pushbutton1');
h1 = uicontrol('Parent',h0,'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'FontName','VNI-TIMES',...
'FontSize',15,'ListboxTop',0,...
'Position',[510.25 3.25 84.75 21],...
'callback','close all ;vedothi',...
'String','VEDOTHI','Tag','Pushbutton2');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'Callback','close all ; ketqua_giaima',...
'FontName','vni-times',...
'FontSize',15,...
'ListboxTop',0,...
'Position',[4.75 3.25 72 21],...
'String','BACK','Tag','Pushbutton3');
+++++++++++++++++++++++++++++++++++++++++++
File vedothi.m
+++++++++++++++++++++++++++++++++++++++++++
h0 = figure('Color',[1 0.819607843137255 0.941176470588235],...
'MenuBar','none', 'Name','HIEN THI KET QUA TINH LOI BIT VA LOI KHUNG',...
'NumberTitle','off', 'PaperPosition',[18 180 576 432],...
'PaperUnits','points','Position',[1 29 800 553],...
'Tag','Fig1','ToolBar','none');
axis([0 18 0 16]);
axis ;
hold on;
grid off;
[ber,fer]= tinhloibit_loikhung(EbN0db,dec_alg,L_total,niter,ferrlim);
niter=str2num(niter);
x=(1:1:niter);
subplot(1,2,1);
plot(x,ber);
xlabel('so lan lap');
ylabel('ty le loi bit');
subplot(1,2,2);
plot(x,fer);
xlabel('so lan lap');
ylabel('ty le loi khung');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'Callback','close all',...
'FontName','vni-times',...
'FontSize',15,...
'ListboxTop',0,...
'Position',[520 3.25 72 21],...
'String','END','Tag','Pushbutton3');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'Callback','close all;tinhloi',...
'FontName','vni-times',...
'FontSize',15,...
'ListboxTop',0,...
'Position',[0 3.25 72 21],...
'String','BACK','Tag','Pushbutton3');
h1 = uicontrol('Parent',h0,...
'Units','points',...
'BackgroundColor',[0.917647058823529 0.658823529411765 0.917647058823529],...
'Callback','close all',...
'FontName','vni-times',...
'FontSize',15,...
'ListboxTop',0,...
'Position',[260 3.25 72 21],...
'String','EXIT','Tag','Pushbutton3');
Mét sè tµi liÖu tham kh¶o
Alister Burr “Modulation and Coding for wireless Communications”, Prentice Hall,2001
C.Richard Johnson et al., “Telecommunication Breakdown”, Prentice Hall, 2004.
John B. Anderson, “Digital Transmission Engineering”, Prentice Hall,1999.
M. C. Valenti, Turbo Codes and Iterative Processing, in proc IEEE New Zealand Wireless Comm., Symp. ’98 (Aukland, New Zealand), Nov. (1998).
Performance of Multi Binary Turbo Codes on Rice Flat Fading Channels - Horia Balta, Maria Kovaci,Miranda Naforniţă Department of Communication, University of Timişoara, Faculty ofTelecommunication, Postal address, 12345 Timişoara, România, E-Mail: balta@etc.upt.ro, kmaria@etc.upt.ro, monica.nafornita@etc.upt.ro
Sergio Benedetto and Ezio Biglieri, “Principles of Digital Transmission with wireless amplication”, Kluwer, 1999.
Sklar, “Digital Communication” 2 edition, Mc Graw-Hill, 2001.
Turbo Code Applications a Journey from a Paper to realization Sripimanwat, Keattisak (Ed.)2005, XXII, 386 p., Hardcover. ISBN: 978-1-4020-3686-6
Turbo Codes - Desirable and Designable Giulietti, Alexandre, Bougard, Bruno, Van Der Perre, Liesbet 2003, 162 p., Hardcover ISBN: 978-1-4020-7660-2
Turbo Codes - Principles and Applications. Series: The Springer International Series in Engineering and Computer Science, Vol. 559. Vucetic, Branka, Jinhong Yuan 2000, 344 p., Hardcover. ISBN: 978-0-7923-7868-6
Turbo Coding - Series: The Springer International Series in Engineering and Computer Science, Vol. 476. Heegard, Chris, Wicker, Stephen B.1999, 232 p., Hardcover.ISBN: 978-0-7923-8378-9
X. Wang, H. V. Poor, Iterative (Turbo) Soft Interference Cencellation anh Decoding for Coded CDMA, IEEE Trans. on Comm., Vol. 47, No. 7, July (1999).
Yufei, “ Matlab code for experiment on turbo codes” ( updated June 07,1999)
“Turbo”, Luận Văn Thạc Sĩ Kỹ Thuật, Học viện khoa học kỹ thuật quân sự, Bộ Quốc phòng, 2003
Chất lượng các bộ tách song trong hệ thông đa truy cập CDMA có mã hóa Turbo- Vũ Đình Thành, Lê Ngọc Phúc -Trường Đại Học Bách Khoa, ĐHQ-HCM (Bài nhận ngày 30 tháng 04 năm 2006, hoàn chỉnh sửa chữa ngày 26 tháng 02 năm 2007)
Đặng Văn Chuyết, Nguyễn Tuấn Anh. Cơ sở lý thuyết truyền tin. NXB Giáo Dục, 1998.
Nguyễn Văn Quang Nghiên cứu sử dụng mã hóa Turbo vào hệ thống di động thế hệ thứ 3 để chống nhiễu và sửa sai luận án Thạc sĩ ngành Điện tử - Viễn thông - Điều khiển Trường Đại học Giao Thông Vận Tải - Cơ sở II
Phạm Hồng Liên, Chung Thị Ngọc Hạnh; Nghiên cứu ứng dụng mã TURBO vào hệ thống thông tin di động thế hệ 3 MT- 2000; Tạp chí phát triển khoa học công nghệ Đại học quốc gia Tp.Hồ Chí Minh; 07-2001
Tác giả: Nguyễn Hiếu Minh. Nguyễn Văn Hậu. Sách : Cơ Sở Lý Thuyết Truyền Tin Nhà xuất bản: Nhà xuất bản Khoa Học Kỹ Thuật
Website trực tuyến :
http:/.thuvien-ebook.com
kÕt luËn
Như vậy, Mã Turbo (hay mã lốc) là một kỹ thuật mã hóa sửa sai (FEC). Turbo Codes thuộc họ mã lưới (mã hóa theo Trellis) và được xây dựng dựa trên 1 mã chập (Convolution Codes).
Sở dĩ gọi là mã Turbo (lốc xoáy) vì cấu trúc giải mã được thực hiện theo giải thuật vòng lặp (iteration) và sau mỗi vòng lặp, tỷ số tín hiệu trên nhiễu SNR sẽ được tăng dần.Mã Turbo là bộ mã có chất lượng tốt nhất so với các bộ mã đã biết từ trước tới nay với độ phức tạp của bộ mã hóa cũng như bộ giải mã chấp nhận được.
Luận văn với đề tài “ Nghiên cứu mã Turbo” đã nêu được vai trò của mã kênh trong hệ thông tin số, lý thuyết của Shannon và các bộ mã thường được sử dụng để nâng cao chất lượng của hệ thống như mã chập, mã kề. Các chương cũng đã phân tích được cấu trúc và nguyên lý của mã Turbo thông qua quá trình mã hóa và giải mã lặp. Đề tài đã nêu lên hai thuật toán giải mã Turbo đó là thuật toán MAP và thuật toán SOVA. Nội dung của đề tài nêu lên các ứng dụng và hạn chế của mã hóa Turbo trong hệ thống thông tin di động CDMA 2000.
Và cuối cùng là chương trình mô phỏng bằng Matlab về ứng dụng của mã hóa Turbo trong hệ thông thông tin di động CDMA.
Các file đính kèm theo tài liệu này:
- 5.HoangHuuHiep_DT901.docx