MỤC LỤC CHƯƠNG I TỔNG QUAN 1 1 1 Khái niệm 1 1 2 Ứng dụng 4 CHƯƠNG II Bài TOÁN THIẾT KẾ 5 2 1 Yêu cầu bài toán 5 2 1 1 Bảng chân lý 5 2 1 2 Bảng Karnaugh 6 2 1 3 Thiết kế MUX 8 1 7 2 1 4 Mạch MUX 8 1 trong proteus 8 2 1 5 Mô phỏng mạch tạo MUX 8 1 trên Proteus 9 2 1 6 Kiểm tra chuỗi dữ liệu 4 bit 9 CHƯƠNG III LỰA CHỌN THIẾT BỊ 11 CHƯƠNG IV TRIỂN KHAI MẠCH THỰC TẾ 13 4 1 Thiết kế mạch in 13 4 2 Mạch thực tế 13 4 3 Chạy thử nghiệm 14 CHƯƠNG V Liên hệ thực tế 15 DANH MỤC HÌNH ẢNH Hình 1 Quy luật ch.
Trang 1MỤC LỤC
CHƯƠNG I TỔNG QUAN 1
1.1 Khái niệm 1
1.2 Ứng dụng: 4
CHƯƠNG II Bài TOÁN THIẾT KẾ 5
2.1 Yêu cầu bài toán 5
2.1.1 Bảng chân lý 5
2.1.2 Bảng Karnaugh 6
2.1.3 Thiết kế MUX 8-1 7
2.1.4 Mạch MUX 8-1 trong proteus 8
2.1.5 Mô phỏng mạch tạo MUX 8-1 trên Proteus 9
2.1.6 Kiểm tra chuỗi dữ liệu 4 bit 9
CHƯƠNG III LỰA CHỌN THIẾT BỊ 11
CHƯƠNG IV TRIỂN KHAI MẠCH THỰC TẾ 13
4.1 Thiết kế mạch in 13
4.2 Mạch thực tế 13
4.3 Chạy thử nghiệm 14
CHƯƠNG V Liên hệ thực tế 15
Trang 2DANH MỤC HÌNH ẢNH
Hình 1 Quy luật chẵn lẻ 1
Hình 2 Truyền dữ liệu và kiểm tra 3
Hình 3 phát hiện sai số 3
Hình 4 Bộ MUX 4 8-1 8
Hình 5 Bộ MUX 8-1 9
Hình 6 kiểm tra chuỗi 9
Hình 7 kiểm tra chuỗi 10
Hình 8 IC 74151 11
Hình 9 Mô phỏng trong Proteus 11
Hình 10 chạy mô phỏng 12
Hình 11 mạch PCB trong altium 13
Hình 12 mạch thực tế 13
Hình 13 Bit 1 chẵn 14
Hình 14 Bit 1 lẻ 14
Hình 15 IC 74180 15
Hình 16 Mô phỏng IC 74180 16
Hình 17 Mô phỏng IC 74180 16
Hình 18 IC 74280 17
Hình 19 Mô phỏng IC 74280 18
Trang 3CHƯƠNG I TỔNG QUAN
I.1 Khái niệm
Bit chẵn lẻ (tiếng Anh: parity bit), hoặc bit kiểm tra (tiếng Anh: check bit), là
một bit được thêm vào một chuỗi mã nhị phân, để kiểm tra phát hiện lỗi trong dữ liệukhi truyền đưa hoặc đọc/ghi trên phương tiện lưu trữ Nó là dạng mã phát hiện lỗi đơngiản nhất Các bit chẵn lẻ thường được áp dụng cho các đơn vị nhỏ nhất của giao thứctruyền thông, phổ biến nhất hiện nay là các octet (byte) 8 bit, mặc dù về nguyên tắcchúng áp dụng tổng quát cho tất cả các dạng chuỗi có số bit khác.[1]
Với chuỗi octet thì khung truyền đưa chuỗi có 9 bit, trong đó có 8 bit dữ liệu vàbit thứ 9 là bit chẵn lẻ Nội dung bit chẵn lẻ có giá trị bằng số bù nhị phân cho tổng các
bit của octet để tổ hợp octet + parity luôn luôn hoặc là một số chẵn hoặc là một số lẻ,tùy theo lựa chọn của nhà thiết kế hệ thống truyền đưa
Bit chẵn lẻ dùng quy tắc số chẵn (even parity bit), thì bit chẵn lẻ có giá trị bằng
1(2) khi số lượng các bit 1 trong octet là một số lẻ Khi cộng thêm bit chẵn lẻ vào, tổng
số lượng bit có giá trị bằng 1(2) là một số chẵn
Bit chẵn lẻ dùng quy tắc số lẻ (odd parity bit) thì bit chẵn lẻ có giá trị bằng
1(2) nếu số lượng các bit 1 trong octet là một số chẵn Khi cộng thêm bit chẵn lẻ vào,tổng số bit có giá trị bằng 1(2) là một số lẻ
Hình 1 Quy luật chẵn lẻ
Trang 4Nếu một số lẻ lượng các bit (bao gồm cả bit chẵn lẻ), bị đảo lộn trong khi truyềnthông một nhóm bit, thì bit chẵn lẻ sẽ có giá trị không đúng, và do đó báo hiệu rằng lỗitrong truyền thông đã xảy ra Với lý do này, bit chẵn lẻ còn được gọi là một mã pháthiện lỗi, song nó không phải là một mã sửa lỗi, vì nó chẳng có cách nào xác định được
vị trí của bit bị lỗi cả Khi lỗi bị phát hiện, dữ liệu thu được phải bị bỏ đi và phải đượctruyền thông lại từ đầu Trên kênh truyền có độ nhiễu cao, việc truyền tải dữ liệu thànhcông là một việc rất hao tốn thời gian, và đôi khi, việc truyền thông còn hầu nhưkhông thể thực hiện được nữa Bit chẵn lẻ có một ưu điểm: nó là một mã tốt nhấtchiếm chỉ một bit và chỉ dùng vài cồng XOR (XOR gate) để tạo giá trị mà thôi.
Dữ liệu dạng số khi được lưu trữ, xử lí hay truyền từ máy này qua máy khác cóthể bị lỗi Như khi truyền dữ liệu đi xa qua môi trường điện thoại, dây cáp, không gian
có thể bị ảnh hưởng bởi nhiệt độ, nhiễu đường dây, điện từ… hay do lâu ngày các bộ
xử lí, bộ chuyển đổi có một sai sót nhỏ sẽ làm thay đổi dữ liệu
Ví dụ : trong 1 khối dữ liệu có chữ A mã ASCII là 1000001 sẽ bị sai thành
100000 ,bit sai có thể là bất cứ 1 bít nào khác Mặc dù xác suất làm sai chỉ 1 bít trong
cả khối dữ liệu là rất nhỏ ( trung bình khoảng 100000 bit mới có 1 bit sai) nhưng trongnhiều trường hợp đòi hỏi phải thật chính xác hay giảm hết mức những sai sót nhỏ này
Có nhiều mạch có thể phát hiện sai và sửa lỗi, bạn sẽ gặp lại nội dung này kĩ hơn trongmôn “Truyền số liệu”, ở đây xin nói tới mạch tạo kiểm parity
Có 2 dạng mạch chính là parity chẵn và parity lẻ Cả 2 đều được sử dụng
Với parity chẵn : dữ liệu trước khi truyền đi sẽ được đếm tổng số bit
Nếu tổng chẵn, bit parity 0 được thêm vào trước mỗi khối dữ liệu truyền
Nếu tổng lẻ thì bit parity 1 được thêm vào (để nó chẵn)
Ở đầu nhận dữ liệu, mạch sẽ kiểm tra từng khối dữ liệu nhận được xem có tổng
số bit là chẵn hay không Nếu không thì tức là đã có 1 bit nào đó trong khối dữ liệu bịsai Ngược lại là mạch truyền đúng
Với parity lẻ thì ngược lại khối dữ liệu phải được làm lẻ trước khi truyền
Trang 5Giả sử mạch parity chẵn được dùng Nhận thấy rằng tổng số bit truyền là 3 (lẻ)nên bit parity 1 được thêm vào cho chẵn Như vậy, dữ liệu truyền đi sẽ có 5 bit là11101
Mạch tạo parity trên sử dụng 3 cổng XNOR để kiểm tra số bit chẵn hay lẻ, cònbên nhận mạch kiểm parity dùng 4 cổng XNOR để rò sai, nếu dữ liệu truyền đúng thì
ra Q = 0, nếu truyền sai thì ra Q = 1 Khi này, mạch nhận có thể truyền về tín hiệu báotruyền sai cho máy gửi để nó truyền lại khối dữ liệu bị lỗi này
Nhận thấy rằng nếu khối dữ liệu truyền bị sai tới 2 bit (xác suất này là rất rất nhỏ)hay bit parity truyền sai thì mạch parity mất tác dụng
Ví dụ : Truyền 1 khối dữ liệu 4 bit 1101 có sử dụng mạch tạo kiểm parity để ròsai được minh hoạ như hình dưới đây :
Hình 2 Truyền dữ liệu và kiểm tra
Trang 6Hình 3 phát hiện sai số
Trang 7I.2 Ứng dụng:
Do đặc tính đơn giản của nó, bit chẵn lẻ được dùng trong rất nhiều ứngdụng phần cứng, những nơi mà việc tái diễn các thao tác khi có trục trặc xảy ra là mộtviệc có thể thực hiện được, hoặc những nơi mà việc phát hiện lỗi đơn thuần là mộtviệc có lợi Lấy ví dụ, mạch nối SCSI (SCSI bus) dùng bit chẵn lẻ để phát hiện lỗi
trong truyền thông, và rất nhiều các phần lưu trữ trong bộ nhớ các lệnh vi xử
lý (microprocessor instruction cache) cũng dùng bit chẵn lẻ để bảo trợ hoạt động của
nó nữa Do các dữ liệu trong I-cache[2] chỉ là một bản sao của bộ nhớ chính (main memory), nội dung của nó có thể được xóa đi, nạp lại nếu dữ liệu ở trong chẳng may bị thoái hóa (corrupted).
Trong truyền dữ liệunối tiếp (serial data transmission), dạng thức dữ liệu được
dùng phổ thông nhất là dạng thức 7 bit, với một bit chẵn lẻ dùng quy tắc số chẵn, mộtStart bit và một hoặc hai Stop bit để đánh dấu/đồng bộ điểm bắt đầu cũng như kết thúcmột byte dữ liệu trong chuỗi bit trên đường truyền Dạng thức này thích ứng hầu hếtcác dạng thức 7-bit ký tự ASCII dưới hình thức byte 8-bit Một byte dữ liệu trênđường truyền nối tiếp sẽ gồm 01 Start bit (bắt đầu), 7 bit dữ liệu, một parity bit và 01Stop bit (kết thúc) Byte là một hình thức tiện lợi để biểu đạt dữ liệu Những dạng thứckhác cũng có thể thực hiện được, như dạng thức 8 bit dữ liệu cộng với một bit chẵn lẻ
có thể dùng để chuyên chở tất cả các giá trị byte 8-bit
Trong ngữ cảnh của truyền thông nối tiếp (serial communication), bit chẵn lẻ
thường được phát sinh và kiểm tra bởi phần cứng giao thức - chẳng hạn như UART
-và khi thu nhận, CPU có thể sử dụng kết quả nhận được (-và hệ điều hành nữa) thông
qua bit báo tình hình (status bit) trong thanh ghi của phần cứng giao thức Việc khôiphục lại sau khi tình trạng lỗi xảy ra thường được thi hành bằng cách tái truyền dữliệu, và chi tiết của việc này thường là do phần mềm phụ trách (ví dụ dùng các thường
trình nhập/xuất (I/O routine) của hệ điều hành).
Trang 8CHƯƠNG II Bài TOÁN THIẾT KẾ
II.1 Yêu cầu bài toán
Thiết kế mạch tạo, kiểm tra lẻ sử dụng MUX cho chuỗi dữ liệu 4 bit
Trang 9Chọn A,B,C làm phần tử điều khiển, từ bảng chân lý ta được mạch MUX:
CB
A
D7
D6
D5
D4
D3
D2
D1
D0
MUX 8-1
Trang 10II.1.3 Thiết kế MUX 8-1
E
S0
S1
S2
fINP
Trang 11II.1.4 Mạch MUX 8-1 trong proteus
Hình 4 Bộ MUX 4 8-1
Trang 12II.1.5 Mô phỏng mạch tạo MUX 8-1 trên Proteus
Hình 5 Bộ MUX 8-1
II.1.6 Kiểm tra chuỗi dữ liệu 4 bit
Hình 6 kiểm tra chuỗi
Trang 13Hình 7 kiểm tra chuỗi
Trang 14CHƯƠNG III LỰA CHỌN THIẾT BỊ
Để phù hợp với mục đích tạo và kiểm tra lẻ chuỗi dữ liệu 4 bit, ta chọn sử dụng
IC MUX 8-1 74LS151
Hình 8 IC 74151
Mô phỏng mạch trên Proteus
Với sốbít làchẵn(3) =>đầu ra
đầu kiểm tra = 0 Hình 9 Mô phỏng trong Proteus
Hình 10 chạy mô phỏng
Trang 16CHƯƠNG IV TRIỂN KHAI MẠCH THỰC TẾ
IV.1 Thiết kế mạch in
Mạch PCB được thiết kế trên phần mềm Altium
thực tế.
Trang 17Hình 14 Bit 1 lẻ
Trang 18CHƯƠNG V Liên hệ thực tế
Các mạch xử lí điều khiển hay truyền dữ liệu thường có sẵn khối tạo kiểm vàthậm chỉ có thể sửa lỗi luôn Còn khi dùng mạch rời thì IC 74180 và họ của nó làthông dụng nhất
Đây là IC tạo kiểm 8 bit từ D0 đến D7, bit parity có thể dùng là chẵn hay lẻ 2ngõ ra là EVEN (chẵn ra) và ODD (lẻ ra) 2 ngõ PE (chẵn vào) và PO (lẻ vào) dùngtrong trường hợp cần nối chồng nhiều IC để có mạch tạo kiểm nhiều bit hơn Cách nối
sẽ là đưa từ ngõ ra chẵn và ngõ ra lẻ tới ngõ vào chẵn và vào lẻ 2 ngõ vào lẻ và vàochẵn cũng như 2 ngõ ra lẻ và ra chẵn phải không được bằng nhau khi kiểm parity Khingõ vào parity nào không dùng thì phải nối mức thấp
Hình dưới đây là cách sử dụng 74180 làm mạch kiểm parity lẻ cho 9 bit dữ liệuvào (gồm cả bit parity)
Hình 15 IC 74180
Mô phỏng IC74LS180 trên proteus thực hiện kiểm tra lẻ:
Đầu tiên ta đặt Mức logic đầu vào PE = 0, PO = 1 để set chế độ kiểm tra lẻ
Trang 19Hình 16 Mô phỏng IC 74180
Với đầu vào logic 1000 có số lượng bit 1 là lẻ thì mức logic đầu ra chân ODD
= 0, và mức logic lại chân EVEN = 1 chứng tỏ 4 bit đầu vào lẻ
Hình 17Mô phỏng IC 74180
Với đầu vào logic 1001 có số lượng bit 1 là chẵn thì mức logic đầu ra chân ODD = 1, và mức logic lại chân EVEN = 0 chứng tỏ 4 bit đầu vào chẵn
Trang 20Ngoài ra, trong thực tế, người ta cũng hay sử dụng IC74280 để thực hiện kiểm tra chẵn lẻ
Mô phỏng IC74LS280 trên proteus thực hiện kiểm tra lẻ:
Hình 18 IC 74280
Với đầu vào logic 0010 có số lượng bit 1 là lẻ thì mức logic đầu ra chân ODD
= 0, và mức logic lại chân EVEN = 1 chứng tỏ 4 bit đầu vào lẻ
Trang 21Hình 19 Mô phỏng IC 74280
Với đầu vào logic 0011 có số lượng bit 1 là chẵn thì mức logic đầu ra chân ODD = 1, và mức logic lại chân EVEN = 0 chứng tỏ 4 bit đầu vào chẵn