OPCODE f(FILE #) Hình 2- 4: định dạng của lệnh goto - Các lệnh rẽ nhánh ựược chỉ ra như trong bảng 2-3.
STT Mnemonic Operand Mô tả Cycle Opcode Cờ 1 I_ANDLW k And W với một giá trị xác ựịnh 1 12'b1110_xxxx_xxxx Z 2 I_CALL k Gọi chương trình con 2 12'b1001_xxxx_xxxx None 3 I_CLRWDT k Xóa Watchdog timer 1 12'b0000_0000_0100 TO 4 I_GOTO k Lệnh rẽ nhánh không có ựiều
kiện 2 12'b101x_xxxx_xxxx None 5 I_IORLW k OR một giá trị xác ựịnh với W 1 12'b1101_xxxx_xxxx Z 6 I_MOVLW k Ghi một giá trị xác ựịnh vào W 1 12'b1100_xxxx_xxxx None 7 I_OPTION k Nạp giá trị của thanh ghi
OPTION 1 12'b0000_0000_0010 None
8 I_RETLW k
Lệnh trả về từ chương trình con và ghi một giá trị xác ựịnh vào
thanh ghi W
2 12'b1000_xxxx_xxxx None
9 I_SLEEP - Chuyển sang chế ựộ standby 1 12'b0000_0000_0011 TO 10 I_TRIS f đọc thanh ghi TRIS 1 12'b0000_0000_0xxx None
11 I_XORLW k
NOR một giá trị với thanh ghi W và lưu trữ kết quả trong
thanh ghi W
1 12'b1111_xxxx_xxxx Z
Bảng 2- 3: Các lệnh rẽ nhánh của vi ựiều khiển
Như vậy chương này ựã mô tả khái quát cách thiết kế tập lệnh và mô tả tổng quan toàn bộ 33 lệnh của vi ựiều khiển. Việc thiết kế tập lệnh là bước ựầu tiên trong tiến trình thiết kế một vi ựiều khiển, bước này rất quan trọng vì nó sẽ quyết ựịnh tới toàn bộ những bước tiếp theo như thiết kế luồng dữ liệu và ựiều khiển, thiết kế các thể hiện của bộ nhớ.
Chương 3 THIẾT KẾ KIẾN TRÚC VI XỬ LÍ 3.1. Gii thi u.
Thiết kế một hệ thống máy tắnh, trong trường hợp này là một vi ựiều khiển thường rất phức tạp. Cũng giống như thiết kế các hệ thống khác, việc ựầu tiên sau khi ựã hiểu rõ ựược yêu cầu của hệ thống và tập lệnh của nó ta phải thiết kế kiến trúc của nó. Chương này sẽ trình bày kiến trúc của vi ựiều khiển ựược sử dụng. Kiến trúc của vi ựiều khiển sử dụng kiến trúc rất thông dụng, kiến trúc RISC. Chúng ta có thể thấy ựược kiểu kiến trúc này trong rất nhiều cuốn sách kinh ựiển về hệ thống máy tắnh cũng như kiến trúc máy tắnh. Trong chương này, tác giả sẽ tập trung mô tả kiến trúc máy tắnh ựược sử dụng cho vi ựiều khiển ựã ựược thiết kế. Có thể hiểu nôm na kiến trúc của máy tắnh gồm hai phần, kiến trúc của các luồng dữ liệu (datapath) và kiến trúc của bộ ựiều khiển (Control). Chương này sẽ mô tả cả hai khối cơ bản này.
Datapath bao gồm các ựơn vị chức năng khác nhau và thành phần lưu trữ. Các ựơn vị chức năng như bộ cộng, bộ trừ và khối logic và toán học (ALU) thực hiện một hoạt ựộng logic hoặc toán học [1]. Thành phần lưu trữ ( register và register file) là thành phần cần thiết ựể lưu trữ dữ liệu trong datapath, ựặc biệt là với kiến trúc pipleline, sau mỗi pha của quá trình thực hiện lệnh, kết quả tạm thời lại phải lưu trữ ựể dùng cho những pha sau ựó. Datapath cho ta thấy ựược luồng dữ liệu bên trong CPU vắ dụ như làm thế nào ựể ghi dữ liệu vào registers và xử lý bởi các ựơn vị chức năng, tại thời ựiểm nào, chu kì xung nhịp thứ bao nhiêu, dữ liệu sẽ ựược ghi hoặc ựược ựưa tới mộ bộ phận chức năng trong datapath.
Phần ựiều khiển ựược dùng ựể ựiều khiển luồng dữ liệu hoặc ựiều khiển cách dữ liệu ựược xử lý trên datapath [1]. đầu vào của mô ựun ựiều khiển chắnh là các lệnh (OPCODE, OPERAND). Dựa vào các trường trong lệnh, mô ựun ựiều khiển phải quyết ựịnh những hành ựộng cụ thể của các thành phần chức năng trên datapath cũng như ựường ựi dữ liệu trên datapath ở các xung nhịp tiếp theo.
Vắ dụ hình 3-1 Chỉ ra datapath chứa hai thanh ghi R0, R1 và bộ cộng/trừ. Datapath này có thể cộng (trừ) nội dung của R0 với R1 và chứa kết quả vào R0. Bộ Controller ựiều khiển datapath ựể thực hiện cộng hoặc trừ thông qua tắn hiệu add_sub.
Hình 3- 1: Một datapath ựơn giản và mô ựun ựiều khiển tương ứng