Hướng dẫn project thiết kế RTL hiển thị số nhị phân 8-bit ra LED 7 đoạn

Chủ Nhật, 21 tháng 09, 2025

Bữa trước thấy ICTC Training Center có đố 1 bài về thiết kế RTL để hiển thị một số nhị phân 8-bit ra LED 7 đoạn cathode chung. Để làm được project này thì các bạn cần nắm rõ 5 nội dung sau:

  1. Nguyên lý hoạt động của LED 7 đoạn cathode chung
  2. Cách chuyển đổi từ số nhị phân sang BCD
  3. Cách chuyển từ BCD sang code điều khiển LED 7 đoạn
  4. Cách viết RTL code mô tả mạch
  5. Cách viết testbench kiểm tra thiết kế

Chủ đề 1: Nguyên lý LED 7 đoạn cathode chung

Đây là topic rất phổ biến với sinh viên ngành điện tử. LED 7 đoạn gồm 7 thanh LED được sắp xếp hình chữ số và 1 dấu chấm (dp). Ở bài này chúng ta không quan tâm đến dp. Mỗi thanh LED sẽ sáng khi được cấp đúng mức logic. Với loại cathode chung, tất cả chân âm (cathode) nối chung với nhau và được nối đất. Khi muốn sáng một thanh LED, ta đưa logic 1 (mức cao) vào anode của thanh đó. Sơ đồ vị trí các thanh a, b, c, d, e, f, g đã có trong hình minh họa.

Ví dụ: Muốn hiển thị số 1, cần sáng thanh b và c.

Chủ đề 2: Chuyển đổi số nhị phân sang BCD

BCD (Binary Coded Decimal) là dạng mã hóa trong đó mỗi chữ số thập phân (0–9) được biểu diễn bằng 4-bit nhị phân.

Ví dụ số 1100 (Binary), viết ở dạng decimal là 12. Vậy viết ở dạng BCD sẽ là 0001 0010 (BCD).

Tại sao phải chuyển từ binary sang BCD?


Bởi vì LED 7 đoạn chỉ dễ dàng hiển thị các chữ số thập phân (0–9). Do đó, ta phải tách số nhị phân thành từng chữ số thập phân rồi đưa ra 7 đoạn.

Ví dụ:

Input: 1100_1010 (202). Có 3 chữ số thập phân để hiển thị lên led 7 đoạn. Mã BCD tương ứng là 0010_0000_0010

Thuật toán chuyển đổi:
Một cách phổ biến để chuyển đổi Binary to BCD là thuật toán Shift-and-Add-3 (Double Dabble) theo trình tự như sau:

  1. Bắt đầu từ số nhị phân cần chuyển.
  2. Dịch bit sang trái, mỗi lần dịch kiểm tra nhóm 4 bit BCD: nếu ≥ 5 thì cộng thêm 3.
  3. Lặp lại cho đến khi hết bit.

Ở ví dụ đầu tiên với Binary 1100 (12 decimal)

BCD ban đầu: 0000 0000 (tương ứng với 2 chữ số decimal)


Vòng lặp 1: dịch trái binary vào BCD. MSB của binary sẽ dịch vào LSB của BCD.

BCD: 0000_0001

Binary còn lại: 100

Vòng lặp 2: tiếp tục dịch trái binary vào BCD

BCD: 0000_0011

Binary còn lại: 00

Vòng lặp 3: tiếp tục dịch trái binary vào BCD

BCD: 0000_0110 (0110 đã >= 5, ta sẽ +3 vào là bằng 9)

–> new BCD: 0000_1001

Binary còn lại: 0

Vòng lặp 4: tiếp tục dịch trái binary vào BCD

BCD: 0001_0010
Đã dịch hết 4bit binary

sau 4 vòng lặp, ta đã tìm ra được số BCD là 0001_0010 (12).

Mã BCD cho chữ số hàng chục và đơn vị lần lượt là 0001 và 0010.

Ở hình bên dưới là một ví dụ khác về việc chuyển đổi này.

Chủ đề 3: Chuyển đổi số BCD thành mã LED 7 đoạn

Sau khi có các chữ số BCD, ta cần chuyển sang mã điều khiển LED 7 đoạn. Có thể dùng bảng tra cứu (lookup table). Bảng này sẽ ánh xạ từng số (0–9) sang dạng 7 đoạn (a-g). Bảng tra này đã được cung cấp trong đề bài.

Chủ đề 4,5: Sau khi đã xác định được hường giải quyết, ta sẽ dùng RTL code để mô tả mạch. Sau đó viết testbench để kiểm tra thiết kế. Các bạn có thể tham khảo bài của một bạn đã giải như hình bên dưới, mình xin phép đăng lại cho các bạn khác tham khảo nhé.

Kết luận: đây là một mini project tương đối khó nhằn cho các bạn mới, đòi hỏi phải có thời gian suy ngẫm và nghiên cứu. Nó không chỉ khó ở giải thuật convert từ binary sang BCD mà còn khó ở cách bạn dùng RTL để mô tả hoạt động của mạch.

Hi vọng đề tài nhỏ này sẽ đem lại cho các bạn sự hứng thú khi tìm hiểu về mạch số. Bạn nào có FPGA có thể mô phỏng thử luôn nhé.

——————————————————

Hiện tại ICTC đang mở các khóa học thiết kế vi mạch từ cơ bản đến nâng cao, các bạn có thể tìm hiểu tại các bài viết sau nhé:

 

Truy cập Server EDA Miễn Phí của ICTC để thực hành thiết kế vi mạch:
Truy cập Server EDA Miễn Phí

 

Chủ Nhật, 21 tháng 09, 2025

Đội Ngũ Giảng Viên Đến Từ Các Công ty vi mạch hàng đầu với NHiều năm kinh nghiệm

Khóa học thiết kế vi mạch ICTC giảng viên từ Ampere
Khóa học thiết kế vi mạch ICTC giảng viên từ Renesas
Khóa học thiết kế vi mạch ICTC giảng viên từ MediaTek Singapore
Khóa học thiết kế vi mạch ICTC giảng viên từ BOS
Khóa học thiết kế vi mạch ICTC giảng viên từ Marvell
Khóa học thiết kế vi mạch ICTC giảng viên từ Renesas
Khóa học thiết kế vi mạch ICTC giảng viên từ NSING

Nổi Bật

ICTC DV TECH TALK

ICTC DV TECH TALK

Để giúp các bạn hiểu rõ hơn về Design Verification (DV) – một trong những lĩnh vực quan trọng trong ngành IC Design, ICTC sẽ tổ chức một buổi DV Tech Talk nhằm giới thiệu tổng quan về lĩnh vực này cũng như chia sẻ kinh nghiệm học tập và phát triển trong ngành. Buổi...

Workshop Làm Quen Với Linux

Workshop Làm Quen Với Linux

Để giúp các bạn làm quen với command line, terminal trong Linux, ICTC sẽ tổ chức một buổi workshop về Linux với cơ hội thực hành trực tiếp trên Server ICTC cùng host là anh Thông (người xây dựng và quản lý Server ICTC). Nội dung workshop: Hướng dẫn làm quen và thực...

Final Project Của Lớp Thiết Kế Vi Mạch Cơ Bản

Final Project Của Lớp Thiết Kế Vi Mạch Cơ Bản

Boom!  Cảm giác vỡ òa khi màn hình hiện kết quả design của bạn đã "pass" golden model – cửa ải cuối cùng trước khi “tốt nghiệp”!À quên, còn một điều kiện là coverage phải đủ nữa nha  Nhưng mà... cái cảm giác được thông báo ALL_PASSED vẫn là một điều gì đó thật đặc...

Bài Viết Mới

Viettel Làm Chip 32nm

Viettel Làm Chip 32nm

Mấy nay không theo dõi tin tức nên mình cập nhật hơi muộn một chút . Trước đây khi Viettel công bố định hướng làm chip, mình từng đoán là họ sẽ đi từ những node "trưởng thành" tầm như 65-90nm để tích lũy kinh nghiệm trước. Nhưng cuối cùng thì mục tiêu là 32nm, và...

Dùng node công nghệ càng nhỏ có phải lúc nào cũng tốt?

Dùng node công nghệ càng nhỏ có phải lúc nào cũng tốt?

Có một câu hỏi mà gần như ai bước vào lĩnh vực VLSI cũng từng thắc mắc: Tại sao trong thiết kế vi mạch lại có quá nhiều con số nm, và khi con số đó giảm xuống thì thực sự điều gì thay đổi? Nhiều người mới thường nghĩ rất đơn giản rằng nm chính là kích thước của...

Functional Coverage – Phân tích Coverage Report với ví dụ ALU

Functional Coverage – Phân tích Coverage Report với ví dụ ALU

Chào các bạn, ở bài viết trước chúng ta đã cùng tìm hiểu về Functional Coverage và vì sao 100% Code Coverage vẫn chưa đủ để đảm bảo thiết kế đã được verify đầy đủ. Trong bài viết tuần này, cùng mình và Học Vi Mạch Cùng ICTC sẽ tiếp tục với ví dụ ALU ở bài...

BẠN CHƯA BIẾT BẮT ĐẦU TỪ ĐÂU?

Sau nhiều năm tư vấn và đào tạo vi mạch cho hàng trăm bạn sinh viên, học sinh và phụ huynh, kết hợp với kinh nghiệm từ các anh chị kỹ sư vi mạch có nhiều năm kinh nghiệm, đây là tất cả những kinh nghiệm và tài liệu mà mình đúc kết, tổng hợp lại được thành một quy trình tìm hiểu ngành vi mạch để các bạn mình mới tham gia vào ngành có thể bắt đầu một cách hiệu quả nhất.

 

Bấm nút bên dưới để tìm hiểu về ngành, về nghề nghiệp cũng như những thứ bản thân cần chuẩn bị để tham gia vào hành trình trở thành kỹ sư vi mạch tuy có phần gian nan nhưng vô cùng thú vị bạn nhé!

LỘ TRÌNH TỰ HỌC VI MẠCHGROUP CHAT HỌC TẬP VI MẠCH