PHÂN CÔNG CÔNG VIỆC
ĐỒ ÁN CẤU TRÚC MÁY TÍNH
LAB3: DESIGN A MIPS
32
-BIT SINGLE - CYCLE CPU
Công việc cụ thể
ST
T
Tên thành viên Công việc Đóng góp
1 Nguyễn Văn Cường
+ Tìm hiểu lại LAB 1: Thiết kế
RegisterFile 32 by 32
+Tìm hiểu hoạt động và thiết kế :
Khối Control, Khối dịch trái, Khối
mở rộng
+ Slide: phần I.
30%
2 Đặng Ngọc Hoàng
+ Tìm hiểu lại LAB2: Thiết kế bộ
tính toán ALU.
+Tìm hiểu hoạt động và thiết kế:
Thanh ghi PC, Khối JR_Control,
Các khối Multiplexor
+ Slide: phần II 1,2.
30%
3 Lê Hữu Việt
+ Tìm hiểu lại chương 4 sách COD
Tìm hiểu hoạt động và thiết kế:
ALUControl, MIPS, Khối mô
phỏng Stimulate
+ Slide: phần II3,III.
+ Báo cáo.
+ Mô phỏng lệnh trên Quartus
40%
Tiến trình làm việc:
- Tìm hiểu tài liệu theo nhiệm vụ được giao.
- Thảo luận nhóm thống nhất sơ đồ khối cần thực hiện.
- Viết Code cho từng khối.
- Chia sẻ hiểu biết của từng thành viên trong nhóm về phần mình thiết kế.
- Ghép nối các khối với nhau, hiệu chỉnh thiết kế.
- Mô phỏng trên ModelSim và sơ đồ khối ở Quartus.
Lab3: Design a MIPS
32
-bit Single-Cycle CPU
Yêu cầu thiết kế:
Yêu cầu chung:
!"#$%&' ()* +,-./)!012*3" 4/5*/6/&5*7
889.9.9:9;9.;9<9=>-9:
6//?*&@/!A*/BC)6D*EFG@9FHI&JKLMNO
6/!P1Q)!R*&@//B RIS*/T) (U/&5*"F@(&O
Tập lệnh:
5*&@V7
• ADD(I9(N9( 7 W(IXYW(NXZW( XO
• JR(N7 YW(NXO
• SLT(I9(N9( 7 -[\W(NX]W( X^W(IXYL$LLLLLLL
&N W(IXYL$LLLLLLLLO
• SUB(I9(N9( 7 W(IXYW(NXW( XO
5*&@V-7
• BNE(N9( 9,,_7 [\W(NX`YW( X^YZDZ.*a$ \-,,_^]]
&NYZDO
• LW( 9,,_\(N^7W( XY,WW(NXZ.*a$ \-,,_^XO
• SW( 9,,_\(N^7,WW(NXZ.*a$ \-,,_^XYW( XO
XOR-( 9(N9,,_7W( XYW(NX=>b(@a$ \-,,_^O
5*:7
J ( 7YcW7X9 ( 9LLd
Xây dựng SingleClock CPU:
eN21f!P ?*C)6 /g9 !12*/)!0Jh)/i)7
Z*&5*
Z#*H&5*
Z# *
Z# j* @6*
Z#*HIk&5)
Z#1Q)!R* ()* +,
Z#1Q)!R*!P
Z#1Q)!R*&5*:
Z#,l(#*IT)
Z#Im/ (6
Z#,)& M&$@(
D
Program Counter:
* 4/5**5,Fn (o H&5* M @1pq/ 4/5*O
T) V@f,83r&Mr&@M
@I7
!"
!"
#$$%!!"!" #$$%""
#$$%"" #$$%""
#$$%&&"&" #$$%''"'"
#$$%(("(" #$$%))")"
#$$%**"*" #$$%++"+"
#$$%!!"!" #$$%""
#$$%"" #$$%""
#$$%&&"&" #$$%''"'"
#$$%(("(" #$$%))")"
#$$%**"*" #$$%++"+"
#$$%!!"!" #$$%""
#$$%"" #$$%""
#$$%&&"&" #$$%''"'"
#$$%(("(" #$$%))")"
#$$%**"*" #$$%++"+"
#$$%!!"!" #$$%""
,
Bộ nhớ lệnh:
#*H&5**s**E(/g&G,1m/t/g&5* M @1pq/
4/5*O
E(" &G&5*1pq/ 4/h*O
@I7
-.-/
!"/
!"-
!"! !"
!"
012!!!
01!-!"!"
01-""
01-""
K
01-""
01&-&"&"
01'-'"'"
01(-("("
01)-)")"
01*-*"*"
01+-+"+"
01!-!"!"
01-""
01-""
01-""
01&-&"&"
01'-'"'"
01(-("("
01)-)")"
01*-*"*"
01+-+"+"
01!-!"!"
01-""
01-""
01-""
01&-&"&"
01'-'"'"
01(-("("
01)-)")"
01*-*"*"
01+-+"+"
01!-!"!"
01-""
/3/45/
0
6/7&"
-/
0
8/09:9
-
!"/
3 !"
-.-4/
-/
0
89.;6<=-6<09/
/6>!
2!!!!/6>&
2!!!!/6>*
2!!!!/6>
_
2!!!!/6>(
2!!!!/6>!
2!!!!/6>&
2!!!!/6>*
2!!!!/6>
2!!!!/6>(
2!!!!/6>&!
2!!!!/6>&&
2!!!!/6>&*
2!!!!
8?=
Register File:
Z *" 9(h* *1i) h*\L^ 0&)A*,*6 (mLO
ZB*EFG@/u* *1u/\IN (FGIN (^FG
*E(Ik&5)\I8 FG8I8 ^
ZB*EFG@/u* *1RIk&5)\;( (N (^9*EFG@/@
MvM\;( ^FG*EFG@Ik&5)\;( 8 ^!FG@w&
*O
Sơ đồ khối:
@I7
$##@#@@77 /
& !"@ 77@ @
!"@# 77@# @#//
@ 77@ @
!"## 77# /#//
3 !": 77: A//0'
3 !"!&'()*+!&'()*+!
&'()*+!
'@: !"@ 77=B=/==CD=
::
#!+*)('&!+*)('&
!+*)('&! 77=B=/==E
x
::
#!+*)('&!+*)('&
!+*)('&! 77=B=/==E
0!>0!! !":!"
0@# !":"
0@# !":"
0@# !":"
0&@#& !":&"
0'@#' !":'"
0(@#( !":("
0)@#) !":)"
0*@#* !":*"
0+@#+ !":+"
0!@#! !":!"
0@# !":"
0@# !":"
0@# !":"
0&@#& !":&"
0'@#' !":'"
0(@#( !":("
0)@#) !":)"
0*@#* !":*"
0+@#+ !":+"
0!@#! !":!"
0@# !":"
0@# !":"
0@# !":"
0&@#& !":&"
0'@#' !":'"
0(@#( !":("
0)@#) !":)"
0*@#* !":*"
0+@#+ !":+"
0!@#! !":!"
0@# !":"
& Bộ tính toán – ALU:
FG.H;IJ
KALMN;LMNN 0
KA/O0
KPQA/ R LS3
/4/-L
QR CTU=VWX0Y!
QLS3M==Z=[\]L^_`F CTa=:X4/M
Q/4M==Z=[\]L^_=bF :X4/=`=^
TU].HN
Q/-L CTUVVWXc
KdALMCe=f;IJE0:PCg==hPM;IJ
i=Z=[
Bảng 1. Tín hiệu điều khiển ALU
;IJ/0/4RLS3/-L;
!"
R/-LLS3/4
!"/0
!";
3 !"0:
31/10
3/0
;0/!/0/1/
H000!/00100
H0!/0
j0:!/0:
:&: :;0:
77OOk,$IO@NOOdlk;mJ
3 !"
/2'!/!!"n;"1/
/2'!/";"10
2'!!"!""
/ 2'!/LS3"n;!"
77Od,l;mk,
//-L6"
77R
3+ !":
2'!!:!"!""""
2'!!:"&"'"(")"
2'!!:"*"+"!""
2'!!&:"""&"'"
2'!!':&"(")"*"+"
2'!!(:'"!""""
2'!!):("&"'"(")"
2'!!*:)"*"+"!""
2'!+:*":":":":!"
2'!!:+":)":(":'":&"
2'!!R:*":+"
77/4
3 !"4
/2'!/4!"n;"/
/2'!/&4";"0
2'!4"4!"4"
/ 2'!/'/44"n;!"
y
' Bộ nhớ dữ liệu – Data Memory:
- d=oVWXp/0\;IJMCg/=qALM
- dV`=/PCBr[/[=I@=s./CTU==h
CBr[/
- dV`=/P=r[LM0\=^[=H@=s.@CTUt
==h=r[LM
#//.////3//3/0./
!"/3//
3/0./
!"///
) !"//! !"
!"
L
012!!!
01!///!"!"
01///""
01///""
01///""
01&///&"&"
01'///'"'"
01(///("("
01)///)")"
01*///*"*"
01+///+"+"
01!///!"!"
01///""
01///""
01///""
01&///&"&"
01'///'"'"
01(///("("
01)///)")"
01*///*"*"
01+///+"+"
01!///!"!"
01///""
01///""
01///""
01&///&"&"
01'///'"'"
01(///("("
01)///)")"
01*///*"*"
01+///+"+"
01!///!"!"
01///""
/3/45
13/0
0
///"63// &"
///K"63// ("
///K"63//' *"
///K"63//) !"
/3/45////"///K"///K"
///K"
0
6u///"///K"///K"///K"v
-/
0
8309//:9//
( Khối điều khiển trung tâm – Control Unit:
- mG/Pw=[Ce=f
K# =B=/==CD==$
#6! M=/==CD=[=G
#6 M=/==CD=[=G
Kx ==h=Z=[[==X4xJ.
KN/= ==h=Z=[[==X4Nd,
K./ ==hCB]0\=^r[
K.@==h=r[LM#//.4
K;IJH =BALM=y=0\;IJ
;IJH6! dALMMPgp/=/==E[=G
;IJH6 dALMMP0z\F={z\=b
K@ ==h=r[LM=/==CD=
K. =BPg=p/$MVWXp/0\;IJ={r
[]#//.4
.6! CT/LeVWXp/0\;IJ
.6 CT/Ler[]#//.4
KH| .z\F={z\=b
H|6! .z\F
H|6 .z\=b
K;IJ =0V=hP=Z=[M\!C_L^I@LMH@]
!C_L^Nd,[=G!={[=jO
z*O{6 (m1Q)!R*/g@* (@&a* O
@I7
J#;IJH.@./.@N/=
;IJxH|RO
' !"O
x#;IJH.@./.@N/=H|
!";IJ
x#;IJH.@./.@N/=H|
!";IJ
/3/45O
/:O
(>0!!!!!! 774
0
# 6 >077m=/===//0' "/=
;IJH 6 >0!
.6 >0!
@6 >077===/L/=/===
./ 6 >0!
.@6 >0!
N/= 6 >0!
;IJ 6 >0!
x 6 >0!
H|6 >0:
(>0!!! 773/3
0
# 6 >0!77=/===//0! ("/=
;IJH 6 >077=/:/L/0;IJ
.6 >077=//L=/===0=
@6 >077==//L=L/=/===
./ 6 >077==0=
.@6 >0!
N/= 6 >0!
;IJ 6 >0!!
x 6 >0!
H|6 >0!77=:
(>0!! 7733
0
# 6 >0:77
;IJH 6 >077=/:/L/0;IJ
.6 >0:77=W////L
@6 >0!
./ 6 >0!
.@6 >077===L/0=
N/= 6 >0!
;IJ 6 >0!!
x 6 >0!
H|6 >0!
(>0!!!! 7700/=1W/
0
# 6 >0:
;IJH 6 >0!
.6 >0:
@6 >0!
./ 6 >0!
.@6 >0!
N/= 6 >077=====0/=
;IJ 6 >0!
x 6 >0!
H|6 >0!77:
(>0!!! 77jOjO/
0
# 6 >0!
;IJH 6 >077=R:0/L/;IJ
.6 >0!
@6 >077===L/=/===
./ 6 >0!
.@6 >0!
N/= 6 >0!
;IJ 6 >0
x 6 >0!
H|6 >077R:
(>0!!!!! 77}x
0
# 6 >0:
;IJH 6 >0:
.6 >0:
@6 >0!
./ 6 >0!
.@6 >0!
N/= 6 >0:
;IJ 6 >0::
x 6 >0
H|6 >0:
1/
0
# 6 >0!
;IJH 6 >0!
.6 >0!
@6 >0!
./ 6 >0!
.@6 >0!
N/= 6 >0!
;IJ 6 >0!
x 6 >0!
H|6 >0!
/
D
) ALU_Control_Unit :
- | qM6 (m/g j*5)1Q)!R*@M e"#1Q)!R* ()* +,FG
_3" r)*/ @*},} e&5*1R V@( j*5)1Q)!R*@* (@&/@
"# j* @6*
z*O{6 (m/g@MFG@* (@&
@I7
K
;IJJ;IJ;IJ$
!";IJ
' !"$
!";IJ
!";IJ
3) !";IJ
/;IJ6u;IJ$v
/3/45;IJ
/:;IJ
*>0!!:::::: ;IJ6>0!! 77I@~H@
*>0!:::::: ;IJ6>0! 77Nd,
*>0:::::: ;IJ6>0! 77jO
*>0!!!!!! ;IJ6>0!! 77;##
*>0!!!!! ;IJ6>0! 77HJN
*>0!!!! ;IJ6>0 77HIm
1/ ;IJ6>0!!
/
* JR_Control_Unit:
- | qM6 (m/g j*5)1Q)!R*@M e"#1Q)!R* ()* +,FG
_3" r)*/ @*},} e&5*1R V@( j*5):a@* (@&/@MvM 4/
5*&5*:<{ <O
- m/t/g&h*:),MN (/j*&GIk&5) (@* *NO
@I7
_
xJ;IJ$x
' !"$77(01-/=
!";IJ770;IJO==;IJ
x77==/==
x
3) !":
/:6u;IJ$v
7•;IJ6!L/1-6!!!!6€x6
/==/x6!•7
/3/45:
/:
*>0!!!!!! x6>0
1/ x6>0!
/
+ Bộ mở rộng dấu – Extender:
- e*EFG@L3" ,l(#* G**E(3" FH j*5)1Q)!R*
.*b(@O
@I7
,:
!"
' !"
776! H,:
!"776 |,:
/3/45
0
1
0
("6(>0!
' !"6
x
/6uu(u'"vvv
! Bộ dịch trái – ShiftLeft2:
- 8m/ j*5)3" C) (6" 1R 4/5*MvM*+*FHDO
@I7
H=••
!"
!"
/6u+ !">0!v
Bộ Multiplexor:
- #,)& M&$@($KaK/u* *1j//@N (r&
- #,)& M&$@($a/u**EFG@ ~/@"#9Ik&5)FQ
N (r&FG/u*&41m/t/g&5* M @1pq/ 4/5*O
@I7
.:776! 6
3//
/2'!//
/2'!//
2'!
2'!//
.::''
& !"77ALM'0
& !"77dA/'0
.:&&"&"&"
.:"""
.:"""
.:"""
.:!!"!"!"
.::H
!"
H
!"
.::!!"!"!"H
.::"""H
.::"""H
.::"""H
.::&&"&"&"H
.::''"'"'"H
.::(("("("H
.::))")")"H
.::**"*"*"H
.::++"+"+"H
.::!!"!"!"H
.::"""H
.::"""H
.::"""H
.::&&"&"&"H
.::''"'"'"H
.::(("("("H
.::))")")"H
.::**"*"*"H
.::++"+"+"H
.::!!"!"!"H
.::"""H
.::"""H
.::"""H
.::&&"&"&"H
.::''"'"'"H
.::(("("("H
.::))")")"H
.::**"*"*"H
.::++"+"+"H
.::!!"!"!"H
.::"""H
y
k=.H
77.HNmHdlI,‚I,J
.H
7••••••••••••••••••••••••••••••••••••
•••••••••••••ƒ„;N;O•••••••••••••
••••••••••••••••••••••••••••••••••••7
77ƒ„;N;O#;„
3 !" 77 /=L//=/==
3 !"& 77& #/==-=
N 77N #/====N/=
x 77x #/====x
x 77x #/====x
N; 77N; #/=N/=
x; 77x; #/=x
x; 77x; #/=x6/#//
77ƒ„;N;OdHmJmOd.,.O‚
3 !"- 77I=/:4
3' !"O$
3& !"
3' !"( 77/(0/
/O6- ("
/6-' "
/6-! ("
/6-' "
/$6-' !"
/(6-' !"
77ƒ„;N;OOdmOIJdm
3#
x
N/=
./
.
.@
;IJH
@
H|
3 !";IJO
77ƒ„;N;O;IJ
3 !";IJ 77L//0;IJ
;IJ
3 !";IJ77ƒW//0;IJ
3|
d/-L
OLS3
/4 77/…/0;IJ
3x 77m===x
3N 77m===Nd,
3 !";IJ77m=//;IJJ
3 !",: 770//(0/
77ƒ„;N;O,lHm,$I,
3 !"/#///#// 77l//=/==
3 !"@#// 77l/=L/=/===
3& !"@ 77m=/===
77ƒ„;N;O#;m;.,.O‚
3 !"./#// 77#://0=
.; 77#/=#//.4
.@#// 77#=L/0=6/#//
77ƒ„;N;OH„$m,
3 !"N=•77dL/0=/Nd,
N=• 77d/0=/Nd,
x=• 77dL/0=/xJ.
x=• 77d/0=/xJ.
7••••••••••••••••••••••••••••••••••••
•••••••••;JmJ.H••••••••••••
••••••••••••••••••••••••••••••••••••7
7•ƒ„Om„;d„l„•7
/
77#/==-===
;0;77&6K&
u+>0!>0!!v
&
7•dHmJmOd.,.O‚NOd„OI,d„•7
-.-.4-
7•.;dOdmOIJdmƒ„O#,Jƒ„,d„d„•7
J#
;IJH
.
@
./
.@
N/=
;IJO
x
H|
O
7•,lHm,$I,NOm„;d„l„•7
.::''.:#@#77=@/=4~
4
$$/#//
/#//
@#//
@
@
7•Hld|,O,jm,d#•7
,:H,:,:(H|
7•;IJƒ„Omd„mO;d„d„•7
/;IJ6/#//
.::.:;IJ;IJ
/#//
,:
;IJH
;IJ;IJJ;IJ
;IJ
;IJ
/4
|
OLS3
d/-L
;IJ
;IJJ;IJ;IJ
;IJO
$
7•#;m;.,.O‚NOd„O#JI,J•7
/.@#//6/#//
/.;6;IJ
#//.#//.4./#//
;IJ
.@#//
.@
./
.::.:@#//@#//
;IJ
./#//
.
7•Nd,OdmOI•7
/N=•6,:
H=••H=•0N=•N=•
;0;0&
N=•
N;
2'!Nd,d||
/2'!/Nd,NN/=d|
.::.:Nd,N
&
N;
N
7•xJ.OdmOI•7
/x=•6u(>0!-' !"v
/x;6u& *"x=•) !"v
H=••H=•}x=•x=•
.::.:xx
N
x;
x
7•xJ.,lHm,OdmOI•7
/x;6/#//
/6x
xJxJ;IJO$x
.::.:xx
x
x;
x
Mô phỏng:
Tập lệnh mô phỏng:
m/t
\ sMM+*^
5* },6J
L =@(•9•L9L$LLL LLLLLLLLLLLLLLLLLLLLLLLLLLL
D =@(•9•L9L$LLr LLLLLLLLLLLLLLLLLLLLLLL
.€•9L$LL\•L^ LLLLLLLLLLLLLLLLLLLLLLLLLLL
.€•9L$LD\•L^ LLLLLLLLLLLLLLLLLLLLLLLLLL
_ II•9•9• LLLLLLLLLLLLLLLLLLLLLLLLLLL
L *•9•9L$L LLLLLLLLLLLLLLLLLLLLLLLLLLL
D
II•x9•9• LLLLLLLLLLLLLLLLLLLLLLLLL
.)"•D9•9• LLLLLLLLLLLLLLLLLLLLLLLLLLL
:L$L LLLLLLLLLLLLLLLLLLLLLLLLLLLLL
_
€•9L$LL\•L^ LLLLLLLLLLLLLLLLLLLLLLLLLLL
DL €•K9L$LL\•L^ LLLLLLLLLLLLLLLLLLLLLLLLLLL
DD €•_9L$LD\•L^ LLLLLLLLLLLLLLLLLLLLLLLLLL
D .& •x9•9• LLLLLLLLLLLLLLLLLLLLLLLL
K :(•L LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
K_ OOOOOOOOOOOOO
Dạng sóng mô phỏng: