Phần 1: Mã Gray là gì ?
Mã Gray (Gray code) là một dạng mã nhị phân đặc biệt được sử dụng phổ biến trong thiết kế VLSI (Very-Large-Scale Integration) và các hệ thống số khác. Đặc điểm chính của mã Gray là hai mã kế tiếp nhau chỉ khác nhau một bit duy nhất. Điều này giúp giảm thiểu sai sót khi chuyển đổi giữa các giá trị số, đặc biệt hữu ích trong các ứng dụng yêu cầu độ chính xác cao hoặc các hệ thống cần chuyển đổi mượt mà giữa các trạng thái.
Phần 2: Ứng dụng của mã gray
Với những đặc tính nêu trên, mã gray thường được sử dụng vào các mục đích sau
1. Bộ đếm vòng (Rotary Encoders)
- Ứng dụng: Rotary encoders là các cảm biến được sử dụng để đo lường vị trí góc hoặc chuyển động quay.
- Lợi ích: Sử dụng mã Gray giúp đảm bảo rằng chỉ một bit thay đổi tại một thời điểm khi trục quay di chuyển từ vị trí này sang vị trí khác, giúp giảm thiểu lỗi đọc khi chuyển đổi.
2. Bộ chuyển đổi tương tự-số (Analog-to-Digital Converters – ADCs)
- Ứng dụng: Trong các bộ chuyển đổi tương tự-số, mã Gray được sử dụng để mã hóa kết quả đầu ra số.
- Lợi ích: Giảm thiểu lỗi chuyển đổi khi các giá trị liên tiếp được đọc, do chỉ một bit thay đổi mỗi lần, giúp cải thiện độ chính xác và độ tin cậy của bộ chuyển đổi.
3. Truyền thông dữ liệu
- Ứng dụng: Trong truyền thông dữ liệu, mã Gray được sử dụng để mã hóa dữ liệu trước khi truyền.
- Lợi ích: Giảm thiểu lỗi bit trong quá trình truyền dữ liệu, đặc biệt trong các môi trường nhiễu hoặc khi truyền ở tốc độ cao.
4. Địa chỉ hóa bộ nhớ trong VLSI
- Ứng dụng: Trong các mạch tích hợp quy mô rất lớn (VLSI), mã Gray được sử dụng để quản lý và truy cập bộ nhớ.
- Lợi ích: Giúp giảm thiểu xung đột và lỗi trong quá trình truy cập bộ nhớ bằng cách đảm bảo rằng chỉ một bit địa chỉ thay đổi tại một thời điểm.
5. Thiết kế mạch số và hệ thống điều khiển
- Ứng dụng: Trong thiết kế mạch số, mã Gray được sử dụng trong các máy trạng thái hữu hạn (Finite State Machines – FSMs) và các bộ đếm.
- Lợi ích: Giảm thiểu nhiễu và tăng độ tin cậy của hệ thống bằng cách hạn chế số lượng bit thay đổi đồng thời, điều này đặc biệt quan trọng trong các ứng dụng yêu cầu độ chính xác cao.
Mã Gray được ưa chuộng trong các ứng dụng yêu cầu độ tin cậy và chính xác cao, nơi việc giảm thiểu lỗi bit và đơn giản hóa quá trình chuyển đổi là rất quan trọng.
Phần 3: thiết kế bộ chuyển đổi binary sang gray 5 bit.
Nhân dịp chuyên mục đố vui vi mạch có đề cập đến câu hỏi chuyển đổi giữa binary sang gray, chúng ta hãy cùng nghiên cứu cách thiết kế bộ chuyển đổi này nhé.
Các câu hỏi khác các bạn có thể tham khảo bài viết dưới đây
https://ictc.edu.vn/interview-quiz-thang-5-2024/
Cách thức giải bài này chúng ta có thể tham khảo hình dưới đây
Bước 1: viết bit MSB xuống
Bước 2: so sánh 2 bit binary kế cận, nếu giống nhau thì viết 0 xuống chuỗi gray và ngược lại.
Đáp án: 11011 (đáp án C)
Để thiết kế bộ chuyển đổi này, chúng ta sẽ dùng cổng XOR, dễ để thấy truth table của cổng XOR phù hợp với yêu cầu thiết kế
Khi 2 ngõ vào giống nhau, output của cổng XOR là 0.
Khi 2 ngõ vào khác nhau, output của cổng XOR là 1.
Tiếp theo ta sẽ vẽ sơ đồ thiết kế logic (logic diagram)
Sau đó tiến hành mô tả RTL
Kết quả mô phỏng và mạch thực tế, kết quả đúng với đáp án.
Kết luận:
Bài viết đã giới thiệu về mã gray, ứng dụng và cách thiết kế bộ chuyển đổi 5 bit đơn giản từ binary sang gray dùng verilog.
Để thiết kế phần cứng, các bạn nên tập trung vào hiểu rõ các khái niệm về cổng logic, cách xây dựng sơ đồ khối, logic diagram rồi mới bắt đầu mô tả bằng ngôn ngữ thiết kế.
Mở rộng:
- Hãy thiết kế bộ chuyển đổi gray sang binary
- Hãy thiết kế bộ chuyển đổi binary sang gray với N bit, N là một parameter.
NOTE: các bạn có thể thực hành thiết kế vi mạch trên server ICTC. Hãy liên hệ với ICTC để được hướng dẫn cách thức truy cập nhé.