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 3THONG 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 4LỜ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 5MỤ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 63.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 7DANH 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 8Hì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 9Bả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 10Bả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 11Bả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 12DANH 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 13TÓ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 14Chươ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 15Bang 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 16Mụ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 17Chươ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 19Thự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 20o 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 21Dự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 23kế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 24Ngượ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 25ghi 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 26slli 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 27ghi đị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 28lhu 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 29bí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 30blt 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 32CSRRW 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 33trị 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 34Chươ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 36Cá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 37data_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 38Khố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 39Thê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 40Dự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