Tài liệu Mô phỏng các file: MÔ PHỎNG
I.\QUÁ TRÌNH MÔ PHỎNG:
Các file .m trong Matlab sử dụng để mô phỏng bao gồm:
b2d.m gmaconv.m reedsdec.m
d2b.m mahoaconv.m reedsenc.m
dcdmt.m option1.m convdmt.m
gendata.m option.m rsdmt.m
simdmt.m sodokhoi.m chitiet.m
Để đảm bảo việc mô phỏng diễn ra ổn định các file trên phải cùng nằm trong một thu mục.Giả sử các file trên cùng ở trong thư mục “Sim”.Sau khi khởi động Matlab 6.5,chuyển đến thư mục hiện hành là “Sim”.Tại đó,gọi file chính là “simdmt.m” bằng lệnh “simdmt” tại cửa sổ lệnh.Một cửa sổ sẽ xuất hiện như sau:
Click chuột vào “Tiep” để tiếp tục hoặc “Thoat” để dừng việc mô phỏng.Khi click chuột vào “Thoat” thì sẽ trở lại cửa sổ lệnh của Matlab.Nếu click vào “Tiep” sẽ xuất hiện cửa sổ có tên là “Sơ đồ khối” như sau:
Cửa sổ này mô tả quá trình mô phỏng điều chế DMT qua nhiều khối như khối “RS(255,223)”,khối “CONV-enc”,…click chuột vào từng khối để biết...
12 trang |
Chia sẻ: hunglv | Lượt xem: 1581 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Mô phỏng các file, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
MÔ PHỎNG
I.\QUÁ TRÌNH MÔ PHỎNG:
Các file .m trong Matlab sử dụng để mô phỏng bao gồm:
b2d.m gmaconv.m reedsdec.m
d2b.m mahoaconv.m reedsenc.m
dcdmt.m option1.m convdmt.m
gendata.m option.m rsdmt.m
simdmt.m sodokhoi.m chitiet.m
Để đảm bảo việc mô phỏng diễn ra ổn định các file trên phải cùng nằm trong một thu mục.Giả sử các file trên cùng ở trong thư mục “Sim”.Sau khi khởi động Matlab 6.5,chuyển đến thư mục hiện hành là “Sim”.Tại đó,gọi file chính là “simdmt.m” bằng lệnh “simdmt” tại cửa sổ lệnh.Một cửa sổ sẽ xuất hiện như sau:
Click chuột vào “Tiep” để tiếp tục hoặc “Thoat” để dừng việc mô phỏng.Khi click chuột vào “Thoat” thì sẽ trở lại cửa sổ lệnh của Matlab.Nếu click vào “Tiep” sẽ xuất hiện cửa sổ có tên là “Sơ đồ khối” như sau:
Cửa sổ này mô tả quá trình mô phỏng điều chế DMT qua nhiều khối như khối “RS(255,223)”,khối “CONV-enc”,…click chuột vào từng khối để biết thêm chi tiết về vai trò,các hoạt động của khối đó.
Khi click vào nút “Tiep” sẽ hiện ra cửa sổ:
Cửa sổ này có tên là “Options”,cho phép lựa chọn các tuỳ chọn để mô phỏng.Khi đó trên cửa sổ lệnh sẽ xuất hiện 2 câu hỏi và 1 thông báo như sau:
Để mô phỏng phải chọn 2 tuỳ chọn trong 4 tuỳ chọn trên.Chỉ khi các tuỳ cần thiết để mô phỏng được chọn thì nút “Mo phong” mới bật sáng,cho phép click vào để tiến hành mô phỏng.Thông báo cho biết trạng thái có yêu cầu liệt kê chi tiết lỗi giữa 2 chuỗi ngõ vào ra từng khối tương ứng.Khi click vào nút “Mo phong”,trong khi quá trình mô phỏng diễn ra,sẽ xuất hiện một cửa sổ có tên là “Dap ung tan so cua kenh truyen”.Dựa vào tuỳ chọn đã chọn sẽ xuất hiện cửa sổ đáp ứng tần số của kênh truyền tương ứng.
Những lưu ý khi mô phỏng:
_Để thuận tiện cho việc mô phỏng tổng số bit của 32 kênh phụ upstream sẽ được cố định là 255 bit.
_Tổng số bit dữ liệu cần truyền khi mô phỏng được ấn định là “m*k*5”=8*223*5 bit,tại dòng thứ 9 của file “rsdmt.m” .Có thể thay đổi số lượng bit cần truyền bằng cách thay đổi số “5”.Số càng lớn thì thời gian tính toán mô phỏng càng lớn.
_Khi chọn kênh truyền lý tưởng thì đáp ứng bộ lọc số là h=[1].Khi chọn kênh truyền có nhiễu,có nhiều mảng đáp ứng bộ lọc số h dùng để tham khảo khi mô phỏng từ dòng 56 trở xuống,đặt tại file “option1.m”.
_Khi chọn kênh truyền có nhiễu nặng và khi mô phỏng yêu cầu so sánh chi tiết,nên chèn thêm lệnh “pause” ở file “chitiet.m” line 60 để thấy được kết quả ở cửa sổ command windows.
II.\KẾT QUẢ MÔ PHỎNG&NHẬN XÉT:
A.>Mô hình RS+DMT:các giai đoạn trong mô hình này gồm:
data -> mã hoá RS(255,223) -> điều chế -> truyền ->giải điều chế ->giải mã RS -> data
1\>Tại cửa sổ “Options”,khi đánh dấu các tuỳ chọn“kenh truyen ly tuong”, “mo hinh RS+DMT” và “so sanh chi tiet” rồi click vào nút mô phỏng.Yêu cầu “so sánh chi tiết” là so sánh giữa 2 cặp chuỗi:chuỗi ngõ vào và chuỗi ngõ ra kênh truyền;chuỗi ngõ vào bộ RS-encoder và chuỗi ngõ ra bộ RS-decoder.Tại cửa sổ lệnh sẽ xuất hiện kết quả:
_Với kết quả “phía thu nhận ĐÚNG dữ liệu phía phát đã truyền”,cho thấy 2 khối mã hoá RS-giải mã RS và khối điều chế-truyền-giải điều chế làm việc chính xác.Và khi chạy mô phỏng nhiều lần với các tuỳ chọn như trên,ta luôn thu được 1 kết quả.Vậy mô hình RS+DMT truyền trên kênh truyền lý tưởng cùng kết quả mô phỏng sau nhiều lần chạy mô phỏng cho phép ta kết luận:mô hình RS+DMT được mô phỏng chính xác và chạy ổn định.
2\>Khi đã xác định mô hình RS+DMT được mô phỏng chính xác,chúng ta tiếp tục khảo sát khả năng sửa lỗi của mã RS(255,223).Giả sử số lượng bit được truyền không đổi là 223*8*5(được ấn định trong file rsdmt.m,line 10) và tần số đáp ứng xung kênh truyền là h=[1 0.5 0.3 0.2 -0.1 0.02 0.05](được ấn định trong file option1.m,line 49).Tại cửa sổ “options” ta chọn các tuỳ chọn “mô hình RS+DMT”, “kênh truyền có nhiễu” và “so sánh chi tiết”.Kết quả mô phỏng:
... … ...
3 symbol này nằm trong 32 symbol dùng để sửa lỗi của từ mã thứ 2.
... … ...
... … ...
Tổng số bit cần truyền là 8920 sau khi mã hoá RS(255,223) sẽ tạo thành 5 từ mã trước khi điều chế.Việc 3 symbol trong 32 symbol dùng để sửa lỗi của từ mã thứ 2 là 499,500 và 502 bị lỗi cho phép ta kết luận:nhiễu có thể ngẫu nhiên gây ra các symbol lỗi nằm trong 32 symbol được thêm vào dùng để sửa lỗi của 1 từ mã.
Tại kết quả so sánh 2 chuỗi ngõ vào và ngõ ra kênh truyền ta có số symbol lỗi là 50 (gồm có cả 3 symbol 499,500 và 502).Số symbol lỗi khi so sánh 2 chuỗi ngõ vào RS-encoder và chuỗi ngõ ra RS-decoder là 14 symbol(không bao gồm 3 symbol trên do 1 từ mã sau khi qua bộ giải mã sẽ bị loại bỏ 32 symbol cuối dùng để sửa lỗi,mà 3 symbol trên thuộc 32 symbol dùng để sửa lỗi của từ mã thứ 2).Việc giảm 36 symbol lỗi trên được giải thích như sau:số symbol lỗi giảm giữa 2 lần so sánh là tổng của các symbol được sửa lỗi bởi mã RS(255,223) và các symbol lỗi nằm trong 32 symbol redundancy,bị loại bỏ sau khi qua bộ giải mã.Giải thích lý do số symbol lỗi giữa 2 chuỗi ngõ vào RS-encoder và chuỗi ngõ ra RS-decoder luôn nhỏ hơn số symbol lỗi giữa 2 chuỗi ngõ vào và ra kênh truyền khi chạy mô phỏng ở nhiều lần khác.
Hơn nữa khi lặp lại mô phỏng với các tuỳ chọn như trên nhiều lần,ta sẽ thu được số symbol lỗi giữa 2 chuỗi ngõ vào và ngõ ra kênh truyền là khác nhau ở mỗi lần mô phỏng.Cho thấy nhiễu gây lỗi là ngẫu nhiên lên dữ liệu truyền trên kênh truyền.Dẫn đến khả năng sửa lỗi của mã RS(255,223) cũng khác nhau ở mỗi lần chạy mô phỏng:có những lúc mã RS(255,223) có thể sửa hết các bit(symbol) lỗi,nhưng cũng có lúc lại không thể sửa hết bit(symbol) lỗi khi có quá nhiều bit(symbol) lỗi.Do đó với một đáp ứng tần số của kênh truyền cố định,đôi khi bên thu có thể nhận đúng dữ liệu đã truyền;đôi khi lại không nhận đúng dữ liệu đã truyền.
3\>Để thấy rõ hơn khả năng sửa lỗi của mã RS(255,223),ta giả sử số bit cần truyền là 223*8*1bit chứ không phải là 223*8*5bit như trên.Có nghĩa là trên kênh truyền chỉ có 1 từ mã codeword được truyền và nhiễu sẽ tác động lên chỉ 1 từ mã này.Tại dòng thứ 10 của file rsdmt.m ta thay đổi “m*k*5” thành “m*k*1”.Chọn h=[1 0.7 0.4 0.1 -0.1 0.02 0.05] tại dòng 49 trong file “option1.m”.Từ cửa sổ “options” ta chọn “mô hình RS+DMT”,”kênh truyền có nhiễu” và “so sánh chi tiết”.Chạy mô phỏng nhiều lần với các điều kiện trên,ta nhận thấy có những lúc kết quả báo bên thu nhận đúng dữ liệu đã truyền:có nghĩa là mã RS(255,223) đã sửa hết bit các lỗi.Và có lúc kết quả thông báo bên thu nhận không đúng dữ liệu đã phát:mã RS(255,223) không khắc phục được hết các lỗi.
Với những lần kết quả mô phỏng báo bên thu nhận đúng dữ liệu đã phát:số symbol lỗi giữa 2 chuỗi ngõ vào và chuỗi ngõ ra kênh truyền luôn nhỏ hơn hoặc bằng 16 symbol.Mà số symbol lỗi trên cũng là số symbol lỗi của từ mã vào bộ giải mã RS(255,223).Vậy với một từ mã ngõ vào có ít hơn hoặc bằng 16 symbol thì bộ giải mã RS(255,223) luôn có khả năng sửa hết các lỗi xuất hiện trong từ mã đó.Kết luận này phù hợp với lý thuyết về khả năng sửa lỗi của bộ mã RS(255,223).Hơn nữa có những trường hợp các symbol lỗi nằm trong 32 symbol(mặc định nằm cuối từ mã)dùng để sửa lỗi;để bộ giải mã RS có thể khắc phục hết các lỗi thì giả thuyết rằng số symbol lỗi nằm trong 32 symbol cuối phải có số lượng và số bit lỗi trong symbol đó ở một giới hạn nào đó.Ví dụ như trường hợp sau:
Với những lần kết quả mô phỏng báo bên thu không nhận đúng dữ liệu đã phát:số symbol lỗi của từ mã ngõ vào bộ giải mã RS(255,223) luôn lớn hơn 16 symbol.Mặc khác nếu bộ giải mã RS không thể khắc phục được 1 symbol nào thì số lượng bit lỗi của symbol lỗi đó vẫn giữ nguyên không giảm sau khi qua bộ giải mã.Cá biệt,có những trường hợp bộ giải mã RS không sửa lỗi được 1 bit hay 1 symbol lỗi nào.Ví dụ trường hợp sau:
… … …
Tương tự như các symbol ở trên
… … …
Trong trường hợp trên,mặc dù không có symbol lỗi nằm trong 32 symbol dùng để sửa lỗi nhưng bộ giải mã RS vẫn không thể khắc phục được lỗi nào.Điều này khác với dự kiến về khả năng sửa lỗi của mã RS:nếu số symbol lỗi của từ mã ngõ vào bộ giải mã RS(255,223) lớn hơn 16 symbol thì bộ giải mã RS(255,223) vẫn sẽ khắc phục tối đa 16 symbol lỗi đầu tiên và các symbol lỗi tiếp theo vẫn giữ nguyên.Các nguyên nhân để giải thích kết quả của ví dụ trên,kết quả không phù hợp với dự kiến trên:việc trình bày các chi tiết do file “chitiet.m” thực hiện không đúng hoặc từ mã của bộ mã hoá RS sau khi chập với đáp ứng tần số kênh truyền làm thay đổi nội dung 32 symbol gắn vào cuối chuỗi tin nên bộ giải mã RS không “hiểu” được 32 symbol redundant để khắc phục được các lỗi hoặc bộ giải mã RS(255,223) sẽ không khắc phục bất kỳ symbol lỗi nào nếu số symbol lỗi của từ mã ngõ vào bộ giải mã lớn hơn 16 symbol.Sau khi kiểm tra lại rất kỹ thì xác định file “chitiet.m” hoạt động chính xác:trình bày chính xác các lỗi giữa 2 chuỗi được chỉ định so sánh.Nguyên nhân thứ 2 cũng không giải thích được cho kết quả trên vì nếu sau khi chập với đáp ứng xung kênh truyền làm thay đổi nội dung 32 symbol cuối cùng thì khi so sánh 2 chuỗi ngõ vào và ra của kênh truyền thì file “chitiet.m” sẽ trình bày có các symbol lỗi xuất hiện từ symbol 223 đến symbol 255.Vậy từ kết quả trên ta kết luận bộ giải mã RS(255,223) sẽ không khắc phục bất kỳ symbol lỗi nào nếu số symbol lỗi của từ mã ngõ vào bộ giải mã lớn hơn 16 symbol dù symbol lỗi có nằm trong hay không nằm trong 32 symbol cuối.Kết luận này đồng thời bác bỏ giả thuyết để bộ giải mã có thể khắc phục được các lỗi của từ mã ngõ vào thì số lượng symbol lỗi của từ mã ngõ vào phải ở giới hạn nào đó.Do đặc điểm của mã RS là sửa lỗi phụ thuộc vào số lượng symbol lỗi của từ mã nhận được,nên mã RS thích hợp khi sử dụng đối với các kênh truyền có nhiễu hay gây ra các lỗi liên tiếp(lỗi chùm-“burst errors”).
B.>Mô hình CONV+DMT: quá trình mô phỏng gồm:
data -> mã hoá CONV-> điều chế -> truyền -> giải điều chế
-> giải mã CONV -> data
Mã xoắn được dùng để mô phỏng có r=1/2,K=12 và đa thức sinh g(1)=4.335; g(2)=5.723( dfree=15 nguồn Odenwalder (1970)và Larsen(1973)
1\>Tại cửa sổ “Options”,khi đánh dấu các tuỳ chọn“kenh truyen ly tuong”, “mo hinh CONV+DMT” và “so sanh chi tiet” rồi click vào nút mô phỏng.Yêu cầu “so sánh chi tiết” là so sánh giữa 2 cặp chuỗi:chuỗi ngõ vào và chuỗi ngõ ra kênh truyền;chuỗi ngõ vào bộ CONV-encoder và chuỗi ngõ ra bộ CONV-decoder.Tại cửa sổ lệnh sẽ xuất hiện kết quả:
Với kết quả nên thu nhận được là đúng dữ liệu đã truyền có nghĩa là cũng như mô hình RS+DMT,các khối mã hoá xoắn và giải mã xoắn hoạt động chính xác.Khi chạy lại với các tuỳ chọn trên nhiều lần,ta điều thu cùng một kết quả như trên.Điều này cho phép kết luận:mô hình CONV+DMT được mô phỏng chính xác và chạy ổn định.
2.>Khi chạy mô phỏng với tuỳ chọn kênh truyền có nhiễu,có số lượng bit dữ liệu cần truyền là không đổi thì ta nhận thấy nếu số lượng bit lỗi giữa 2 chuỗi từ mã bên phát và bit thu càng ít thì xác xuất bên thu nhận đúng dữ liệu càng lớn.Và đặc biệt là dựa theo lý thuyết về mã xoắn,nếu số bit lỗi giữa 2 từ mã truyền và từ mã nhận được bé hơn ½ d thì bộ giải mã sẽ luôn giải mã đúng hay nói cách khác nếu khoảng cách Hamming giữa từ mã phát và từ mã nhận được bé hơn ½ d thì bộ giải mã luôn giải mã đúng .Bộ mã xoắn sử dụng trong mô phỏng có d=15,có nghĩa là số bit lỗi giữa 2 từ mã phát và từ mã nhận được để bộ giải mã luôn giải mã đúng phải bé hơn hoặc bằng 7 bit.Kết luận trên có thể kiểm tra bằng cách viết một hàm có nội dung như sau:mã hoá xoắn 1 chuỗi bit cho trước;dùng các vòng lặp for để thay đổi các vị trí bit lỗi trong từ mã ngõ ra(số vòng lặp for sẽ bằng số bit lỗi đồng thời xuất hiện trong từ mã);giải mã từ mã có số bit lỗi đó,rồi so sánh chuỗi ngõ ra với chuỗi dữ liệu trước đó;và dùng lệnh fprintf để thông báo kết quả.
Ngược lại khi số bit lỗi giữa 2 từ mã truyền và từ mã nhận được lớn hơn ½d thì khi này để bộ giải mã đúng chuỗi chuỗi dữ liệu đã mã hoá sẽ phụ thuộc vào vị trí của bit lỗi:có nghĩa là nếu số bit lỗi giữa 2 từ mã là cố định,thì có trường hợp bộ giải mã sẽ giải mã đúng,có trường hợp sẽ giải mã sai.Tóm lại,khi số bit lỗi của 2 từ mã lớn hơn ½ d thì xác suất sửa lỗi đúng của bộ giải mã sẽ bé hơn 1.Ví dụ trường hợp sau
Một đặc điểm của bộ giải mã khi dùng thuật toán Viterbi đối với một mã xoắn có giả thuyết rằng “bắt đầu và kết thúc ở trạng thái toàn không” là (K-1) bit cuối cùng của chuỗi ngõ ra bộ giải mã luôn là bit 0,đúng bằng K-1 bit đã chèn ở bộ mã hoá.
Các file đính kèm theo tài liệu này:
- 11-mophong.doc