Tải bản đầy đủ (.docx) (53 trang)

THIẾT kế và THỰC THI FPGA CHO bộ PHÁT HIỆN và sửa lỗi BIT (có code)

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 (2.99 MB, 53 trang )

ĐỒ ÁN TỐT NGHIỆP

THIẾT KẾ VÀ THỰC THI FPGA CHO
BỘ PHÁT HIỆN VÀ SỬA LỖI BIT

1


MỤC LỤC
DANH MỤC CÁC HÌNH VẼ..........................................................................................VII
DANH MỤC CÁC BẢNG BIỂU.......................................................................................IX
DANH MỤC CÁC TỪ VIẾT TẮT.....................................................................................X
CHƯƠNG 1. TỔNG QUAN................................................................................................1
1.1

GIỚI THIỆU..................................................................................................................1

1.2

LỊCH SỬ VỀ MÃ HAMMING........................................................................................1

1.3

GIỚI THIỆU CÔNG NGHỆ FPGA VÀ KIT DE2-115.......................................................2

1.3.1

Tổng quan công nghệ FPGA...............................................................................2

1.3.2


Kit Altera DE2-115.............................................................................................4

1.4

PHẦN MỀM LẬP TRÌNH QUARTUS VÀ NGÔN NGỮ LẬP TRÌNH VHDL..........................7

1.4.1

Phần mềm lập trình Quartus...............................................................................7

1.4.2

Ngôn ngữ lập trình VHDL..................................................................................9

1.5

GIAO TIẾP NỐI TIẾP UART.......................................................................................10

1.5.1

Giới thiệu về UART...........................................................................................10

1.5.2

Các thông số cơ bản trong truyền nhận UART.................................................11

CHƯƠNG 2. PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI BIT..............................12
2.1

CÁC KIỂU LỖI...........................................................................................................12


2.1.1

Lỗi bit đơn.........................................................................................................12

2.1.2

Lỗi bit chùm......................................................................................................13

2.2

PHƯƠNG PHÁP PHÁT HIỆN LỖI VRC.........................................................................14

2.3

PHƯƠNG PHÁP PHÁT HIỆN LỖI CRC.........................................................................14

2.4

PHƯƠNG PHÁP PHÁT HIỆN LỖI CHECKSUM..............................................................15

2.5

PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI BIT BẰNG MÃ HAMMING.............................15

CHƯƠNG 3. THIẾT KẾ BỘ PHÁT HIỆN VÀ SỬA LỖI BIT DÙNG PHƯƠNG
PHÁP MÃ HAMMING......................................................................................................18
3.1

HỆ THỐNG PHÁT HIỆN VÀ SỬA LỖI BIT (EDAC)......................................................18


2


3.2

NGUYÊN LÝ HỆ THỐNG PHÁT HIỆN VÀ SỬA LỖI.......................................................22

3.2.1

Phía phát...........................................................................................................22

3.2.2

Phía thu.............................................................................................................22

CHƯƠNG 4. MÔ PHỎNG VÀ THỰC THI..................................................................23
4.1

LƯU ĐỒ GIẢI THUẬT.................................................................................................23

4.2

MÔ PHỎNG TRÊN QUARTUS.....................................................................................25

4.3

THỰC THI TRÊN KIT DE2.........................................................................................27

4.3.1


Kiểm tra phát dữ liệu của hệ thống EDAC......................................................27

4.3.2

Kiểm tra thu dữ liệu của hệ thống EDAC.........................................................28

CHƯƠNG 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN..............................................40
5.1

KẾT LUẬN.................................................................................................................40

5.2

HƯỚNG PHÁT TRIỂN.................................................................................................40

TÀI LIỆU THAM KHẢO..................................................................................................41
PHỤ LỤC.............................................................................................................................42

3


DANH MỤC CÁC HÌNH VẼ
HÌNH 1-1: RICHARD HAMMING....................................................................................2
HÌNH 1-2: MÔ HÌNH FPGA...............................................................................................3
HÌNH 1-3: KIT ALTERA DE2-115.....................................................................................5
HÌNH 1-4: GIẢN ĐỒ KHỐI ALTERA DE2-115..............................................................6
HÌNH 1-5: GIAO DIỆN QUARTUS II...............................................................................9
HÌNH 1-6: PHƯƠNG THỨC TRUYỀN NHẬN UART................................................10
HÌNH 1-7: KHUNG TRUYỀN NHẬN UART.................................................................11

HÌNH 2-1: CÁC LOẠI LỖI BIT.......................................................................................12
HÌNH 2-2: LỖI BIT ĐƠN..................................................................................................13
HÌNH 2-3: LỖI BIT CHÙM...............................................................................................13
HÌNH 3-1: HỆ THỐNG THU PHÁT TÍN HIỆU EDAC...............................................18
HÌNH 3-2: SƠ ĐỒ KHỐI HỆ THỐNG EDAC...............................................................21
HÌNH 4-1: LƯU ĐỒ PHÍA PHÁT....................................................................................23
HÌNH 4-2: LƯU ĐỒ PHÍA THU.......................................................................................24
HÌNH 4-3: RTL VIEWER..................................................................................................25
HÌNH 4-4: TỔNG HỢP BÁO CÁO HỆ THỐNG...........................................................25
HÌNH 4-5: MÔ PHỎNG DẠNG SÓNG...........................................................................26
HÌNH 4-6: HIỂN THỊ TRÊN KIT DE2 CHO BỘ PHÁT DỮ LIỆU...........................27
HÌNH 4-7: TRUYỀN UART LẦN 1 TRƯỜNG HỢP KHÔNG LỖI...........................29
HÌNH 4-8: TRUYỀN UART LẦN 2 TRƯỜNG HỢP KHÔNG LỖI...........................29
HÌNH 4-9: TRUYỀN UART LẦN 3 TRƯỜNG HỢP KHÔNG LỖI...........................30
HÌNH 4-10: HIỂN THỊ TRÊN KIT DE2 TRƯỜNG HỢP KHÔNG LỖI...................30
HÌNH 4-11: TRUYỀN UART LẦN 1 TRƯỜNG HỢP LỖI 1 BIT...............................31
HÌNH 4-12: TRUYỀN UART LẦN 2 TRƯỜNG HỢP LỖI 1 BIT..............................32

4


HÌNH 4-13: TRUYỀN UART LẦN 3 TRƯỜNG HỢP LỖI 1 BIT..............................32
HÌNH 4-14: HIỂN THỊ TRÊN KIT DE2 TRƯỜNG HỢP LỖI 1 BIT........................33
HÌNH 4-15: TRUYỀN UART LẦN 1 TRƯỜNG HỢP LỖI 2 BIT..............................34
HÌNH 4-16: TRUYỀN UART LẦN 2 TRƯỜNG HỢP LỖI 2 BIT..............................34
HÌNH 4-17: TRUYỀN UART LẦN 3 TRƯỜNG HỢP LỖI 2 BIT..............................35
HÌNH 4-18: HIỂN THỊ TRÊN KIT DE2 TRƯỜNG HỢP LỖI 2 BIT........................36
HÌNH 4-19: TRUYỀN UART LẦN 1 TRƯỜNG HỢP LỖI BIT PARITY.................37
HÌNH 4-20: TRUYỀN UART LẦN 2 TRƯỜNG HỢP LỖI BIT PARITY.................37
HÌNH 4-21: TRUYỀN UART LẦN 3 TRƯỜNG HỢP LỖI BIT PARITY.................38

HÌNH 4-22: HIỂN THỊ TRÊN KIT DE2 TRƯỜNG HỢP LỖI BIT PARITY...........39

5


DANH MỤC CÁC BẢNG BIỂU
BẢNG 4-1: GÁN CHÂN KIT DE2 CHO BỘ PHÁT DỮ LIỆU...................................27
BẢNG 4-2: GÁN CHÂN KIT DE2 CHO BỘ THU DỮ LIỆU......................................28

6


DANH MỤC CÁC TỪ VIẾT TẮT
ASIC

Application Specific Integrated Circuit

CLB

Configurable Logic Block

CRC

Cyclic Redundancy Check

DE2

Development and Education board

EDAC


Error Detection And Correction

FPGA

Field-programmable gate array

IC

Integrated Circuit

IEEE

Institute of Electrical and Electronics Engineers

JTAG

Joint Test Action Group

LCD

Liquid crystal display

MAC

Media Access Control

PLD

Programmable Logic Device


RTL

Register-Transfer Level

UART

Universal Asynchronous Receiver-Transmitter

VGA

Video Graphics Array

VHDL

VHSIC Hardware Description Language

VHSIC

Very HighSpeed Itergrated Circuit

7


ĐỒ ÁN TỐT NGHIỆP
Trang 1/47

CHƯƠNG 1. TỔNG QUAN
1.1 Giới thiệu
Một mạng viễn thông cần có khả năng truyền dữ liệu một cách chính xác. Một hệ

thống phải đảm bảo được khả năng này thì mới hoạt động được.
Tuy nhiên dữ liệu dạng số khi được xử lí, lưu trữ hay truyền từ hệ thống này qua hệ
thống khác có thể bị lỗi. Như khi truyền nhận dữ liệu đi xa qua môi trường điện
thoại, dây cáp, vô tuyến… môi trường truyền có thể bị tác động bởi nhiệt độ, nhiễu
đường dây, điện từ… hay các bộ chuyển đổi, bộ xử lí do lâu ngày có một sai sót nhỏ
sẽ làm sai lệch dữ liệu nhận được. Vì vậy, trước khi nhận được dữ liệu thì phải phát
hiện lỗi và sửa lỗi để có thể nhận thông tin một cách chính xác nhất.
Có nhiều phương pháp phát hiện và sửa lỗi bit, trong đó phương pháp có thể phát
hiện và sửa được lỗi 1 bit, lỗi bit Parity và phát hiện được lỗi 2 bit là phương pháp
mã Hamming.
1.2 Lịch sử về mã Hamming
Trong những năm 1940, Hamming làm việc tại Bell Labs trên máy tính Bell Model
V, một máy điện cơ dùng rơ-le, với tốc độ rất chậm, mấy giây giao động đồng hồ
một chu kỳ máy. Nhập dữ liệu cho vào máy tính bằng những cái thẻ đục lỗ và hầu
như máy tính luôn luôn gây ra lỗi trong quá trình đọc dữ liệu. Trong những ngày
làm việc trong tuần, những mã được sử dụng để tìm ra lỗi, khi nào tìm được nó báo
hiệu bằng đèn chớp tắt cho người điều khiển biết để họ sửa, chỉnh sửa máy lại. khi
người điều khiển máy tính vắng mặt như trong thời gian ngoài giờ làm việc hay
trong những ngày cuối tuần, mỗi khi có lỗi xảy ra máy tính tự động bỏ qua chương
trình đang chạy và đổi sang công việc khác.

Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit

SVTH: Lương Đức Tài


ĐỒ ÁN TỐT NGHIỆP
Trang 2/47

Hình 1-1: Richard Hamming


Hamming thường làm việc trong những ngày cuối tuần vì thế ông dần trở nên tức
dận mỗi khi ông phải khởi động lại các chương trình từ đầu do chất lượng kém,
không đáng tin cậy của bộ máy đọc các thẻ đục lỗ. Mấy năm kế tiếp, Hamming dồn
tâm huyết vào việc thiết kế, phát triển hằng loạt các thuật toán có hiệu quả cao để sử
lý vấn đề sửa lỗi. Năm 1950, Mã Hamming được ông công bố. Một số chương trình
ứng dụng hiện nay hoạt động vẫn còn sử dụng mã này của ông. Nhiều mã phát hiện
lỗi đơn giản đã được sử dụng trước khi có mã Hamming, nhưng không có mã nào
hiệu quả bằng mã Hamming với một tổng chi phí tương đương [3].
1.3 Giới thiệu công nghệ FPGA và kit DE2-115
1.3.1 Tổng quan công nghệ FPGA
FPGA là một loại IC cho phép người lập trình chỉnh sửa các thiết kế của mình.
FPGA ra đời như một phương pháp cơ bản cho vấn đề hạn chế thời gian để xuất

Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit


ĐỒ ÁN TỐT NGHIỆP
Trang 3/47

hiện trên thị trường và rủi ro tài chính trong quá trình nghiên cứu sản phẩm của
công nghệ điện tử. FPGA là loại thiết bị khả trình hiện đại nhất cho đến thời điển
hiện tại của ngành công nghệ chế tạo IC chuyên biệt mà hiện nay vẫn được gọi là
ASIC.

Hình 1-2: Mô hình FPGA

 Cấu trúc FPGA gồm 3 thành phần chính:
- Các khối logic cấu hình (CLB).
- Các khối vào/ra (IOB).

- Các kết nối.
FPGA là một mạch tích hợp chứa rât nhiều ô logic giống nhau có thể xem là các
thành phần tiêu chuẩn. Mỗi ô logic giữ một hay một số chức năng riêng biệt. Các ô
trùng nhau được kết nối bởi một ma trận đường dẫn và chuyển mạch khả trình.
Mảng của các ô logic và kiểu kết nối là kết cấu xây dựng khối cơ bản trong mạch
logic. Các thiết kế rắc rối được hình thành bằng cách liên kết các khối cơ bản để tạo
ra các mạch được mô tả. Người thiết kế bằng các đặc trưng logic đơn của mỗi ô và
xác định đóng các chuyển mạch trong ma trận kết nối. Mô hình tổng quát của FPGA
Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit


ĐỒ ÁN TỐT NGHIỆP
Trang 4/47

gồm một dãy hai chiều các khối logic có thể được liên kết bằng các nguồn kết nối
chung. Tài nguyên kết nối khả trình đáp ứng các thành phần truyền dẫn tới kết nối
đầu vào ra của các CLB và các IOB trong mạng riêng. Các nguồn kết nối có thể có
chiều dài không giống nhau. Bên trong các liên kết là các chuyển mạch lập trình
được dùng để kết nối các khối logic cấu hình CLB cần thiết qua các chuyển mạch.
Các khối CLB đáp ứng các phần tử chức năng với cấu trúc sử dụng logic. Các khối
vào/ra đáp ứng giao diện giữa các gói chân và các đường tín hiệu bên trong.
1.3.2 Kit Altera DE2-115
Bo mạch DE2-115 của Altera là công cụ cho việc nghiên cứu và phát triển về
FPGA, mạch logic số và cấu trúc máy tính. Bo mạch DE2 hỗ trợ nhiều công nghệ
tiên tiến cũng như nhiều chức năng phần cứng thích hợp cho việc sử dụng làm thí
nghiệm, phát triển hệ thống số phức tạp, cũng như nghiên cứu các dự án thiết kế có
qui mô lớn.

Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit



ĐỒ ÁN TỐT NGHIỆP
Trang 5/47

Hình 1-3: Kit Altera DE2-115

Kit DE2-115 có rất nhiều tính năng cho phép người thiết kế thực thi một khối lượng
lớn các hệ thống, các mạch chức năng từ nhỏ đến lớn, từ đơn giản đến phức tạp.

Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit


ĐỒ ÁN TỐT NGHIỆP
Trang 6/47

Hình 1-4: Giản đồ khối Altera DE2-115

Dưới đây một số tính năng được cung cấp sẵn trên kit DE2-115:
- Vi mạch FPGA Altera Cyclone IV EP4CE115.
- USB Blaster:
+ Dùng để lập trình và điều khiển API của người dùng.
+ Hỗ trợ các chế độ JTAG và AS khi sử dụng NIOS II.
- Bộ điều khiển Cổng 10/100 Ethernet:
+ Tích hợp MAC và PHY với một giao diện xử lý chung.
+ Hỗ trợ nền công nghiệp Ethernet IP Core.
- Cổng VGA-out:
- Bộ điều khiển USB host/slave với USB kiểu A và kiểu B:
+ Tuân thủ đầy đủ với Universal Serial Bus Thông số kỹ thuật Rev 2.0.
+ Hỗ trợ truyền dữ liệu ở tốc độ đầy đủ và tốc độ thấp.
+ Hỗ trợ PC driver.

- Cổng nối PS/2 chuột/ bàn phím.

Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit


ĐỒ ÁN TỐT NGHIỆP
Trang 7/47

- Cổng giao tiếp RS-232.
- Bộ nhớ:
+ SRAM 2MB (1Mx16).
+ SDRAM 128MB (32Mx32bit).
+ 8MB (4Mx16) Flash với 8-bit mode.
+ 32Kbit EEPROM.
- 4 nút nhấn, 18 nút gạt.
- 18 led đỏ, 9 led xanh, 8 led 7 đoạn.
- LCD 16x2.
- 3 bộ dao động 50-MHz, đầu vào xung clock ngoài SMA.
1.4 Phần mềm lập trình Quartus và ngôn ngữ lập trình VHDL
1.4.1 Phần mềm lập trình Quartus
Quartus II được phát triển của hãng Altera, là phần mềm đáp ứng môi trường thiết
kế tổng thể cho các thiết kế SOPC. Quartus đóng gói tích hợp đáp ứng cho việc
thiết kế logic với các linh kiện logic khả trình PLD của Altera, gồm các dòng
Stratix, FLEX, APEX, Cyclone, MAX,...
 Phần mềm cung cấp các khả năng thiết kế logic sau:
-

Môi trường thiết kế gồm các bản vẽ, sơ đồ khối, công cụ soạn thảo các ngôn

ngữ: AHDL, VHDL, và Verilog HDL.

-

Thiết kế LogicLock.

-

Chấp nhận việc xuất, tạo và kết nối các file nguồn để đưa ra các file chương

trình.
-

Là công cụ mạnh để tổng hợp logic.

-

Phân tích thời gian.

-

Phân tích logic nhúng với công cụ phân tích SignalTap@ II.

-

Khả năng lập trình và nhận diện linh kiện.

-

Quartus II có môi trường thiết kế đồ họa giúp người thiết kế đơn giản việc viết

mã, biên dịch, kiểm soát lỗi, mô phỏng...


Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit


ĐỒ ÁN TỐT NGHIỆP
Trang 8/47

-

Tự động định vị lỗi.

-

Khả năng mô phỏng chức năng và thời gian.

-

Quartus II có thể đọc các file mạch (netlist) EDIF chuẩn, Verilog HDL, VHDL

và cũng như tạo ra các file netlist này.
-

Quartus II sử dụng bộ tích hợp NativeLink@ với các công cụ thiết kế để đáp

ứng việc đưa thông tin liền mạch giữa Quartus với các công cụ thiết kế phần cứng
EDA khác.
Với Quartus có thể kết hợp nhiều kiểu file trong 1 dự án thiết kế phân cấp. Có thể
dùng bộ công cụ Quartus Block Editor để tạo ra sơ đồ khối mô tả thiết kế ở mức
cao, sau đó dùng các sơ đồ khối khác, các bản vẽ như: VHDL Design Files (.vhd)
and Verilog HDL Design Files (.v)… để hình thành thành phần thiết kế mức thấp.

Quartus II đáp ứng việc làm việc với nhiều file trong cùng thời điểm, thực hiện file
thiết kế trong khi vẫn có thể biên dịch hay chạy mô phỏng các hệ thống khác. Công
cụ biên dịch Quartus II đưa ra quy trình thiết kế mạnh đáp ứng tùy biến để đạt được
thiết kế tối ưu trong dự án, nằm ở trung tâm hệ thống. Việc phát hiện và sửa lỗi trở
nên đơn giản hơn do công cụ định vị lỗi tự động và các bản tin cảnh báo do Quartus
hỗ trợ.

Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit


ĐỒ ÁN TỐT NGHIỆP
Trang 9/47

Hình 1-5: Giao diện Quartus II

1.4.2 Ngôn ngữ lập trình VHDL
VHDL là ngôn ngữ mô tả phần cứng được phát triển dùng cho chương trình VHSIC
của bộ quốc phòng Mỹ.
VHDL là ngôn ngữ mô tả phần cứng được thiết kế để mô tả một hệ thống logic.
Được dùng trong thiết kế FPGA, phần mềm sẽ nạp chương trình vào FPGA để có
được một hệ thống logic mà chúng ta đã thiết kế.
Hầu hết câu lệnh trong VHDL xảy ra đồng thời (song song với nhau), điều này là
một trở ngại cho những người bắt đầu làm quen với lập trình VHDL. Tuy nhiên, khi
đã quen với cách lập trình của ngôn ngữ mô tả phần cứng, điều này sẽ rất dễ dàng.
Các ngôn ngữ mô phỏng phần cứng được các nhà cung cấp thiết bị phát triển, nên
mang các đặc trưng gắn với các thiết bị của nhà cung cấp đó và thuộc quyền sở hữu
của nhà cung cấp.

Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit



ĐỒ ÁN TỐT NGHIỆP
Trang 10/47

Trong khi đó, VHDL được xây dựng như một ngôn ngữ riêng biệt không gắn với
bất kỳ một quy trình thiết kế, bộ mô phỏng hay công nghệ phần cứng nào. Người
thiết kế có thể thoải mái lựa chọn công nghệ, phương pháp thiết kế trong khi vẫn sử
dụng một ngôn ngữ lập trình duy nhất.
1.5 Giao tiếp nối tiếp UART
1.5.1 Giới thiệu về UART
UART là một mạch tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp
giữa máy tính và các thiết bị ngoại vi. Rất nhiều vi điều khiển hiện nay đã được tích
hợp UART. Để bắt đầu cho việc truyền dữ liệu bằng UART, một Start bit được gửi
đi, sau đó là các bit dữ liệu và kết thúc quá trình truyền là Stop bit.

Hình 1-6: Phương thức truyền nhận UART

Khi ở trạng thái chờ mức điện thế ở mức 1. Khi bắt đầu truyền Start bit sẽ chuyển từ
1 xuống 0 để báo hiệu cho bộ nhận là quá trình truyền dữ liệu chuẩn bị xảy ra. Sau
Start bit là đến các bit dữ liệu Data 0 - Data 7. Khi truyền hết 8 bit dữ liệu, sau đó
đến bit Parity để bộ nhận kiểm tra tính đúng đắn của dữ liệu (tùy trường hợp có thể
không sử dụng bit Parity). Khi các bit đã được gửi xong sẽ có 1 Stop bit là bit báo
cho thiết bị.
1.5.2 Các thông số cơ bản trong truyền nhận UART
Khung truyền
Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit


ĐỒ ÁN TỐT NGHIỆP
Trang 11/47


Start
bit

Data
0

Data
1

Data
2

Data
3

Data
4

Data
5

Data
6

Data
7

Parity
bit


Stop
bit

Thời gian truyền 1 bit = 1 / tốc độ Baud
Hình 1-7: Khung truyền nhận UART

Tốc độ baund: Khoảng thời gian cho 1 bit được truyền. Bên gửi và nhận phải được
cài đặt giống nhau.
Khung truyền: Xác định số bit trong mỗi lần truyền.
Start bit: Bit đầu tiên được truyền trong Frame. Là bit bắt buộc để báo hiệu cho thiết
bị nhận chuẩn bị có một gói dữ liệu sắp đc truyền đến.
Data: Dữ liệu cần truyền. Bit có trọng số nhỏ nhất được truyền trước sau đó đến bit.
Parity bit: Kiểm tra dữ liệu truyền có đúng không.
Stop bit: Là bit bắt buộc để báo cho thiết bị rằng các bit đã được gửi xong. Thiết bị
nhận sẽ tiến hành kiểm tra khung truyền, xử lý và mang Data ra để sử dụng.

CHƯƠNG 2. PHƯƠNG PHÁP PHÁT HIỆN VÀ SỬA LỖI BIT

Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit


ĐỒ ÁN TỐT NGHIỆP
Trang 12/47

2.1 Các kiểu lỗi
Về bản chất, lỗi có thể được chi thành 2 loại: lỗi bit đơn và lỗi bit chùm [1].
Trong lỗi bit đơn, một bit 0 được thay đổi thành 1 hoặc 1 thành 0. Trong lỗi bit
chùm, nhiều bit bị thay đổi. Ví dụ tốc độ truyền dữ liệu 12 bit/s trên đường truyền
có thể thay đổi một vài bit hoặt tất cả các bit trong 12 bit thông tin trong 1 đơn vị

thời gian.

Lỗi

Bit đơn

Bit chùm

Hình 2-1: Các loại lỗi bit

 Các khái niệm:
- Kẽ hở: Là vùng nằm giữa 2 vùng lỗi.
- Bùng nổ: Là vùng trong đó BER cục bộ vượt quá một giá trị ngưỡng nhất
định.
- Khoảng lỗi chùm: Vùng giữa 2 vùng lỗi chùm liên tiếp.
- Cluster: Vùng không có bất kì một bit đúng nào xen giữa.
2.1.1 Lỗi bit đơn
Thật ngữ lỗi bit đơn có nghĩa là các lỗi bit riêng lẻ, phân bố ngẫu nhiên trong gói số
liệu. Để hiểu tầm ảnh hưởng của thay đổi đó hình dung rằng mỗi nhóm 8 bit là một
ký tự ASC với một bit 0 được bổ sung vào bên trái [1].
Trong Hình 2-2, 00001010 được gửi đi, nhưng bên nhận lại nhận được 00000010.
Truyền

Nhận

Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit


ĐỒ ÁN TỐT NGHIỆP
Trang 13/47


Hình 2-2: Lỗi bit đơn

Các lỗi bit đơn là kiểu lỗi ít xảy ra trong truyền dữ liệu nối tiếp. Chẳng hạn thực
hiện gửi dữ liệu với tốc độ truyền 1 Mbps. Có nghĩa là một bit chỉ xảy ra trong
khoảng 1/1.000.000 giây hay 1 micro giây. Để lỗi bit đơn xảy ra, nhiễu phải nằm
trong khoảng 1 micro giây, điều đó khó có thể xảy ra vì nhiễu thường kéo dài hơn
nhiều so với khoảng đó. Tuy nhiên, lỗi bit đơn có thể xảy ra nếu gửi dữ liệu truyền
song song. Ví dụ, nếu có 10 đường song song được sử dụng để gửi tất cả 10 bit ở
cùng một thời điểm, một trong những đường đó bị sai lệch, một bit có thể bị thay
đổi trong mỗi byte. Ví dụ truyền dẫn song song từ máy tính và máy chiếu.
2.1.2 Lỗi bit chùm
Thuật ngữ lỗi bit chùm có nghĩa là 2 hay nhiều bit trong đơn vị dữ liệu truyền bị
đảo bit 1 thành bit 0 và từ 0 thành 1 [1].
Truyền

Nhận

Hình 2-3: Lỗi bit chùm

Trong trường hợp này, 00001010 được gửi, nhưng bên nhận thì nhận được
01000011. Chú ý là lỗi bit hàng loạt không phải luôn luôn xảy ra ở các bit liên tiếp
nhau. Một số bit nằm giữa có thể không bị ảnh hưởng.
2.2 Phương pháp phát hiện lỗi VRC
Mỗi xâu bit biểu diễn ký tự truyền đi được thêm và 1 bit, gọi là parity bit [1].
 Quy ước:
- Chẵn: Tổng số bit 1 có trong khối dữ liệu (cả bit parity) là số chẵn.

Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit



ĐỒ ÁN TỐT NGHIỆP
Trang 14/47

- Lẻ: Tổng số bit 1 có trong khối dữ liệu (cả bit parity) là số lẽ.
Bên nhận dữ liệu, mạch sẽ xem xét từng khối dữ liệu nhận được để coi có tổng số
bit là chẵn(lẽ) hay chưa. Nếu không nghĩa là có 1 bit nào đó trong khối dữ liệu bị
sai lệch. Ngược lại là mạch truyền đúng.
 Nhận xét:
- Chỉ dò được lỗi sai số bit lẽ.
- Không sửa được lỗi.
- Ít được dùng trong truyền dữ liệu đi xa, đặc biệt ở tốc độ cao (hiệu suất
truyền thông tin kém).
2.3 Phương pháp phát hiện lỗi CRC
Một kỹ thuật dễ dàng và hiệu quả, và cải tiến hơn được gọi là kiểm tra phần dư tuần
hoàn CRC [1].
Trong đó có một số phương pháp khác nhau như:
a. Phương pháp Modulo
 Nguyên lý:
- CRC: Cyclic Redundancy Check.
- Nguyên tắc tạo mã: khung truyền gồm:
+ M: k bit dữ liệu
+ F: n bit kiểm tra FCS.
+
(2.1)
T: Khung truyền (n + k) bit chia hết cho chuổi kiểm tra P (n+1) bit.
- Nơi nhận kiểm tra lỗi bằng phương pháp chia T cho P, nếu chia không hết
thì chuỗi nhận được cho là có lỗi.
b. Cách tạo CRC:
Ta có:

- Khung truyền T dựa vào công thức (2.1).
- F được tạo bằng cách dời chuỗi M (k bit) sang trái n bit.
- Chia chuỗi cho chuỗi kiểm tra P (n+1) bit.
- Số dư của phép chia chính là F (n bit).
2.4 Phương pháp phát hiện lỗi CheckSum
Tại nơi phát, bộ này chia các đơn vị dữ liệu thành các phân đoạn bằng nhau với n
bit (thường là 16). Các phân đoạn này được cộng với nhau dùng cách thức bù 1 để
có kết quả cũng có n bit. Giá trị này được lấy bù và gắn vào phần bên dưới của dữ
liệu gốc như là giá trị thừa, giá trị này được gọi là trường CheckSum. Các đơn vị dữ

Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit


ĐỒ ÁN TỐT NGHIỆP
Trang 15/47

liệu mở rộng này được truyền qua bên nhận. Vì thế, nếu tổng của đơn vị dữ liệu là
T, thì CheckSum là T.
Bên nhận chia nhỏ đơn vị dữ liệu để hình thành các phân đoạn và lấy các giá trị bù.
Nếu đơn vị dữ liệu còn nguyên, giá trị có đã tính được từ phép cộng các phân đoạn
dữ liệu và CheckSum đều bằng 0. Nếu kết quả khác 0, thì khối dữ liệu có chứa lỗi
và nơi nhận sẽ loại bỏ đơn vị dữ liệu này [1].
 Nhận xét:
- CheckSum phát hiện được tất cả các lỗi bit lẻ và hầu hết các bit chẵn.
- Thuận lợi khi dữ liệu được tổ chức theo dạng ký tự.
- Độ tin cậy tương đối cao nhưng vẫn còn sót lỗi.
2.5 Phương pháp phát hiện và sửa lỗi bit bằng mã Hamming
Trong kĩ thuật truyền số liệu, mã Hamming là một mã sửa lỗi tuyến tính được đặt
theo tên người phát minh ra nó, Richard Hamming. Mã Hamming có thể phát hiện
một bit hoặc hai bit bị lỗi và có thể sửa sai các lỗi đơn bit [1].

 Thuật toán dùng trong mã Hamming:
- Các bit ở vị trí là lũy thừa của 2 được dùng làm bit kiểm tra (các vị trí
như 1, 2, 4, 8, 16…).
- Các bit ở các vị trí còn lại dùng cho việc truyền dữ liệu (các vị trí như 3,
5, 6, 7, 9,…)
- Như vậy, nếu dùng m bit kiểm tra thì kiểm tra được 2 m – 1 bit dữ liệu.
Tổng số bit dữ liệu truyền là m + n.
Các giá trị Pi được tính dựa vào 2 yếu tố:
- Quy ước chẵn lẻ giữa bên gửi và bên nhận
- Sự đóng góp của Pi vào việc hình thành vị trí bit.
Nghĩa là: Với bit kiểm tra Pi, bit tác động bắt đầu từ vị trí 2i, bỏ qua 2i bit kế
tiếp, tác động vào 2i bit tiếp theo.
+ Với i = 0, các bit bị tác động là 1, 3, 5, 7…
+ Với i = 1, các bit bị tác động là 2, 3, 6, 7, 10, 11…
+ Với i = 2, các bit bị tác động là 4, 5, 6, 7, 12, 13, 14, 15…
+ Với i = 3, các bit bị tác động là 8, 9, 10, 11, 12, 13, 14, 15, 24, 24…
+ Với i = 4, các bit bị tác động là 16, 17, 18, 19, 20, 21, 22, 23, 24,
25…

Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit


ĐỒ ÁN TỐT NGHIỆP
Trang 16/47

Ví dụ: cho chuỗi bit cần truyền là A = 1101100111. Sử dụng mã Hamming để
mã hóa và truyền dữ liệu.
- Giả sử quy ước chẵn lẻ là chẵn:
- Chèn các bit kiểm tra ( kí hiệu là P 0, P1, P2, P3 ) vào các vị trí, ta được
chuỗi mới:

14
1

13
1

12
0

11
1

10
1

9
0

8
P3

7
0

6
1

5
1


4
P2

3
1

2
P1

1
P0
P0= 0
P1= 1
P2= 0
P3 = 0

 Tính toán giá trị của các bit mã, ta được chuỗi dữ liệu truyền là:

14
1

13
1

12
0

11
1


10
1

9
0

8
0

7
0

6
1

5
1

4
0

3
1

2
1

1
0


 Phía nhận nhận dữ liệu và kiểm tra bằng việc tính toán lại giá trị các bit kiểm
tra. Sử dụng hàm xor để tính giữa các bit kiểm tra nhận được và các bit kiểm tra vừa
tính lại(E3E2E1E0) gọi là Syndrome, nếu Syndrome bằng “0” thì việc truyền là
không có lỗi. Nếu có bit bằng “1” thì chuỗi bit E3E2E1E0 là chỉ vị trí bit lỗi.
Ví dụ chuỗi dữ liệu trên, ở phía thu nhận được chuỗi bit: 11011100110110 sai ở bit
thứ 9:
14
1

13
1

12
0

11
1

10
1

9
1

8
0

7
0


6
1

5
1

4
0

3
1

2
1

1
0
P0= 1
P1= 1
P2= 0
P3 = 1

Bộ nhận sẽ tính lại các bit kiểm tra P(3-0) sau đó tính Syndrome.

Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit


ĐỒ ÁN TỐT NGHIỆP
Trang 17/47


Syndrome = E3E2E1E0 = 0010 xor 1011 = 1001= vị trí số 9.
Vậy, chuỗi dữ liệu đúng khi sửa lỗi bit ở vị trí số 9 là:

14
1

13
1

12
0

11
1

10
1

9
0

8
0

7
0

6
1


5
1

4
0

3
1

2
1

 Bỏ đi cách bit kiểm tra, chuỗi dữ liệu đúng là: A = 1101100111

CHƯƠNG 3. THIẾT KẾ BỘ PHÁT HIỆN VÀ SỬA LỖI BIT DÙNG
PHƯƠNG PHÁP MÃ HAMMING
Trong hệ thống viễn thông, để truyền nhận dữ liệu cần một hệ thống thu phát. Trong
quá trình truyền không tránh khỏi phía thu nhận được dữ liệu khác với dữ liệu phát
do nhiều yếu tố như: nhiễu, thiết bị, ảnh hưởng thời tiết… Hệ thống phát hiện và
sửa lỗi bit (EDAC) có khả năng truyền nhận dữ liệu, phát hiện sửa lỗi 1 bit, lỗi bit
Parity và phát hiện được lỗi 2 bits. Mỗi lần hệ thống truyền và nhận được 16 bits dữ
liệu.

Điều khiển
phát dữ liệu

Dữ liệu vào
(16 bits)

TX

EDAC

Điều khiển
thu dữ liệu
Dữ liệu
phát/nhận
(22 bits)

RX
EDAC

Dữ liệu ra
(16 bits)

Hình 3-1: Hệ thống thu phát tín hiệu EDAC

3.1 Hệ thống phát hiện và sửa lỗi bit (EDAC)

Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit

1
0


ĐỒ ÁN TỐT NGHIỆP
Trang 18/47

Dựa vào nguyên lý mã Hamming để phát hiện và sửa lỗi bit, nhưng để tạo một hệ
thống hoàn chỉnh phía phát sẽ chèn thêm 1 bit Parity kiểm tra chẵn toàn bộ dữ liệu
phát và bit kiểm tra truyền đến bộ nhận dữ liệu.

Tại bộ nhận dữ liệu hệ thống tính lại các bit kiểm tra và kiểm tra Parity chẵn toàn
bộ lại dữ liệu nhận được gọi là OverallParity. Sau đó dựa vào Syndrome và bit
OverallParity để xác định loại lỗi bit và vị trí bit lỗi.
-

Khi Syndrome = 00000 và OverallParity = 0  hệ thống không lỗi.

-

Khi Syndrome ≠ 00000 và OverallParity = 1  hệ thống lỗi 1 bit.

-

Khi Syndrome ≠ 00000 và OverallParity = 0  hệ thống lỗi 2 bits.

-

Khi Syndrome = 00000 và OverallParity = 1  hệ thống lỗi bit Parity.

Ví Dụ:
Chuỗi bit dữ liệu D(16-1) 16 bits cần phát là:
Vị

16

15

14

13


12

11

10

9

8

7

6

5

4

3

2

1

trí
D

1


0

0

1

0

1

1

0

0

0

1

0

1

1

1

0


Dựa vào nguyên lý mã Hamming tính toán các bit kiểm tra P(5-1) và bit Parity P(6):
Tại P(1) kiểm tra chẵn dữ liệu đầu vào D(1) D(2) D(4) D(5) D(7) D(9) D(11) D(12)
D(14) D(16) = 0110001001.
 P(1) = 0.
Tại P(2) kiểm tra chẵn dữ liệu đầu vào:
D(1) D(3) D(4) D(6) D(7) D(10) D(11) D(13) D(14) = 011101110.
 P(2) = 0.
Tại P(3) kiểm tra chẵn dữ liệu đầu vào:
D(2) D(3) D(4) D(8) D(9) D(10) D(11) D(15) D(16) = 111001101.
 P(3) = 0.
Tại P(4) kiểm tra chẵn dữ liệu đầu vào:
D5 D6 D7 D8 D9 D10 D11 = 0100011.

Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit


×