MODULE 4: VHDL – VIẾT “BẢN VẼ” CHO PHẦN CỨNG
Chào bạn! Chúng ta đã đi qua “Vỏ” (Entity), “Ruột” (Architecture) và “Vật liệu” (Kiểu dữ liệu). Bây giờ, chúng ta sẽ học cách vận hành dòng điện bên trong bản thiết kế đó. Đây là bài học giúp bạn thực sự chạm vào sức mạnh “song song” của FPGA.
1. Giới thiệu
Chào mừng bạn đến với bài học “kỳ diệu” nhất trong tư duy thiết kế phần cứng. Nếu bạn đã từng học lập trình phần mềm (như C, Java hay Python), bạn đã quen với việc máy tính đọc code từ trên xuống dưới: xong dòng 1 mới đến dòng 2. Nhưng trong thế giới FPGA, và cụ thể là với chip Artix-7 XC7A100T trên bo mạch AIOT-ARTIX7, mọi quy tắc đó đều bị phá vỡ.
Lệnh gán đồng thời (Concurrent Assignment) chính là cách chúng ta mô tả các kết nối vật lý. Trong một nhà máy tự động hóa, khi một cảm biến phát hiện sản phẩm lỗi, hệ thống dừng khẩn cấp phải hoạt động ngay lập tức mà không cần đợi “CPU” xử lý xong các tác vụ khác. Bài học này sẽ giúp bạn hiểu tại sao trong VHDL, thứ tự các dòng code không quan trọng, và cách mà hàng ngàn luồng dữ liệu có thể “chảy” song song trên bo mạch của chúng ta mà không bao giờ phải xếp hàng chờ đợi.
2. Nội dung chính
2.1. Phép gán <= : Không phải là “lưu trữ”, mà là “nối dây”
Trong VHDL, chúng ta sử dụng ký hiệu <= để gán giá trị. Tuy nhiên, đừng hiểu lầm nó giống dấu = trong toán học hay lập trình phần mềm.
- Tư duy phần cứng: Khi bạn viết
LED <= SW;, hãy tưởng tượng bạn đang cầm một sợi dây đồng, một đầu hàn vào Switch (SW) và đầu kia hàn vào đèn LED.
- Hệ quả: Vì là dây dẫn vật lý, nên bất cứ khi nào bạn gạt Switch, đèn LED sẽ phản ứng ngay lập tức. Không có khái niệm “đợi lệnh” hay chờ đến lượt xử lý.
2.2. Tính đồng thời (Concurrency) – “Phá bỏ hàng đợi”
Đây là điểm khác biệt cốt lõi. Hãy xem ví dụ sau:
Dây_A <= Nguồn_1;
Dây_B <= Nguồn_2;
- Trong phần mềm: Máy tính chạy dòng 1, sau đó mới chạy dòng 2.
- Trong FPGA: Cả hai dòng điện chạy qua Dây A và Dây B cùng một lúc.
- Thứ tự không quan trọng: Nếu bạn đổi chỗ dòng 1 và dòng 2 cho nhau trong phần
architecture, mạch điện vẫn hoạt động y hệt. Trong FPGA, không có “trước” và “sau”, chỉ có “kết nối”.
2.3. Ví dụ đời sống: Hệ thống điện trong căn nhà
Hãy tưởng tượng căn nhà của bạn. Bạn có một công tắc đèn phòng khách và một công tắc đèn phòng bếp. Khi bạn bật đèn phòng khách, đèn phòng bếp có phải đợi đèn phòng khách sáng xong mới được sáng không? Tất nhiên là không.
Hai hệ thống này hoạt động độc lập và song song. Nếu có 10 người cùng bật 10 cái công tắc ở 10 phòng khác nhau, 10 bóng đèn sẽ sáng lên đồng thời. Đó chính là cách VHDL vận hành các câu lệnh gán bên trong chip Artix-7.

2.4. Thực hành trên bo mạch AIOT-ARTIX7: “Bàn tay ảo thuật”
Chúng ta sẽ thực hiện một thiết kế để thấy sức mạnh của vector và lệnh gán đồng thời:
- Mã nguồn:
LED <= SW; (Trong đó LED và SW đều là std_logic_vector(7 downto 0)).
- Kết quả vật lý: Chỉ với một dòng mã, bạn đã tạo ra 8 kết nối vật lý độc lập bên trong silicon.
- Thử nghiệm: Bạn hãy dùng cả hai tay gạt nhanh nhiều Switch cùng lúc. Bạn sẽ thấy các đèn LED tương ứng phản ứng tức thời và hoàn toàn độc lập. Không có hiện tượng đèn này sáng rồi mới đến đèn kia sáng. Mỗi bit trong vector là một “xa lộ” riêng biệt.
2.5. So sánh: Lệnh gán đồng thời vs. Lệnh tuần tự
| Đặc điểm |
Lệnh tuần tự (Software) |
Lệnh gán đồng thời (FPGA) |
| Thứ tự code |
Rất quan trọng (trên xuống dưới) |
Không quan trọng |
| Bản chất |
Các bước xử lý của CPU |
Các kết nối dây dẫn vật lý |
| Tốc độ |
Phụ thuộc vào số lượng lệnh |
Tức thời (tốc độ dòng điện) |
3. Tổng kết
- Dấu <=: Là lệnh nối dây dẫn. Tín hiệu bên phải “chảy” trực tiếp sang bên trái.
- Tính song song: Mọi lệnh gán bên ngoài các khối đặc biệt (như
process) đều diễn ra đồng thời.
- Thứ tự mã nguồn: Không ảnh hưởng đến chức năng của mạch điện cuối cùng trong FPGA.
- Tốc độ phản ứng: Là tốc độ vật lý của dòng điện, mang lại khả năng xử lý thời gian thực tuyệt đối cho bo mạch AIOT-ARTIX7.
Kiểm tra kiến thức
Hãy hoàn thành các câu hỏi trắc nghiệm dưới đây để kiểm chứng tư duy song song của bạn.
- Câu 1: Trong VHDL, ký hiệu nào được dùng để thực hiện lệnh gán tín hiệu đồng thời?
A. :=
B. ==
C. <=
D. =>
Xem đáp án & Giải thích
Đáp án đúng: C
Giải thích: Trong VHDL, <= là toán tử gán tín hiệu (Signal Assignment), dùng để mô tả sự kết nối giữa nguồn tín hiệu và đích đến.
- Câu 2: Nếu bạn đổi vị trí của hai dòng lệnh gán đồng thời trong Architecture, kết quả mạch điện sẽ như thế nào?
A. Mạch sẽ bị lỗi và không chạy được.
B. Mạch sẽ chạy ngược lại so với ban đầu.
C. Mạch vẫn hoạt động y hệt như cũ vì các kết nối tồn tại song song.
D. Đèn LED sẽ nhấp nháy chậm hơn.
Xem đáp án & Giải thích
Đáp án đúng: C
Giải thích: Trong phần cứng, các kết nối vật lý được thiết lập đồng thời khi chip hoạt động, do đó thứ tự mô tả trong mã nguồn không làm thay đổi cấu trúc vật lý của mạch.
- Câu 3: Tại sao nói lệnh gán trong VHDL giống như “nối dây đồng”?
A. Vì nó khiến mã nguồn trông cứng cáp hơn.
B. Vì nó thiết lập một kết nối vật lý trực tiếp, khiến đầu ra thay đổi ngay khi đầu vào thay đổi.
C. Vì bạn phải dùng mỏ hàn để viết code.
D. Vì nó chỉ hoạt động với các tín hiệu có màu đồng.
Xem đáp án & Giải thích
Đáp án đúng: B
Giải thích: Đây là tư duy cốt lõi của “Hardware Description Language” (Ngôn ngữ mô tả phần cứng). Bạn đang mô tả cấu trúc vật lý, không phải một tiến trình lưu trữ dữ liệu tạm thời.
- Câu 4: Bạn viết code cho bo AIOT-ARTIX7: LED(0) <= SW(0); và LED(1) <= SW(1);. Khi bạn gạt cả 2 Switch cùng lúc, chuyện gì xảy ra?
A. LED(0) sáng trước, sau đó 1ms thì LED(1) mới sáng.
B. Cả 2 LED cùng sáng lên đồng thời ngay lập tức.
C. Chỉ có LED(1) sáng vì nó nằm ở dòng code dưới cùng.
D. Chip Artix-7 sẽ bị treo vì quá tải lệnh.
Xem đáp án & Giải thích
Đáp án đúng: B
Giải thích: Đặc tính song song cho phép các luồng dữ liệu độc lập không gây ảnh hưởng hay phải chờ đợi nhau. Dòng điện sẽ đi qua cả hai kết nối cùng một thời điểm.
- Câu 5: Ưu điểm lớn nhất của lệnh gán đồng thời trong thiết kế hệ thống công nghiệp là gì?
A. Giúp tiết kiệm dung lượng ổ cứng của máy tính.
B. Giúp code ngắn gọn hơn Python.
C. Cho phép hệ thống phản ứng tức thời với nhiều sự kiện xảy ra cùng lúc mà không có độ trễ xử lý.
D. Giúp tăng tuổi thọ cho pin của bo mạch.
Xem đáp án & Giải thích
Đáp án đúng: C
Giải thích: Xử lý song song là lý do FPGA được tin dùng trong các ứng dụng phản ứng cực nhanh và thời gian thực tuyệt đối như radar, túi khí ô tô hay điều khiển robot công nghiệp.
“Chúc mừng bạn đã hoàn thành Module 4! Bạn đã biết cách ‘vẽ’ và ‘nối dây’ cho chip Artix-7. Hãy sẵn sàng bước sang Module 5, nơi chúng ta sẽ dạy cho mạch điện cách ‘ghi nhớ’ và đếm thời gian nhé!”