Đề tài: Thiết kế MCU bằng ngôn ngữ VHDL và mô phỏng kết quả với Modelsim. Thiết kế một MCU với vi xử lý 8 bit, 16 cổng vào 8 bit, 16 cổng ra 8 bit, ROM 128 byte và RAM 96 byte. Có 3 loại lệnh chính: nạp và lưu trữ (loads and stores), thao tác dữ liệu (data manipulations), và rẽ nhánh (branhces).
BÁO CÁO BÀI TẬP LỚN MÔN FPGA VÀ ỨNG DỤNG Đề tài: Thiết kế MCU ngôn ngữ VHDL mơ kết với Modelsim Nhóm sinh viên thực hiện: Nhóm 15 I Nhiệm vụ thiết kế Thiết kế MCU với vi xử lý bit, 16 cổng vào bit, 16 cổng bit, ROM 128 byte RAM 96 byte Hình 1: Tổ chức phần cứng MCU thiết kế Tổ chức nhớ Bộ nhớ MCU bao gồm nhớ chương trình, nhớ liệu cổng vào/ra Hình 2: Các vùng địa nhớ 256 byte 1.1 Bộ nhớ chương trình (Program Memory) nơi chứa mã lệnh thực thi MCU Program Memory xem nhớ đọc trình thực lệnh để tránh trường hợp lệnh bị viết đè lên Vì vậy, Program Memory chế tạo thiết bị ROM để không làm chương trình điện 1.2 Bộ nhớ liệu (Data Memory) nơi chứa biến tạm thời cho phép truy xuất đọc ghi tạo chương trình phần mềm, nhằm phục vụ lưu trữ thơng tin cho q trình thực lệnh Data Memory thực nhớ RAM 1.3 Cổng vào (I/O Ports) dùng để trao đổi thông tin giới bên (thiết bị ngoại vi) MCU Đơn vị xử lý trung tâm (Central Processing Unit - CPU) CPU xem não MCU Công việc CPU bao gồm đọc lệnh từ nhớ, giải mã lệnh để hiểu xem lệnh dùng để làm thực bước cần thiết để hồn thành lệnh CPU bao gồm đơn vị điều khiển (Control Unit - CU), đơn vị logic số học (Arithmetic Logic Unit - ALU), tập hợp ghi có nhiệm vụ chứa liệu, thông tin trạng thái hệ thống hệ thống mạch điện dùng cho việc thực phép logic số học liệu Hình 3: Tổ chức CPU 2.1 Đơn vị điều khiển (Control Unit - CU) máy trạng thái hữu hạn (FSM) điều khiển vận hành MCU CU có trạng thái thực công việc truy xuất lệnh (fetch), giải mã lệnh (decode) thực bước cần thiết để hồn thành lệnh (execute) Trong q trình chuyển trạng thái, CU gửi tín hiệu điều khiển để di chuyển thao tác liệu nhằm đạt yêu cầu lệnh 2.2 Đường liệu (Data Path) subsystem bao gồm ghi ALU, nơi lưu trữ nhanh thực thao tác với liệu bên CPU 2.2.1 Thanh ghi (Registers) - Thanh ghi lệnh (Instruction Register – IR): lưu mã lệnh thực IR sử dụng CU để định xem trạng thái cần chuyển tới để hoàn thành lệnh - Thanh ghi địa nhớ (Memory Address Register – MAR): lưu địa sử dụng để truy cập nhớ để biết cần truy xuất lệnh từ ROM hay truy xuất liệu từ RAM I/O - Bộ đếm chương trình (Program Counter – PC): lưu địa lệnh thực PC tự động tăng lên qua lần đọc lệnh từ nhớ, trừ có chương trình phần mềm thực lệnh chuyển tới vị trí địa khác - Thanh ghi phục vụ mục đích chung (General-Purpose Registers: A & B): lưu trữ tạm thời liệu phục vụ cho mục đích tính tốn hay di chuyển CPU nhớ - Thanh ghi trạng thái (Condition Code Register – CCR): chứa cờ trạng thái để cung cấp thêm thông tin cho việc tính tốn số học logic CPU Các cờ thiết kế bao gồm: âm (Negative – N), không (Zero – Z), tràn (Overflow – V), nhớ (Carry – C) 2.2.2 Đơn vị logic số học (Arithmetic Logic Unit - ALU) ALU thực phép tính số học ( cộng, trừ, nhân, chia,…) logic (and, or, not,…) Trong này, ALU thiết kế với chức cộng, trừ, and, or, tăng giảm II Thiết kế Lệnh Có loại lệnh chính: nạp lưu trữ (loads and stores), thao tác liệu (data manipulations), rẽ nhánh (branhces) 1.1 Loads and Stores Load lệnh di chuyển liệu từ nhớ vào ghi CPU Có kiểu Load thiết kế Load tức thời (nạp giá trị operand ô nhớ) Load trực tiếp (nạp giá trị nhớ có địa operand) cho ghi A B Store lệnh di chuyển liệu từ ghi CPU vào nhớ Kiểu Store thiết kế Store trực tiếp cho ghi A B (lưu liệu ghi vào địa ô nhớ cho operand) 1.2 Data Manipulations Các lệnh loại liên quan đến vận hành ALU, thao tác với liệu chứa ghi Các lệnh thiết kế bao gồm: cộng (A=A+B), trừ (A=A-B), AND (A=AandB), OR (A=AorB), tăng (A=A+1, B=B+1), giảm (A=A-1, B=B-1) 1.3 Branches Branch lệnh giúp đưa ghi PC tới địa mong muốn, thay tự động tăng lên sau lệnh Có loại Branch thiết kế Branch Always (PC nạp với giá trị cho operand) Branch có điều kiện (PC cập nhật có điều kiện cụ thể đúng, điều kiện đến từ cờ trạng thái ghi CCR) Hình 4: Bảng tổng hợp lệnh thiết kế Thiết kế nhớ File memory.vhd chứa component rom.vhd, ram.vhd outports.vhd Các cổng input khơng có chức store nên cần khai báo đầu vào chương trình Một dồn kênh Multiplexer sử dụng để chọn tuyến tín hiệu CPU dựa vào địa Hình 5: Sơ đồ khối cho nhớ MCU 2.1 Thiết kế ROM ROM khai báo mảng gồm 128 phần tử (0-127) với giá trị cho trước (Hình 4) để định nghĩa chương trình Việc truy xuất liệu từ nhớ ROM gán giá trị mảng cho đầu ROM có sườn lên xung clock Ngồi ra, tín hiệu enable (EN) khởi tạo phép truy xuất liệu từ địa ROM Code : rom.vhd 2.2 Thiết kế RAM Ram triển khai tương tự ROM, mảng có 96 phần tử (0-95) Vì truy xuất liệu từ nhớ RAM có sườn lên xung clock Thêm vào đó, RAM khơng cho phép read mà write nên ghi giá trị đầu vào RAM vào nhớ có sườn lên xung clock có tín hiệu write Code : ram.vhd 2.3 Thiết kế cổng Output Các cổng output có khả store nên CPU cập nhật cổng output cách ghi vào địa Vì khai báo cổng output mảng có 16 phần tử (0-15) truy xuất ghi với chế giống RAM Tuy nhiên, cổng có thêm chân reset để xóa hết liệu Code : outport.vhd 2.4 Thiết kế toàn bộ nhớ Code : memory.vhd 3.3 Thiết kế toàn CPU Code : cpu.vhd Thiết kế tồn MCU Hình 11: Sơ đồ khối tồn MCU Code : MCU.vhd III Mô với Modelsim Testbench Xung clock thiết lập với tần số 50MHz, tức chu kỳ 20ns Code: MCU_TB.vhd Kết mô Bài báo cáo thực trình tự lệnh sau: Hình 12: Chương trình chứa ROM để mô Load tức thời vào ghi A giá trị A0h Load trực tiếp vào ghi B giá trị 80h ô nhớ 19h Thực phép cộng số học A+B nạp lại vào A Branch tới địa 20h cờ tràn V=1 Store liệu từ A port_out00 ... 3.3 Thiết kế toàn CPU Code : cpu.vhd Thiết kế tồn MCU Hình 11: Sơ đồ khối tồn MCU Code : MCU. vhd III Mô với Modelsim Testbench Xung clock thiết lập với tần số 50MHz, tức chu kỳ 20ns Code: MCU_ TB.vhd... IR chứa opcode sau: x? ?86 ”, x? ?87 ”, x? ?88 ”, x? ?89 ”, x”96”, x”97” - DATA_MAN_OP gán ghi IR chứa opcode từ x”42” đến x”49” - BRANCH_OP gán ghi IR chứa opcode từ x”20” đến x” 28? ?? Graph trạng thái cho... dương Những điều kiện kiểm tra với bit dấu hai số kết - Cờ C gán bit vị trí biến temp Code : alu.vhd 3.1.2 Thiết kế toàn Data Path Hệ thống bao gồm hai đường bus bit (BUS1 BUS2) hai Multiplexer