- vừa được xem lúc

Bài 5: Thực chiến thiết kế FPGA – Bộ đếm, UART, và tái sử dụng IP

0 0 3

Người đăng: Yuri

Theo Viblo Asia

Sau khi đã nắm vững các lỗi phổ biến và quy trình thiết kế cơ bản, đây là lúc bạn thực sự bắt tay vào thiết kế phần cứng với các ví dụ thực tế. Bài viết này sẽ hướng dẫn bạn thiết kế ba module thường gặp trong FPGA: bộ đếm, truyền UART đơn giản, và cách tái sử dụng các IP có sẵn.

I. Thiết kế bộ đếm (counter)

Mục tiêu:

  • Tạo bộ đếm 8-bit tăng dần mỗi chu kỳ clock
  • Có ngõ vào reset và enable

Code Verilog:

module counter( input wire clk, input wire rst, input wire en, output reg [7:0] count
); always @(posedge clk or posedge rst) begin if (rst) count <= 0; else if (en) count <= count + 1; end
endmodule

Kiểm thử:

  • Tạo testbench đơn giản bật en sau vài chu kỳ
  • Quan sát waveform để xác nhận hoạt động

II. UART truyền đơn giản (TX)

UART là giao thức truyền nối tiếp đơn giản, phổ biến khi debug hoặc kết nối vi điều khiển. Bạn sẽ thiết kế phần truyền UART với tốc độ cố định.

Tham số:

  • Clock 50 MHz
  • Baud rate 9600 → cần chia clock để gửi từng bit

Ý tưởng thiết kế:

  • Dùng bộ chia clock để tạo tín hiệu baud_tick (mỗi 5208 chu kỳ với 50 MHz → 9600 Hz)
  • Xây dựng state machine với các trạng thái: IDLE → START → DATA[0→7] → STOP
  • Mỗi trạng thái duy trì đúng mộtbaud_tick
  • Truyền 1 bit/baud_tick, theo thứ tự: bit start (0) → 8 bit dữ liệu (LSB trước) → bit stop (1)

Lưu ý:

  • Với clock 50 MHzbaud rate 9600, số chu kỳ clock cho mỗi bit là: BAUD_DIV = 50_000_000 / 9600 ≈ 5208
  • Bạn có thể dùng bộ đếm để sinh tín hiệu baud_tick định kỳ → kích hoạt chuyển trạng thái.

III. Tái sử dụng IP core – tiết kiệm công sức

Vì sao dùng IP?

  • Viết từ đầu mất thời gian, dễ sai
  • IP được tối ưu hóa, kiểm thử kỹ càng

Các IP phổ biến (theo thư viện của Xilinx):

  • UART
  • FIFO, RAM, PLL
  • AXI Interconnect, DMA

Cách sử dụng trong Vivado:

  • Mở IP Catalog → chọn IP → cấu hình → Ok → generate
  • Kết nối trong block design hoặc RTL

IV. Tổng kết

Viết Verilog giỏi không chỉ là tránh lỗi – mà còn là khả năng biến yêu cầu thành thiết kế sạch, dễ kiểm thử và mở rộng. Việc luyện tập các module cơ bản như counter, UART, hay dùng IP là bước đệm tốt để bạn tự tin hơn trong những project lớn hơn.

Ở bài sau, ta sẽ cùng tìm hiểu về tối ưu hóa thiết kế FPGA – cách pipeline, parallelize và sử dụng tài nguyên hiệu quả.

Hẹn gặp lại!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Một phím một chuột và 2 máy tính

Một phím một chuột và 2 máy tính. Khác với các công ty startup, ở các công ty lớn hơn, thì đa phần vì policy của công ty nên máy tính do công ty cấp đều cài sẵn các phần mềm theo dõi hoặc kiểm soát in

0 0 35

- vừa được xem lúc

Keyboard from Scratch: Từ A tới Z

Keyboard from Scratch: Từ A tới Z. Sau khi kết thúc hai phần trước, chúng ta đã có những kiến thức cơ bản về chiếc bàn phím cơ, không để các bạn đợi lâu, ở phần này chúng ta sẽ thực sự bắt tay vào làm

0 0 42

- vừa được xem lúc

Keyboard from Scratch: Debounce

Keyboard from Scratch: Debounce. Bạn đang xem phần hai của một sê ri nhiều phần, nhiều chừng nào, nhiều đến khi nào, thì chưa biết được. . .

0 0 45

- vừa được xem lúc

Keyboard from Scratch: Prototype

Keyboard from Scratch: Prototype. Là một lập trình viên, bàn phím là một vật dụng bạn phải sờ vào hằng ngày, thậm chí số lần bạn sờ nó còn nhiều hơn số lần bạn sờ vào vợ hoặc bạn gái.

0 0 39

- vừa được xem lúc

Chuyện biểu diễn ma trận trên máy tính

Chuyện biểu diễn ma trận trên máy tính. Cách đây mấy hôm mình có share cái screenshot trên Facebook, khoe linh tinh vụ mình đang viết lại cái CHIP-8 emulator bằng Rust.

0 0 45

- vừa được xem lúc

[Reading] Engineer's Mini-Notebook: Communications Projects

[Reading] Engineer's Mini-Notebook: Communications Projects. Đây là một quyển trong bộ sách Engineer's Mini-Notebook được phát hành năm 1987 bởi Radio Shack, một thương hiệu bán đồ linh kiện điện tử k

0 0 29