1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Kỹ thuật máy tính: Thiết kế bộ xử lý kiến trúc RISC-V hỗ trợ chế độ giám sát

110 4 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết kế bộ xử lý kiến trúc RISC-V hỗ trợ chế độ giám sát
Tác giả An Xuân Tuần
Người hướng dẫn TS. Đoàn Duy
Trường học Đại học Quốc gia TP. Hồ Chí Minh
Chuyên ngành Kỹ thuật máy tính
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2021
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 110
Dung lượng 28,21 MB

Nội dung

Tuy nhiên, bộ xử lý kiến trúc tập lệnh RISC-V hỗ trợ chế độ giám sát của nhóm thực hiện dé tài đã bổ sung thêm các tín hiệu điều khiểncũng như các khối thực thi khác như khối Priority, R

Trang 1

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA KỸ THUẬT MÁY TÍNH

AN XUÂN TUẦN

KHÓA LUẬN TÓT NGHIỆP

THIET KE BO XỬ LÝ KIÊN TRÚC RISC-V HO TRỢ

CHE ĐỘ GIÁM SAT

DESIGN A RISC-V BASED PROCESSOR WITH SUPERVISOR

MODE

KỸ SƯ NGÀNH KỸ THUẬT MÁY TÍNH

Trang 2

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA KY THUAT MAY TÍNH

AN XUAN TUẦN - 16521355

KHOA LUAN TOT NGHIEP

THIET KE BO XU LY KIEN TRUC RISC-V HO TRO

CHE ĐỘ GIÁM SAT

DESIGN A RISC-V BASED PROCESSOR WITH SUPERVISOR

MODE

KY SƯ NGÀNH KY THUAT MAY TÍNH

GIANG VIEN HUONG DAN

TS DOAN DUY

Trang 3

THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP

Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số 70/QĐ-ĐHCNTT ngày

27 tháng 01 năm 2021 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.

Trang 4

LỜI CẢM ƠN

Để có thể hoàn thành tốt được bài khóa luận tốt nghiệp này, em xin chânthành cảm ơn các thầy cô trường Dai học Công nghệ Thông tin — Dai học Quốc

Gia Thành phố Hồ Chí Minh nói chung và các thầy cô thuộc khoa Kỹ thuật máy

tính nói riêng, đã truyền đạt cho em những kiến thức và kinh nghiệm quý báutrong suốt 4.5 năm qua

Kế đến, em xin cảm ơn những người bạn đã luôn động viên cũng như hỗ

trợ em tìm kiếm những thông tin và hướng giải quyết những vấn đề khó khăntrong suốt thời gian làm khóa luận tốt nghiệp

Cuối cùng, em xin chân thành cảm ơn TS Đoàn Duy và thầy Trần Đại

Dương đã dành thời gian quý báu cũng như kiến thức và kinh nghiệm của mình

để truyền đạt, hướng dẫn và giúp đỡ em rất nhiều trong suốt thời gian qua

Lời cuối cùng, em xin chúc quý thầy cô và các bạn luôn có thật nhiều sức

khỏe và luôn thành công trong công việc.

Sinh viên

An Xuân Tuấn

Trang 5

MỤC LỤC

Chương 1 TONG QUAN DE TÀI 22 22222c2222EE2 2222212222111 cce 2

1.1 Tổng quan tình hình nghiên cứu - -¿-¿22++++22v+++tttrvsrrrsrrvrcree 2

1.1.1 Tình hình nghiên cứu ngoải nước -. - «+ =+<++++s+++ 2

1.1.2 _ Tình hình nghiên cứu trong nưỚC - - + ++++++k+kexererrxexrre 2

1⁄2 Mục tiêu (Ct HH2 erre 2

1.2.1 Mục tiêu tổng quát -. -+c++222+++ttEEEEertrrkkrrrrrrkecree 21.2.2 Mục tiêu chỉ tiết - ccccccccECvrvrrrrrrrrrrrrrrrrrrrrrrrrrrvee 2

1.3 Phương pháp nghiên CỨU - tt +EEk+k#EEEvkeEekekekrkrkrrrrrereerkrkree 4

Chương 2 CƠ SỞ LÝ THUYÊT -22¿-222+22+2EEEEEettEExserrrrrkeerrrrrvecrrrvÐ

2.1 Định nghĩa bộ xử lý 5 «5S SE E2 HH1 0101 0 5

2.2 Bộ xử lý hai chế độ 22::22222+222221122222111227111 22211 1E rrrrrvee 5

2.3 Trạng thái hoạt động của bộ xử lý -+c5x+cccxerrrerrrrrkerrrree 6

2.4 Cấu trúc các lệnh thuộc kiến trúc tập lệnh RISC-V ¿ §2.5 Chức năng các lệnh thuộc kiến trúc tập lệnh RISC-V -+ 10Chương 3 THIẾT KE HE THÓNG - -22+222EE++++2EEE+ztt2EE+versrrrscee 22

3.1 Thiết kế hệ thống tổng quát -+++222v++++++t22zvvvrrrrrrrrr 223.2 Thiết kế hệ thống chỉ tiết

3.2.1 Khối Timer :c52222cS2CvvcrtvEEkvrrrrrrrrrrrrrrrvee3.2.2 Khối Control unit

3.2.3 Khối priority ìS2 ccirertrrrrrrrrrrrrrrrrrrie 353.2.4 Khối datapath

3.2.4.1 Khối Program Counter -2¿-+2++++222++z+tztrxxererrrsecrrrr Al

Trang 6

3.2.4.3 Khối Register File -cc 2222 222 EvrtEErtrrrrrrrrrerrrrrrrreg 433.2.4.4 hối Immediate Generation

3.2.4.5 P.00001.50077.7 ` 48

3.2.4.7 Khối Data MemOry .2 222+2222S++t2E2EEEtEEEEvrrerrkrrerrrr 56

3.2.4.8.

Kl Kl

4.1 Giai đoạn pre-synthesis c5 S2 + trước 78

4.2 Giai đoạn pOS(-Synth€SiS tt HH it 84

4.3 Giai đoạn hiện thực trên FPGA ccccecccecseseeseseeseseeseeeeseeseseeseeecseeseseeseeeees 89

4.3.1 Kiểm tra test case ở giai đoạn pre-synthesis và post synthesis 894.3.2 Bồ sung test case kiểm tra FPGA ¿-222ccc+cccvvrrecrverrrrr 904.4 So sánh kết qua thực thi ba giai đoạn mô phỏng - -+ 924.5 So sánh kết quả với các nghiên cứu đã thực hiện - 93Chương 5 KET LUẬN VÀ HƯỚNG PHÁT TRIẺN -:©25sc+2 96

ln.‹<) 96J7 34HBH)H)L 96

Trang 7

DANH MỤC HÌNH

Hình 2.1: Mô hình lớp của bộ xử lý có kết hợp hai chế độ -+ 5

Hình 2.2: Trạng thái hoạt động của bộ Xử lý 5+ c+ststetrtrrkekererrrkree 7

Hình 3.1: Câu trúc tổng quát của bộ xử lý cơ bản -¿-©scc+ccvsccerz 22

Hình 3.4: Cấu trúc chỉ tiết khối Timer -: 2©2+++2222++++t22Svzetrvsrresrr 25

Hình 3.5: Cấu trúc khối Control Unit -¿-222++z22222222zcz+ztrrzvsez 29

Hình 3.7: Cấu trúc khối Priority -::¿¿222V++++++22222EEEEEEt.t2EEE.trrrrrrrrrrrree 36Hình 3.8: Cấu trúc chỉ tiết khối PriOrity ¿¿-222++522v+z+evcvvvrrrerrvrrrsrrrrree 37Hình 3.9: Cấu trúc chỉ tiết khối datapath ¿¿-2222cc+tccvvvvvvrrrrrrrrrrrrev 40Hình 3.10: Cấu trúc khối Program Counter -: c++z+222vvvvvvretrrrrrrree 4IHình 3.11: Cấu trúc khối Instruction MemOry ¿: ¿2225z++222+sz++2vssc+2 42

Hình 3.12: Cấu trúc chỉ tiết khối Instruction MemoOry :©czz22sc+2 43

Hình 3.13: Cấu trúc khối Register Eile - -2¿+222++z++222++ztztrrveererrrscee 44Hình 3.14: Cấu trúc chỉ tiết khối Register File -ccc2c+c+cccvvvvecccez 45Hình 3.15: Cấu trúc khối Immediate Generation -. -¿z+2+++2x++csz++cx# 46Hình 3.16: Cấu trúc chi tiết khối Immdiate Generation -¿-©ss2czs+zcs# 48Hình 3.17: Câu trúc khối ALU control ¿ +¿z+2+++222+++++ttvzvve+zrvxeeesrz 48Hình 3.18: Cấu trúc chi tiêt khối ALU control -¿ ¿22522222 49

Hình 3.19: Cấu trúc khối ALU

Hình 3.20: Cấu trúc chỉ tiết khối ALU

Hình 3.21: Cấu trúc khối Data Memory 56Hình 3.22: Cấu trúc chỉ tiết khối Data Memory 57

Hình 3.23: Cấu trúc khối Reason Exception ¿:z++22++z++22z+zerrrrxscee 59Hình 3.24: Câu trúc chỉ tiết khối Reason Exception -:-cz+2cssczze+ 60

Trang 8

Hình 3.26: Cau trúc chỉ tiết khối Stack - -¿¿2225++22cvvzreevvvvrrerrvsrreerv 63

Hình 3.27: Cấu trúc khối System Register Eile -. 2z++22+zccczsscee 66

Hình 3.28: Cấu trúc chỉ tiết khối System Register File - -cc-c-e2 69Hình 3.29: Cầu trúc thanh ghi SepC . : ¿222++++222+++tt2ESE+rettrrvrrerrrsrrrrrr 70

Hình 3.30: Cấu trúc thanh ghi scause -2+22E++++2222E+ztrtrrxeerrrrkscee 71Hình 3.31: Cấu trúc thanh ghi sstatus ccccccsssesssssssessssssessssssessessssecsessseessessseeseessees 71

Hình 3.32: Cấu trúc thanh ghi Sip cccccssscsssssssesssssssescssssssessssssscssssecsesssusscessseescessees 72Hình 3.33: Cầu trúc thanh ghi sie ¿-222222+++2222S++ttEEEEvrettrrvrrrrrrrrrrrrr 72

Hình 3.34: Cấu trúc thanh ghi sie -2222++++2222E2Evvrrrrtttrrrrvrrrrrrrrrrrree 73

Hình 3.35: Cấu trúc khối PC_handling_exc_addr : -+2225+sc2ccsscez 74Hình 3.36: Cấu trúc chỉ tiết khối PC_handling_exc_addr - - 55+ 74

Hình 3.37: Cấu trúc khối PC_return_addr 2c+z+22222vvvccrrrrrrrvser 75Hình 3.38: Cấu trúc chỉ tiết khối PC_ return_addr „76

Hình 4.1: Ví dụ về độ trễ của các thành phan vật lý trong thiết k 86Hình 4.2: Kết qua tính toán setup slack và hold slack trên tool Quartus 89

Hình 4.3: Chương trình hợp ngữ kiểm tra thanh ghi r0 của khối RF 01

Trang 9

Bảng 3.3: Trạng thái hoạt động của khối Tỉmer 2 2z¿+222vzzvevrseeerrr 27

Bang 3.4: Tín hiệu input và output khối Control Unit - -c-. 8ÖBang 3.5: Trạng thái hoạt động của khối Control Unit -:ccccccc+2 34Bảng 3.6: Tín hiệu input va output khối Priority c¿©25cz+2c5s+cecz 36

Bang 3.7: Độ ưu tiên các ngoại lỆ - ¿c5 St sxsrteeeeierrrreOE,

Bảng 3.8: Trang thái hoạt động của khôi PriOrity -«-c++ccc+eczeerxee 38

Bảng 3.9: Tín hiệu input và output khối Program CounIer : -2 41

Bang 3.10: Trạng thái hoạt động của khối Program Counter . - 42

Bang 3.11: Tín hiệu input và output khối Instruction Memory - - 42Bang 3.12: Tín hiệu input va output khối Register Eile -ccccccc+2 44Bang 3.13: Trạng thái hoạt động khối Register File - : c:5c5sscee2 45Bang 3.14: Tín hiệu input và output khối Immediate Generation - ATBang 3.15: Cấu trúc của các giá trị tức thời imm ccc+e+rcrvrrreerrez 47Bang 3.16: Tín hiệu input va output khối ALU : -c¿525scz+2csssczzz 48

Trang 10

Bảng 3.20: Trạng thái hoạt động khối ALU control khi thực thi các lệnh thuộc định

dạng lệnh SB-type - tàn TH TH HH HT HH TH hiện 52

Bảng 3.21: Trạng thái hoạt động khối ALU control khi thực thi các lệnh thuộc định

dang lệnh U-tYpe - 5< 5S 1 S2 2212 111111131 11111101 2 T101 00101121 it 52

Bang 3.22: Trạng thái hoạt động khối ALU control khi thực thi các lệnh truy cập thanh ghi hệ thống 22¿¿+©222EV222++22222211121222222111111122712111112 21211111 ccee 53

Bang 3.23: Tín hiệu input và output khối ALU -ccccccc++cccvvveeceee 53

Bang 3.24: Tín hiệu điều khiển thực thi các phép toán trong khối ALU 55

Bang 3.25: Tín hiệu input và output khối Data Memory - 56

Bang 3.26: Trạng thái hoạt động khối Data Memory ¿z2 58 Bang 3.27: Tin hiệu input va output khối Reason Exception - - 59

Bang 3.28: Trạng thái hoạt động của khối Reason Exception -.- - 60

Bang 3.29: Tín hiệu input và output khối Stack 62

Bang 3.30: Trang thái hoạt động khối Stack Bang 3.31: Các tín hiệu input va output khối Sytem Register File Bang 3.32: Các giá tri CSR truy cập vào các thanh ghi hệ thống Bảng 3.33: Giá trị của trường vector mode khi xảy ra các ngoại lệ 73

Bảng 3.34: Tín hiệu input va output khối PC_ handling_exc_addr - 74

Bang 3.35: Trạng thái hoạt động của khối PC_handling_exc_addr 75

Bang 3.36: Tín hiệu input va output khối PC_return_addr 5555 s+es+<<+ 76 Bang 3.37: Trạng thái hoạt động của khối PC_ return_addr -. - T7 Bảng 4.1: Kết quả mô phỏng các tín hiệu khối Control Unit khi thực thi các lệnh 78

Bang 4.2: Giá trị các thanh ghi trong khối Register File khi chưa mô phong 81

Bang 4.3: Kết qua mô phỏng giá trị các thanh ghi trong khối Register File 82

Bảng 4.4: Giá trị các thanh ghi trong khối Data Memory khi chưa mô phỏng 82

Bang 4.5: Kết quả mô phỏng giá trị các thanh ghi trong khối Data Memory 83

Bang 4.6: Kết quả mô phỏng thời gian và tần số tối đa của bộ xử lý 85

Bảng 4.7: Mô ta giá trị toán hang công thức tinh setup slack va hold slack 87

Bang 4.8: Quá trình thực thi các lệnh kiểm tra thanh ghi r0 -. 91

Trang 11

Bảng 4.9: Kết quả mô phỏng khối RF khi thực thi các lệnh kiểm tra thanh ghi r0 92

Bảng 4.10: So sánh kết quả ba gian đoạn mô phỏng - ¿cssczze+ 93

Bảng 4.11: Kết quả so sánh với đề tài nghiên cứu User Mode Interrupt: A Must for

Securing Embedded Systems

Bang 4.12: Kết quả so sánh với dé tài nghiên cứu Bộ xử lý kiến trúc MIPS32 94

Trang 12

DANH MỤC TU VIET TAT

Dang viết tắt Dạng đầy đủ

ABI Application Binary Interface

ALU Arithmetic Logic Unit

ECALL Environment Call

RF Register File

RISC-V Reduced Instructions Set Computer V

RV32I Reduced Instructions Set Computer V 32bit Instruction

SBI Supervisor Binary Interface

SEE Supervisor Execution Environment

scause Supervisor Cause Register

S€pC Supvisor Execution Program Counter Register

sie Supervisor Interupt Enable Register

sip Supervisor Interrupt Pending Register

SM Supervisor Mode

SPP Supervisor Privious Privileged bit

SIE Supervisor Interrupt Enable bit

sstatus Supervisor Status Register

stvec Supervisor Trap Vector Base Address Register

UM User Mode

Trang 13

TÓM TÁT KHÓA LUẬN

Kiến trúc tập lệnh RISC-V là một kiến trúc tập lệnh mở Do đó, các công trình nghiên

cứu và ứng dụng dựa trên kiến trúc này hiện nay rất nhiều và rất được ưu chuộng.Một bộ xử lý kiến trúc tập lệnh RISC-V cơ bản bao gồm các khối Control Unit,

Program Counter, Instruction Memory, Register File, Immediate Generation, ALU

control, ALU va Data Memory Tuy nhiên, bộ xử lý kiến trúc tập lệnh RISC-V hỗ trợ

chế độ giám sát của nhóm thực hiện dé tài đã bổ sung thêm các tín hiệu điều khiểncũng như các khối thực thi khác như khối Priority, Reason Exception, Stack, System

Register File nhằm phục vụ quá trình xử lý ngoại lệ và quá trình thực thi 37 lệnh

thuộc kiến trúc RV32I, lệnh ECALL và 7 lệnh hệ thống khi bộ xử lý hoạt động ở chế

độ giám sát và chế độ người dùng Những bồ sung nay được phát triển dựa trên quátrình phân tích và đánh giá chỉ tiết các trạng thái hoạt động của bộ xử lý Thêm vào

đó, vì bộ xử lý được thiết kế dựa trên luồng thiết kế FPGA nên các tín hiệu điều khiển

cho từng trạng thái hoạt động của bộ xử lý trong khối Control Unit được thiết kế theodạng case (cấu trúc của một con mux) nhằm cải thiện hiệu suất làm việc cho bộ xử

lý Quá trình mô phỏng kết quả sẽ được thực hiện bằng cách mô phỏng chức năng và

thời gian thực thi của bộ xử lý thông qua việc kiểm tra waveform trên ModelSim Sau

đó, phân tích và đánh giá hiệu suất của bộ xử lý Cuối cùng, nhóm sẽ kiểm tra quá

trình thực thi và hoạt động của bộ xử lý trên FPGA (DE2 kit).

Trang 14

Chương 1 TONG QUAN DE TÀI

1.1 Tổng quan tình hình nghiên cứu

1.1.1 Tinh hình nghiên cứu ngoài nước

Năm 2019, Sandro Pinto và Cesare Garlati đã công bó công trình nghiên cứu vềviệc áp dụng quá trình xử lý ngoại lệ ở chế độ người dùng vào hệ điều hành nhúngthời gian thực FreeRTOS cho bộ xử lý MultiZone nhằm bảo mật những thiết bị IOT

sử dụng kiến trúc tập lệnh RISC-V [1] Kết quả nghiên cứu chỉ tập trung vào quá trình

xử lý ngoại lệ ở chế độ người dùng

1.1.2 Tinh hình nghiên cứu trong nước

Năm 2018, hai sinh viên Nguyễn Hoàng Dũng và Phan Gia Bảo đã nghiên cứu

và thiết kế bộ vi xử lý kiến trúc MIPS32 cho bài báo cáo khóa luận tốt nghiệp [2].Kết quả nghiên cứu đã thiết kế bộ xử lý MIPS32 có áp dụng kỹ thuật Pipeline chỉ hỗ

trợ chế độ người dùng, thực thi 35 lệnh thuộc kiến trúc MIPS và không xử lý được

các ngoại lệ.

1.2 Mục tiêu đề tài

1.2.1 Mục tiêu tổng quát

Mục tiêu tổng quát của nhóm thực hiện đề tài là thiết kế một bộ xử lý 32 bit đơn

chu kỳ dựa trên kiến trúc tập lệnh RISC-V có kết hợp chế độ giám sát và xử lý ngoại

lệ.

1.2.2 Mục tiêu chỉ tiết

Từ mục tiêu tổng quát, nhóm sẽ chia thành 4 mục tiêu chỉ tiết sau:

e Mục tiêu thứ nhất, bộ xử lý khi ở chế độ người dùng phải thực thi được 37

lệnh cơ bản thuộc kiến trúc tập lệnh RV32I và lệnh ECALL Tương tự, khi

ở chế độ giám sát, bộ xử lý không những thực thi được 37 lệnh, lệnh ECALL

mà còn phải thực thi được 7 lệnh hệ thống, cụ thé như Error! Reference

Trang 15

Bang 1.1: Các lệnh cơ bản thuộc kiến trúc tập lệnh RV32I

Định dạng lệnh Lệnh Chế độ thực thi

add, and, or, xor, sll, srl, slt, R-type UM va SM

sltu, sub, sra

addi, andi, ori, xori, slti, sltiu,

I-type slli, srli, srai, lb, lh, lw, Ibu, UM va SM

lhu, jalr, ECALL

© Mục tiêu thứ hai, bộ xử lý phải xử lý được các ngoại lệ bao gồm software

interrupt, timer interrupt, các lệnh không hợp

Trong quá trin!

lệ và lệnh chuyên chế độ

xử lý ngoại lệ, bộ xử lý phải chuyền sang chế độ giám sát.Sau khi xử lý xong, bộ xử lý sẽ trở về chế độ phù hợp bằng cách thực thi

lệnh SRET.

© Muc tiêu thứ ba, đánh giá kết quả hoạt động của bộ xử lý theo luồng thiết kế

Altera FPGA Design Flow thông qua 3 giai đoạn:

o_ Giai đoạn pre-synthesis: mô phỏng kết quả thực thi của bộ xử lý trên

ModelSim.

© Giai đoạn post-synthesis: kiểm tra thời gian và kết quả thực thi của bộ xử

lý trên ModelSim và Quartus.

o_ Giai đoạn hiện thực hóa: kiểm tra quá trình thực thi và kết quả hoạt đoạt

Trang 16

Mục tiêu cuối cùng, so sánh kết quả mô phỏng và thực nghiệm với các đề

tài nghiên cứu đã thực hiện.

Phương pháp nghiên cứu

Phương pháp nghiên cứu tài liệu:

o Tìm hiểu lý thuyết về kiến trúc tập lệnh RISC-V

o_ Quá trình thực thi các lệnh của bộ xử lý.

o Phân tích, đánh giá và đưa ra các trạng thái hoạt động của bộ xử lý.

Phương pháp thiết kế: Altera FPGA Design Flow

Phương pháp mô phỏng:

o_ Viết test bench mô phỏng chức năng trên Model Sim

o_ Kiểm tra thời gian thực thi của bộ xử lý trên Quartus và ModelSim

Phương pháp thực nghiệm: Hiện thực và kiểm tra trên FPGA (sử dụng DE2

kit).

Trang 17

Chương2 CƠ SỞ LÝ THUYET

2.1 Định nghĩa bộ xử lý

Bộ xử lý là mạch điện tử dùng để thực thi các lệnh của chương trình máy tính

thông qua việc thực hiện các phép toán logic, số học và so sánh Đồng thời, bộ xử lýcũng có thể chạy các mã lệnh đề tiến hành việc nhập hoặc xuất dữ liệu

Trong công trình nghiên cứu về các chế độ đặc quyền [4], bộ xử lý có thể cómột chế độ, hai chế độ, ba chế độ hoặc bốn chế độ hoạt động thông qua việc kết hợp

User

Mode

Supervisor Mode

Hình 2.1: Mô hình lớp của bộ xử lý có kết hợp hai chế độDựa vào Error! Reference source not found., hai chế độ hoạt động được mô

tả chỉ tiết như sau:

Trang 18

© Chế độ người dùng:

fe}

fe)

Thực thi các ứng dung và phần mềm của người dùng

Có thể chạy nhiều tiến trình cùng một lúc Mỗi tiến trình sẽ bao gồm một

ứng dụng của người dùng (application).

Quá trình thực thi của ứng dụng được mã hóa bằng giao diện nhị phân

ứng dụng (ABI) để có thể chạy các ứng dụng người dùng hoặc gửi yêucầu cho chế độ giám sát

Không có quyền truy cập vào chế độ hệ thống cũng như thực thi các lệnh

Quản lý hoạt động của toàn bộ hệ thống bao gồm phân chia tài nguyên

cho các ứng dụng, xử lý các ngoại lệ và yêu cầu từ chế độ giám sát và

chế độ người dùng

Bộ xử lý sẽ sử dụng hệ điều hành (OS) dé hỗ trợ các ứng dụng chế độ

người dùng giao tiếp với chế độ giám sát

Các yêu cầu từ chế độ người dùng và chế độ giám sát sẽ được gửi tới

giao diện nhị phân chế độ giám sát (SBI) từ OS và được mã hóa thành

các mã lệnh.

Sau đó, các mã lệnh sẽ được gửi tới môi trường thực thi chế độ giám sát

(SEE) dé tiến hành xử lý các yêu cầu đó

Có quyền truy cập vào bat kỳ tài nguyên trong bộ xử lý ké cả các ứng

dụng người dùng cũng như thực thi được toàn bộ các lệnh của bộ xử lý.

2.3 Trạng thái hoạt động của bộ xử lý

Dựa trên cơ sở lý thuyết của các nghiên cứu [3],[4], nhóm thực hiện đề tài đãphân tích và thiết kế ra các trạng thái hoạt động chính của bộ xử lý kiến trúc tập lệnh

RISC-V có hỗ trợ chế độ giám sát như hình Hình 2.2

Trang 19

Thực thi tiến

trình xử lý

ngoại lệ Hoàn thành

xử lý ngoại lệ

Xử lý

ngoại lệ

Xây ra ngoại lệ

xử lý ngoại lệ

chế độ giám sát

Hình 2.2: Trạng thái hoạt động của bộ xử lý

Cu thé, bộ xử lý sẽ bao gồm 3 trạng thái hoạt động chính:

©_ Trạng thái chế độ người dùng:

o Bộ xử lý sẽ ở chế độ người dùng và thực thi các tiến trình chế độ người

dùng bao gồm thực thi 37 lệnh cơ bản và lệnh ECALL

o Khi xảy ra ngoại lệ, bộ xử lý sẽ nhảy sang chế độ giám sát và chuyển

sang trạng thái hoạt động sang trạng thái xử lý ngoại lệ từ chế độ người

dùng.

e Trạng thái chế độ giám sát:

o Bộ xử lý sẽ ở chế độ giám sát và thực thi các tiến trình chế độ giám sát

bao gồm thực thi 7 lệnh hệ thống, 37 lệnh cơ bản thuộc kiến trúc tập lệnh

RV32I và lệnh ECALL.

o_ Khi xảy ra ngoại lệ, bộ xử lý vẫn ở chế độ giám sát và chuyên trạng thái

hoạt động sang trạng thái xử lý ngoại lệ từ chế độ giám sát

Trang 20

o Trong quá trình thực thi, nếu bộ xử lý thực thi lệnh SRET thì bộ xử lý sẽ

trở về trạng thái hoạt động chế độ người dùng

e Trạng thái xử lý ngoại lệ:

o Bộ xử lý sẽ ở chế độ giám sát Đồng thời, bộ xử lý sẽ lưu lại trạng thái

hoạt động khi xảy ra ngoại lệ, xác định độ ưu tiên, nguyên nhân xảy ra

ngoại lệ và tiến hành xử lý ngoại lệ

o_ Trong quá trình xử lý ngoại lệ, nếu xảy ra ngoại lệ khác, bộ xử lý vẫn sẽ

giữ nguyên trạng thái hoạt động hiện tại.

o Sau khi xử lý ngoại lệ xong, bộ xử lý sẽ trả về trạng thái hoạt động chế

độ người dùng nếu ngoại lệ xảy ra từ chế độ người dùng Ngược lại, bộ

xử lý sẽ trả về trạng thái hoạt động chế độ giám sát nếu ngoại lệ xảy ra

từ chế độ giám sát hoặc xảy ra ngoại lệ trong quá trình xử lý ngoại lệ

Cấu trúc các lệnh thuộc kiến trúc tập lệnh RISC-V

Như đã đề cập trong phần 1.2.2, nhóm thực hiện đề tài sẽ tập trung thiết kế bộ

xử lý có khả năng thực thi 37 lệnh RV32I, lệnh ECALL và 7 lệnh hệ thống Các lệnhnày có cau trúc được mô tả như Bảng 2.1, Bảng 2.2 va Bảng 2.3

Bảng 2.1: Cấu trúc các định dạng lệnh RV32I

Định

Cấu trúc lệnh dạng

lệnh

funef r2 rl funct3 rd opcode | R-type

imm{11] | imm[10:5] | imm{4:1] | imm[0] rÌ funet3 rd opcode | T-type

imm[11] | imm[10:5] r2 rs] imm[4:1] | imm[0] | opcode | S-type

imm(12] | imm[10:5] rs2 rsl imm(4:1] | imm[11] | opcode | SB-type

imm(31] imm(30:20] imm[19:15] | imm[14:12] rd opcode | U-type

imm|20] | imm[10:5] | imml41] | imm[0] | imm[19:15] | imm[14:12] rd opcode |_ Ul-type

Trang 21

Dựa vào bảng 2.1, mỗi định dạng lệnh được phân biệt với nhau bằng trường

opcode:

© opcode của R-type là 7’b0110011.

© opcode của I-type là 7’b0000011, 7”b1100111, 77b0010011, 7”b1110011.

© opcode cua S-type là 7’b0100011.

© opcode cua SB-type là 7’b1100011.

¢ opcode của UJ-type là 7*b1101111.

© opcode của U-type là 7*b0010111, 7*b0110111.

Bảng 2.2: Cấu trúc lệnh ECALL và SRET

csr imm 111 re 11001 CSRRCI

Dựa vào Error! Reference source not found., 37 lệnh RV32I sẽ được phân

Trang 22

đó, khi thực thi các lệnh này, bộ xử lý sẽ dựa vào cấu trúc của từng định dạng lệnhnhư Bảng 2.1 đề xác định lệnh cần thực thi Tương tự với lệnh ECALL và 7 lệnh hệthống, bộ xử lý cũng sẽ dựa vào cau trúc như Bang 2.2 và Bảng 2.3 dé thực thi đúng

chức năng của từng lệnh.

2.5 Chức năng các lệnh thuộc kiến trúc tập lệnh RISC-V

Chức năng của các lệnh khi thực thi được mô tả như Bảng 2.4.

Bảng 2.4: Chức năng các lệnh thuộc kiến trúc tập lên RISC-V

Lệnh Chức năng Mô tả

add R[rd] = R[rs1] + R[rs2] Cộng hai giá trị thanh ghi

rsl và rs2 trong khối RF,kết quả tính toán sẽ được

ghi vào thanh ghi rd trong

khối RE

and R[rd] = R[rs1] & R[rs2] AND hai giá trị thanh ghi

rs] và rs2 trong khối RF,kết quả tính toán sẽ được

ghi vào thanh ghi rd trong

khối RF

or R[rd] = R[rs1] | R[rs2] OR hai giá trị thanh ghi rs1

và rs2 trong khối RF, kết

quả tính toán sẽ được ghi

vào thanh ghi rd trong

khối RF

xor R[rd] = R[rs1] ^ RỊrs2] XOR hai giá trị thanh ghi

rs] và rs2 trong khối RF,

Trang 23

kết quả tính toán sẽ được

ghi vào thanh ghi rd trong

khối RE

sll R[rd] = R[rs1] << R[rs2] Shift giá tri thanh ghi rs1

trong RF sang trái n bit,

với n là giá trị của thanh

ghi rs2, kết quả tính toán

sẽ được ghi vào thanh ghi

rd trong khối RF

srl R[rd] = R[rs1] >> R[rs2] Shift giá tri thanh ghi rsl

trong RF sang phải n bít,

với n là giá trị của thanh

ghi rs2, kết quả tính toán

sẽ được ghi vào thanh ghi

rd trong khối RE

slt R[rd] = (R[rs1] < R[rs2])? 1:0 So sánh 2 giá trị có dấu

Nếu giá trị thanh ghi rsl

nhỏ hơn giá trị thanh ghi

rs2, kết quả sẽ lưu giá trị 1

vào thanh ghi rd Ngược

lại, kết quả sẽ lưu giá trị 0

vào thanh ghi rd.

sltu R[rd] = (R[rs1] < R[rs2])? 1:0 So sánh 2 giá trị không

dấu Nếu giá trị thanh ghi

rs] nhỏ hơn giá trị thanh

ghi rs2, kết quả sẽ lưu giá

Trang 24

Ngược lại, kết quả sẽ lưu

giá trị 0 vào thanh ghi rd.

sub R[rd] = R[rs1] - R[rs2] Trừ hai giá trị thanh ghi

rsl và rs2 trong khối RF,kết quả tính toán sẽ được

ghi vào thanh ghi rd trong

khối RE

sra R[rd] = R[rs1] >>> R[rs2] Shift giá tri thanh ghi rsl

trong RF sang phải n bit,

với n là giá trị của thanh

ghi rs2 Trong quá trình

thực thi, bit MSB của rsl

khi dịch phải sẽ lấy bit

MSB của thanh ghi rs2.

Kết quả tính toán sẽ được

ghi vào thanh ghi rd trong

khối RF

addi R[rd] = R[rs I] + imm Cộng hai giá trị thanh ghi

rsl và giá trị tức thời imm,

kết quả tính toán sẽ được

ghi vào thanh ghi rd trong

khối RF

andi R[rd] = R[rs1] & imm AND hai gia tri thanh ghi

rsl va giá trị tức thời imm,

kết quả tính toán sẽ được

Trang 25

ghi vào thanh ghi rd trong

khối RF

ori R[rd] = R[rs1] |imm OR hai giá trị thanh ghi rs1

va giá tri tức thời imm, kết

quả tính toán sẽ được ghi

vào thanh ghi rd trong

khối RE

xori R[rd] = R[rs1] ^ imm XOR hai gia tri thanh ghi

rsl va giá trị tức thời imm,

kết quả tính toán sẽ được

ghi vào thanh ghi rd trong

khối RF

slti R[rd] = (R[rs1] < imm)? 1:0 So sánh 2 giá trị có dấu

Nếu giá trị thanh ghi rsl

nhỏ hơn giá trị tức thời

1mm, kết quả sẽ lưu giá trị

1 vào thanh ghi rd Ngược

lại, kết quả sẽ lưu giá trị 0

vào thanh ghi rd.

sltiu R[rd] = (R[rs1] < imm)? 1:0 So sánh 2 giá trị không

dấu Nếu giá trị thanh ghi

rs] nhỏ hon giá tri tức thời

imm, kết quả sẽ lưu giá trị

1 vào thanh ghi rd Ngược

lại, kết quả sẽ lưu giá trị 0

vào thanh ghi rd.

Trang 26

slli R[rd] = R[rs1] << imm Shift giá tri thanh ghi rsl

trong RE sang trái n bít,

với n là giá trị tức thời

imm, kết quả tính toán sẽ

được ghi vào thanh ghi rd

trong khối RE

srli R[rd] = R[rs1] >> imm Shift giá tri thanh ghi rs1

trong RF sang phai n bit,

với n là gia trị tức thời

imm, kết quả tính toán sẽ

được ghi vào thanh ghi rd

trong khối RF

srai R[rd] = R[rs1] >>> imm Shift giá tri thanh ghi rsl

trong RF sang phải n bít, với n là giá tri tực thời imm Trong quá trình thực

thi, bit MSB của thanh ghi

rsI khi dịch phải sẽ lấy bit

MSB của giá trị tức thời

imm Kết quả tính toán sẽ

được ghi vào thanh ghi rd

trong khối RE

Ib R[rd] = {24°bM[](7),M[R[rs1] + imm](7:0) Bộ xử lý sẽ trỏ tới thanh

ghi dia chỉ R[rsl] + imm

trong khối Data Memory.Sau đó, bộ xử lý sẽ lấy 8

bit LSB giá trị của thanh

Trang 27

ghi địa chỉ được trỏ đến

vào thanh ghi rd và mở

rộng 24 bit còn lại dựa vào

bit 7 của giá trị được lay

Ih R[rd] = {16’bM[](15),M[R[rs1] + imm](15:0) Bộ xử lý sẽ trỏ tới thanh

ghi dia chi R[rsl] + imm

trong khối Data Memory.Sau đó, bộ xử lý sẽ lấy 16

bit LSB giá trị của thanh

ghi địa chỉ được trỏ đến

vào thanh ghi rd và mở

rộng 16 bit còn lại dựa vào

bit 15 của giá trị được lấy

lw R[rd] = {32°bM[R{[rs1] + imm] (31:0) Bộ xử lý sẽ trỏ tới thanh

ghi dia chỉ R[rsl] + imm

trong khối Data Memory.Sau đó, bộ xử lý sẽ lay giá

trị thanh ghi địa chỉ được

trỏ đến vào thanh ghi rd

lbu R[rd] = {24’b0, M[R[rs1] + imm] (7:0) Bộ xử lý sẽ trỏ tới thanh

ghi dia chỉ R[rsl] + imm

trong khối Data Memory.Sau đó, bộ xử lý sẽ lấy 8

bít LSB giá trị của thanh

ghi địa chỉ được trỏ đến

vào thanh ghi rd và mở

rộng 24 bit còn lại bằng 0

Trang 28

lhu R[rd] = {16°b0, M[RIrs1] + imm] (7:0) Bộ xử lý sẽ trỏ tới thanh

ghi dia chỉ R[rsl] + imm

trong khối Data Memory

Sau đó, bộ xử lý sẽ lấy 16

bít LSB giá trị của thanh

ghi địa chỉ được trỏ đến

vào thanh ghi rd và mở

rộng 16 bit còn lại bằng 0

Jalr R[rd] = PC +4; PC =R[rsl] + imm Kết quả tính toán PC + 4

sẽ được ghi vào thanh ghi

rd của RF Địa chỉ lệnh

thực thi kế tiếp sẽ là kết

quả cộng của thanh ghi rs1

và giá trị tức thời imm.

sb M[R[s1] + imm] (7:0) = R[rs2] (7:0) Bộ xử lý sẽ trỏ tới thanh

ghi dia chỉ R[rsl] + imm

trong khối Data Memory

Sau đó, bộ xử lý sẽ ghi 8 bit LSB giá trị thanh ghi

rs2 vào thanh ghi địa chỉ

được trỏ đến và mở rộng

24 bit còn lại dựa vào bit 7 của giá trị thanh ghi rs2.

sh MỊR[s1] + imm] (15:0) = R[rs2] (15:0) Bộ xử lý sẽ trỏ tới thanh

ghi dia chỉ R[rsl] + imm

trong khối Data Memory

Sau đó, bộ xử ly sẽ ghi 16

Trang 29

bít LSB giá trị thanh ghi

rs2 vào thanh ghi địa chỉ

được trỏ đến và mở rộng

16 bit còn lại dựa vào bit

15 của giá trị thanh ghi rs2.

Sw MỊR[s1] + imm] (31:0) = R[rs2] (31:0) Bộ xử lý sẽ trỏ tới thanh

ghi dia chỉ R[rsl] + imm

trong khối Data Memory

Sau đó, bộ xử lý sẽ ghi giá

trị thanh ghi rs2 vào thanh

ghi địa chỉ được trỏ đến.

beq If(R[rs1] == R[rs2]) PC = PC + {imm,1 b0} Nếu giá trị thanh ghi rs] và

rs2 bằng nhau Địa chỉlệnh thực thi kế tiếp sẽ là

kết quả cộng của địa chỉ

lệnh hiện tại và kết quả

shift trái 1 bít của giá tri tức thời.

bne If(R[rs1] != R[rs2]) PC = PC + {imm,1’b0} Nếu giá trị thanh ghi rs] và

rs2 khác nhau Địa chỉ

lệnh thực thi kế tiếp sẽ làkết quả cộng của địa chỉlệnh hiện tại và kết quả

shift trái 1 bít của giá tri tức thời.

Trang 30

blt If(R[rs1] < R[rs2]) PC = PC + {imm,1’b0} Nếu giá trị thanh ghi rsl

nhỏ hơn giá trị thanh ghi

rs2 Địa chỉ lệnh thực thi

kế tiếp sẽ là kết quả cộng

của địa chỉ lệnh hiện tại và

kết qua shift trái 1 bit của

gia tri tức thời.

bge If(R[rs1]>=R[rs2]) PC = PC + {imm, 1’b0} Nếu giá trị thanh ghi rsl

lờn hơn hoặc bằng giá trị

thanh ghi rs2 Địa chỉ lệnh

thực thi kế tiếp sẽ là kết

quả cộng của địa chỉ lệnh

hiện tại và kết quả shift trái

1 bit của giá trị tức thời.

bltu IR[rs1] < R[rs2]) PC = PC + fimm,1’b0} Kiểm tra điều kiện hai giá

trị không dấu Nếu giá trị

thanh ghi rs1 nhỏ hơn giá

trị thanh ghi rs2 Địa chỉ

bgeu If(R{rs1] >= R[rs2]) PC = PC + {imm,1’b0} Kiém tra diéu kién hai gid

trị không dấu Nếu giá tri

thanh ghi rs] lớn hơn hoặc

bằng giá trị thanh ghi rs2

Trang 31

Địa chỉ lệnh thực thi kếtiếp sẽ là kết quả cộng của

địa chỉ lệnh hiện tại và kết

qua shift trái 1 bit của giá tri tức thời.

jal Rlrd] = PC +4; PC = PC + {imm,1’b0} Két qua tinh toan PC + 4

sẽ được ghi vào thanh ghi

rd của RF Địa chỉ lệnh

thực thi kế tiếp sẽ là kết

quả cộng của địa chỉ lệnh

hiện tại và kết quả shift trái

1 bít của giá trị tức thời.

auipc R[rd] = PC + {imm,12”b0} Kết quả cộng của dia chỉ

lệnh hiện tại và kết quả

shift trái 12 bít của giá trị tức thời sẽ được ghi vào thanh ghi rd của RF.

lui R[rd] = {imm,12'b0} Kết quả shift trái 12 bit của

giá trị tức thời sẽ được ghi vào thanh ghi rd của RF.

xử lý xong ngoại lệ hoặc

trở về chế độ

Trang 32

CSRRW R[rd] = CSR; CSR = R[rsl] Giá trị thanh ghi CSR của

khối System Register File

sẽ được ghi vào thanh ghi

rd của RF Đồng thời, giá

trị thanh ghi rsl sẽ được ghi vào thanh ghi CSR.

CSRRS R[rd] = CSR; CSR = CSR I R[rs1] Gia trị thanh ghi CSR của

khối System Register File

sẽ được ghi vào thanh ghi

rd của RF Đồng thời, bộ

xử lý sẽ XOR 2 giá trị CSR

hiện tại và giá trị thanh ghi

rsl Kết quả tính toán sẽ

ghi vào thanh ghi CSR.

CSRRC R[rd] = CSR; CSR = CSR & ~R[rsl] Giá trị thanh ghi CSR của

khối System Register File

sẽ được ghi vào thanh ghi

rd của RF Đồng thời, bộ

xử lý sẽ AND 2 giá trị

CSR hiện tại và giá trị đảo

của thanh ghi rs1 Kết quả

tính toán sẽ ghi vào thanh

ghi CSR.

CSRRWI Rlrd] = CSR; CSR =imm Giá trị thanh ghi CSR của

khối System Register File

sẽ được ghi vào thanh ghi

rd của RF Đồng thời, giá

Trang 33

trị tực thời imm sẽ được ghi vào thanh ghi CSR.

CSRRSI R[rd] = CSR; CSR = CSR | imm Giá trị thanh ghi CSR của

khối System Register File

sẽ được ghi vào thanh ghi

rd của RF Đồng thời, bộ

xử lý sẽ XOR 2 giá tri CSR

hiện tại và giá trị tức thời

imm Kết quả tính toán sẽ

ghi vào thanh ghi CSR.

CSRRCI R[rd] = CSR; CSR = CSR & ~imm Giá trị thanh ghi CSR của

khối System Register File

sẽ được ghi vào thanh ghi

td của RF Đồng thời, bộ

xử lý sẽ AND 2 giá trị CSR hiện tại và giá trị đảo

của giá trị tức thời imm.

Kết quả tính toán sẽ ghi

vào thanh ghi CSR.

Trang 34

Chương 3 THIẾT KE HỆ THONG

Hình 3.1: Cấu trúc tổng quát của bộ xử lý cơ bản

Trong đó, khối datapath sẽ bao gồm các khối thực thi chung là Program Counter,

Instruction Memory, Register File, ALU, ALU Control, Data Memory, Immediate Generation.

Nhung một bộ xử lý kiến trúc tập lệnh RISC-V có hỗ trợ chế độ giám sát sẽ phải

bổ sung thêm một số khối như khối Timer dé tao timer interrupt cho hệ thống, khốiPriority dé xác định độ ưu tiên khi có hai ngoại lệ xảy ra trong cùng một chu kỳ và

trong khối datapath sẽ có thêm các khối đề phục vụ quá trình xử lý ngoại lệ và quá

trình thực thi ở chế độ giám sát như Hình 3.2

Trang 36

Các tín hiệu input và output của bộ xử lý được mô tả trong Bảng 3.1.

Bảng 3.1: Tín hiệu input và ouput của bộ xử lý hỗ trợ chế độ giám sát

Tín hiệu | Loại tín hiệu | Độ rộng Mô tả

en_timer input bit Tín hiệu kích hoạt hoạt động khối timer

clk input bit Tín hiệu clock của bộ xử lý

res input bit | Tín hiệu reset của bộ xử ly

load input bit | Tín hiệu kích hoạt quá trình nhập giá tri

đếm ban đầu cho khối Timer

mode input bit | Tín hiệu chọn chế độ cho khối Timer

data_timer input 4 bit Gia tri đếm ban đầu cho khối Timer

Bo xu ly kiến trúc tập lệnh RISC-V 32 bit đơn chu kỳ có hỗ trợ chế độ giám sát

như Hình 3.2 được nhóm thực hiện đề tài phân tích dựa trên cơ sở lý thuyết [4], [5].Tir đó, nhóm đã xác định được các trạng thái hoạt động va tự thiết kế cho toàn bộ các

khối thành phần trong bộ xử lý để đạt được mục tiêu đã đề ra

Bộ xử lý bao gồm 5 tín hiệu input được mô tả như Bảng 3.1 và không có tín

hiệu output Bên cạnh đó, các tín hiệu output của khối datapath bao gồm empty_stack,IE_sig, PP_sig, opcode, funct7, funct3 là một trong những tín hiệu dé xác định trạng

thái hoạt động và các lệnh thực thi của bộ xử lý.

3.2 Thiết kế hệ thống chỉ tiết

3.21 Khối Timer

Khối Timer là một bộ đếm từ 0 đến 15 dùng dé tao timer inerrupt cho bộ xử lý

và có cấu trúc như Hình 3.3

Trang 37

data_timer load

mode clk

res

Hình 3.3: Cấu trúc khối Timer

inter_timer

Các tín hiệu input va output của khối Timer được mô tả trong Bang 3.2

Bảng 3.2: Tín hiệu input và output khối Timer

Tín hiệu | Loại tín hiệu | Độ rộng Mô tả

en_timer input bit | Tín hiệu kích hoạt hoạt động khối timer

clk input bit { Tin hiệu clock của bộ xử lý

res input bit | Tín hiệu reset của bộ xử ly

inter_timer output bit | Tin hiệu nhận biết timer interupt

Ý tưởng thiết kế chi tiết cho khối Timer được nhóm thực hiện dé tài thiết kế như

Trang 38

Khối Timer được nhóm thực hiện đề tài tự phân tích và thiết kế như Hình 3.4nhằm hỗ trợ hai chế độ hoạt động đề đưa giá trị đếm vào bộ đếm Conter 4 bit củakhối Timer Trong đó, ở chế độ mặc định, giá trị đếm sẽ là output của bộ đếm Counter

4 bit Ở chế độ còn lại, giá trị đếm sẽ được nhập từ bên ngoài vào thông qua tín hiệuinput data_timer Kế tiếp, khi khối Timer được kích hoạt, kết quả của bộ đếm sẽ bằng

giá trị đếm cộng thêm 1 tại cạnh lên của mỗi xung clock và sẽ tự động quay về giá trị

0 khi tín hiệu reset được kích hoạt Trong quá trình đếm, nếu kết quả của bộ đếmbằng 15 thì sẽ xảy ra timer interrupt

Trang 39

Thêm vào đó, nhóm thực hiện dé tài đã phân tích và tự thiết kế ra các trạng thái hoạt động của khối Timer như Bảng 3.3.

Bảng 3.3: Trạng thái hoạt động của khối TimerInput Trạng thái hoạt động ciia bộ đếm Ouput

res | en timer | load | mode Current Counter Next_Counter timer_inter

0 0/1 01 | 0/1 4°d0 <= Current Counter <= 4’d15 4d0 0

1 0 01 01 4°d0 <= Current Counter <= 4’d15 Current Counter 0

1 1 0 O/1 Current Counter != 4°d15 Current Counter + 1 0

Trang 40

Dựa vào Bảng 3.3, trạng thái hoạt động của khối Timer được mô tả như sau:

Tai cạnh lên xung clk, khi res = 0, trạng thái hoạt động hiện tai của bộ đếmCurrent_Counter đang ở giá trị nào thì giá trị kế tiếp Next_Counter = 0 và

tín hiệu nhận biết timer interrupt là timer_inter = 0

Tai cạnh lên xung clk, khi res = | và tín hiệu en_timer = 0, trang thái hoạt

động hiện tai cua bộ đếm Current_Counter đang ở giá trị nào thì giá tri kế

tiếp Next_Counter vẫn giữ giá trị hiện tại của bộ đếm và tín hiệu nhận biết

timer interrupt là timer_inter = 0.

Tai cạnh lên xung clk, khi res = 0, en_timer = 1, load = 0 va mode = 0 hoặc

mode = 1, trang thái hoạt động hiện tại của bộ đếm Current_Counter != 15

thì giá trị kế tiếp Next_Counter = Current_Counter + 1 và tín hiệu nhận biết

timer interrupt là timer_inter = 0.

Tai cạnh lên xung clk, khi res = 0, en_timer = 1, load = 0 va mode = 0 hoặc

mode = 1, trạng thái hoạt động hiện tại cua bộ đếm Current_Counter = 15thi giá tri ké tiép Next_Counter = 0 và tín hiệu nhận biết timer interrupt là

timer_inter = 0.

Tai cạnh lên xung clk, khi res = 0, en_timer = 1, load = 1 và mode = 0, trạng

thái hoạt động hiện tai của bộ đếm Current_Counter != 15 thi giá trị kế tiếpNext_Counter = Current_Counter + 1 và tín hiệu nhận biết timer interrupt là

timer_inter = 0.

Tai cạnh lên xung clk, khi res = 0, en_timer = 1, load = 0 và mode = 0, trạng

thái hoạt động hiện tại của bộ đếm Current_Counter = 15 thì giá trị kế tiếpNext_Counter = 0 và tín hiệu nhận biết timer interrupt là timer_inter = 0

Tai cạnh lên xung clk, khi res = 0, en_timer = 1, load = 1 va mode = 1, trạng

thái hoạt động hiện tại của bộ đếm Current_Counter != 15 thì giá tri kế tiếpNext Counter = data_timer và tín hiệu nhận biết timer interrupt là

timer_inter = 0.

Tai cạnh lên xung clk, khi res = 0, en_timer = 1, load = 1 và mode = 1, trang

Ngày đăng: 02/10/2024, 04:59

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN