Chuyển đến nội dung
AIOTAIOT
  • Trang chủ
  • Giới thiệu
  • Tin tức
  • Sản phẩm
  • Giải pháp
    • Chấm công bằng Face ID
    • Thiết bị đọc căn cước
    • IoT trong giáo dục
    • IoT trong quản lý năng lượng
    • IoT trong y tế
  • Đào tạo
    • Khóa đào tạo cơ bản
      • Hệ thống nhúng
      • LabVIEW FPGA
      • Phần cứng máy tính & Truyền thông công nghiệp
      • FPGA cơ bản
    • Khóa đào tạo nâng cao
      • LabVIEW FPGA High Performance
    • Tài liệu
  • PCCC
  • Liên hệ
  • icon
    097 186 8316    |    0839 799 889
Đào tạo, FPGA cơ bản, Khóa đào tạo cơ bản

BÀI 4.2: CÁC KIỂU DỮ LIỆU CƠ BẢN TRONG VHDL – “CHỌN VẬT LIỆU CHO DÂY DẪN”

Đã đăng trên 28/01/202625/01/2026 bởi ThaoNguyen
28
Th1

MODULE 4: VHDL – VIẾT “BẢN VẼ” CHO PHẦN CỨNG

Chào bạn! Chúng ta đã biết cách xây dựng “vỏ” (Entity) và “ruột” (Architecture) cho một khối mạch điện ở bài trước. Tuy nhiên, để các thành phần này kết nối và trao đổi thông tin với nhau, chúng ta cần chọn đúng “loại vật liệu” dẫn điện. Trong VHDL, đó chính là các Kiểu dữ liệu.

1. Giới thiệu

Chào mừng bạn đến với bài học về các kiểu dữ liệu trong VHDL. Trong ngôn ngữ lập trình phần mềm như C hay Python, kiểu dữ liệu (int, float, char) dùng để báo cho máy tính biết cần dành bao nhiêu ô nhớ. Nhưng trong thiết kế FPGA, đặc biệt là với chip Artix-7 XC7A100T, kiểu dữ liệu mang một ý nghĩa vật lý hoàn toàn khác: Nó quyết định số lượng dây dẫn điện.

Nếu bạn chọn kiểu dữ liệu là một bit, bạn đang tạo ra 1 sợi dây đồng đơn lẻ. Nếu bạn chọn một “vector”, bạn đang tạo ra một dải băng gồm nhiều sợi dây chạy song song. Bài học này sẽ giúp bạn làm chủ các kiểu dữ liệu tiêu chuẩn công nghiệp như std_logic và std_logic_vector. Việc hiểu rõ chúng là điều kiện tiên quyết để bạn điều khiển cùng lúc 8 đèn LED hay đọc dữ liệu từ 8 công tắc Switch trên bo mạch AIOT-ARTIX7. Hãy nhớ rằng: trong FPGA, dữ liệu không chỉ là con số, nó là dòng điện chạy trên các “xa lộ” dây dẫn mà bạn thiết kế.

2. Nội dung chính

2.1. std_logic: “Một sợi dây đơn lẻ”

Đây là kiểu dữ liệu cơ bản nhất trong thiết kế vi mạch hiện đại. Thay vì chỉ có 0 và 1, std_logic cung cấp cho bạn nhiều trạng thái thực tế hơn của dòng điện để mô phỏng chính xác các tình huống trong mạch điện tử.

Các trạng thái phổ biến nhất:

  • ‘1’: Mức cao (Có điện – 3.3V trên bo mạch Artix-7).
  • ‘0’: Mức thấp (Không điện – 0V/Nối đất).
  • ‘Z’: Trở kháng cao (High Impedance – Dây bị ngắt kết nối hoàn toàn, giống như nhấc đầu dây ra khỏi mạch).
  • ‘X’: Không xác định (Unknown – Xảy ra khi có 2 nguồn điện cùng đẩy vào 1 sợi dây, cực kỳ nguy hiểm cho chip).

Ví dụ đời sống: Hãy nghĩ về một chiếc bóng đèn duy nhất trong nhà. Nó chỉ có thể Sáng (‘1’) hoặc Tắt (‘0’).

2.2. std_logic_vector: “Dải băng dây dẫn (Bus)”

Khi bạn muốn xử lý nhiều bit cùng lúc (ví dụ số nhị phân 8-bit), việc khai báo từng sợi dây đơn lẻ sẽ rất mất thời gian và khó quản lý. std_logic_vector cho phép bạn gom chúng lại thành một bó (Bus).

  • Cú pháp: std_logic_vector(7 downto 0) có nghĩa là một bó gồm 8 sợi dây, được đánh số từ 7 xuống 0.
  • Gắn với bo AIOT-ARTIX7: Bo mạch của chúng ta có 8 Switch và 8 LED. Thay vì khai báo 8 cái tên riêng lẻ, chúng ta khai báo một vector để quản lý tập trung:SW : in std_logic_vector(7 downto 0);LED : out std_logic_vector(7 downto 0);
  • Tư duy song song: Khi bạn gán giá trị cho một vector, cả 8 sợi dây sẽ đổi trạng thái cùng một lúc. Đây chính là sức mạnh của xử lý băng thông lớn trong FPGA.

Shared bus in FPGA (arbiter + peripheral bus)

2.3. Quy tắc viết mã (Syntax) cần nhớ

Để Vivado hiểu đúng ý định thiết kế của bạn, hãy tuân thủ nghiêm ngặt quy tắc sử dụng dấu nháy:

  • Dùng nháy đơn ‘ ‘ cho 1 bit: Ví dụ: LED(0) <= '1'; (Chỉ bật duy nhất đèn số 0).
  • Dùng nháy kép ” ” cho một chuỗi bit: Ví dụ: LED <= "10101010"; (Bật các đèn xen kẽ trên dãy 8 LED).
  • Hexadecimal (Số thập lục phân): Khi số lượng dây dẫn quá nhiều (ví dụ 32 bit), bạn có thể viết tắt bằng chữ X: Dữ_liệu <= X"FF"; (Tương đương với chuỗi 8 bit toàn mức ‘1’).

2.4. Phân biệt “downto” và “to”

Cách bạn khai báo hướng đánh số các bit sẽ ảnh hưởng đến cách hiểu về trọng số của con số:

  • (7 downto 0): Bit số 7 nằm bên trái (thường là bit trọng số lớn nhất – MSB). Đây là chuẩn phổ biến nhất trong thiết kế phần cứng chuyên nghiệp.
  • (0 to 7): Bit số 0 nằm bên trái. Cách này ít dùng hơn, thường chỉ xuất hiện trong một số giao thức truyền thông cụ thể.

Lời khuyên: Hãy luôn ưu tiên sử dụng downto để tránh nhầm lẫn khi thực hiện các phép toán nhị phân sau này.

3. Tổng kết

  • std_logic: Đại diện cho 1 dây dẫn vật lý đơn lẻ với các trạng thái thực tế (0, 1, Z, X).
  • std_logic_vector: Đại diện cho một xe buýt (Bus) dữ liệu gồm nhiều dây chạy song song đồng thời.
  • Tính vật lý: Khai báo kiểu dữ liệu càng lớn thì chip Artix-7 càng tốn nhiều dây nối và tài nguyên tài nguyên phần cứng bên trong.
  • Ứng dụng trên AIOT-ARTIX7: Sử dụng vector giúp bạn điều khiển toàn bộ dãy LED hoặc đọc trạng thái của toàn bộ dãy Switch chỉ bằng một dòng mã mô tả duy nhất.

Kiểm tra kiến thức

Hãy cùng kiểm tra lại kiến thức về cách chọn “vật liệu” dây dẫn trong thiết kế VHDL.

  1. Câu 1: Kiểu dữ liệu nào dùng để đại diện cho một sợi dây điện đơn lẻ trong VHDL?
    A. integer
    B. std_logic_vector
    C. std_logic
    D. boolean
    Xem đáp án & Giải thích

    Đáp án đúng: C

    Giải thích: std_logic là đơn vị dữ liệu cơ bản nhất, tương ứng với 1 bit thông tin hoặc 1 dây dẫn vật lý duy nhất.

  2. Câu 2: Trạng thái ‘Z’ trong kiểu dữ liệu std_logic có nghĩa là gì?
    A. Mạch bị chập điện.
    B. Trạng thái trở kháng cao (ngắt kết nối vật lý).
    C. Trạng thái ngủ đông của chip Artix-7.
    D. Mức điện áp trung bình.
    Xem đáp án & Giải thích

    Đáp án đúng: B

    Giải thích: ‘Z’ (High Impedance) đại diện cho trạng thái lơ lửng, cực kỳ quan trọng khi thiết kế các đường bus chung dùng Tri-state buffer.

  3. Câu 3: Để khai báo một bó dây dẫn gồm 8 bit để điều khiển 8 đèn LED trên bo AIOT-ARTIX7, cách viết nào sau đây là chuẩn nhất?
    A. LED : out std_logic(8);
    B. LED : out std_logic_vector(7 downto 0);
    C. LED : out bit_vector(1 to 8);
    D. LED : out array(8) of std_logic;
    Xem đáp án & Giải thích

    Đáp án đúng: B

    Giải thích: Sử dụng std_logic_vector với dải chỉ số từ 7 downto 0 là tiêu chuẩn công nghiệp để quản lý dữ liệu 8-bit.

  4. Câu 4: Cách viết nào sau đây là đúng quy pháp khi gán giá trị cho một vector 4-bit?
    A. Data <= ‘1010’;
    B. Data <= 1010;
    C. Data <= “1010”;
    D. Data <= {1,0,1,0};
    Xem đáp án & Giải thích

    Đáp án đúng: C

    Giải thích: Trong VHDL, hằng số vector (chuỗi bit) bắt buộc phải nằm trong dấu nháy kép “”, còn hằng số 1 bit nằm trong nháy đơn ”.

  5. Câu 5: Tại sao trong FPGA chúng ta có thể thay đổi giá trị của 1000 bit cùng một lúc (song song)?
    A. Vì chip Artix-7 có phần mềm xử lý rất nhanh.
    B. Vì mỗi bit được đại diện bởi một dây dẫn vật lý riêng biệt, cho phép dòng điện chạy qua tất cả chúng đồng thời.
    C. Vì hệ nhị phân rất đơn giản.
    D. Vì chúng ta sử dụng kiểu dữ liệu integer.
    Xem đáp án & Giải thích

    Đáp án đúng: B

    Giải thích: Đây chính là bản chất “phần cứng” của FPGA: tính song song dựa trên các đường dẫn vật lý độc lập tồn tại đồng thời.

“Chúc mừng bạn đã nắm vững cách chọn ‘vật liệu’ cho bản thiết kế của mình! Bài học tiếp theo sẽ hướng dẫn bạn cách ‘đổ dòng điện’ vào các dây dẫn này thông qua các lệnh gán đồng thời.”

Bạn đã sẵn sàng để thực hiện các kết nối?

Tiếp theo Bài 4.3: Lệnh gán tín hiệu đồng thời →

Mục nhập này đã được đăng trong Đào tạo, FPGA cơ bản, Khóa đào tạo cơ bản và được gắn thẻ FPGA AIOT-ARTIX7.
ThaoNguyen

BÀI 4.1: CẤU TRÚC ENTITY & ARCHITECTURE – “CÁI VỎ” VÀ “CÁI RUỘT” CỦA MẠCH
BÀI 4.3: LỆNH GÁN ĐỒNG THỜI – MỌI THỨ XẢY RA CÙNG LÚC!

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Bài viết mới
  • DỰ ÁN THỰC HÀNH – BỘ ĐIỀU KHIỂN LED ĐA NĂNG (SMART LED CONTROLLER)
  • BÀI 6.3: QUẢN LÝ TÀI NGUYÊN TRÊN i.MX93 – KHI “BỘ NÃO” LÊN TIẾNG
  • BÀI 6.2: UART – CẦU NỐI GIAO TIẾP GIỮA “BRAIN” VÀ “MUSCLE”
  • BÀI 6.1: PWM (ĐIỀU CHẾ ĐỘ RỘNG XUNG) – ĐIỀU KHIỂN ĐỘ SÁNG VÀ TỐC ĐỘ
  • BÀI 5.3: MÁY TRẠNG THÁI (FSM) – TƯ DUY ĐIỀU KHIỂN THÔNG MINH
Danh mục
  • Đào tạo
  • FPGA cơ bản
  • Giải pháp
  • IoT trong giáo dục
  • Khóa đào tạo cơ bản
  • Khóa đào tạo nâng cao
  • LabVIEW FPGA
  • LabVIEW FPGA High Performance
  • Phần cứng máy tính & Truyền thông công nghiệp
  • Sản xuất công nghiệp
  • Thiết bị dịch vụ thông minh
  • Thiết bị đọc căn cước
  • Tin tức

CÔNG TY CỔ PHẦN HỆ THỐNG AIOT

VPGD: Số A21-TT9 Đường Foresa 1 KĐT Xuân Phương, Phường Xuân Phương, Hà Nội.

Địa chỉ kinh doanh: Đường Phú Diễn, Tổ dân phố 18, phường Phú Diễn, Thành phố Hà Nội, Việt Nam

Hotline/Zalo: 097 186 8316 | 0839 799 889

Email: aiot@aiots.vn

VỀ CHÚNG TÔI

Giới thiệu

Sản phẩm

Giải pháp

Đào tạo

Tin tức

QUY ĐỊNH & CHÍNH SÁCH

Chính sách thanh toán

Chính sách vận chuyển

Chính sách bảo hành

Chính sách đổi trả

Chính sách bảo mật

ĐỊA CHỈ VĂN PHÒNG GIAO DỊCH

Copyright 2024 © Bản quyền thuộc về AIOT. Thiết kế bởi Jamina JSC
  • Trang chủ
  • Giới thiệu
  • Tin tức
  • Sản phẩm
  • Giải pháp
    • Chấm công bằng Face ID
    • Thiết bị đọc căn cước
    • IoT trong giáo dục
    • IoT trong quản lý năng lượng
    • IoT trong y tế
  • Đào tạo
    • Khóa đào tạo cơ bản
      • Hệ thống nhúng
      • LabVIEW FPGA
      • Phần cứng máy tính & Truyền thông công nghiệp
      • FPGA cơ bản
    • Khóa đào tạo nâng cao
      • LabVIEW FPGA High Performance
    • Tài liệu
  • PCCC
  • Liên hệ
Zalo
Phone

Đăng nhập

Quên mật khẩu?