Ngôn ngữ Truyền Tải Thanh ghi (Register Transfer Language – RTL) là một ngôn ngữ cấp thấp được sử dụng để mô tả hoạt động của mạch kỹ thuật số, cụ thể là việc truyền thông tin giữa các thanh ghi. Nó thể hiện cách dữ liệu di chuyển từ thanh ghi này sang thanh ghi khác và cách dữ liệu được xử lý trong hệ thống kỹ thuật số. Thông qua RTL, có khả năng tạo ra các mức độ trừu tượng, nơi các mô tả thiết kế cấp cao có thể được tạo và dễ dàng liên kết với việc triển khai phần cứng cấp thấp trong việc thiết kế, mô phỏng cũng như tổng hợp mạch kỹ thuật số.
RTL cung cấp các mô tả có ý nghĩa về luồng dữ liệu giữa các thanh ghi của phần cứng. Nó được áp dụng cho việc biểu diễn các mạch đồng bộ: các mạch được điều khiển bởi tín hiệu xung nhịp. Việc truyền dữ liệu và các phép toán logic được mô tả ở cấp độ thanh ghi. Các thiết kế RTL thường được ghi lại bằng các ngôn ngữ mô tả phần cứng, bao gồm Verilog hoặc VHDL. Nó là một lớp trừu tượng giữa các mạch tích hợp ứng dụng cụ thể (ASIC) bậc cao và các thiết bị vật lý.
Hình ảnh: Minh họa về hoạt động truyền dữ liệu có điều kiện trong RTL, nếu P=1 thì dữ liệu từ R1 được truyền sang R2.
RTL được sử dụng để mô tả bản chất của phần cứng ở cấp độ truyền tải thanh ghi. Trước đây, nó được sử dụng để mô hình hóa luồng dữ liệu khi sử dụng thanh ghi. RTL hỗ trợ trong việc tạo ra thiết kế ở cấp độ cổng. Nó cho phép mô phỏng và xác nhận các hành vi liên quan của phần cứng đang được thiết kế. RTL đóng vai trò là nền tảng cho việc phát triển các mạch trong miền kỹ thuật số với việc sử dụng HDL.
Các thao tác được thực hiện trên dữ liệu được lưu trữ trong thanh ghi được gọi là vi thao tác (micro-operations). Chúng là các lệnh cấp thấp chi tiết được sử dụng trong một số thiết kế để thực hiện các lệnh máy phức tạp. Thông tin được chuyển đổi từ thanh ghi này sang thanh ghi khác được biểu diễn ở dạng ký hiệu bằng toán tử thay thế được gọi là Truyền tải Thanh ghi (Register Transfer). Trong câu lệnh R2 ← R1
, R2 hoạt động như một toán tử thay thế. Câu lệnh này định nghĩa việc truyền nội dung của thanh ghi R1 vào thanh ghi R2.
Có nhiều phương pháp biểu diễn RTL khác nhau. Thanh ghi có thể được biểu diễn bằng tên được đặt trong hộp chữ nhật, được đánh số theo thứ tự, hoặc các bit trong thanh ghi có thể được đánh dấu trên đầu hộp. Ví dụ, một thanh ghi 16 bit PC có thể được chia thành 2 phần: byte thấp và byte cao của địa chỉ 16 bit.
Ký hiệu | Mô tả | Ví dụ |
---|---|---|
Chữ và Số | Biểu thị Thanh ghi | MAR, R1, R2 |
( ) | Biểu thị một phần của thanh ghi | R1(8-bit) R1(0-7) |
← | Biểu thị việc truyền thông tin | R2 ← R1 |
, | Chỉ định hai vi thao tác của Truyền tải Thanh ghi | R1 ← R2, R3 ← R4 |
: | Biểu thị các hoạt động có điều kiện | P : R2 ← R1 nếu P=1 |
Toán tử Đặt tên (:=) | Biểu thị một tên khác cho một thanh ghi đã tồn tại/bí danh | Ra := R1 |
Các phép toán được thực hiện trên dữ liệu được lưu trữ trong thanh ghi được gọi là các phép toán truyền tải thanh ghi. Có các loại hoạt động truyền tải thanh ghi khác nhau: Truyền đơn giản (ví dụ: R2 ← R1), Truyền có điều kiện (ví dụ: P: R2 ← R1 nếu P=1), và Hoạt động đồng thời (ví dụ: P: R2 ← R1, R1 ← R2 nếu P=1).
RTL cho phép thiết kế phần cứng hiệu quả, mô phỏng hoạt động và phát hiện lỗi sớm, triển khai mô tả khái niệm đến cấp độ cổng phần cứng, tái sử dụng các thành phần thiết kế và phân tích thời gian. Tuy nhiên, RTL cũng có nhược điểm như khó gỡ lỗi, có thể dẫn đến cấu trúc lớn không hiệu quả nếu không được tối ưu hóa tốt, hướng đến phần cứng và kết quả tổng hợp phụ thuộc vào khả năng của các công cụ cụ thể. Tóm lại, RTL là một công cụ hữu ích cho phép chuyển đổi từ mức độ khái niệm của thiết kế sang mức độ vật lý của việc hiện thực phần cứng.