THIẾT kế và THỰC THI FPGA CHO bộ PHÁT HIỆN và sửa lỗi BIT (có code) THIẾT kế và THỰC THI FPGA CHO bộ PHÁT HIỆN và sửa lỗi BIT (có code) THIẾT kế và THỰC THI FPGA CHO bộ PHÁT HIỆN và sửa lỗi BIT (có code) THIẾT kế và THỰC THI FPGA CHO bộ PHÁT HIỆN và sửa lỗi BIT (có code) THIẾT kế và THỰC THI FPGA CHO bộ PHÁT HIỆN và sửa lỗi BIT (có code)
Trang 1THIẾT KẾ VÀ THỰC THI FPGA CHO
BỘ PHÁT HIỆN VÀ SỬA LỖI BIT
Trang 2DANH 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
Trang 3CHƯƠ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
Trang 4HÌ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
Trang 5HÌ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
Trang 6BẢNG 4-2: GÁN CHÂN KIT DE2 CHO BỘ THU DỮ LIỆU 28
Trang 7CLB 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 EngineersJTAG Joint Test Action Group
LCD Liquid crystal display
MAC Media Access Control
PLD Programmable Logic Device
RTL Register-Transfer Level
UART Universal Asynchronous Receiver-TransmitterVGA Video Graphics Array
VHDL VHSIC Hardware Description Language
VHSIC Very HighSpeed Itergrated Circuit
Trang 8Có nhiều phương pháp phát hiện và sửa lỗi bit, trong đó phương pháp có thể pháthiệ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ầunhư 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àylà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áohiệ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 khingườ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 haytrong 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ươngtrình đang chạy và đổi sang công việc khác
Trang 9Hì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ứcdậ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ồntâ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ệnlỗi đơn giản đã được sử dụng trước khi có mã Hamming, nhưng không có mã nàohiệ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
Trang 10hiệ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ủacô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ểnhiệ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ácthà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ạchlogic 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
Trang 11FPGA 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ồnkế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ớikế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ậptrì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ểnmạ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êntrong
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
Trang 12Hì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ượnglớ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
Trang 13Hì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
Trang 14Quartus 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ệcthiết kế logic với các linh kiện logic khả trình PLD của Altera, gồm các dòngStratix, 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ônngữ: 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ươngtrì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
Trang 15- 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ứngEDA 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ứccao, 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 filethiế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 đượcthiế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ợ
Trang 16Hình 1-5: Giao diện Quartus II
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ênmang 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ữucủa nhà cung cấp
Trang 17Trong khi đó, VHDL được xây dựng như một ngôn ngữ riêng biệt không gắn vớibấ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ườithiế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ếpgiữ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íchhợ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 SauStart 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áocho thiết bị
1.5.2 Các thông số cơ bản trong truyền nhận UART
Khung truyền
Trang 18Data 2
Data 3
Data 4
Data 5
Data 6
Data 7
Parity bit
Stop bit
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 đượccà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
Thời gian truyền 1 bit = 1 / tốc độ Baud
Trang 192.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 bitchù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
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
Lỗi
Truyền
Nhận
Trang 20Hì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ựchiệ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 trongkhoảng 1/1.000.000 giây hay 1 micro giây Để lỗi bit đơn xảy ra, nhiễu phải nằmtrong khoảng 1 micro giây, điều đó khó có thể xảy ra vì nhiễu thường kéo dài hơnnhiề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ềnsong 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]
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ếpnhau 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.
Truyền
Nhận
Trang 21- 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ầnhoà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
+ T =2 r M + F (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 2r M cho chuỗi kiểm tra P (n+1) bit
- Số dư của phép chia chính là F (n bit).
Trang 222.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 nbit (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ữ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 đặttheo tên người phát minh ra nó, Richard Hamming Mã Hamming có thể phát hiệnmộ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 2m – 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
Trang 23Nghĩ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…
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à P0, P1, P2, P3 ) vào các vị trí, ta đượcchuỗi mới:
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ừatí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
P0= 0P1= 1P2= 0P3 = 0
Trang 24Ví dụ chuỗi dữ liệu trên, ở phía thu nhận được chuỗi bit: 11011100110110 sai ở bitthứ 9:
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
P0= 1P1= 1P2= 0P3 = 1
Trang 25Hì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)
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ệuphá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à bitOverallParity để 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
P(1) = 0
Dữ liệu vào
(16 bits)
TX EDAC
RX EDAC
Điều khiển phát dữ liệu
Điều khiển thu dữ liệu
Dữ liệu phát/nhận (22 bits)
Dữ liệu ra (16 bits)
Trang 26Tại P(2) kiểm tra chẵn dữ liệu đầu vào:
P(6) = 1
Vậy các bit kiểm tra và bit Parity chèn vào dữ liệu N(22-1) 22 bits phát đi là:
N= P(6) D(16) D(15) D(14) D(13) D(12) P(5) D(11) D(10) D(9) D(8) D(7) D(6)D(5) P(4) D(4) D(3) D(2) P(3) D(1) P(2) P(1)
Trang 27Ta có:
- OverallParity = 1
- Syndrome = 00110 vị trí bit thứ 6 sai
Sau đó, hệ thống sửa lỗi vị trí bit sai và đưa dữ liệu đúng ra
Thiết kế và thực thi FPGA cho bộ phát hiện và sửa lỗi bit
Bộ giải
mã Syndrome DecodeSyn[21:0]
TR_Data[21:0]
P[4:0]
Bộ tạo bit kiểm tra
Bộ tạo Syndrome
Bộ sửa lỗi bit dữ liệu
Bộ phát hiện loại
Bộ tạo bit kiểm tra toàn