Tải bản đầy đủ (.doc) (28 trang)

Đề tài: Mô phỏng đánh giá chất lượng hệ thống truyền tin số sử dụng mã hamming với các phương thức điều chế khác nhau

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.06 MB, 28 trang )

Lời mở đầu
Ngày nay, sự phát triển của công nghệ diễn ra rất năng động nên nhu cầu truyền
tin trong cuộc sống ngày càng trở nên được chú ý đến nhiều hơn. Thông tin đóng vai
trò rất quan trọng trong đời sống, quân sự, ngoại giao….vì vậy việc truyền dẫn thông
tin càng phải đặt lên hàng đầu. Đảm bảo an toàn về truyền tin giúp chúng ta thu và
nhận thông tin một cách chính xác hơn. Tuy nhiên trong quá trình truyền dẫn sẽ không
tránh khỏi lỗi và nhiễu. Do vậy việc sửa lỗi là rất cần thiết. Từ đó có rất nhiều phương
pháp sửa lỗi ra đời: Mã chập, mã vòng, mã BCH nhị phân, mã Hamming. Mỗi phương
pháp sửa lỗi đều mang những ưu điểm và nhược điểm riêng biệt, vì vậy việc lựa chọn
phương pháp sửa lỗi phải phù hợp để hệ thống hoạt động ổn định.
Sau đây chúng em xin trình bày về đề tài: “Mô phỏng, đánh giá chất lượng hệ
thống truyền tin số sử dụng mã Hamming với các phương thức điều chế khác
nhau”. Với sự hướng dẫn của giảng viên: ThS. Phạm Mạnh Toàn.
Trong quá trình xây dựng đồ án này khó có thể tránh những sai sót, rất mong
quý thầy cô và các bạn chỉ dẫn, đóng góp ý kiến để đề tài hoàn thiện hơn. Xin trân
trọng cảm ơn.
Sinh viên thực hiện
Nguyễn Việt Thắng

1


Phần 1: MÃ HÓA HAMMING SỬ DỤNG TRONG TRUYỀN TIN SỐ
1.1. Tổng quan về mã hóa kênh
1.1.1. Khái niệm chung
Mã hóa kênh là việc đưa thêm các bit dư vào tín hiệu số theo một quy luật nào
đấy, nhằm giúp cho bên thu có thể phát hiện và thậm chí sửa được cả lỗi xảy ra trên
kênh truyền.
Tín hiệu truyền qua kênh truyền sẽ bị ảnh hưởng bởi nhiễu, can nhiễu, fading…
là tín hiệu đầu thu bị sai. Mã hóa kênh dùng để bảo vệ dữ liệu không bị sai bằng cách
thêm vào các bit dư thừa.


Ý tưởng của mã hóa kênh là gửi một chuỗi bit có khả năng sửa lỗi. Mã hóa kênh
không làm giảm lỗi bit truyền mà chỉ làm giảm lỗi bit dữ liệu.
Mục đích của lý thuyết mã hóa trên kênh truyền là tìm những mã có thể truyền
thông nhanh chóng, chứa đựng nhiều mã hợp lệ và có thể sửa lỗi hoặc ít nhất phát hiện
các lỗi xảy ra. Các mục đích trên không phụ thuộc vào nhau, và mỗi loại mã có công
dụng tối ưu cho một ứng dụng riêng biệt. Những đặc tính mà mỗi loại mã này cần còn
tuỳ thuộc nhiều vào xác suất lỗi xảy ra trong quá trình truyền thông.

Hình 1.1 Sơ đồ khối hệ thống truyền tin
Mã hóa kênh là một khâu rất quan trọng trong hệ thống thông tin số không dây
cùng với mã hóa nguồn, ghép kênh, điều chế,… để tạo ra một tín hiệu phù hợp cho
việc truyền dẫn vô tuyến và tín hiệu, có khả năng điều khiển được sự sai bit và sửa lỗi
xảy ra nếu có để khôi phục lại gần như nguyên dạng tín hiệu tin tức mà mình truyền đi.
Vị trí của mã hóa kênh truyền trong hệ thống thông tin khi truyền qua kênh truyền
được minh họa trên hình (Hình1.1). Việc giảm thiểu xác suất sai dựa vào việc phát
hiện sai và sửa sai có thể dẫn đến việc giảm tỉ số tín hiệu trên nhiễu cần thiết nhờ đó
giảm được công suất, tiết kiệm năng lượng.
Vai trò của mã hóa kênh là làm giảm xác suất sai thông tin khi truyền qua kênh
truyền. Việc giảm tỉ số tín hiệu trên nhiễu cần thiết nhờ đó giảm được công suất, tiết
2


kiệm năng lượng. Việc sửa sai hữu hiệu cho tín hiệu nhỏ sẽ thuận lợi cho việc bảo mật,
trải phổ và tăng tốc độ chính xác của thông tin nhận, đây là mục đích quan trọng nhất
của truyền thông.
1.1.2. Phân loại mã hóa kênh
Hiện nay, trong truyền tin số tồn tại hai loại mã: Mã khối và mã xoắn (liên tục).
Trong đề tài này sẽ quan tâm nghiên cứu về mã khối.
1.2. Mã Hamming
1.2.1. Giới thiệu

Mã Hamming thuộc mã khối. Mã khối được hình thành như sau: Từ chuỗi bit X
của tin tức (ở dạng nhị phân) có độ dài bất kỳ (như hữu hạn), được chia thành các khối
mỗi khối bao gồm k bit (ký hiệu) thông tin, ở khối cuối cùng nếu không đủ k bit thông
tin nó sẽ được bổ sung thêm một số ký hiệu dạng 100…, để đủ trở thành khối có k ký
hiệu, sau khi giải mã các ký hiệu này bị loại bỏ đi.
Mỗi khối có k bit thông tin dài n ký hiệu, bao gồm 2 k từ mã, được gọi là mã khối
tuyến tính M(n,k), với điều kiện là tất cả 2 k từ mã hình thành nên không gian con bậc k
của không gian con vector bậc n trong trường nhị phân GF(2).
Tập hợp 2 phần tử 0 và 1, với phép cộng và phép nhân mod2, được gọi là trường
nhị phân và ký hiệu là GF(2). Đối với trường GF(2) có thể áp dụng mọi toán tử đại số
tuyến tính, trong đó có toán tử ma trận.
Nói một cách đơn giản là mã nhị phân được gọi là tuyến tính, nếu tổng theo
modul 2 (mod2) của hai từ mã bất kỳ cũng là từ mã của mã đó.
0⊕0 = 0

0.0 = 0

0 ⊕1 = 1

0.1 = 0

1⊕ 0 = 1

1.0 = 0

1 ⊕1 = 0

1.1 = 1

Mọi mã khối tuyến tính đều là mã hệ thống. Mã khối hệ thống là mã khối mà mỗi

khối bao gồm k bit thông tin và r ký hiệu dư thừa, tạo thành 2 khối con tách biệt nhau.

Hình 1.2 Một khối mã(từ mã) của mã khối hệ thống
Trên cơ sở toán học, mã khối tuyến tính hệ thống M(n,k) hoàn toàn được xác
định nhờ ma trận sinh G(n,k).
G( n ,k ) =  E( k , k ) ; R( r ,k) 

(1)

Trong đó E(k,k) - ma trận đơn vị bậc vị bậc (k*k).
• R(r,k) - ma trận đơn vị bậc vị bậc (r*k).
3


• r là số ký hiệu dư ( ký hiệu kiểm tra).
• k là số bit tin trong từ mã.
− Trọng số Hamming
Trọng số Hamming của một từ mã nhị phân αi, thường ký hiệu w(αi), là số lượng
ký hiệu 1 có trong từ mã đó. Chẳng hạn, chúng ta có từ mã αi=100101, trọng số
Hamming của tù mã được xác định w(αi)=3.
− Khoảng cách Hamming
Khoảng cách Hamming giữa hai từ mã αi, αk (có độ dài đều), thường ký hiệu d(αi,
αk) là số lượng vị trí tương ứng mà tại đó chúng có giá trị khác nhau. Chẳng hạn,
αi=1010011, αk=1000101, khoảng cách Hamming giữa hai từ mã được xác định
d(αi,αk)=3. Từ đây, chúng ta có d(αi,αk)= w(αi ⊕ αk), với ký hiệu ⊕ chỉ phép cộng theo
modul 2 (mod2).
− Khoảng cách Hamming tối thiểu
Khoảng cách Hamming tối thiểu của bộ mã (chỉ áp dụng cho bộ mã đều), thường
ký hiệu dmin, hoặc d0, được xác định d0=min d(αi,αk) với mọi i,k. Tham số d0 của bộ mã
quyết định khả năng phát hiên lỗi và sửa lỗi.

− Số lỗi
Số lỗi có thể phát hiện được khi giải mã, ký hiệu là e và được xác định e=d 0-1.
Một bộ mã có d0=1, không có khả năng phát hiện bất kỳ lỗi nào, e=0, được gọi là bộ
mã đầy, hay bộ mã không có dư thừa, gC=0. Một bộ mã muốn phát hiên được một lỗi,
e=1, cần d0=2. Các bộ mã có d0≥2 được gọi là bộ mã vơi, hay bộ mã có dư thừa g C>0 (
gC = 1 −

H (X)


n

= 1−

log 2 2k
k
= 1−
> 0 ), nếu r=0 thì gC=0).
n
k+r

− Số lỗi có thể sửa được

 d0 − 1
,
 2 

Số lỗi có thể sửa được khi giải mã, ký hiệu là t và được xác định t ≤ 

trong đó ký hiệu [x] để chỉ phép lấy phần nguyên của x. Từ công thức này ta xác định

được một bộ mã muốn sửa lỗi cần d0≥2t+1. Chẳng hạn, bộ mã muốn sửa lỗi, t=1, cần
d0≥3 (trong trường hợp này có thể phát hiện được 2 lỗi).
Trong các loại mã khối có thể là mã khối trong trường nhị phân GF(2), cũng có
thể là mã khối trong trường GF(2m).
Mã Hamming là một mã sửa lỗi tuyến tính, mã này có thể phát hiện một bit hoặc
hai bit bị lỗi. Mã Hamming còn có thể sửa các lỗi do một bit bị sai gây ra.
Các mã có tham số với m≥3 được gọi là mã Hamming G( n, k ) =  E( k , k ) ; R( r ,k) 
• Chiều dài từ mã: n= 2m-1.
• Chiều dài phần tin: k=n-m.
4


• Số ký hiệu dư: r=m.
• Khả năng sửa sai: t=1.
Khoảng cách Hamming giữa hai từ mã ký hiệu là d là số lượng vị trí tương ứng
mà tại đó chúng có giá trị khác nhau. Khoảng cách Hamming cực tiểu của bộ mã ký
hiệu là d0. Tham số d0 của bộ mã quyết định khả năng phát hiện lỗi và sửa lỗi.
− d0=1+ số ký hiệu một trong hàng nào đó có ít ký hiệu 1 nhất (trong ma trận R(r,k).
− Số lỗi có thể phát hiện được khi giải mã, ký hiệu là e: e=d0-1.
1.2.2. Thuật toán mã hóa mã Hamming
− Các bit thông tin có dạng: I= (m0,m1,m2,…mk).
− Từ mã V được xác định dưới dạng: V=(v0, v1, v2, v3, v4, v5,…, vn-1).
− Thuật toán mã hóa được xác định theo công thức V=I × G(n,k), hay:
(v0, v1, v2, v3, v4, v5,…, vn-1)= (m0,m1,m2,…mk)× G(n,k)
1.2.3. Ma trận kiểm tra mã Hamming
Ma trận kiểm tra H(n,k) có đặc tính sau: Tích của mọi từ mã V với ma trận kiểm tra
H(n,k) chuyển vị, đều cho kết quả bằng 0, tức là:
T
V × H (n,k)
≡0


(1.1)

T: chỉ phép chuyển vị ma trận
Với đặc tính trên ma trận kiểm tra H(n,k) được xác định theo ma trận sinh G(n,k) với
dạng biểu diễn như sau:
H ( n ,k ) = [R(Tr ,k ) , E( r ,r) ]

(1.2)

1.2.4. Thuật toán giải mã Hamming
Ma trận kiểm tra H(n,k) cho phép kiểm tra một từ mã nào đó có phải là từ mã của
bộ mã đang xét hay không. Đặc biệt khi thu được từ mã, ký hiệu P, có thể kiểm tra từ
T
mã này có mắc lỗi hay không bằng thuật toán S = P × H ( n ,k ) .

Trong công thức này S được gọi là vector Syndrome, có r ký hiệu. Nếu S=0, từ
mã P không có lỗi, còn ngược lại, nếu S ≠0, từ mã P có lỗi. Công thức trên gọi là thuật
toán giải mã phát hiện sai.
Ma trận
như sau :

H (Tn ,k )

có thể biểu diễn theo ma trận thành phần của ma trận sinh G(n,k)
 R( r , k ) 
H (Tn,k ) = 

 E( r ,r ) 


(1.3)

1.3. Điều chế và giải điều chế trong hệ thống thông tin số
Điều chế là kỹ thuật gắn tin tức vào một sóng mang cao tần, làm cho một trong
các thông số: tần số, pha, biên độ của sóng mang thay đổi theo tín hiệu tin tức. Điều
chế được xem là não bộ của hệ thống và xuất hiện trong tất cả các hệ thống thông tin.
5


Vì vậy, khi xem xét đánh giá chất lượng một hệ thống thông tin, ta không thể tách rời
khỏi kỹ thuật điều chế.
Trong phần 2 của đồ án này thực hiện đánh giá chất lượng hệ thống thông tin sử
dụng các loại kỹ thuật điều chế khi sử dụng và không sử dụng mã Hamming để phát
hiện và sửa lỗi. Bởi vậy, phần này chúng ta sẽ xem xét kỹ thuật điều chế BPSK,
QPSK, 8 – PSK, 16 – PSK.
1.3.1. Điều chế BPSK
Giả sử có sóng mang được biểu diễn:
x0 (t ) = A cos(ω0t + ϕ )

(1.4)
Biểu thức tín hiệu gốc: s(t) là tín hiệu nhị phân(0,1) hay là chuỗi NRZ.
Ta có:
Khi s(t)=1: P(t) = Acos ω0t
(1.5)
0
Khi s(t)=0: P (t) = Acos(ω0t +180 )
(1.6)
Đối với khóa dịch pha PSK, thông tin chứa trong pha tức thời của sóng mang
điều chế. Thường thì pha này được ấn định và so sánh tương thích với sóng mang của
pha đã biết PSK kết hợp. Đối với PSK nhị phân, các trạng thái pha 0 0 và 1800 sẽ được

sử dụng.
Nguyên tắc: Các tín hiệu nhị phân tác dụng lên sóng mang làm thay đổi pha của
sóng mang. Cụ thể là:
− Bit 1: pha của sóng mang là 00.
− Bit 0: pha của sóng mang là 1800.
Các giá trị này có thể ngược lại nhưng nguyên tắc chung là khi có sự đảo bit thì
pha của sóng mang lệch đi 1800.
Bảng chân lý của tín hiệu điều chế BPSK
Nhị phân đầu vào

Pha đầu ra

Logic 0

1800

Logic 1
00
Có thể thấy rõ ràng hơn trong cách biểu diễn trên đồ thị thời gian và trạng thái
của tín hiệu BPSK (Hình 2.2).
Điều chế khóa dịch pha nhị phân BPSK (Hình 2.3):
Với n=2, ∆Φ = π , thì ta có kiểu điều chế 2-PSK hay BPSK:
π
P(t ) = cos(ω0t + ϕ + s (t ) )
2

(1.7)

Sơ đồ tại tín hiệu BPSK dạng sin với hai giá trị tùy thuộc giá trị Data:
Khi Data bit=1, tín hiệu BPSK cùng pha với sóng mang.

Khi Data bit=0, tín hiệu BPSK ngược pha với sóng mang.

6


Hình 1.3 Khóa dịch pha nhị phân

Hình 1.4 Sơ đồ khối thực hiện điều chế PSK

Hình 1.5 Quan hệ pha, thời gian ở đầu ra bộ điều chế BPSK theo tín hiệu vào
Quá trình giải điều chế BPSK

Hình 1.6 Phương pháp giải điều chế PSK

7


Giải điều chế BPSK có thể thực hiện theo sơ đồ hình 1.6. Sơ đồ gồm bộ tái lập
sóng mang và bộ nhân.
Bộ giải điều chế BPSK bao gồm:
− Sơ đồ lấy bình phương để chuyển các tín hiệu khác pha về cùng 1 pha.
− Vòng giữ pha PLL phát lại nhịp với tần số gấp đôi tần số mang.
− Bộ dịch pha ∆ để hiệu chỉnh pha.
− Bộ chia hai để đưa tần số tín hiệu tái lập về bằng tần số sóng mang.
− Bộ nhân tín tín hiệu thực hiện nhân sóng điều chế BPSK với sóng mang tái lập.
Giả sử tần số sóng mang là fc , ωc = 2π fc , ta có hai trường hợp:
Khi tín hiệu BPSK là + sin(ωc t ) ứng với data bit = 1, sóng mang tái lập là sin(ωc t )
, sơ đồ nhân sẽ cho tín hiệu:
sin(ωc t )sin(ωc t ) = sin 2 (ωc t ) = 1 (1 − cos(2ωc t ) = 1 − 1 cos(2ωc t )
2

2
2

(1.8)

Trong biểu thức trên thành phần thứ hai là xoay chiều, có tần số gấp đôi tần số
sóng mang. Khi sử dụng bộ lọc thông thấp với tần số cắt bằng tần số sóng mang, có
thể khử bỏ thành phần xoay chiều và thế dương của thành phần 1 chiều thứ nhất sẽ giữ
lại biểu diễn trạng thái “1” của Data bit.
Khi tín hiệu BPSK là − sin(ω ct ) ứng với data bit=0, sơ đồ nhân sẽ cho :
− sin(ωc t ) sin(ωc t ) = − sin 2 (ωct ) = 1 (1 − cos(2ωc t ) = − 1 + 1 cos(2ωc t )
2
2
2

(1.9)

Trong biểu thức trên thành phần thứ 2 là xoay chiều, có tần số gấp đôi tần số
sóng mang. Khi sử dụng bộ lọc thông thấp với tần số cắt bằng tần số sóng mang, có
thể khử bỏ thành phần xoay chiều và thế âm của thành phần một chiều thứ nhất(-1/2)
được giữ lại sẽ biểu diễn trạng thái “0” của data bit.
Điều chế khóa dịch pha hiện nay được sử dụng rộng rãi trong các hệ thống thông
tin quân sự, thương mại, các hệ thống vi ba số. Phương thức điều chế này có thể xem
là một phương thức điều chế hiệu quả cho các ứng dụng truyền tin bằng vô tuyến vì nó
đảm bảo xác suất lỗi thấp nhất đối với một mức tín hiệu thu đã khẳng định do trên một
chu kì tín hiệu.
1.3.2. Điều chế QPSK
PSK 4 pha còn gọi là PSK vuông góc (QPSK : Quadrature PSK) là mạch điều
chế cho tín hiệu ra có 1 trong 4 pha tùy theo trạng thái của một cặp bit (dibit) dữ liệu
vào, độ lệch pha của các tín hiệu ra là 90°.

− Mạch chia bit (bit splitter): chuyển dòng dữ liệu vào theo hai ngã I (In-phase) và
Q (Quadrature). Những bit vào ngã I sẽ điều chế sóng mang có pha ban đầu và
những bit vào ngã Q sẽ điều chế sóng mang đã được làm lệch pha 90°

8


− Vì các dữ liệu vào có thể là bit 1 hoặc 0, nên tín hiệu ở ngã ra mạch nhân I có thể
là sinωct hoặc − sin ωc t và ở ngã ra Q có thể là cosωct hoặc − cos ωc t , các tín hiệu
này được tổng hợp ở mạch tổng để cho ra 1 trong 4 tín hiệu mô tả ở (Hình 1.7)
Với các bit ở ngã vào ab=01, tín hiệu ở ngã ra là − sin ωc t + cos ωc t , tín hiệu này
có thể thay thế bởi tín hiệu duy nhất có pha là 135°.
Bảng 1.1: Tín hiệu ra từ mạch cân bằng
Kênh

I

Giá trị nhị
phân
1

Hiệu thế
+

Tín hiệu ra từ mạch cân
bằng
sin ωc t

0


-

− sin ωc t

1

+

0

-

Q

π
sin(ωc t + ) = cos ωc t
2
π
− sin(ωc t + ) = − cos ωct
2

Hình 1.7 Tín hiệu điều chế 4 pha

Hình 1.8 Mạch giải mã PSK – 4 pha

9


Mạch phục hồi sóng mang sẽ cho lại sóng mang sinωct từ tín hiệu nhận được, tín
hiệu này được cho thẳng vào mạch nhân ngã I và được làm lệch pha 90° trước khi vào

mạch nhân ngã Q, tín hiệu ra ở các mạch nhân được đưa vào mạch lọc hạ thông để loại
bỏ thành phần tần số cao, các thành phần DC sẽ được tổng hợp ở mạch tổng để cho lại
dòng dữ liệu.
Giả sử tín hiệu vào là tín hiệu nhận được trong thí dụ trên: cosωct - sinωct
Tín hiệu ra ở mạch nhân ngã I là:
sinωct ( cos ωc t − sin ωc t ) = 1/2 sin ωct - 1/2(1- cos 2ωc t )
Tín hiệu ra sau mạch lọc là điện thế dc -, tương ứng bit 0
Tín hiệu ra ở mạch nhân ngã Q là:
cos ωc t ( cos ωct − sin ωc t ) = -1/2 sin ωct +1/2(1+ cos 2ωc t )
Tín hiệu ra sau mạch lọc là điện thế dc+, tương ứng bit 1,
Mạch tổ hợp bit sẽ cho lại dữ liệu như đã phát : 01 (viết theo thứ tự ab).
1.3.3. Điều chế 8 – PSK
PSK - 8 pha là mạch điều chế cho tín hiệu ra có 1 trong 8 pha tùy thuộc trạng thái
của tổ hợp 3 bit vào (tribits).
Mạch chia bit chia tổ hợp 3 bít theo 3 kênh khác nhau. Các bit a và b theo kênh I
và Q xác định cực tính của tín hiệu ra ở mạch biến đổi từ 2 ra 4 mức, trong khi bit c
xác định biên độ của điện thế dc.

Hình 1.9 Sơ đồ khối của mạch điều chế PSK - 8 pha
Có 2 biên độ được dùng là 0,34V và 0,821V. Khi a và b là bit 1 ngã ra mạch biến
đổi có trị dương, ngược lại khi a và b là bit 0. Biên độ của tín hiệu ra từ mạch biến đổi
luôn luôn khác nhau, bất cứ khi nào một mạch nhận tín hiệu c (hay để cho ra tín hiệu
có biên độ là 0,821 (0,34) thì mạch kia nhận tín hiệu đảo lại và cho ra tín hiệu có biên
độ là 0,34 (0,821)).
Vì 3 bit abc độc lập với nhau nên ± 0,821 và ± 0,344 luôn luôn là 4 giá trị có thể
có ở ngã ra các mạch biến đổi.
Ở kênh I mạch điều chế trên sóng mang ban đầu (không làm lệch pha) nên 4 giá
trị ngã ra là ± 0,821 cos ωc t và ± 0,34 cos ωc t trong khi ở ngã ra Q đó là các giá trị ±
10



0,821 sin ωct và ± 0,34 sin ωct . Mạch tổng sẽ tổng hợp tín hiệu ra của 2 kênh để cho ra
một tín hiệu duy nhất. Tùy theo các tín hiệu vào các tín hiệu ra sẽ có các pha khác
nhau (Hình 2.0). Trong hình này góc A xác định bởi

A = tan −1

0.34
= 22,50
0.821

Như vậy các tín hiệu điều chế của các tribit có pha khác nhau từng 45°

Hình 2.0 Góc pha của tín hiệu này xác định bởi dấu X
Nếu, các bit cba ở ngã vào là 101, ta có:
− Mạch biến đổi ở kênh I cho: +0,821 V.
− Mạch biến đổi ở kênh Q cho: -0,34 V.
− Mạch điều chế ở kênh I cho: +0,821cosωct.
− Mạch điều chế ở kênh Q cho: -0,34 sinωct.
− Tín hiệu ra sau cùng: 0,821 cosωct -0,34 sin ωct .
1.3.4. Điều chế 16 – PSK
PSK - 16 pha là mạch điều chế cho tín hiệu ra có 1 trong 16 pha tùy thuộc trạng
thái của tổ hợp 4 bit vào. Các pha cách nhau 22,50.
1.4. Kênh truyền AWGN
Khối AWGN cộng nhiễu trắng Gauss vào trong tín hiệu lối vào. Tín hiệu lối vào
hoặc lối ra có thể là số thực hoặc số phức. Nếu tín hiệu vào là số thực thì tín hiệu vào
sẽ cộng nhiễu Gauss thực và tạo ra một tín hiệu thực ở lối ra. Khi tín hiệu lối vào là
phức, khối này cộng tín hiệu Gauss phức và tạo ra một lối ra tín hiệu phức. Khi sử
dụng sự thay đổi mode với lối vào phức, giá trị thay đổi ngang bằng thành phần thực
chia cho thành phần ảo của tín hiệu lối vào.

1.5. Tỷ lệ lỗi bit BER
Tỷ lệ lỗi bít (bit error rate) trên kênh truyền:
BER= (số bit lỗi)/(tổng số bit truyền đi)
11


Nếu gọi P(e) là trung bình xác suất xảy ra lỗi khi truyền thông tin qua hệ thống.
Gọi Pe(n) là xác suất xảy ra lỗi bit(tức thời) ở thời điểm n và giả sử rằng chúng ta làm
mô phỏng N lần. Khi đó, Pe= lim[(1/N)*(Pe(1)+Pe(2)+...+Pe(N))] khi N tiến tới vô
cực.
Có nghĩa là nếu chương trình mô phỏng đủ dài (N đủ lớn) thì BER là xấp xỉ của
xác suất xảy ra lỗi khi truyền thông tin qua hệ thống. Ở BER khoảng 10 -4 trở xuống thì
thông thường có khoảng 100 lỗi thì BER tương đối chính xác. Ví dụ, nếu ta muốn xác
định BER ở khoảng 10−6 thì ta nên truyền khoảng 100000000 bit thông tin qua hệ
thống sau đó đếm số lỗi.
Nếu ta đã biết tốc độ truyền tin (bit/s), như vậy ta có thể đếm số lỗi trong một
khoảng thời gian R nào đó. Giả sử trong thời gian T giây đó, ta đếm được M bit lỗi và
tốc độ truyền tin qua hệ thống là B bits/s. Khi đó BER được tính:
BER = M/(T*B)
Nếu ta dùng phần mềm để mô phỏng hệ thống thì đơn giản hơn, ta chia thông tin
thành từng gới( frame) rồi truyền trên kênh. Sau khi truyền mỗi gói, ta thu thông tin,
giải mã... rồi so sánh nó với gói dữ liệu trước khi truyền và đếm số lỗi xảy ra khi
truyền gói tin đó. Giả sử rằng ta truyền N gói tin mỗi gói tin có độ dài K bits, tổng số
lỗi mà phần mềm đếm được sau khi truyền gói N đó là M thì BER là:
BER= M/(N*K)

12


Phần 2: MÔ PHỎNG, ĐÁNH GIÁ CHẤT LƯỢNG HỆ THỐNG TRUYỀN

TIN SỐ SỬ DỤNG MÃ HAMMING VỚI CÁC PHƯƠNG THỨC ĐIỀU CHẾ
KHÁC NHAU
Trong phần này, thực hiện mô phỏng đánh giá chất lượng hệ thống truyền tin số
trong trường hợp sử dụng và không sử dụng mã Hamming với các phương thức điều
chế. Mặt khác, đề tài cũng đánh giá hệ thống sử dụng mã Hamming với các phương
thức điều chế khác nhau BPSK, QPSK, 8 – PSK, 16 – PSK. Từ mối quan hệ giữa tỷ số
Eb/N0 và xác suất lỗi cho phép lựa chọn phương thức điều chế và mã hóa thích hợp.
2.1. Sử dụng mã Hamming M(7,4) cho quá trình mã hóa và giải mã
Đối với mã hamming M(7,4) ma trận sinh có dạng:

G(7,4)

1000110 
0100011

=
0010111


0001101

(2.1)
G(7,4) có d0=1+2=3 nên bộ mã này có thể phát hiện được 2 lỗi và sửa được 1 lỗi.
Mã hóa các bit thông tin có dạng I=(m0,m1,m2,m3) thành từ mã chứa các bit sửa
lỗi V=(v0,v1,v2,v3,v4,v5,v6) để truyền trên kênh như sau : V=I × G(7,4).
1000110 
0100011


0010111



Hay, (v0, v1, v2, v3, v4, v5,v6)= (m0,m1,m2,m3) × 0001101

(2.2)

Theo quy tắc nhân ma trận, ta có:
v0 = m0 , v1 = m1 , v2 = m2 , v3 = m3 ,
v4 = m0 ⊕ m2 ⊕ m3 ,
v5 = m0 ⊕ m1 ⊕ m2 ,
v6 = m1 ⊕ m2 ⊕ m3

(2.3)
Với các bít thông tin I=(1000), sẽ xác định được từ mã V=(1000110).
Mạch điện mã hóa được xây dựng căn cứ vào thuật toán mã hóa ở trên(Hình 2.1).
− Ô ghi dịch (phía trên), để ghi 4 bit thông tin. Các bit thông tin được dịch vào theo
trình tự: Bit m0 dịch vào đầu tiên, còn bit m3 dịch vào sau cùng.
− Bộ cộng mod2(XOR), để tính 3 ký hiệu dư.
− 3 ô ghi dịch (vẽ dưới), để ghi ký hiệu dư.
− Cổng AND1 mở từ nhịp 1 – 4 để đưa 4 bit thông tin ra ngoài, hình thành nên 4
bit thông tin của từ mã V.
− Cổng AND2 mở từ nhịp 5 – 7 để đưa 3 ký hiệu dư ra ngoài, hình thành nên 3 ký
hiệu kiểm tra của từ mã V.
13


− Phần tử OR làm việc trong nhịp 7, để kết thúc một quá trình mã hóa, hình thành
nên từ mã V với 7 ký hiệu.

Hình 2.1 Mạch điện mã hóa của mã Hamming M(7,4)

Thuật toán giải mã:
Phía thu nhận được từ mã P. Xét hai trường hợp:
Trường hợp 1: Quá trình truyền không phát sinh lỗi, khi đó P ≡ V . Hay S=0 (với
giả thiết lỗi e ≤ 2 ).
Trường hợp 2: Quá trình truyền phát sinh lỗi, khi đó P ≠ V .
Với P=(r0,r1,r2,r3,r4,r5,r6), S=(s0,s1,s2). Ta có:

S =P ×H (Tn , k )

110 
011 


111 


=[ r0 , r1 , r2 , r3 , r4 , r5 , r6 ] ×101  =[ s0 , s1 , s2 ] (2.3)
100 


010 
001 



Thực hiện phép nhân ma trận. Ta nhận được kết quả:
s0 = r0 ⊕ r2 ⊕ r3 ⊕ r4 ,
s1 = r0 ⊕ r1 ⊕ r2 ⊕ r5 ,
s2 = r1 ⊕ r2 ⊕ r3 ⊕ r6


(2.4)

Đây được gọi là tổng kiểm tra, để xác định phần tử của vector S.
Thay các giá trị thu được từ phía thu :
s0 = 1 ⊕ 0 ⊕ 0 ⊕ 1 = 0
s1 = 1 ⊕ 0 ⊕ 0 ⊕ 1 = 0
s2 = 0 ⊕ 0 ⊕ 0 ⊕ 0 = 0

(2.5)

Như vậy, S=0, kết luận P không mắc lỗi.
Giả sử S ≠ 0:

14


s0 = 1 ⊕ 0 ⊕ 0 ⊕ 1 = 0
s1 = 1 ⊕ 1 ⊕ 0 ⊕ 1 = 1
s2 = 1 ⊕ 0 ⊕ 0 ⊕ 0 = 1

(2.6)

Trường hợp này:
S = (011) ≠ 0 , dẫn đến kết luận P mắc lỗi.
− Vì s0=0 hơn nữa chúng ta giả thiết P chỉ mắc một lỗi, vậy nên khẳng định các ký
hiệu tham gia vào tổng này không mắc lỗi ; tức là r0,r2,r3,r4 không mắc lỗi.
− Vì s1=1 chúng ta giả thiết P chỉ mắc một lỗi, cho nên khẳng định các ký hiệu
tham gia vào tổng này mắc một lỗi. Kết hợp với kết luần ở trên, dẫn đến r 1 hoặc
r5 bị mắc lỗi.
− Vì s2=1 chúng ta giả thiết P chỉ mắc một lỗi, cho nên khẳng định các ký hiệu

tham gia vào tổng này mắc một lỗi. Kết hợp với kết luận ở trên, dẫn đến r 1 hoặc
r6 bị mắc lỗi.
− Kết hợp hai kết luận cuối, với giả thiết P chỉ mắc 1 lỗi, dẫn đến kết luận phần tử
mắc lỗi là r1, điều này hoàn toàn hợp lý với giả thiết ban đầu.
Khi thu có lỗi người ta thường sử dụng ký hiệu :
P =V +e
(2.7)
Trong đó e là vector lỗi. ở trên e=(0100000).
Bảng 2.1 Mối quan hệ giữa S và e
Vector lỗi e
1000000
0100000
0010000
0001000

Vector Syndrome
S=(s0s1s2)
110
011
111
101

Vector S trong hệ 10
3
6
7
5

0000100
100

1
0000010
010
2
0000001
001
4
0000000
000
0
Mạch điện giải mã: Mạch điện giải mã được xây dựng dựa trên thuật toán giải
mã. Xây dựng mạch điện giải mã cho mã M(7,4) (Hình 2.2).
Mạch điện giải mã bao gồm các phần tử:
− Mạch tính Syndrome, gồm 3 bộ cộng mod2, để tính (s 0,s1,s2). Các đầu vào của
các XOR được vẽ dựa trên thuật toán giải mã.
− Mạch chuyển đổi (giải mã) vector S từ mã hệ 2 sang hệ 10, và đưa ra mức logic
cao “1” ở đầu ra tương ứng với con số của hệ 10; các đầu ra còn lại có mức logic
0. Mạch điện này được gọi là mạch tạo ký hiệu sửa sai.
− Mạch điện chứa dấu sửa sai (được đánh số từ 0 đến 3). Phần tử r i nào mắc lỗi, ô
ghi dịch có ghi số tương ứng được nạp mức logic 1, các ô còn lại nạp mức logic
0.
15


− Mạch sửa lỗi là XOR, ký hiệu M. Ký hiệu thu r i nào mắc lỗi, sẽ được sửa nhờ
phép cộng mod2: ri* ⊕ 1 = ri (ở đây ri để chỉ đã được sửa sai), ở nhịp tương ứng.
Các ký hiệu rj còn lại không mắc lỗi, không bị ảnh hưởng bởi phép cộng mod2
này: rj ⊕ 0 ≡ r j
− Mạch điện giải mã cần làm việc trong 11 nhịp, trong đó 7 nhịp đầu để đưa các ký
hiệu thu vào thanh ghi đệm, tính Syndrome, chuyển mã hệ 2 sang mã hệ 10, 4

nhịp tiếp theo để sữa lỗi. Ở đầu ra là vector P đã sữa lỗi.

Hình 2.2 Mạch điện giải mã của mã Hamming M(7,4)
2.2. Mô phỏng, đánh giá chất lượng thông tin số
2.2.1. So sánh chất lượng hệ thống sử dụng mã Hamming với các phương thức
điều chế khác nhau
Bài toán 1: Cho N=720000 bít truyền trên các kênh AWGN, sử dụng mã
Hamming (7,4). Đánh giá chất lượng hệ thống khi lần lượt thay đổi các phương thức
điều chế là BPSK, Q-PSK, 8-PSK, 16-PSK.
Xây dựng chương trình:
Bước 1: Tạo 720000 bit tin ngẫu nhiên.
Bước 2: Tạo ma trận sinh G(7,4), ma trận kiểm tra H, ma trận sửa lỗi E.
Bước 3: Chuyển các bit tin là mảng 1 chiều thành các từ mã có độ dài 4 bit, sau
đó tiến hành mã hóa thành các từ mã để truyền đi: V=I × G(7,4).
Bước 4: Điều chế 8-PSK: Tạo các bit tin thành các symbol 3bit, tiến hành điều
chế. Tạo nhiễu AWGN trên kênh truyền, sau đó tiến hành giải điều chế BPSK. Tương
tự với các kỹ thuật điều chế BPSK, QPSK,16PSK.
Bước 5: Tách các symbol thành các bit tin. Chuyển về dạng từ mã 7bit
Bước 6: Tính vector Sydrome, tham chiếu vector Sydrome vào vector sửa lỗi E.
Tiến hành sửa lỗi.
Bước 7: Tách từ mã nhận được thành các bit tin.
Bước 8: Tính toán lỗi thông qua bit tin nhận được so với các bit tin phát đi.
16


Chương trình mô phỏng của bài toán này được cho trong phụ lục 1.
Kết quả mô phỏng thể hiện trên hình 2.3.

Hình 2.3 BER và Eb/No với BPSK, QPSK, 8PSK,16PSK khi sử dụng mã Hamming
Từ kết quả trên, ta thấy:

− Khi sử dụng kỹ thuật mã Hamming và không sử dụng kỹ thuật mã Hamming thì
ta thấy rằng đường cong BER của BPSK và QPSK nó trùng nhau tức là cả hai
đều có cùng xác suất BER. Điều này có thể giải thích là QPSK có thể xem là một
điều chế bậc 4 của BPSK nhưng BPSK nó dễ hơn. Ở QPSK các bit chẵn (hoặc
lẻ) được sử dụng để điều chỉnh các thành phần trong pha của các sóng mang. Khi
các bit lẻ hoắc chẵn được sử dụng để điều chỉnh các pha thành phần, hay nói
cách khác QPSK là BPSK được sử dụng trên các sóng mang độc lập. Do đó tỉ lệ
BER là như nhau cho cả hai mô phỏng.
− Có thể kết luận rằng kỹ thuật mã hóa mã Hamming với BPSK là kỹ thuật điều
chế tốt nhất cho tỉ lệ Ber thấp nhất cho tất cả các mô phỏng. Kỹ thuật điều chế 16
– PSK cho xác suất lỗi bit lớn nhất
− Khi số mức điều chế tăng, thì khoảng cách giữa các chòm sao gần nhau nên kéo
theo tỷ lệ lỗi bit BER tăng.

Bài toán 2: Cho N=720000 bít truyền trên các kênh AWGN, không sử dụng mã
Hamming (7,4). Đánh giá chất lượng hệ thống khi lần lượt thay đổi các phương thức
điều chế là BPSK, Q-PSK, 8-PSK, 16-PSK.
Xây dựng chương trình:
Bước 1: Tạo 720000 bit tin ngẫu nhiên.
Bước 2: Điều chế QPSK.Tạo các bit tin thành các symbol 2bit, tiến hành điều
chế. Tạo nhiễu AWGN trên kênh truyền, sau đó tiến hành giải điều chế BPSK.
Bước 3: Tách các symbol thành các bit tin.
Bước 4: Tính toán lỗi thông qua bit tin nhận được so với các bit tin phát đi.
17


Kết quả mô phỏng thể hiện trên hình 2.4.

Hình 2.4 BER và Eb/No với BPSK, QPSK, 8PSK, 16 PSK khi không sử dụng mã hóa
Hamming

Chương trình mô phỏng của bài toán này được cho trong phụ lục 2.
Từ kết quả trên, ta thấy:
− Có thể kết luận rằng với điều chế BPSK là kỹ thuật điều chế tốt nhất cho tỉ lệ Ber
thấp nhất cho tất cả các mô phỏng. Kỹ thuật điều chế 16 – PSK cho xác suất lỗi
bit lớn nhất.
− Vì nhiễu là ngẫu nhiên nên với cùng 1 giá trị bit tin thì có thể sẽ làm số bit lỗi sẽ
khác dẫn đến xác xuất lỗi bit cũng sẽ khác.
− Trong đồ thị hình trên ta thấy: Nếu tỉ số Eb/No càng tăng thì => xác xuất lỗi càng
thấp.
Bài toán 3: Mô phỏng các kỹ thuật điều chế BPSK, QPSK,8PSK,16PSK theo lý
thuyết. Chương trình mô phỏng được cho trong phụ lục 3.

Hình 2.5 Kết quả mô phỏng theo lý thuyết
Từ kết quả trên, ta thấy:
18




Kết quả mô phỏng sát với kết quả theo lý thuyết. Tuy nhiên còn có sự sai khác là

do các bit tin đưa vào ban đầu là hàm ngẫu nhiên rời rạc nên dẫn đến kết quả
BER cũng có sự sai khác so với lý thuyết.
2.2.2. Đánh giá chất lượng hệ thống
Eb là năng lượng 1bit, bằng tích công suất tín hiệu S với độ rộng thời gian
1bit(Tb).
Eb=S.Tb [dB]
(2.8)
N0 là mật độ phổ công suất một phía của tạp âm AWGN. Hay là mật độ phổ công suất
nhiễu: N0= Công suất nhiễu(N)/Băng thông(W), hay:

N0 =

N
W

(2.9)

Eb/N0 Là một phiên bản chuẩn hóa của SNR.
Trong hệ thống analog. Tín hiệu liên tục theo thời gian và có năng lượng không
xác định (không xác định được tín hiệu trong một khoảng thời gian nào đấy). Tuy
nhiên công suất lại xác định. Vì vậy, ta đánh giá theo công suất( SNR) chứ không đánh
giá theo năng lượng(Eb/N0).
Trong hệ thống digital, tín hiệu được xác định trong một khoảng thời gian, 1bit,
1symbol, 1window… trong khoảng thời gian này công suất không có mấy giá trị. Vì
vậy, ta phải dùng năng lượng để đánh giá(Eb/N0).
Hiệu quả phổ của điều chế nhiều mức tăng, nên ta có thế tăng tốc độ bit lối vào
cùng một độ rộng băng được cấp phát(quy định sẵn do nhà cung cấp). Đầu vào, tốc độ
bit tăng lên k lần, nghĩa là độ rộng 1 bit sẽ giảm đi k lần, khi đó k bit symbol sẽ chỉ có
độ rộng bằng Tb_cũ, tốc độ bit R_mới=k.R_cũ. Bề rộng phổ chiếm lại như bề rộng
phổ chiếm cũ W_mới=1/Tb_cũ=W_cũ. Dẫn đến, tăng hiệu quả sử dụng phổ, được
đánh giá bởi công thức nhê – ta =R[b/s]/W[Hz], là hiệu quả phổ 1Hz ta truyền được
tốc độ bao nhiêu bit/s.
Khi ghép kbit tin thành 1symbol, thì W=1/k.Tb. Hệ số nhê – ta =

1
1
/
=k
Tb k .Tb


Dẫn đến truyền được một tốc độ bit lớn hơn trên cùng một độ rộng băng thông
cho trước.
Mặt khác,1bit có độ rộng thời gian là Tb, khi ghép kbit=1symbol thì Ts=kTb. Tốc
độ symbol lúc này sẽ là Rs=1/Ts [bau].
Khi đó: Tốc độ bit Rb=k.bit/Ts=(k.bit)/(k.Tb)=1/Tb (b/s) →Tốc độ bit truyền
trên băng thông không thay đổi.
Vậy, tăng số mức điều chế →E b/N0 (tại lỗi BER quy định cho một hệ thống )→
tăng hiệu quả sử dụng phổ(giảm băng thông) đạt với độ rộng băng thông cho trước
B[Hz].
19


Dung lượng(C) kênh là tốc độ bit tối đa mà hệ thống có thể truyền được với xác
suất lỗi tiến về 0. Được thể hiện bởi định lý Shannon.
C=Blog2(1+S/N) [b/s]
(2.10)
Trong đó:
C: Dung lượng kênh [b/s]
B: Băng thông [Hz]
S: Công suất tín hiệu [W]
N:Công suất nhiễu[W]
Vậy có thể kết luận rằng đối với hệ thống khi đạt tới ngưỡng dung lượng, thì giá
trị BER không thay đổi kể cả khi tăng công suất phát đó gọi là giới hạn Shannon.
Nhận xét:
− Phương pháp BBSK cho tỉ lệ lỗi bit nhỏ nhất, phương pháp 16-PSK có tỉ lệ lỗi
bit lớn nhất.
− Khi tăng Eb/N0 ở mỗi phương pháp điều chế, ta đều thấy tỉ lệ lỗi bit (BER) giảm
và giảm dần đến một giá trị, như vậy tỉ lệ lỗi bit BER càng chính xác khi tăng
năng lượng mỗi bit.
− Khi số mức điều chế tăng, thì khoảng cách Hamming giữa các symbol giảm, dẫn

đến tỉ lệ lỗi bit tăng.
− Như vậy hiệu quả của việc mã hóa đã phát hiện và sửa được lỗi.

20


KẾT LUẬN
Sau khoảng thời gian nghiên cứu, tìm hiểu trong đồ án viễn thông, về đề tài “Mô
phỏng, đánh giá chất lượng hệ thống truyền tin số sử dụng mã Hamming với các
phương thức điều chế khác nhau” đã được hoàn thành.
Kết quả đạt được:
− Xét cùng một giá trị của Eb/No(dB) thì bản tin được mã hóa bằng mã Hamming
(7,4) có xác suất lỗi bit sẽ thấp hơn so với bản tin không mã hóa.
− Khi truyền tin theo kênh liên lạc có nhiễu, thì có một phần lượng thông tin sẽ bị
mất mát trên kênh, vì thế trong số liệu thu về sẽ phát sinh lỗi. Nếu số lượng lỗi
như thế có giá trị nhỏ, hoặc chúng phát sinh với tần số cho phép, thì sử dụng kĩ
thuật mã hóa mã Hamming để chống nhiễu.
Hạn chế:
− Trong mã Hamming M(7,4), trên quá trình mã hóa và giải mã vẫn đang còn một
số bit bị lỗi, vì trong bài toán này, vector sửa lỗi E đã cho chỉ có thể sửa được
một lỗi, từ hai lỗi bit trở lên thì sẽ không sửa được (xét trong một khung 4 bit).
− Trong thực tế bao giờ cũng tồn tại xác xuất lỗi không phát hiện được, không có
loại mã nào là hoàn thiện tất cả mà chỉ ở mức tương đối chấp nhận được.
Việc nghiên cứu giúp em hiểu thêm nhiều kiến thức về kỹ thuật mã hóa và giải mã các
bit thông tin, xử lý bài toán cho trường hợp cụ thể trên cộng cụ là phần mềm Matlab
một cách sinh động.
Mặc dù đã cố gắng hết sức vào việc thực hiện đồ án nhưng không thể không có
những sai sót trong quá trình thực hiện em xin được nhận những lời góp ý và bổ sung
cho bản đồ án được hoàn thiện hơn.
Em xin chân thành cảm ơn !


21


Phụ lục 1
Bài toán 1: Cho N=720000 bít truyền trên các kênh AWGN, sử dụng mã
Hamming (7,4). Đánh giá chất lượng hệ thống khi lần lượt thay đổi các phương thức
điều chế là BPSK, Q-PSK, 8-PSK, 16-PSK.
%===================================================
clear all
close all
clc;
N=input('Nhap vao so bit N chia het cho 3(8psk,24000)=');
SNR = 0:1:10;
tinphat=randint(1,N);
G=[ 1 1 0 1 0 0 0
0110100
1110010
1 0 1 0 0 0 1];
H=[ 1 0 0 1 0 1 1
0101110
0 0 1 0 1 1 1];
E=[ 0 0 0 0 0 0 0
0010000
0100000
0000100
1000000
0000001
0001000
0 0 0 0 0 1 0];

B=reshape(tinphat,4,[])';
x1=mod(B*G,2);
dieuche=pskmod(x1,2);
for i = 1:length(SNR)
Y = real(dieuche);
awgnbits = awgn(Y,SNR(i)+0.5);
Giai_dieuche=pskdemod(awgnbits,2);
s=mod(Giai_dieuche*H',2);
v=bi2de(s,'left-msb');
y1=mod(Giai_dieuche+E(v+1,:),2);
y2=y1(:,4:7);
22


c=reshape(y2',1,[]);
loi=sum(mod(tinphat+c,2))
error1(1,i)=loi;
BER1(1,i)=error1(1,i)/N;
end
%=======================================================
t=reshape(x1',1,[]);
h=reshape(t,3,[])';
h1=bi2de(h,'left-msb');
dieu_che=pskmod(h1,8);
for i=1:length(SNR)
nhieu= awgn(dieu_che,SNR(i)+6);
sau_dieuche=pskdemod(nhieu,8);
ybit=dec2bin(sau_dieuche);
for ii=1:3
bit_thu(:,ii)=str2num(ybit(:,ii));

end
t2=reshape(bit_thu',1,[]);
h2=reshape(t2,7,[])';
s1=mod(h2*H',2);
v2=bi2de(s1,'left-msb');
sua_loi=mod(h2+E(v2+1,:),2);
tach_tin=sua_loi(:,4:7);
tu_mathu=reshape(tach_tin',1,[]);
loi2=sum(mod(tinphat+tu_mathu,2))
error2(1,i)=loi2;
BER2(1,i)=error2(1,i)/N;
end
%=======================================================
t=reshape(x1',1,[]);
h=reshape(t,4,[])';
h1=bi2de(h,'left-msb');
dieu_che=pskmod(h1,16);
for i=1:length(SNR)
nhieu= awgn(dieu_che,SNR(i)+8);
sau_dieuche=pskdemod(nhieu,16);
ybit=dec2bin(sau_dieuche);
23


for ii=1:4
bit_thu2(:,ii)=str2num(ybit(:,ii));
end
t2=reshape(bit_thu2',1,[]);
h2=reshape(t2,7,[])';
s1=mod(h2*H',2);

v2=bi2de(s1,'left-msb');
sua_loi=mod(h2+E(v2+1,:),2);
tach_tin=sua_loi(:,4:7);
tu_mathu=reshape(tach_tin',1,[]);
loi2=sum(mod(tinphat+tu_mathu,2))
error2(1,i)=loi2;
BER3(1,i)=error2(1,i)/N;
end
%=======================================================
semilogy(SNR,BER1,':ko',SNR,BER1,'b-',SNR, BER2,':r*',SNR, BER3,'g')
title('do thi');
xlabel('Eb/No(dB)')
ylabel('BER')
legend('BPSK-HAMMING','QPSK-HAMMING','8PSK-HAMMING','16PSKHAMMING')
grid on
Phụ lục 2
Bài toán 2: Cho N=720000 bít truyền trên các kênh AWGN, không sử dụng mã
Hamming (7,4). Đánh giá chất lượng hệ thống khi lần lượt thay đổi các phương thức
điều chế là BPSK, Q-PSK, 8-PSK, 16-PSK.
%=====================================================
clear all
close all
clc
N=input('Nhap vao so bit N bit=');
tinphat=randint(1,N);
%==========================================
EbN0=0:1:10;
x=pskmod(tinphat,2);
24



for j=1:length(EbN0)
Y=real(x);
y=awgn(Y,EbN0(j)+3,'measured');
y=pskdemod(y,2);
nerr=symerr(tinphat,y);
ber2(j)=nerr/N;
end
%==========================================
h=reshape(tinphat,3,[])';
h1=bi2de(h,'left-msb');
x=pskmod(h1,8);
for j=1:length(EbN0)
y=awgn(x,EbN0(j)+6,'measured');
y=pskdemod(y,8);
ybit=dec2bin(y);
for ii=1:3
bit_thu(:,ii)=str2num(ybit(:,ii));
end
t2=reshape(bit_thu',1,[]);
nerr=symerr(tinphat,t2);
ber8(j)=nerr/N;
end
%==========================================
h=reshape(tinphat,4,[])';
h1=bi2de(h,'left-msb');
x=pskmod(h1,16);
for j=1:length(EbN0)
y=awgn(x,EbN0(j)+8,'measured');
y=pskdemod(y,16);

ybit=dec2bin(y);
for ii=1:4
bit_thu16(:,ii)=str2num(ybit(:,ii));
end
t2=reshape(bit_thu16',1,[]);
nerr=symerr(tinphat,t2);
ber16(j)=nerr/N;
end
25


×