CƠ SỞ THÔNG
TIN SỐ
Nhóm 6
Kỹ thuật điện tử viễn thông 1 -K64
Thành viên
nhóm
Nguyễn Duy Hưng (Nhóm trưởng)
Dương Quang Huy
Nguyễn Mạnh Hưởng
Trần Duy Hưng
Trần Phi Hùng
BÀI TẬP LỚN
.
Hệ truyền thông số truyền một đoạn văn bản gồm 6 ký tự ( UVWXYZ )
được mã hóa theo bảng mã Unicode (8bit). Mã hóa kiểm soát lỗi dữ liệu
tại bên gửi và nhận CRC ( A * 1 = 7V mức cao, A * 0 = 3V mức thấp ), mã
đường truyền NRZ-I, giả thiết suy hao đường truyền L = 0 dB.
I. VẼ SƠ ĐỒ TIẾN TRÌNH XỬ LÝ TÍN HIỆU
II. TÍNH TOÁN CÁC THÔNG SỐ LIÊN QUAN
III. LẤY VÍ DỤ VỀ NHIỄU
IV. TIN HỌC HOÁ QUÁ TRÌNH TÍNH TOÁN
Nội dung chính
Mã hoá dữ liệu gốc Information : UVWXYZ
=>Mã hoá dữ liệu theo bảng mã Unicode - 8 bit
=>Chuyển từ tin tức thành dữ liệu theo bộ mã
Unicode 8 bit ta được:
• Ký tự ‘u': Dạng nhị phân 8-bit: 01010101
• Ký tự ‘v': Dạng nhị phân 8-bit:0101 0110
• Ký tự ‘w': Dạng nhị phân 8-bit:01010111
• Ký tự ‘x': Dạng nhị phân 8-bit:01011000
• Ký tự ‘y': Dạng nhị phân 8-bit:01011001
• Ký tự ‘z': Dạng nhị phân 8-bit:01011010
• Kết quả chuỗi nhị phân 8-bit cho "UVWXYZ" là:
0101 0101 0101 0110 0101 0111 0101 1000 0101
1001 0101 1010
*Mã kiểm soát lỗi CRC
*Mã đường truyền NRZ-1
I. Vẽ sơ đồ tiến trình xử lý tín
hiệu
II. Tính toán các thông số liên quan
2.1.Khối định dạng:
Chọn 6 kí tự “UVWXYZ ” sang unicode nhị
phân 8 bit.
Dữ liệu bên gửi :
0101 0101 0101 0110 0101 0111 0101 1000
0101 1001 0101 1010
II. Tính toán các thông số liên quan
2.2 Mã kiểm soát lỗi CRC
- Bên gửi:
Dữ liệu gửi đi
M(x) = 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010
Đa thức sinh:
G(x) =
= 1 0001 0000 0010 0001 (r=16)
Ta có:
T(x)= [ M(x) +r ( bit 0 ) ] XOR R(x)
Với R(x) =[ M(x) + r ( bit 0 ) ] mod G(x) ( Dư của M(x)/G(x) )
= 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010 0000 0000 0000 0000 mod 1 0001
0000 0010 0001
II. Tính toán các thông số liên quan
Ta có sơ đồ biểu diễn như sau:
II. Tính toán các thông số liên quan
Sau khi chia CRC ta được R(x) = 0111 0111 1100 0011
T(x) = [ M(x) + r ( bit 0 ) ] XOR R(x)
= 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010 0111 0111 1100 0011
-Bên nhận :
Ta có :
N(x) = T’(x) mod G(x)
 N(x)=0  T’(x) ≡ T(x): đoạn data gửi đi là đúng
N(x) ≠ 0  T’(x) ≠ T(x) : đoạn data gửi đi là sai
Giả sử T’(x) = 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010 0111 0111 1100 0011
N(x) = 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010 0111 0111 1100 0011
mod 1000 1000 0001 00001
Sau khi thực hiện phép chia ta có N(x) = 0
T’(x) ≡ T(x)
Vậy đoạn dữ liệu nhận được là đúng
II. Tính toán các thông số liên quan
2.3 Mã đường truyền NRZ-I
Quy tắc:
-“0”  Chuyển mức điện áp xung
-“1”  Không chuyển mức điện áp xung
Chọn 2 mức điện áp xung :
A1=7V ( mức cao)
A0=3V ( mức thấp )
SNRmin=6,02 dB
Thỏa mãn tính chất của đường truyền NRZ-I
Bên gửi : A1=7V , A0=3V
-T(x) = 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101
1010 0111 0111 1100 0011
Tín hiệu biểu diễn theo mã đường NRZ-I
3V,3V,7V,3V,3V,7V,3V,7V,7V,7V,3V,7V,7V,3V,3V,3V,
3V,3V,7V,3V,3V,7V,3V,7V,3V,3V,7V,3V,3V,7V,3V,3V,
7V,7V,7V,3V,7V,7V,7V,7V,3V,3V,3V,7V,3V,3V,7V,7V,
7V,3V,7V,7V,3V,3V,3V,3V,3V,3V,3V,7V,3V,7V,3V,7V,
7V,3V,7V,3V,7V,7V,3V,3V,3V,3V,7V,3V,3V,3V,3V,7V,
7V,7V,3V,3V,7V,3V,7V,7V,3V,3V,3V,7V,3V,3V,7V,3V,
3V,7V,7V,7V,3V,3V,3V,7V,3V,7V,3V,3V,7V,3V,7V,7V,
7V,3V,3V,7V,3V,3V,3V,7V,3V,7V,3V,3V,3V,3V,3V,7V
-Tính Nmax
SNRmin= 20log∆ / =20
𝑈𝑚𝑖𝑛 𝑁𝑚𝑎𝑥
log⁡〖 1− )/
(𝐴 𝐴 2𝑁𝑚𝑎𝑥
(2
(2
(2
(2
(2
(2
(2
(2
(2
(2
(2
(2
(2
( 2 〗
 6,02 = 20log (7−3)/𝑁𝑚𝑎𝑥
 Nmax = 2
II. Tính toán các thông số liên quan
Bên gửi Kênh truyền Bên nhận
A0=3V L=0, N=2 A0-
Nmax<A0’<A0+Nmax
 1V<A0’< 5V
A1=7V L=0,N=2 A1-
Nmax<A1’<A1+Nmax
 5V< A1’ < 9V
Bên nhận:
Tính dải làm việc bên nhận : L=0 dB , Nmax=2
III. Lấy ví dụ về nhiễu
3. Lấy ví dụ nhiễu
3.1 Ví dụ về N<Nmax tín hiệu và dữ liệu thu được là đúng.
Bên gửi:
- Khối định dạng : Chuyển 6 ký tự “ UVWXYZ” => Unicode 8 bit
0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010
- Mã kiểm soát lỗi CRC :
- Dữ liệu gửi đi
M(x) = 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001
0101 1010
Đa thức sinh:
G(x) =
= 1000 1000 0001 00001 (r=16)
Ta có:
T(x)= [ M(x) +r ( bit 0 ) ] XOR R(x)
Với R(x) =[ M(x) + r ( bit 0 ) ] mod G(x) ( Dư của M(x)/G(x) )
= 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001
0101 1010 0000 0000 0000 0000 mod 1 0001 0000 0010 0001
Sau khi chia CRC ta được R(x) = 0111 0111 1100 0011
T(x) = [ M(x) + r ( bit 0 ) ] XOR R(x)
= 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010
0111 0111 1100 0011
- Mã đường NRZ-I :
A1=7V ( Mức cao) , A0=3V ( Mức thấp)
“1” => giữ nguyên mức điện áp
“0” => đảo mức điện áp
SNRmin= 20log
 6,02 = 20log
 Nmax = 2 (V)
Với N<Nmax tín hiệu thu được đúng
ST
T
Data Bên
gửi
(V)
Nhiễu trên
kênh truyền:
N(V)
Bên nhận(V)
Nử
a
thờ
i
gia
n
đầu
Nửa thời
gian cuối
Nửa thời
gian đầu
Nửa thời
gian cuối
1
0
A1=7
A0=3 1,5 1,5
A1’=8,5;
(2)=>A1’≡A1
A0’=4,5;
(2)=>A0’≡A0
A1’=8,5;
(2)=>A1’≡A1
A0’=4,5;
(2)=>A0’≡A0
2
1
A0=3
A1=7 0,0 1,2
A1’=7,0;
(2)=>A1’≡A1
A0’=3,0;
(2)=>A0’≡A0
A1’=8,2;
(2)=>A1’≡A1
A0’=4,2;
(2)=>A0’≡A0
3
0
A1=7
A0=3 1,0 1,5
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
A1’=8,5;
(2)=>A1’≡A1
A0’=4,5;
(2)=>A0’≡A0
4
1
A0=3
A1=7 -1,0 1,0
A1’=6,0;
(2)=>A1’≡A1
A0’=2,0;
(2)=>A0’≡A0
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
5
0
A1=7
A0=3 1,3 1,0
A1’=8,3;
(2)=>A1’≡A1
A0’=4,3;
(2)=>A0’≡A0
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
6
1
A0=3
A1=7 -1,0 0,0
A1’=6,0;
(2)=>A1’≡A1
A0’=2,0;
(2)=>A0’≡A0
A1’=7,0;
(2)=>A1’≡A1
A0’=3,0;
(2)=>A0’≡A0
7
0
A1=7
A0=3 -1,5 0,0
A1’=5,5;
(2)=>A1’≡A1
A0’=1,5;
(2)=>A0’≡A0
A1’=7,0;
(2)=>A1’≡A1
A0’=3,0;
(2)=>A0’≡A0
8
1
A0=3
A1=7 0,5 0,5
A1’=7,5;
(2)=>A1’≡A1
A0’=3,5;
(2)=>A0’≡A0
A1’=7,5;
(2)=>A1’≡A1
A0’=3,5;
(2)=>A0’≡A0
9
0
A1=7
A0=3 -1,4 1,0
A1’=5,6;
(2)=>A1’≡A1
A0’=1,6;
(2)=>A0’≡A0
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
10
1
A0=3
A1=7 1,0 0,4
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
A1’=7,4;
(2)=>A1’≡A1
A0’=3,4;
(2)=>A0’≡A0
11
0
A1=7
A0=3 1,2 1,0
A1’=8,2;
(2)=>A1’≡A1
A0’=4,2;
(2)=>A0’≡A0
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
12
1
A0=3
A1=7 0,0 0,0
A1’=7,0;
(2)=>A1’≡A1
A0’=3,0;
(2)=>A0’≡A0
A1’=7,0;
(2)=>A1’≡A1
A0’=3,0;
(2)=>A0’≡A0
13
0
A1=7
A0=3 -1,0 0,0
A1’=6,0;
(2)=>A1’≡A1
A0’=2,0;
(2)=>A0’≡A0
A1’=7,0;
(2)=>A1’≡A1
A0’=3,0;
(2)=>A0’≡A0
14
1
A0=3
A1=7 1,2 0,0
A1’=8,2;
(2)=>A1’≡A1
A0’=4,2;
(2)=>A0’≡A0
A1’=7,0;
(2)=>A1’≡A1
A0’=3,0;
(2)=>A0’≡A0
15
1
A0=3
A1=7 -1,3 0,0
A1’=5,7;
(2)=>A1’≡A1
A0’=1,7;
(2)=>A0’≡A0
A1’=7,0;
(2)=>A1’≡A1
A0’=3,0;
(2)=>A0’≡A0
16
0
A1=7
A0=3 1,0 0,0
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
A1’=7,0;
(2)=>A1’≡A1
A0’=3,0;
(2)=>A0’≡A0
17
0
A1=7
A0=3 1,5 0,0
A1’=8,5;
(2)=>A1’≡A1
A0’=4,5;
(2)=>A0’≡A0
A1’=7,0;
(2)=>A1’≡A1
A0’=3,0;
(2)=>A0’≡A0
18
1
A0=3
A1=7 0,5 0,0
A1’=7,5;
(2)=>A1’≡A1
A0’=3,5;
(2)=>A0’≡A0
A1’=7,0;
(2)=>A1’≡A1
A0’=3,0;
(2)=>A0’≡A0
19
0
A1=7
A0=3 1,5 1,0
A1’=8,5;
(2)=>A1’≡A1
A0’=4,5;
(2)=>A0’≡A0
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
20
1
A0=3
A1=7 -1,5 1,0
A1’=5,5;
(2)=>A1’≡A1
A0’=1,5;
(2)=>A0’≡A0
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
21
0
A1=7
A0=3 -0,5 1,0
A1’=6,5;
(2)=>A1’≡A1
A0’=2,5;
(2)=>A0’≡A0
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
22
1
A0=3
A1=7 -1,2 1,0
A1’=5,8;
(2)=>A1’≡A1
A0’=1,8;
(2)=>A0’≡A0
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
23
1
A0=3
A1=7 1,4 1,0
A1’=8,4;
(2)=>A1’≡A1
A0’=4,4;
(2)=>A0’≡A0
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
24
1
A0=3
A1=7 -1,2 1,0
A1’=5,8;
(2)=>A1’≡A1
A0’=1,8;
(2)=>A0’≡A0
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
25
0
A1=7
A0=3 -1,4 1,0
A1’=5,6;
(2)=>A1’≡A1
A0’=1,6;
(2)=>A0’≡A0
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
26
1
A0=3
A1=7 0,5 1,0
A1’=7,5;
(2)=>A1’≡A1
A0’=3,5;
(2)=>A0’≡A0
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
27
0
A1=7
A0=3 1,3 1,0
A1’=8,3;
(2)=>A1’≡A1
A0’=4,3;
(2)=>A0’≡A0
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
28
1
A0=3
A1=7 1,4 1,0
A1’=8,4;
(2)=>A1’≡A1
A0’=4,4;
(2)=>A0’≡A0
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
29
1
A0=3
A1=7 -1,0 1,5
A1’=6,0;
(2)=>A1’≡A1
A0’=2,0;
(2)=>A0’≡A0
A1’=8,5;
(2)=>A1’≡A1
A0’=4,5;
(2)=>A0’≡A0
30
0
A1=7
A0=3 -1,2 1,5
A1’=5,8;
(2)=>A1’≡A1
A0’=1,8;
(2)=>A0’≡A0
A1’=8,5;
(2)=>A1’≡A1
A0’=4,5;
(2)=>A0’≡A0
31
0
A1=7
A0=3 1,0 1,5
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
A1’=8,5;
(2)=>A1’≡A1
A0’=4,5;
(2)=>A0’≡A0
32
0
A1=7
A0=3 1,0 1,5
A1’=8,0;
(2)=>A1’≡A1
A0’=4,0;
(2)=>A0’≡A0
A1’=8,5;
(2)=>A1’≡A1
A0’=4,5;
(2)=>A0’≡A0
33
0
A1=7
A0=3 -1,5 1,5
A1’=5,5;
(2)=>A1’≡A1
A0’=1,5;
(2)=>A0’≡A0
A1’=8,5;
(2)=>A1’≡A1
A0’=4,5;
(2)=>A0’≡A0
34
1
A0=3
A1=7 1,5 0,5
A1’=8,5;
(2)=>A1’≡A1
A0’=4,5;
(2)=>A0’≡A0
A1’=7,5;
(2)=>A1’≡A1
A0’=3,5;
(2)=>A0’≡A0
35
0
A1=7
A0=3 -1,4 0,5
A1’=5,6;
(2)=>A1’≡A1
A0’=1,6;
(2)=>A0’≡A0
A1’=7,5;
(2)=>A1’≡A1
A0’=3,5;
(2)=>A0’≡A0
36 1
A0=3
A1=7 0 0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
37 1
A0=3
A1=7 0 0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
38 0
A1=7
A0=3 0 0
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
39 0
A1=7
A0=3 0 0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
40 1
A0=3
A1=7 0 0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
41 0
A1=7
A0=3 0 0
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
42 1
A0=3
A1=7 0 0
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
43 0
A1=7
A0=3 0 0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
44 1
A0=3
A1=7 0 0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
45 1
A0=3
A1=7 0 0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
46 0
A1=7
A0=3 0 0
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
47 1
A0=3
A1=7 0 0
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
48
0
A1=7
A0=3 0 0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
49 0 A0=3
A1=7
0 0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
50 1 A0=3
A1=7
0 0
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
51 1 A0=3
A1=7
0 0
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
52 1 A0=3
A1=7
0 0
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
53 0 A1=7
A0=3
0 0
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
54 1 A1=7
A0=3
0 0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
A1'=7.0; (2)=>A1'≡A1
A0'=3.0; (1)=>A0'≡A0
55 1 A1=7
A0=3
0 0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
56 1 A1=7
A0=3
0 0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
57 1 A1=7
A0=3
0 0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
58 1 A1=7
A0=3
0 0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
59 0 A0=3
A1=7
0 0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
60 0 A1=7
A0=3
0 0
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
61 0 A0=3
A1=7
0 0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
62 0 A1=7
A0=3
0 0
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
63 1 A1=7
A0=3
0 0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
64 1 A1=7
A0=3
0 0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
A1'=7.0;
(2)=>A1'≡A1
A0'=3.0;
(1)=>A0'≡A0
Ba bit thứ 4, 6 và 18 bị đảo do nhiễu có biên độ lớn (N > Nmax) làm
điện áp truyền bị lệch sang vùng nhận diện logic ngược (A1 ↔ A0)
nhưng vẫn nằm trong khoảng hợp lệ nên NRZ-I không phát hiện lỗi
vật lý.
 Bit thứ 4: A1’=7 V − 2.1 V = 4.9 V → bị hiểu thành A0 → bit đảo.
 Bit thứ 6: A0’=3 V + 2.1 V = 5.1 V → bị hiểu thành A1 → bit đảo.
 Bit thứ 18: A1’=7 V − 2.1 V = 4.9 V → bị hiểu thành A0 → bit đảo.
Dữ liệu nhận được sau nhiễu
T’(x) = 0100 0001 0101 0110 1001 0111 0101 1000 0101 1001 0101
1010 0111 0111 1100 0011
Mã kiểm soát lỗi CRC
G(x) = 1000 1000 0001 00001
N(x) = T’(x) mod G(x)
= 0100 0001 0101 0110 1001 0111 0101 1000 0101 1001 0101 1010 0111 0111
1100 0011 mod 1000 1000 0001 00001
= 0001 0011 1110 1110 ≠ 0
CRC phát hiện lỗi sai
Sơ đồ :
IV. Tin học hóa quá trình tính toán
4.Tin học hoá
4.1 Code pyton :
import matplotlib.pyplot as plt
import numpy as np
# ---------------- Chuyển chuỗi sang nhị phân ----------------
def chuyen_doi(chuoi_vao):
return ''.join([format(ord(c), '08b') for c in chuoi_vao])
# ---------------- Tính CRC ----------------
def tinh_CRC(data, da_thuc_sinh):
data = list(data)
da_thuc_sinh = list(da_thuc_sinh)
data.extend(['0'] * (len(da_thuc_sinh) - 1))
for i in range(len(data) - len(da_thuc_sinh) + 1):
if data[i] == '1':
for j in range(len(da_thuc_sinh)):
data[i + j] = str(int(data[i + j]) ^ int(da_thuc_sinh[j]))
return ''.join(data[-(len(da_thuc_sinh) - 1):])
# ---------------- Tính dải làm việc ----------------
def tinh_dai(A1, A0, Nmax):
A1_lower, A1_upper = A1 - Nmax, A1 + Nmax
A0_lower, A0_upper = A0 - Nmax, A0 + Nmax
plt.figure(figsize=(8, 4))
x = ['A1', 'A0']
y = [A1, A0]
plt.bar(x, y, color=['blue', 'green'])
plt.plot(['A1', 'A1'], [A1_lower, A1_upper], 'r--', label="Dải A1'")
IV. Tin học hóa quá trình tính toán
plt.fill_betweenx([A1_lower, A1_upper], -0.5, 0.5, color='red', alpha=0.1)
plt.plot(['A0', 'A0'], [A0_lower, A0_upper], 'orange', linestyle='--', label="Dải A0'")
plt.fill_betweenx([A0_lower, A0_upper], 1.5, 2.5, color='orange', alpha=0.1)
plt.ylim(min(y) - 1, max(y) + 2)
plt.ylabel("Điện áp (V)")
plt.title("Biểu đồ dải làm việc bên nhận")
plt.grid(axis='y')
plt.legend()
plt.show()
# ---------------- Mã hóa NRZ-I ----------------
def dap_NRZI(data_CRC, A1, A0):
tthai = A1
ketqua = []
for i in data_CRC:
if i == '1':
ketqua.append(tthai)
else:
tthai = A0 if tthai == A1 else A1
ketqua.append(tthai)
return ketqua
# ---------------- Vẽ sơ đồ 3 phần ----------------
def ve_so_do_3_phan(NRZI_output, nhieu, sau_nhieu, case_name,
data_bits=None):
x = np.arange(len(NRZI_output) + 1)
plt.figure(figsize=(15, 8))
plt.suptitle(f"Sơ đồ xung vuông – {case_name}", fontsize=14,
weight='bold')
# ===== 1. Bên gửi =====
plt.subplot(3, 1, 1)
plt.title("Tín hiệu bên gửi", fontsize=11)
plt.step(x, [NRZI_output[0]] + list(NRZI_output), where='post',
color='blue')
for i, val in enumerate(NRZI_output):
plt.text(i + 0.1, val + 0.2, f"{val:.0f}", color='blue', fontsize=8)
IV. Tin học hóa quá trình tính toán
if data_bits:
for i, bit in enumerate(data_bits):
plt.text(i + 0.4, min(NRZI_output) - 0.8, str(bit),
color='black', fontsize=8)
plt.ylabel("U(V)")
plt.grid(True)
plt.ylim(min(NRZI_output) - 1, max(NRZI_output) + 1)
# ===== 2. Nhiễu =====
plt.subplot(3, 1, 2)
plt.title("Nhiễu trên kênh truyền", fontsize=11)
plt.step(x, [nhieu[0]] + list(nhieu), where='post', color='green')
for i, val in enumerate(nhieu):
plt.text(i + 0.1, val + 0.2, f"{val:.1f}", color='green', fontsize=8)
plt.ylabel("N(V)")
plt.grid(True)
plt.ylim(min(nhieu) - 1, max(nhieu) + 1)
# ===== 3. Bên nhận =====
plt.subplot(3, 1, 3)
plt.title("Tín hiệu bên nhận", fontsize=11)
plt.step(x, [sau_nhieu[0]] + list(sau_nhieu), where='post', color='red')
for i, val in enumerate(sau_nhieu):
plt.text(i + 0.1, val + 0.2, f"{val:.1f}", color='red', fontsize=8)
if data_bits:
for i, bit in enumerate(data_bits):
plt.text(i + 0.4, min(sau_nhieu) - 0.8, str(bit), color='black', fontsize=8)
plt.xlabel("Thời gian (bit)")
IV. Tin học hóa quá trình tính toán
plt.ylabel("U(V)")
plt.grid(True)
plt.ylim(min(sau_nhieu) - 1, max(sau_nhieu) + 1)
plt.tight_layout(rect=[0, 0, 1, 0.96])
plt.show()
# ---------------- Giải mã NRZ-I ----------------
def dap_to_bits(A1, A0, Nmax, sau_nhieu, tt_bandau):
bits = []
tt = tt_bandau
for i in sau_nhieu:
if A1 - Nmax < tt < A1 + Nmax:
if A1 - Nmax < i < A1 + Nmax: bits.append(1)
elif A0 - Nmax < i < A0 + Nmax: bits.append(0)
tt = i
elif A0 - Nmax < tt < A0 + Nmax:
if A0 - Nmax < i < A0 + Nmax: bits.append(1)
elif A1 - Nmax < i < A1 + Nmax: bits.append(0)
tt = i
else:
bits.append('_')
return bits
# ---------------- Kiểm tra CRC ----------------
def kiem_tra_crc(bits_str, da_thuc_sinh):
IV. Tin học hóa quá trình tính toán
return tinh_CRC(bits_str, da_thuc_sinh) == '0' * (len(da_thuc_sinh) - 1)
# ---------------- Hàm chính ----------------
def main():
print("====== HỆ THỐNG TRUYỀN THÔNG NRZ-I + CRC ======")
chuoi_vao = input("Nhập 6 ký tự: ")
while len(chuoi_vao) != 6:
chuoi_vao = input("Nhập lại 6 ký tự: ")
A1 = float(input("Điện áp A1: "))
A0 = float(input("Điện áp A0: "))
da_thuc_sinh = input("Đa thức sinh G(x): ")
# Tính Nmax
SNR_min = 6.02
Nmax = round((A1 - A0) / (10 ** (SNR_min / 20)), 2)
print(f"Nmax = {Nmax} V")
tinh_dai(A1, A0, Nmax)
data = chuyen_doi(chuoi_vao)
print("Dữ liệu gửi:", data)
data_CRC = data + tinh_CRC(data, da_thuc_sinh)
print("Dữ liệu sau CRC:", data_CRC)
IV. Tin học hóa quá trình tính toán
tt_bandau = A1
NRZI_output = dap_NRZI(data_CRC, A1, A0)
# --- Nhập và hiển thị từng trường hợp ---
cases = [
"Nhiễu nhỏ (<Nmax)",
"Nhiễu vừa (>Nmax)",
"Nhiễu lớn (CRC phát hiện lỗi)"
]
for name in cases:
print(f"n===== {name} =====")
nhieu_input = input(f"Nhập 64 mức nhiễu cho '{name}' (cách nhau bằng dấu
cách): ")
nhieu = [float(x) for x in nhieu_input.split()]
if len(nhieu) != 64:
raise ValueError("Phải nhập đúng 64 giá trị!")
sau_nhieu = [a + b for a, b in zip(NRZI_output, nhieu)]
kq_bits = dap_to_bits(A1, A0, Nmax, sau_nhieu, tt_bandau)
kqua_bits_string = ''.join(str(b) for b in kq_bits if b != '_')
print("Dữ liệu nhận:", kqua_bits_string)
if '_' in kq_bits:
print(" Lỗi: nhiễu quá lớn hoặc vượt dải làm việc.")
else:
if kiem_tra_crc(kqua_bits_string, da_thuc_sinh):
print("CRC hợp lệ, dữ liệu đúng.")
IV. Tin học hóa quá trình tính toán
else:
print(“ CRC phát hiện lỗi!")
# Vẽ sơ đồ cho từng trường hợp
ve_so_do_3_phan(NRZI_output, nhieu, sau_nhieu, name, list(data_CRC))
# ---------------- Chạy chương trình ----------------
if __name__ == "__main__":
main()
IV. Tin học hóa quá trình tính toán
4.2 .Kết quả:
BÀI THUYẾT TRÌNH
CỦA CHÚNG EM XIN
PHÉP ĐƯỢC KẾT THÚC
!!!
Thank
you!
#PhuongHoa

Cơ-sở-thông-tin-số-nhóm-6.8888888888pptx

  • 1.
    CƠ SỞ THÔNG TINSỐ Nhóm 6 Kỹ thuật điện tử viễn thông 1 -K64
  • 2.
    Thành viên nhóm Nguyễn DuyHưng (Nhóm trưởng) Dương Quang Huy Nguyễn Mạnh Hưởng Trần Duy Hưng Trần Phi Hùng
  • 3.
    BÀI TẬP LỚN . Hệtruyền thông số truyền một đoạn văn bản gồm 6 ký tự ( UVWXYZ ) được mã hóa theo bảng mã Unicode (8bit). Mã hóa kiểm soát lỗi dữ liệu tại bên gửi và nhận CRC ( A * 1 = 7V mức cao, A * 0 = 3V mức thấp ), mã đường truyền NRZ-I, giả thiết suy hao đường truyền L = 0 dB.
  • 4.
    I. VẼ SƠĐỒ TIẾN TRÌNH XỬ LÝ TÍN HIỆU II. TÍNH TOÁN CÁC THÔNG SỐ LIÊN QUAN III. LẤY VÍ DỤ VỀ NHIỄU IV. TIN HỌC HOÁ QUÁ TRÌNH TÍNH TOÁN Nội dung chính
  • 5.
    Mã hoá dữliệu gốc Information : UVWXYZ =>Mã hoá dữ liệu theo bảng mã Unicode - 8 bit =>Chuyển từ tin tức thành dữ liệu theo bộ mã Unicode 8 bit ta được: • Ký tự ‘u': Dạng nhị phân 8-bit: 01010101 • Ký tự ‘v': Dạng nhị phân 8-bit:0101 0110 • Ký tự ‘w': Dạng nhị phân 8-bit:01010111 • Ký tự ‘x': Dạng nhị phân 8-bit:01011000 • Ký tự ‘y': Dạng nhị phân 8-bit:01011001 • Ký tự ‘z': Dạng nhị phân 8-bit:01011010 • Kết quả chuỗi nhị phân 8-bit cho "UVWXYZ" là: 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010 *Mã kiểm soát lỗi CRC *Mã đường truyền NRZ-1 I. Vẽ sơ đồ tiến trình xử lý tín hiệu
  • 6.
    II. Tính toáncác thông số liên quan 2.1.Khối định dạng: Chọn 6 kí tự “UVWXYZ ” sang unicode nhị phân 8 bit. Dữ liệu bên gửi : 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010
  • 7.
    II. Tính toáncác thông số liên quan 2.2 Mã kiểm soát lỗi CRC - Bên gửi: Dữ liệu gửi đi M(x) = 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010 Đa thức sinh: G(x) = = 1 0001 0000 0010 0001 (r=16) Ta có: T(x)= [ M(x) +r ( bit 0 ) ] XOR R(x) Với R(x) =[ M(x) + r ( bit 0 ) ] mod G(x) ( Dư của M(x)/G(x) ) = 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010 0000 0000 0000 0000 mod 1 0001 0000 0010 0001
  • 8.
    II. Tính toáncác thông số liên quan Ta có sơ đồ biểu diễn như sau:
  • 9.
    II. Tính toáncác thông số liên quan Sau khi chia CRC ta được R(x) = 0111 0111 1100 0011 T(x) = [ M(x) + r ( bit 0 ) ] XOR R(x) = 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010 0111 0111 1100 0011 -Bên nhận : Ta có : N(x) = T’(x) mod G(x)  N(x)=0  T’(x) ≡ T(x): đoạn data gửi đi là đúng N(x) ≠ 0  T’(x) ≠ T(x) : đoạn data gửi đi là sai Giả sử T’(x) = 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010 0111 0111 1100 0011 N(x) = 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010 0111 0111 1100 0011 mod 1000 1000 0001 00001 Sau khi thực hiện phép chia ta có N(x) = 0 T’(x) ≡ T(x) Vậy đoạn dữ liệu nhận được là đúng
  • 10.
    II. Tính toáncác thông số liên quan 2.3 Mã đường truyền NRZ-I Quy tắc: -“0”  Chuyển mức điện áp xung -“1”  Không chuyển mức điện áp xung Chọn 2 mức điện áp xung : A1=7V ( mức cao) A0=3V ( mức thấp ) SNRmin=6,02 dB Thỏa mãn tính chất của đường truyền NRZ-I Bên gửi : A1=7V , A0=3V -T(x) = 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010 0111 0111 1100 0011 Tín hiệu biểu diễn theo mã đường NRZ-I 3V,3V,7V,3V,3V,7V,3V,7V,7V,7V,3V,7V,7V,3V,3V,3V, 3V,3V,7V,3V,3V,7V,3V,7V,3V,3V,7V,3V,3V,7V,3V,3V, 7V,7V,7V,3V,7V,7V,7V,7V,3V,3V,3V,7V,3V,3V,7V,7V, 7V,3V,7V,7V,3V,3V,3V,3V,3V,3V,3V,7V,3V,7V,3V,7V, 7V,3V,7V,3V,7V,7V,3V,3V,3V,3V,7V,3V,3V,3V,3V,7V, 7V,7V,3V,3V,7V,3V,7V,7V,3V,3V,3V,7V,3V,3V,7V,3V, 3V,7V,7V,7V,3V,3V,3V,7V,3V,7V,3V,3V,7V,3V,7V,7V, 7V,3V,3V,7V,3V,3V,3V,7V,3V,7V,3V,3V,3V,3V,3V,7V -Tính Nmax SNRmin= 20log∆ / =20 𝑈𝑚𝑖𝑛 𝑁𝑚𝑎𝑥 log⁡〖 1− )/ (𝐴 𝐴 2𝑁𝑚𝑎𝑥 (2 (2 (2 (2 (2 (2 (2 (2 (2 (2 (2 (2 (2 ( 2 〗  6,02 = 20log (7−3)/𝑁𝑚𝑎𝑥  Nmax = 2
  • 11.
    II. Tính toáncác thông số liên quan Bên gửi Kênh truyền Bên nhận A0=3V L=0, N=2 A0- Nmax<A0’<A0+Nmax  1V<A0’< 5V A1=7V L=0,N=2 A1- Nmax<A1’<A1+Nmax  5V< A1’ < 9V Bên nhận: Tính dải làm việc bên nhận : L=0 dB , Nmax=2
  • 12.
    III. Lấy vídụ về nhiễu 3. Lấy ví dụ nhiễu 3.1 Ví dụ về N<Nmax tín hiệu và dữ liệu thu được là đúng. Bên gửi: - Khối định dạng : Chuyển 6 ký tự “ UVWXYZ” => Unicode 8 bit 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010 - Mã kiểm soát lỗi CRC : - Dữ liệu gửi đi M(x) = 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010 Đa thức sinh: G(x) = = 1000 1000 0001 00001 (r=16) Ta có: T(x)= [ M(x) +r ( bit 0 ) ] XOR R(x) Với R(x) =[ M(x) + r ( bit 0 ) ] mod G(x) ( Dư của M(x)/G(x) ) = 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010 0000 0000 0000 0000 mod 1 0001 0000 0010 0001 Sau khi chia CRC ta được R(x) = 0111 0111 1100 0011 T(x) = [ M(x) + r ( bit 0 ) ] XOR R(x) = 0101 0101 0101 0110 0101 0111 0101 1000 0101 1001 0101 1010 0111 0111 1100 0011 - Mã đường NRZ-I : A1=7V ( Mức cao) , A0=3V ( Mức thấp) “1” => giữ nguyên mức điện áp “0” => đảo mức điện áp SNRmin= 20log  6,02 = 20log  Nmax = 2 (V) Với N<Nmax tín hiệu thu được đúng
  • 13.
    ST T Data Bên gửi (V) Nhiễu trên kênhtruyền: N(V) Bên nhận(V) Nử a thờ i gia n đầu Nửa thời gian cuối Nửa thời gian đầu Nửa thời gian cuối 1 0 A1=7 A0=3 1,5 1,5 A1’=8,5; (2)=>A1’≡A1 A0’=4,5; (2)=>A0’≡A0 A1’=8,5; (2)=>A1’≡A1 A0’=4,5; (2)=>A0’≡A0 2 1 A0=3 A1=7 0,0 1,2 A1’=7,0; (2)=>A1’≡A1 A0’=3,0; (2)=>A0’≡A0 A1’=8,2; (2)=>A1’≡A1 A0’=4,2; (2)=>A0’≡A0 3 0 A1=7 A0=3 1,0 1,5 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 A1’=8,5; (2)=>A1’≡A1 A0’=4,5; (2)=>A0’≡A0 4 1 A0=3 A1=7 -1,0 1,0 A1’=6,0; (2)=>A1’≡A1 A0’=2,0; (2)=>A0’≡A0 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 5 0 A1=7 A0=3 1,3 1,0 A1’=8,3; (2)=>A1’≡A1 A0’=4,3; (2)=>A0’≡A0 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 6 1 A0=3 A1=7 -1,0 0,0 A1’=6,0; (2)=>A1’≡A1 A0’=2,0; (2)=>A0’≡A0 A1’=7,0; (2)=>A1’≡A1 A0’=3,0; (2)=>A0’≡A0 7 0 A1=7 A0=3 -1,5 0,0 A1’=5,5; (2)=>A1’≡A1 A0’=1,5; (2)=>A0’≡A0 A1’=7,0; (2)=>A1’≡A1 A0’=3,0; (2)=>A0’≡A0
  • 14.
    8 1 A0=3 A1=7 0,5 0,5 A1’=7,5; (2)=>A1’≡A1 A0’=3,5; (2)=>A0’≡A0 A1’=7,5; (2)=>A1’≡A1 A0’=3,5; (2)=>A0’≡A0 9 0 A1=7 A0=3-1,4 1,0 A1’=5,6; (2)=>A1’≡A1 A0’=1,6; (2)=>A0’≡A0 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 10 1 A0=3 A1=7 1,0 0,4 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 A1’=7,4; (2)=>A1’≡A1 A0’=3,4; (2)=>A0’≡A0 11 0 A1=7 A0=3 1,2 1,0 A1’=8,2; (2)=>A1’≡A1 A0’=4,2; (2)=>A0’≡A0 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 12 1 A0=3 A1=7 0,0 0,0 A1’=7,0; (2)=>A1’≡A1 A0’=3,0; (2)=>A0’≡A0 A1’=7,0; (2)=>A1’≡A1 A0’=3,0; (2)=>A0’≡A0 13 0 A1=7 A0=3 -1,0 0,0 A1’=6,0; (2)=>A1’≡A1 A0’=2,0; (2)=>A0’≡A0 A1’=7,0; (2)=>A1’≡A1 A0’=3,0; (2)=>A0’≡A0 14 1 A0=3 A1=7 1,2 0,0 A1’=8,2; (2)=>A1’≡A1 A0’=4,2; (2)=>A0’≡A0 A1’=7,0; (2)=>A1’≡A1 A0’=3,0; (2)=>A0’≡A0 15 1 A0=3 A1=7 -1,3 0,0 A1’=5,7; (2)=>A1’≡A1 A0’=1,7; (2)=>A0’≡A0 A1’=7,0; (2)=>A1’≡A1 A0’=3,0; (2)=>A0’≡A0 16 0 A1=7 A0=3 1,0 0,0 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 A1’=7,0; (2)=>A1’≡A1 A0’=3,0; (2)=>A0’≡A0 17 0 A1=7 A0=3 1,5 0,0 A1’=8,5; (2)=>A1’≡A1 A0’=4,5; (2)=>A0’≡A0 A1’=7,0; (2)=>A1’≡A1 A0’=3,0; (2)=>A0’≡A0 18 1 A0=3 A1=7 0,5 0,0 A1’=7,5; (2)=>A1’≡A1 A0’=3,5; (2)=>A0’≡A0 A1’=7,0; (2)=>A1’≡A1 A0’=3,0; (2)=>A0’≡A0 19 0 A1=7 A0=3 1,5 1,0 A1’=8,5; (2)=>A1’≡A1 A0’=4,5; (2)=>A0’≡A0 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 20 1 A0=3 A1=7 -1,5 1,0 A1’=5,5; (2)=>A1’≡A1 A0’=1,5; (2)=>A0’≡A0 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 21 0 A1=7 A0=3 -0,5 1,0 A1’=6,5; (2)=>A1’≡A1 A0’=2,5; (2)=>A0’≡A0 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0
  • 15.
    22 1 A0=3 A1=7 -1,2 1,0 A1’=5,8; (2)=>A1’≡A1 A0’=1,8; (2)=>A0’≡A0 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 23 1 A0=3 A1=71,4 1,0 A1’=8,4; (2)=>A1’≡A1 A0’=4,4; (2)=>A0’≡A0 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 24 1 A0=3 A1=7 -1,2 1,0 A1’=5,8; (2)=>A1’≡A1 A0’=1,8; (2)=>A0’≡A0 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 25 0 A1=7 A0=3 -1,4 1,0 A1’=5,6; (2)=>A1’≡A1 A0’=1,6; (2)=>A0’≡A0 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 26 1 A0=3 A1=7 0,5 1,0 A1’=7,5; (2)=>A1’≡A1 A0’=3,5; (2)=>A0’≡A0 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 27 0 A1=7 A0=3 1,3 1,0 A1’=8,3; (2)=>A1’≡A1 A0’=4,3; (2)=>A0’≡A0 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 28 1 A0=3 A1=7 1,4 1,0 A1’=8,4; (2)=>A1’≡A1 A0’=4,4; (2)=>A0’≡A0 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 29 1 A0=3 A1=7 -1,0 1,5 A1’=6,0; (2)=>A1’≡A1 A0’=2,0; (2)=>A0’≡A0 A1’=8,5; (2)=>A1’≡A1 A0’=4,5; (2)=>A0’≡A0 30 0 A1=7 A0=3 -1,2 1,5 A1’=5,8; (2)=>A1’≡A1 A0’=1,8; (2)=>A0’≡A0 A1’=8,5; (2)=>A1’≡A1 A0’=4,5; (2)=>A0’≡A0 31 0 A1=7 A0=3 1,0 1,5 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 A1’=8,5; (2)=>A1’≡A1 A0’=4,5; (2)=>A0’≡A0 32 0 A1=7 A0=3 1,0 1,5 A1’=8,0; (2)=>A1’≡A1 A0’=4,0; (2)=>A0’≡A0 A1’=8,5; (2)=>A1’≡A1 A0’=4,5; (2)=>A0’≡A0 33 0 A1=7 A0=3 -1,5 1,5 A1’=5,5; (2)=>A1’≡A1 A0’=1,5; (2)=>A0’≡A0 A1’=8,5; (2)=>A1’≡A1 A0’=4,5; (2)=>A0’≡A0 34 1 A0=3 A1=7 1,5 0,5 A1’=8,5; (2)=>A1’≡A1 A0’=4,5; (2)=>A0’≡A0 A1’=7,5; (2)=>A1’≡A1 A0’=3,5; (2)=>A0’≡A0 35 0 A1=7 A0=3 -1,4 0,5 A1’=5,6; (2)=>A1’≡A1 A0’=1,6; (2)=>A0’≡A0 A1’=7,5; (2)=>A1’≡A1 A0’=3,5; (2)=>A0’≡A0
  • 16.
    36 1 A0=3 A1=7 00 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 37 1 A0=3 A1=7 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 38 0 A1=7 A0=3 0 0 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 39 0 A1=7 A0=3 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 40 1 A0=3 A1=7 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 41 0 A1=7 A0=3 0 0 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 42 1 A0=3 A1=7 0 0 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 43 0 A1=7 A0=3 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 44 1 A0=3 A1=7 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 45 1 A0=3 A1=7 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 46 0 A1=7 A0=3 0 0 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 47 1 A0=3 A1=7 0 0 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1
  • 17.
    48 0 A1=7 A0=3 0 0 A1'=7.0;(2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 49 0 A0=3 A1=7 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 50 1 A0=3 A1=7 0 0 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 51 1 A0=3 A1=7 0 0 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 52 1 A0=3 A1=7 0 0 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 53 0 A1=7 A0=3 0 0 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 54 1 A1=7 A0=3 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 55 1 A1=7 A0=3 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 56 1 A1=7 A0=3 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 57 1 A1=7 A0=3 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 58 1 A1=7 A0=3 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 59 0 A0=3 A1=7 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 60 0 A1=7 A0=3 0 0 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 61 0 A0=3 A1=7 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0
  • 18.
    62 0 A1=7 A0=3 00 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 63 1 A1=7 A0=3 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 64 1 A1=7 A0=3 0 0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 A1'=7.0; (2)=>A1'≡A1 A0'=3.0; (1)=>A0'≡A0 Ba bit thứ 4, 6 và 18 bị đảo do nhiễu có biên độ lớn (N > Nmax) làm điện áp truyền bị lệch sang vùng nhận diện logic ngược (A1 ↔ A0) nhưng vẫn nằm trong khoảng hợp lệ nên NRZ-I không phát hiện lỗi vật lý.  Bit thứ 4: A1’=7 V − 2.1 V = 4.9 V → bị hiểu thành A0 → bit đảo.  Bit thứ 6: A0’=3 V + 2.1 V = 5.1 V → bị hiểu thành A1 → bit đảo.  Bit thứ 18: A1’=7 V − 2.1 V = 4.9 V → bị hiểu thành A0 → bit đảo. Dữ liệu nhận được sau nhiễu T’(x) = 0100 0001 0101 0110 1001 0111 0101 1000 0101 1001 0101 1010 0111 0111 1100 0011 Mã kiểm soát lỗi CRC G(x) = 1000 1000 0001 00001 N(x) = T’(x) mod G(x) = 0100 0001 0101 0110 1001 0111 0101 1000 0101 1001 0101 1010 0111 0111 1100 0011 mod 1000 1000 0001 00001 = 0001 0011 1110 1110 ≠ 0 CRC phát hiện lỗi sai
  • 19.
  • 20.
    IV. Tin họchóa quá trình tính toán 4.Tin học hoá 4.1 Code pyton : import matplotlib.pyplot as plt import numpy as np # ---------------- Chuyển chuỗi sang nhị phân ---------------- def chuyen_doi(chuoi_vao): return ''.join([format(ord(c), '08b') for c in chuoi_vao]) # ---------------- Tính CRC ---------------- def tinh_CRC(data, da_thuc_sinh): data = list(data) da_thuc_sinh = list(da_thuc_sinh) data.extend(['0'] * (len(da_thuc_sinh) - 1)) for i in range(len(data) - len(da_thuc_sinh) + 1): if data[i] == '1': for j in range(len(da_thuc_sinh)): data[i + j] = str(int(data[i + j]) ^ int(da_thuc_sinh[j])) return ''.join(data[-(len(da_thuc_sinh) - 1):]) # ---------------- Tính dải làm việc ---------------- def tinh_dai(A1, A0, Nmax): A1_lower, A1_upper = A1 - Nmax, A1 + Nmax A0_lower, A0_upper = A0 - Nmax, A0 + Nmax plt.figure(figsize=(8, 4)) x = ['A1', 'A0'] y = [A1, A0] plt.bar(x, y, color=['blue', 'green']) plt.plot(['A1', 'A1'], [A1_lower, A1_upper], 'r--', label="Dải A1'")
  • 21.
    IV. Tin họchóa quá trình tính toán plt.fill_betweenx([A1_lower, A1_upper], -0.5, 0.5, color='red', alpha=0.1) plt.plot(['A0', 'A0'], [A0_lower, A0_upper], 'orange', linestyle='--', label="Dải A0'") plt.fill_betweenx([A0_lower, A0_upper], 1.5, 2.5, color='orange', alpha=0.1) plt.ylim(min(y) - 1, max(y) + 2) plt.ylabel("Điện áp (V)") plt.title("Biểu đồ dải làm việc bên nhận") plt.grid(axis='y') plt.legend() plt.show() # ---------------- Mã hóa NRZ-I ---------------- def dap_NRZI(data_CRC, A1, A0): tthai = A1 ketqua = [] for i in data_CRC: if i == '1': ketqua.append(tthai) else: tthai = A0 if tthai == A1 else A1 ketqua.append(tthai) return ketqua # ---------------- Vẽ sơ đồ 3 phần ---------------- def ve_so_do_3_phan(NRZI_output, nhieu, sau_nhieu, case_name, data_bits=None): x = np.arange(len(NRZI_output) + 1) plt.figure(figsize=(15, 8)) plt.suptitle(f"Sơ đồ xung vuông – {case_name}", fontsize=14, weight='bold') # ===== 1. Bên gửi ===== plt.subplot(3, 1, 1) plt.title("Tín hiệu bên gửi", fontsize=11) plt.step(x, [NRZI_output[0]] + list(NRZI_output), where='post', color='blue') for i, val in enumerate(NRZI_output): plt.text(i + 0.1, val + 0.2, f"{val:.0f}", color='blue', fontsize=8)
  • 22.
    IV. Tin họchóa quá trình tính toán if data_bits: for i, bit in enumerate(data_bits): plt.text(i + 0.4, min(NRZI_output) - 0.8, str(bit), color='black', fontsize=8) plt.ylabel("U(V)") plt.grid(True) plt.ylim(min(NRZI_output) - 1, max(NRZI_output) + 1) # ===== 2. Nhiễu ===== plt.subplot(3, 1, 2) plt.title("Nhiễu trên kênh truyền", fontsize=11) plt.step(x, [nhieu[0]] + list(nhieu), where='post', color='green') for i, val in enumerate(nhieu): plt.text(i + 0.1, val + 0.2, f"{val:.1f}", color='green', fontsize=8) plt.ylabel("N(V)") plt.grid(True) plt.ylim(min(nhieu) - 1, max(nhieu) + 1) # ===== 3. Bên nhận ===== plt.subplot(3, 1, 3) plt.title("Tín hiệu bên nhận", fontsize=11) plt.step(x, [sau_nhieu[0]] + list(sau_nhieu), where='post', color='red') for i, val in enumerate(sau_nhieu): plt.text(i + 0.1, val + 0.2, f"{val:.1f}", color='red', fontsize=8) if data_bits: for i, bit in enumerate(data_bits): plt.text(i + 0.4, min(sau_nhieu) - 0.8, str(bit), color='black', fontsize=8) plt.xlabel("Thời gian (bit)")
  • 23.
    IV. Tin họchóa quá trình tính toán plt.ylabel("U(V)") plt.grid(True) plt.ylim(min(sau_nhieu) - 1, max(sau_nhieu) + 1) plt.tight_layout(rect=[0, 0, 1, 0.96]) plt.show() # ---------------- Giải mã NRZ-I ---------------- def dap_to_bits(A1, A0, Nmax, sau_nhieu, tt_bandau): bits = [] tt = tt_bandau for i in sau_nhieu: if A1 - Nmax < tt < A1 + Nmax: if A1 - Nmax < i < A1 + Nmax: bits.append(1) elif A0 - Nmax < i < A0 + Nmax: bits.append(0) tt = i elif A0 - Nmax < tt < A0 + Nmax: if A0 - Nmax < i < A0 + Nmax: bits.append(1) elif A1 - Nmax < i < A1 + Nmax: bits.append(0) tt = i else: bits.append('_') return bits # ---------------- Kiểm tra CRC ---------------- def kiem_tra_crc(bits_str, da_thuc_sinh):
  • 24.
    IV. Tin họchóa quá trình tính toán return tinh_CRC(bits_str, da_thuc_sinh) == '0' * (len(da_thuc_sinh) - 1) # ---------------- Hàm chính ---------------- def main(): print("====== HỆ THỐNG TRUYỀN THÔNG NRZ-I + CRC ======") chuoi_vao = input("Nhập 6 ký tự: ") while len(chuoi_vao) != 6: chuoi_vao = input("Nhập lại 6 ký tự: ") A1 = float(input("Điện áp A1: ")) A0 = float(input("Điện áp A0: ")) da_thuc_sinh = input("Đa thức sinh G(x): ") # Tính Nmax SNR_min = 6.02 Nmax = round((A1 - A0) / (10 ** (SNR_min / 20)), 2) print(f"Nmax = {Nmax} V") tinh_dai(A1, A0, Nmax) data = chuyen_doi(chuoi_vao) print("Dữ liệu gửi:", data) data_CRC = data + tinh_CRC(data, da_thuc_sinh) print("Dữ liệu sau CRC:", data_CRC)
  • 25.
    IV. Tin họchóa quá trình tính toán tt_bandau = A1 NRZI_output = dap_NRZI(data_CRC, A1, A0) # --- Nhập và hiển thị từng trường hợp --- cases = [ "Nhiễu nhỏ (<Nmax)", "Nhiễu vừa (>Nmax)", "Nhiễu lớn (CRC phát hiện lỗi)" ] for name in cases: print(f"n===== {name} =====") nhieu_input = input(f"Nhập 64 mức nhiễu cho '{name}' (cách nhau bằng dấu cách): ") nhieu = [float(x) for x in nhieu_input.split()] if len(nhieu) != 64: raise ValueError("Phải nhập đúng 64 giá trị!") sau_nhieu = [a + b for a, b in zip(NRZI_output, nhieu)] kq_bits = dap_to_bits(A1, A0, Nmax, sau_nhieu, tt_bandau) kqua_bits_string = ''.join(str(b) for b in kq_bits if b != '_') print("Dữ liệu nhận:", kqua_bits_string) if '_' in kq_bits: print(" Lỗi: nhiễu quá lớn hoặc vượt dải làm việc.") else: if kiem_tra_crc(kqua_bits_string, da_thuc_sinh): print("CRC hợp lệ, dữ liệu đúng.")
  • 26.
    IV. Tin họchóa quá trình tính toán else: print(“ CRC phát hiện lỗi!") # Vẽ sơ đồ cho từng trường hợp ve_so_do_3_phan(NRZI_output, nhieu, sau_nhieu, name, list(data_CRC)) # ---------------- Chạy chương trình ---------------- if __name__ == "__main__": main()
  • 27.
    IV. Tin họchóa quá trình tính toán 4.2 .Kết quả:
  • 28.
    BÀI THUYẾT TRÌNH CỦACHÚNG EM XIN PHÉP ĐƯỢC KẾT THÚC !!!
  • 29.