Tải bản đầy đủ (.pdf) (65 trang)

THIẾT KẾ RISC MICROCONTROLLER SỬ DỤNG VHDL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (475.87 KB, 65 trang )

ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
1


Trường Đại học Bách Khoa Tp HCM
Khoa Điện-Điện tử



ĐỒ ÁN MÔN HỌC
ĐIỆN TỬ VIỄN THÔNG 1





ĐỀ TÀI: THIẾT KẾ RISC MICROCONTROLLER
SỬ DỤNG VHDL













GVHD: HỒ TRUNG MỸ
SVTH : PHẠM HƯNG THỊNH
MSSV : 40202563

ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
2
Lời mở đầu

Hiện nay, công nghệ vi mạch phát triển rất nhanh và tạo ra rất nhiều hướng phát
triển mới cho tương lai.

Điển hình cho sự phát triển nay là xuất hiện của các IC logic lập
trình được như PLA, FPGA, ASIC .... các IC nay có mức độ tích hợp ngày càng cao(có thể
chứa trên 1 triệu Transitor đối với loại VLSI), các ứng dụng của nó cũng trở nên phổ biến
hơn.Do mức độ tích hợp của các IC cao dẫn theo sự phức tạp trong cấu trúc của nó,chinh
vì vây yêu cầu đặt ra là cần có 1 công cụ vạn năng để hỗ trợ cho việc thiết kế
số. Từ đó dẫn
đến sự ra đời của các ngôn ngữ mô tả phần cứng như VHDL,Verilog...Nó giúp cho các
nhà thiết kế dễ dàng hơn trong việc thiết kế hệ thống số dựa trên các IC lập trình được này.
Em chọn đề tài “Thiết kế Risc Microcontroller dùng VHDL” với mục đích là tìm
hiểu về các IC Logic lập trình được, cách thức lập trình mô tả phần cứng trên ngôn ngữ
VHDL, và cấu trúc, họat động của 1 MCU dạng RISC.
Em xin chân thành cảm ơn các thầy cô trong trường Đại học Bách khoa TPHCM
nói chung và các thầy cô trong khoa Điện-


Điện tử nói riêng đã truyền dạy những kinh
nghiệm quý báu và giúp đở em trong suốt quá trình học tập.
Đặc biệt, em xin gửi lời cảm ơn chân thành đến thầy HỒ TRUNG MỸ người đã tận tình
giúp đở em hoàn thành đồ án này.
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
3
Mục lục


trang
I > Giới Thiệu đề tài 4

II> KHÁI QUÁT VỀ RISC VÀ CISC 5

III> TẬP LỆNH 6

IV > PIPELINE PROCESSING 12

V> SƠ ĐỒ KHỐI CỦA THIẾT KẾ RISC
14

VI> THIẾT KẾ ĐƯỜNG DỮ LIỆU (DATAPATH) 16

VII> THIẾT KẾ ĐƠN VỊ ĐIỀU KHIỂN (CONTROL UNIT) 25

VIII> CHƯƠNG TRÌNH VHDL VÀ KẾT QUẢ MÔ PHỎNG
28

ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
4
I> GIỚI THIỆU ĐỀ TÀI


1. Mục đích cùa đồ án:

Tìm hiểu cấu trúc, và hoạt động của 1 RISC Microcontroller cơ bản,
Thi
ết kế và dùng ngôn ngữ VHDL để mô tả RISC MCU.


2. Phạm vi thiết kế của đồ án:

Thiết kế chỉ thực hiện các chức năng cơ bản của 1 MCU như: thưc hiện các
phép tóan cộng trừ, logic, dịch, di chuyển dữ liệu, rẽ nhánh không điều kiện và có điều kiện, gọi
hàm, và các lệnh tác động lên bit.

Thiết kế dựa trên tập lệnh của Atmel AVR AT90S1200. Bằng cách này,
Thiết kế có thể sử dụng các công cụ assempler, simulater do Atmel cung cấp.

Do giới hạn của đề
tài nên RISC MCU không hỗ trợ ngắt ngoài, Timer, Port
IO 2 chiều, analog comparator, điện trở kéo lên bên trong, watchdog reset... như AVR
AT90s1200.

Thiết kế sử dụng phần mềm MAX + plus II để thực hiện và mô phỏng thiết

kế. MAX + plus II là phần mềm do ALTERA phát triển. Nó có một số Modul quan trọng
cho thiết kế, ví dụ như Compiler, Simulater, Wavefrom editor, và Programmer...

ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
5


II> KHÁI QUÁT VỀ RISC VÀ CISC


1. Comples Instruction Set Computer (CISC)

Những năm trước đây, Tập lệnh của máy tính có số lượng lệnh ít và đơn giản.
Với sự phát triển của kỹ thuật và yêu cầu của các ứng dụng khác nhau, tập lệnh của máy tính ngày
càng tăng về số lượng lẫn độ phức tạp( sử dụng nhiều loại dữ liệu và nhiều mode định địa chỉ).
Một máy tính có tập lệnh lớn và phức t
ạp được gọi là CISC(Complex Intrucstion Set Computer).

Đặc tính cơ bản của cấu trúc CISC:
- Có số lượng lệnh rất nhiều, thông thường từ 100 tới 250 lệnh.
- Một số lệnh thực hiện các chức năng đặc biệt và thường không được sử dụng.
- Rất nhiều chế độ định địa chỉ, thường có khoảng từ 5->20 chế độ định địa chỉ.
- Cấu trúc lệnh không cố
định và dài, thường từ 2 tới 6 bytes.
- Lệnh có tóan hạng chứa trong ô nhớ.




2. Reduce Instruction Set Computer (RISC)

Vào đầu năm 1980, trong các thống kế của hệ thống máy tính, người ta thấy
hầu hết 80% số lệnh trong tập lệnh ít được sử dụng. Vì vậy để tăng hiệu quả cho ứng dụng và việc
thiết kế, người ta đặt ra vấn đề về một máy tính có tập lệnh được rút gọn và đơn giản được gọi là
RISC (Reduce Intruction Set Computer).

Đặc tính cơ bản của cấu trúc RISC:
- Chu kỳ l
ệnh được chia thành 2 chu kỳ: tìm nạp lệnh và thực thi lệnh.
- Lệnh được thực thi trong 1 chu kỳ xung clock.
- Lệnh có chiều dài cố định(16 bit hay 32 bit), và có định dạng dễ giải mã.
- Tập lệnh có số lượng lệnh ít.
- Ít chế độ định địa chỉ.
- Hạn chế lệnh truy xuất bộ nhớ, chỉ truy xuất thông qua con trỏ dữ liệu.
- Tất cả các lệnh được thự hiện thông qua các thanh ghi của CPU.
- Th
ường sử dụng mạch logic để điều khiển thực thi lệnh hơn là sử dụng vi chương
trình (microprogram) như CISC.
- Số lượng thanh ghi đa năng khá nhiều (ít nhất là 32 Register).
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
6

III> TẬP LỆNH:




1. Tóm tắt Tập lệnh

Thiết kế dựa trên tập lệnh của Atmel AVR AT90S1200. Bằng cách này,
Thiết kế có thể sử dụng các công cụ assempler, simulater do Atmel cung cấp.
Tập lệnh được chia thành 4 nhóm lệnh:(xem bảng 3.1)

- Nhóm lệnh số học và logic: gồm các lệnh tính tóan số học và logic
- Nhóm lệnh rẽ nhánh: gồm các lệnh nhảy không điều kiện, nhảy có điều
kiện theo các cờ trạng thái, lệnh gọi hàm và Return.
- Nhóm lệnh truyền dữ liệu: gồ
m các lệnh di chuyển dữ liệu giữa các thanh
ghi,

ô nhớ RAM và Port IO bên ngoài.
- Nhóm lệnh về bit: gồm các lệnh bit như xóa, đặt bit, lệnh dịch xoay...


2. Chế độ định Địa chỉ (Addressing Modes):


Theo thiết kế thì RISC có 6 chế độ định địa chỉ. RA, RB được xem như là
tóan hạng đích và toán hạng nguồn.

2.1 Định địa chỉ trực tiếp thanh ghi đơn:
Lệnh có một toán hạng là RA: vừa là thanh ghi nguồn vừa là thanh ghi đích.
Ví dụ như lệnh: dịch, xoay, set bit...

2.2 Định địa chỉ trực tiếp thanh ghi đôi:
Lệnh có hai toán hạng là RA và RB. Sau khi tính tóan kết quả được ghi vào

RA.Ví dụ như lệnh tóan học và logic…

2.3 Định địa chỉ I/O trực tiếp :
Toán hạng là I/O register. Địa chỉ được chứa trong 6 bit trong từ lệnh. Cách
định địa chỉ này được sử dụng trong lệnh IN và OUT.

2.4 Định địa chỉ dữ liệu gián tiếp:
Tóan hạng là ô nhớ Ram có địa chỉ chứa trong thanh ghi Z. Cách định địa chỉ
được sử dụng trong lệnh LD và St.

2.5 Định địa chỉ tương đối bộ nhớ chương trình:
Cách định địa ch
ỉ này được sử dụng trong lệnh RJMP, RCALL. Địa chỉ lệnh
kế được tính bằng PC + Offset. Offset được chứa trong từ lệnh.

2.6 Định địa chỉ tức thời:
Tóan hạng là hằng số 8 bit đựơc cho trong từ lệnh
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
7
Bảng 3.1 Tóm tắt Tập lệnh

Mnemonic Operation Flags
ARITHMETIC AND LOGIC INSTRUCTIONS
ADD Add Two Registers S,Z,C,N,V,H
ADC Add with Carry Two Registers S,Z,C,N,V,H
SUB Subtract Two Registers S,Z,C,N,V,H
SUBI Subtract Constant from Register S,Z,C,N,V,H

SBC Subtract with Carry Two Registers S,Z,C,N,V,H
SBCI Subtract with Carry Constant from Register S,Z,C,N,V,H
AND Logical AND Registers S,Z,N,V
ANDI Logical AND Register and Constant S,Z,N,V
OR Logical OR Registers S,Z,N,V
ORI Logical OR Register and Constant S,Z,N,V
EOR Exclusive OR Registers S,Z,N,V
COM One’s Complement Register S,C,Z,N,V
NEG Negate (2’s Complement) Register S,C,Z,N,V,H
SBR Set Bit(s) in Register S,Z,N,V
CBR Clear Bit(s) in Register S,Z,N,V
INC Increment S,Z,N,V
DEC Decrement S,Z,N,V
TST Test for Zero or Minus S,Z,N,V
CLR Clear Register S,Z,N,V
SER Set Register None
BRANCH INSTRUCTIONS
RJMP Relative Jump None
RCALL Relative Subroutine Call None
RET Subroutine Return None
CP Compare (Rd - Rr) S,C,Z,N,V,H
CPC Compare with Carry (Rd - Rr - C) S,C,Z,N,V,H
CPI Compare Register with Immediate (Rd – K) S,C,Z,N,V,H
BRBS Branch if Status Flag Set None
BRBC Branch if Status Flag Cleared None
BREQ Branch if Equal (Z = 1) None
BRNE Branch if Not Equal (Z = 0) None
BRCS Branch if Carry Set (C = 1) None
BRCC Branch if Carry Cleared (C = 0) None
BRSH Branch if Same or Higher (C = 0) None

BRLO Branch if Lower (C = 1 None
BRMI Branch if Minus (N = 1) None
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
8
BRPL Branch if Plus (N = 0) None
BRGE Branch if Greater of Equal, Signed (S = 1) None
BRLT Branch if Less than Zero, Signed (S = 0) None
BRHS Branch if Half Carry Set (H = 1) None
BRHC Branch if Half Carry Cleared (H = 0) None
BRVS Branch if Overflow Flag is Set (V = 1) None
BRVC Branch if Overflow Flag is Cleared (V = 0) None
DATA TRANSFER INSTRUCTIONS
MOV Move Between Registers None
LDI Load Immediate to Register None
LD Z Load Indirect with Z-Pointer None
LD Z+ Load Indirect and Post-Increment with Z-Pointer None
LD –Z Load Indirect and Pre-Decrement with Z-Pointer None
ST Z Store Indirect with Z-Pointer None
ST Z+ Store Indirect and Post-Increment with Z-Pointer None
ST -Z Store Indirect and Pre-Decrement with Z-Pointer None
IN In Port to Register None
OUT Out Register to Port None
BIT INSTRUCTIONS
SBI Set Bit in I/O Register None
CBI Clear Bit in I/O Register None
LSL Logical Shift Left S,C,Z,N,V
LSR Logical Shift Right S,C,Z,N,V

ROL Rotate Left through Carry S,C,Z,N,V
ROR Rotate Right through Carry S,C,Z,N,V
ASR Arithmetic Shift Right S,C,Z,N,V
SWAP Swap Nibbles None
BSET Flag Set Any
BCLR Flag Clear Any
SEC Set Carry C
CLC Clear Carry C
SEN Set Negative Flag N
CLN Clear Negative Flag N
SEZ Set Zero Flag Z
CLZ Clear Zero Flag Z
SES Set Signed Test Flag S
CLS Clear Signed Test Flag S
SEV Set Two’s Complement Overflow V
CLV Clear Two’s Complement Overflow V
SHE Set Half-carry Flag in SREG H
CLH Clear Half-carry Flag in SREG H
NOP No Operation None
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
9

3. Các Định dạng Lệnh:

Lệnh của RISC có chiều dài cố định và dễ giải mã. Trong Thiết kế này, lệnh
có chiều dài là 16 bit và có những định dạng sau đây để tiện cho việc giải mã.


Đối với lệnh có 2 toán hạng là thanh ghi đa dụng, mỗi toán hạng cần 4 bit
d(destination) và r(soure) ,ứng với địa chỉ 32 thanh ghi đa năng, để định địa chỉ thanh ghi. Ví dụ
như lệnh ADD, AND...




Đối với các lệnh có 1 toán hạng là thanh ghi, cầ
n 4 bit
d
để định địa chì cho
tóan hạng đích và nguồn. ví dụ như các lệnh NEG, CMP...




Đối với các lệnh có tóan hạng là hằng số (định địa chỉ tức thời), thì từ lệnh
phải chứa 8 bit K của hằng số và 4 bit
d
địa chỉ của thanh ghi nguồn. Ví dụ như các lệnh ANDI,
ADDI...




Đối với các lệnh rẽ nhánh không điều kiện như lệnh RJMP,RCALL thì cần 9
bit K làm giá trị bù 2 của Offset.





Đối với các lệnh rẽ nhánh có điều kiện như lệnh BRBS, BRBC... thì cần 7 bit
K làm giá trị bù 2 của Offset và thêm 3
s
bit để chọn điều kiện nhảy, chọn 1 trong 8 cờ trạng thái




Đối với các lệnh có toán hạng là Port I/O thì từ lệnh có chứa 4 bit A để xác
định địa chỉ I/O, và 4 bit
d
để xác định tóan hạng đích, ví dụ như lệnh IN, OUT..., hoặc 3 bit
b
để
xác định 1 trong 8 bit I/O cần tác động, ví dụ như lệnh SBI,SBI.


d d d d r r r r


15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0
d d d d


15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0
d d d d K K K K

K K K K
15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0

K K K K K K K K

K
15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0
K K K K K s s s

K K
15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
10








Đối với các lệnh tác động đến bit của thanh ghi trạng thái ví dụ như lệnh
BCLR, BSET thì cần 3 bit
s
để chọn 1 trong 8 bit của thanh ghi.






4, Mã máy:

Trong tập lệnh có thể ghép các lệnh tương đương để có thể sử dụng chung
mã máy. Chính vì vậy mà tập mã máy sẽ được rút gọn hơn giúp cho việc giải mã đơn giản hơn.
bảng 3.2 chỉ ra các lệnh tương đương sử dụng chung mã máy và bảng 3.3 là bảng tập mã máy

ADD LSL
ADC ROL
AND TST
EOR CLR
ORI SBR
ANDI CBR
LDI SER
BCLR CLI, CLT, CLH, CLS, CLV, CLN, CLZ, CLC
BSET SEI, SET, SEH, SES, SEV, SEN, SEZ, SEC
BRBC BRID, BRTC, BRHS, BRGE, BRVC, BRPL, BRNE, BRCC,
BRSH
BRBS BRIE, BRTS, BRHS, BRLT, BRVS, BRMI, BREQ, BRCS,
BRLO
Bảng 3.2 Các lệnh tương đương

Ví dụ: lệnh ADD và lệnh LSL. Ta thấy lệnh LSL là lệnh dịch trái tương ứng với
việc nhân 1 số với 2. Nếu lệnh ADD thực hiện cộng 2 số hạng giống nhau sẽ tương đương với
việc nhân 1 số với 2. Như vậy 2 lệnh này tương đương nhau có thể sử dụng chung mã máy.
d d d d A A A A


15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0
A A A A b b b



15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0
s s s


15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
11
Bảng 3.3 Tập mã máy

NOP 0000 0000 0000 0000
CPC 0000 01rd dddd rrrr
SBC 0000 10rd dddd rrrr
ADD 0000 11rd dddd rrrr (LSL)
NO OPERATION
COMPARE WITH CARRY
SUBTRAC WITH CARRY

CP 0001 01rd dddd rrrr
SUB 0001 10rd dddd rrrr
ADC 0001 11rd dddd rrrr (ROL)
COMPARE


AND 0010 00rd dddd rrrr (TST)
EOR 0010 01rd dddd rrrr (CLR)
OR 0010 10rd dddd rrrr

MOV 0010 11rd dddd rrrr

XOR
CPI 0011 KKKK dddd KKKK
COMPARE IMMEDIATE
SBCI 0100 KKKK dddd KKKK
SUB IMMEDIATE WITH CAR.
SUBI 0101 KKKK dddd KKKK

ORI 0110 KKKK dddd KKKK (SBR)

ANDI 0111 KKKK dddd KKKK (CBR)

LD 1000 000d dddd 0000
ST 1000 001r rrrr 0000
( Z ) <= (ddddd)
(ddddd) <= ( Z )
LD Z+ 1001 000d dddd 0001
LD –Z 1001 000d dddd 0010
ST Z+ 1001 001r rrrr 0001
ST –Z 1001 001r rrrr 0010
COM 1001 010d dddd 0000
NEG 1001 010d dddd 0001
SWAP 1001 010d dddd 0010
INC 1001 010d dddd 0011
ASR 1001 010d dddd 0101
LSR 1001 010d dddd 0110
ROR 1001 010d dddd 0111
DEC 1001 010d dddd 1010
RET 1001 0101 0000 1000

CBI 1001 1000 AAAA Abbb
SBI 1001 1010 AAAA Abbb





COMPLEMENT



ARITHMETIC SHIFT RIGHT





CLEAR BIT IO
SET BIT IO
IN 1011 0AAd dddd AAAA
OUT 1011 1AAr rrrr AAAA

RJMP 1100 kkkk kkkk kkkk

RCALL 1101 kkkk kkkk kkkk

LDI 1110 KKKK dddd KKKK
LOAD IMMEDIATE
BRBS 1111 00kk kkkk ksss
BRBC 1111 01kk kkkk ksss

BRANCH BIT SET
BRANCH BIT CLEAR
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
12


IV > PIPELINE PROCESSING


1. Chu kỳ Lệnh:

Khác với CISC, trong cấu trúc của RISC chu kỳ lệnh được chia thành 2 chu
kỳ nhỏ: chu kỳ tìm nạp lệnh (Fetch) và Chu kỳ thực thi lệnh (Execute) đươc thể hiện ở hình 4.1.

FETCH EXECUTE
Instruction Fetch PC count Push Pop Decode & operate Latch Write
Hình 4.1 Chu kỳ lệnh của RISC

Trong chu kỳ tìm nạp lệnh, mã máy của 1 lệnh được nạp vào thanh ghi lệnh, PC bắt
đầu nạp lệnh mới.Tại chu kỳ thực thi lệnh đơn vị điều khiển sẽ giải mã biết lệnh cần thực hiện và
tóan hạng cần tác động , tính tóan kết quả, chốt kết quả, và ghi lại kết quả tại pha cuối cùng của
chu kỳ thực thi lệnh.

Ví dụ như
lệnh ADD R1,R2;
Tại chu kỳ tìm nạp lệnh, mã máy lệnh ADD đươc đưa vào thanh ghi lệnh và PC tiếp
tục tìm nạp lệnh mới. Tại chu kỳ thực thi lệnh, Đơn vị điều khiển sẽ giải mã lệnh và thưc hiện

Cộng R1 và R2 sau đó kết quả được chốt lại, tới pha cuối của chu kỳ thực thi lệnh thi kết quả sẽ
được ghi trở lại vào R1. Chu kỳ lệ
nh ADD đã hoàn thành.


2. Sử dụng Đường ống (PipeLine)

Như đã đề cập, chu kỳ lệnh của RISC sẽ được chia thành 2 chu kỳ Fetch và
Execute. Nếu 2 chu kỳ này họat động nối tiếp nhau, chu kỳ đầu tìm nạp lệnh chu kỳ 2 thực thi
lệnh như hình 4.2, thì 1 chu kỳ lệnh sẽ phải mất 2 chu kỳ xung clock.


Hình 4.2: Chu kỳ lệnh của MCU không sử dụng PipeLine



Ý tưởng của việc sử dụng đường ống ở đây là cho 2 chu kỳ Fetch và Execute
cùng họat động song song, có nghĩa là trong 1 chu kỳ xung clock MCU sẽ tìm nạp lệnh mới và
thực thi lệnh củ xem hình 4.3, vì vậy để thực hiện một chu kỳ lệnh chỉ tốn 1 xung clock, do đó
RISC sẽ hoạt động nhanh hơn.
Fetch0  Execute0  Fetch1  Execute1  Fetch 2  Execute2 ...
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
13

Clock Transition Reset T1 T2 T3
PC(Program Counter) 0 1 2 3
Instruction 0 Fetch 0 Execute 0


Instruction 1

Fetch 1 Execute 1

Instruction 2

Fetch 2 Execute 2
Hình 4.3:chu kỳ lệnh sử dụng Pipeline

Tại chu kỳ Reset = 0 lệnh 0 được tìm nạp, sau đó tại chu kỳ 1 lệnh 0 sẽ được
thực hiện đồng thời PC sẽ tìm nạp lệnh 1. Và tại chu kỳ 2, lệnh 1 sẽ được thực thi đồng thời PC
sẽ tìm nạp lệnh 2... cứ như thế MCU sẽ tìm nạp và thực thi chương trình song song với nhau, PC
sẽ trỏ đến lệnh đang được tìm nạp và sẽ được thực thi ở
chu kỳ kế.


3. Nghẽn đường ống

Khi gặp lệnh rẽ nhánh đường ống sẽ bị nghẽn. Do trong khi lệnh rẽ nhánh
được thực thi thì lệnh kế đó đã được đưa vào đường ống, nhưng trong trường hợp lệnh rẽ nhánh
nhảy đến thực thi 1 lệnh khác với lệnh đã nạp trong đường ống thì hiện tượng nghẽn đường ống sẽ
xảy ra xem hình 4.4.



Clock Transition T1 T2 T3 T4 T5
PC 20 21 73 74 75
20 (Branch to 73) Fetch 20 Execute 20 Execute 21 Execute 73


Instruction 21

Fetch 21 Flushed

Instruction 22

Fetch 73

Instruction 23

Fetch 74 Execute 75

Hình 4.4 hiện tượng nghẽn đường ống


Để giải quyết việc nghẽn đường ống thì: Do đường ống chỉ có 2 đơn vị hoạt
động song song. Khi lệnh kế tiếp thực thi đang vào đường ống thì lệnh rẽ nhánh cũng đang thực
thi, nếu lệnh rẽ nhánh có yêu cầu rẽ nhánh thì PC sẽ phải nạp giá trị mới và tìm nạp lệnh tại điểm
nhảy đến thay vì nạp lệnh kế để đưa vào
đường ống. như vậy việc nghẽn đường ống đã được khắc
phục.
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
14


V> SƠ ĐỒ KHỐI CỦA THIẾT KẾ RISC


1. SƠ ĐỒ CHÂN









Hình 5.1 sơ đồ chân của RISC


Vi điều khiển có 3 port I/O Port B, Port C, Port D, và có 2 chân input
là clock và Reset(tích cực thấp). Mỗi Port có 8 bit (theo thiết kế port này chỉ là port xuất).


2. Sơ đồ khối của RISC


Hình 5.2 Top-level Block of Risc























PC
Instruction Register

Control Unit

ROM

General Register
ALU
Status Register

RAM
Port A
Port B
Port C
Instruction Decoder
. . . . . . . . . . .

D
A
T
A
M
U
X
Latch
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
15
Cấu trúc của RISC gồm 10 MODULS được chia thành 2 đơn vị:

- Đơn vị Giải mã và điều khiển lệnh (Control Unit): có các Modul giải mã lệnh và
Modul điều khiển
- Đơn vị Đường dữ liệu: gồm có Program Couter, thanh ghi lệnh, ALU, RAM,
Status Register, General Register, Data Mux, I/O.

Program Counter chứa địa chỉ lệnh thực thi, nó gởi địa lệnh chỉ đến ROM
chương trình. Lệnh từ Rom chương trình sẽ được chốt vào thanh ghi lệnh (IR). Đơn vị điề
u khiển
sẽ nhận lệnh từ IR để giải mã và điều khiển các tín hiệu đồng bộ để thực thi lệnh.

Do RISC hạn chế về truy xuất ô nhớ, nên RISC không có các lệnh truy xuất
trực tiếp từ ô nhớ của RAM chỉ có lệnh LD và ST dùng truy xuất gián tiếp thông qua con trỏ Z là
thanh ghi đa năng .

Tập thanh ghi đa năng chứa 16 thanh ghi, cung cấp đồng thời 2 tóan hạng

thanh ghi cho ALU, và địa chỉ là nội dung thanh ghi Z trỏ
tới ô nhớ Ram . ALU có nhiệm vụ thực
thi các phép tính trên 2 toán hạng. Data mux dùng để chọn dữ liệu để ghi vào tập thanh ghi đa
năng hoặc làm toán hạng cho ALU. Modul I/O gồm 3 thanh ghi mà các bít được đưa ra ngoài ở
chân ngỏ ra.các thanh ghi I/O có thể được đọc và ghi thông qua các bus dữ liệu.

RISC có 2 đơn vị Tìm nạp lệnh và thực thi họat song song nên đòi hỏi phải
có bộ nhớ Chương trình và bộ nhớ dữ liệu phải tách biệt. Như trong hình 5.2 thi bộ nhớ Chươ
ng
trình sẽ được lưu trong ROM và bộ nhớ dữ liệu được cất trong RAM. RAM sẽ được khởi động
với giá trị là 00H.
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
16


VI> THIẾT KẾ ĐƯỜNG DỮ LIỆU (DATAPATH)

Việc thiết kế một MCU được chia thành 2 phần chính là: thiết kế đường dữ liệu và
thiết kế Đơn vị điều khiển.

Đường dữ liệu chịu trách nhiệm về di chuyển và thao tác dữ liệu. Nó thực hiện hiện
tất cả các họat động chức năng của RISC nên nó phải có khả năng thực hiện tất cả các thao tác
được yêu cầu từ tập l
ệnh. Nó có các đường vào điều khiển cho phép chọn các chức năng thực thi
cụ thể ứng với các lệnh cụ thể. Các đường điều khiển này sẽ do đơn vị giải mã và điều khiển sẽ
điều khiển trong quá trình thực thi lệnh.


Đường dữ liệu chứa các đơn vị chức năng: PC, IR, ROM, RAM, General Registers,
ALU, SR(state Register), I/O.


1. Program Counter (PC)














Hình 6.1 sơ đồ khối của Program Counter











Hình 6.2 Program Counter Symbol


PC
PC - 1
+ Offset
___STACK___
____________
____________
____________
PUSH
POP
CLKPP
CLR
+ 1
SPC
LD_C
CLK
Program Counter Program Counter
Offset(8..0) ---
SPC ---
Push ---
Pop ---
LD_C ---
CLKPP ---
CLK ---
--- PC(8..0)
CLR ---
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________

Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
17

Hình 6.1 cho thấy khối PC có các các đơn vị chức năng như:

- Thanh ghi PC chứa địa chỉ lệnh, có thể đếm lên để trỏ tới lệnh kế hoặc nạp
dữ liệu khi gặp yêu cầu rẽ nhánh.

- Khối Stack có độ sâu là 4 mức để cất địa chỉ quay về PC khi gặp lệnh gọi
hàm. Khi gặp lệnh gọi hàm thì khối Stack sẽ thực hiện PUSH, và lưu giá trị PC vào đỉnh Stack,
sau đó PC s
ẽ nạp địa chỉ lệnh mới. Khi gặp lệnh RET thì PC sẽ nạp lại địa chỉ quay về từ đỉnh
Stack, sau đó Stack sẽ thực hiện POP để đẩy địa chỉ quay về ra ngoài. Do Stack chỉ có độ sâu là 4
mức nên khi gặp 5 lần gọi hàm liện tục thì địa chỉ quay về lần đầu sẽ bị mất.

- Thanh ghi PC-1 và bộ cộng Offset được sử dụng trong lệnh rẽ nhánh và gọ
i
hàm để tính địa chỉ lệnh kế khi rẽ nhánh. Do đơn vị tìm nạp lệnh và thực thi lệnh thực hiện song
song khi đơn vị thực thi lệnh gặp yêu cầu rẽ nhánh thì PC đã trỏ tới lệnh mới, vì vậy nên khi rẽ
nhánh đến lệnh mới thì PC phải trừ đi 1 rồi mới cộng với Offset.

Hình 6.1 và 6.2 chỉ ra các tín hiệu vào điều khiển cho PC như sau:

- Tín hiệu SPC: cho phép chọn giá trị (
địa chỉ lệnh kế) nạp cho PC. SPC =’0’
thì PC sẽ nạp giá trị của PC-1+Offset ngược lại PC sẽ nạp giá trị đỉnh Stack.

- Tín hiệu LD_C dùng để điều khiển giá trị của PC. Khi có cạnh xuống cùa
xung CLK thì giá trị PC sẽ thay đổi nếu LD_C =’0’ thì PC sẽ nạp giá trị mới từ bộ mux, ngược lại

PC sẽ đếm lên.

- Tín hiệu PUSH, POP tích cực thấp dùng để điều khiển khối Stack.

- Tin hiệu CLK dùng
để đồng bộ cho thanh ghi PC.

- Tín hiệu CLKPP dùng để đồng bộ việc PUSH, POP của Stack.

- Tín hiệu CLR dùng để xóa khối Stack và PC khi RESET.
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
18


2. RAM, ROM







Hình 6.3 Program ROM Symbol










Hình 6.4 RAM symbol


ROM dùng để chứa chương trình. Hình 6.3 cho thấy các tín hiệu vào và ra của
ROM. Tín hiệu vào của ROM có 9 bit địa chỉ được lấy từ PC nên ROM có 512 ô nhớ, Tín hiệu ra
của ROM là dữ liệu 16 bit (2 Byte), đuợc gọi là từ lệnh. Từ lệnh sẽ được đưa vào thanh ghi
lệnh.Như vậy ROM chứa 1KB lệnh.

Thết kế này sử dụng ROM không đồng bộ, không có các tín hiệu điều khiển vào ra,
khi đưa địa chỉ vào đầ
u vào thì dữ liệu sẽ xuất ở ngỏ ra.

RAM dùng để chứa dữ liệu, hình 6.4 mô tả tín hiệu vào và ra của RAM. RAM có
dụng lượng là 256 byte nên cần 8 bit địa chỉ là nội dung của thanh ghi Z trong tập thanh ghi đa
dụng. DATAWR là tín hiệu dữ liệu cần ghi vào RAM.

RAM được đồng bộ dữ liệu vào nên có 2 tín hiệu WR_RAM và CLKW để điều
khiển đồng bộ. WR_RAM là tín hiệu cho phép ghi tích cực thấp, còn CLKW là tín hiệu đồng bộ
ghi tác động cạnh xu
ống.
Program ROM
PC(8..0) ---
--- INSTR(15..0)
Program ROM
DATAWR(7..0) ---

--- C(7..0)
ADDR(7..0) ---
WR_RAM ---
CLKW ---
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
19


3. Tập thanh ghi đa dụng (General Pupose Registers)










Hình 6.5 General Purpose Registers Symbol


Tập thanh ghi đa dụng gồm 16 thanh ghi đa dụng. Để xác định thanh ghi cụ
thể trong tập thanh ghi cần 4 bít địa chỉ. Tập thanh ghi có 2 đường dữ liệu ra RA, RB (8 bit) làm
2 toán hạng cho ALU. Để định địa chỉ cho RA cần sử dụng 4bít AddA và 4 bit AddB định địa chỉ
cho RB. Ngoài ra tập thanh ghi đa dụng còn có một đường dữ liệu ra 8 bit, đó là nội dung của
thanh ghi Z (R15). Nó được dùng để định địa chỉ ô nhớ trong RAM trong lệnh truy xuất ô nh


gián tiếp qua thanh ghi. Ví dụ như lệnh: LD, ST ...

Đối với các lệnh ADD, LSL, AND ... Kết quả sau khi tính tóan lại được lưu
lại vào tập thanh ghi đa dụng. Để thực hiện việc này, dữ liệu cần ghi sẽ được đưa vào đường
DATA và địa chỉ thanh ghi đích 4 bit sẽ được đưa vào AddW.

Ngoài các đường dữ liệu vào, ra và các đường địa chỉ, tập thanh ghi đa dụng
còn có các tín hiệu vào để điều khiể
n:

- Tín hiệu Inc_ZP, Dec_ZP là các tín hiệu tích cực thấp thực hiện việc tăng, giảm
con trỏ Z (nội dung thanh ghi R15) khi truy xuất dữ liệu ô nhớ trong RAM. Các tín hiệu này sử
dụng trong các lệnh: LD Z+, ST Z-....

- Tín hiệu WRE, CLK là các tín hiệu điều khiển động bộ việc ghi dữ liệu vào tập
thanh ghi đa năng. WRE là tín hiệu cho phép ghi tích cực thấp. tín hiệu CLK là tín hiệu đồng bộ
ghi tác động cạnh xuống. khi xung CLK tác động cạnh xuống thì dữ liệu s
ẽ được ghi vào thanh
ghi đích,

- Tín hiệu CLR dùng để xóa toàn bộ tập thanh ghi khi reset
Program Counter
General Pupose
Registers(16)
Data(7..0) ---
AddA(3..0) ---
AddB(3..0) ---
AddW(3..0) ---
Inc_Zp ---

CLK ---
CLRN ---
--- RA(7..0)
--- RB(7..0)
--- ZP(7..0)
Dec_Zp ---
WRE ---
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
20


4. Thanh ghi cờ Trạng thái (State Register)


















Hình 6.6 Sơ đồ khối của Thanh ghi trạng thái








Hình 6.7 State Register symbol


Thanh ghi Trạng thái chứa các cờ trạng thái của lệnh thực thi, thanh ghi có thể được
đọc và ghi dữ liệu từ data bus, thay đổi trang thái cờ theo trạng thái lệnh thực thi. Có ngỏ ra được
đưa về đơn vị điều khiển làm điều kiện cho lệnh rẽ nhánh.

Các cờ trong thanh ghi trạng thái:



* bit 6, 7: Không sử dụng
* Bit 5 – H: Half Carry Flag
* Bit 4 – S: Sign Bit
* Bit 3 – V: Two’s Complement Overflow Flag
* Bit 2 – N: Negative Flag
* Bit 1 – Z: Zero Flag
* Bit 0 – C: Carry Flag
Condition Branch

Status Register
LD_M
FR_ALU
Data Bus
SEL_BIT
M_SR
CLK
-- --
H S V N Z C
Program Counter
State Register
FR_ALU(5..0) ---
M_SR(5..0) ---
LD_M ---
SEL_BIT(2..0) ---
CLK ---
--- CB
Data(7..0) ---
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
21

Các tín hiệu vào, ra của thanh ghi Trang thái được nêu ở hình 6.7:

- Tín hiệu FR_ALU(5..0) chứa các trang thái cờ trạng thái của lệnh đang
thực thi, được đưa từ ALU tới, sẽ được cập nhật vào thanh ghi trạng thái

- Tín hiệu M_SR(5 ..0) là tín hiệu cho phép tích cực thấp để cập nhật cờ

trạng thái, các tín hiệu này được đưa tới từ đơn vị giải mã lệnh.

- Tín hiệu Sel_Bit(2..0) là tín hiệu chọn cờ để làm điều kiện r
ẽ nhánh. Giá trị
của Sel_bit là vi trí của cờ được chọn. CB là tín hiệu ra được đưa về đơn vị điều khiển làm điều
kiện rẽ nhánh.

- Tín hiệu LD_M, CLK là tín hiệu điều khiển động bộ để thay đổi thay ghi
trạng thái. LD_M = ‘1’ Thanh ghi trạng thái sẽ nạp dữ liệu từ Data bus vào ngược lại thì thanh ghi
trạng thái sẽ cập nhật cờ từ tín hiệu ALU gởi xuống. CLK là tín hiệu
đồng bộ tác động cạnh
xuống để thay đổi Thanh ghi trang thái.


5.ALU


ALU là trung tâm thao tác và thực hiện lệnh của Microcontroller. Bàng 6.2
liệt kê các nhóm lệnh cơ bản mà ALU có thể thực hiện. Các lệnh mà ALU thực thi được chia làm
5 nhóm lệnh: ADD, SUBCP, LOGIC, RIGHT, DIR.















Hình 6.8 ALU symbol


Khi thực hiện lệnh ALU cần phải lựa chọn tóan hạng tác động, thao tác thực thi, và
cập nhật cờ trạng thái. Vì vậy khối ALU trong thiết kế cũng được chia thành 3 đơn vị con: đơn vị
tìm nạp tóan hạng, đơn vị thao tác lệnh, và đơn vị cập nhật cờ trạng thái.
ALU
Arith Operation
Shift Operation
Logic Operation
Direct Operation
ALU Operation
ORA ORB
CFla
g
S
,Z,C,N,V,H
Resul
t
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
22
5.1 Đơn vị tìm nạp tóan hạng


Hình 6.8 mô tả cấu trúc của đơn vị tìm nạp lệnh. Trong đơn vị này có 2 thanh
ghi toán hạng. Tóan hạng A (ORA) và tóan hạng B (ORA)

Tóan hạng A có thể được nạp từ RA(thanh ghi đa dụng), not RA(ví dụ dùng
trong lệnh COM), Data bus( ví dụ sử dụng trong lệnh tác động bit), và 00h. Tín hiệu ASEL có 2
bit để điều khiển chọn giá trị nạp cho tóan hạng A (xem bảng 6.1).

Tóan hạng B có thể nạp từ RB(thanh ghi đa dụ
ng), Data bus, giá trị hằng số
cho trong từ lệnh, giá trị 01H (được sử dụng trong lệnh INC, DEC) . Tín hiệu BSEL có 2 bit để
điều khiển chọn giá trị nạp cho tóan hạng B (xem bảng 6.1).











Hình 6.9 Đơn vị tìm nạp tóan hạng


ASEL ORA BSEL ORB
00 RA 00 RB
01 Not RA 01 Data Bus
10 00h 10 Immediate
11 Data Bus 11 01h

Bảng 6.1: tìm nạp tóan hạng

5.2 Đơn vị thao tác lệnh

Như đã đề cập, ALU phải thực thi 5 nhóm lệnh(ADD, SUBCP, RIGHT, DIR,
LOGIC) Nên đơn vị thao tác lệnh cũng được chia thành 4 khối chức năng nhỏ mỗi khối đảm
nhiệm 1 thao tác riêng và có các đường điều khiển riêng: đơn vị tóan học, đơn vị logic, đơn vị
dịch,

đơn vị định hướng dữ liệu.

Đơn vị tóan học thưc hiện phép cộng, trừ trên 2 tóan hạng, có tín hiệu điều
khiển ADD nếu ADD = 1 thực hiện phép cộng, ngược lại thực hiện phép trừ, tín hiệu WCARRY
cho phép có sử dụng cờ nhớ vào hay không(xem bảng 6.2).
RA
NOT RA
0000 0000
Data Bus
ORA
ASEL (1..0)
RB
Data Bus
Immediate
0000 0001
ORB
BSEL (1..0)
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________

23
Đơn vị Logic thực thi các lệnh logic cơ bản.trên ORA, ORB như AND, OR,
EXOR, và NOT ORA. Được điều khiển bởi tín hiệu LOGICSEL (xem bảng 6.2).

Đơn vị dịch thực thi các lệnh dịch bit tác động lên tóan hạng ORA như: dich
trái, xoay, dịch trái số học. Được điều khiển bởi tín hiệu LOGICSEL (xem bảng 6.2).

Đơn vị định hướng dữ liệu (DIR) thực hiện việc kết nối dữ liệu vào và ra với
bit đ
iều khiển DIR. Nếu DIR =’0’ thì kết quả là ORB, ngược lại kết quả là SWAP ORA.

Kết quả thực thi của ALU sẽ được chọn từ kết quả của các đơn vị con này
dựa trên tín hiệu điều khiển ALU_SEL.

ALU_SEL
Group Instruction Extra Signal WRE ORA ORB Flags
ADD ADD

HSVNZC
ADC WCARRY

HSVNZC
00 ADD
INC ADD

One SVNZC
SUB

HSVNZC
SUBI


Imm HSVNZC
SBC WCARRY

HSVNZC
SBCI WCARRY

Imm HSVNZC
CP HSVNZC
CPC WCARRY HSVNZC
CPI Imm HSVNZC
DEC

One SVNZ
00 SUBCP
COM ADD

Not RA 1 HSVNZC
AND LOGICSEL = 00

SVNZC
ANDI LOGICSEL = 00

Imm SVNZC
OR LOGICSEL = 01

SVNZC
ORI LOGICSEL = 01

Imm SVNZC

EOR LOGICSEL = 10

SVNZC
01 LOGIC
NEG LOGICSEL = 11


SVNZC
LSR RIGHTSEL = 00

SVNZC
ROR RIGHTSEL = 01

SVNZC
10 RIGHT
ASR RIGHTSEL = 10

SVNZC
MOV DIRSEL = 0


LDI DIRSEL = 0

Imm
11 DIR
SWAP DIRSEL = 1



WRE là tín hiệu cho phép kết quả ghi ngược lại thanh ghi đích

ORA,ORB mặc định là 2 thanh ghi tóan hạng RA, RB

Bảng 6.2 nhóm lệnh cơ bản của ALU

ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
24
5.3 Đơn vị cập nhật cờ trạng thái

Đơn vị này có chức năng cập nhập cờ trạng thái theo kết quả lệnh đươc thực
hiện. ALU sẽ gửi giá trị của 5 cờ trạng thái tới cho SR. Tuy nhiên việc cập nhật các cờ này còn
phải phụ thuộc vào lệnh đang thực thi là lệnh nào nên SR cũng nhận các cho phép cập nhật cờ
tương úng từ đon vị gi
ải mã lệnh.

Các giá trị cập nhật của cờ:

Cờ Z lên 1 khi kết qủa phép tính bằng 0.

Cờ N (Negative) có giá trị trùng với bit MSB của kết quả phép tính.

Cờ V được cập nhật khi thực hiện nhóm lệnh số học, và được xóa khi gặp
lệnh LOGIC, hàm bool của cờ V = N-flag xor C-flag.

Cờ C được cập nhật khi thực hiện nhóm lệnh số học, là cờ nhớ của lệnh cộng,
trừ

Cờ H cập nhật khi gặp lệnh số học. H= A3B3 + B3(C3’ ) + (C3)’A3 vói A là

ORA, B là ORB và C là kết quà.
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ
_____________________________________*******______________________________________
Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh
_____________________________________*******______________________________________
25

VII> THIẾT KẾ ĐƠN VỊ ĐIỀU KHIỂN (CONTROL UNIT)


Đơn vị điều khiển có nhiệm vụ nhận mã lệnh thực thi từ IR vào để giải mã,
tạo ra các tín hiệu điều khiển cho các đơn vị của đường dữ liệu(datapath) để nó thực thi chính xác
các chức năng của lệnh đang được thực thi. Đơn vị Điều khiển được chia làm 2 đơn vị con: đơn vị
giải mã lệnh và đơn vị đ
iều khiển thực thi.

Đơn vị giải mã lệnh sẽ tạo ra các tín hiệu điều khiển xác lập các chức năng cụ
thể từng đơn vị của đương dữ liệu phù hợp với lệnh đang thực thi. Đơn vị điều khiển thực thi sẽ
tạo ra các tín hiệu điều khiển đồng bộ để điều khiển các
đơn vị hoạt động theo đúng thứ tự.


1. Đơn vị giải mã lệnh


Đơn vị giải mã lệnh là 1 hệ tổ hợp có đầu vào là mã máy và ra các tín
hiệu điều khiển, dùng để xác lập các chức năng cụ thể từng đơn vị của đường dữ liệu phù hợp với
lệnh đang thực thi. Ứng với 1 giá trị mã máy đầu vào nó sẽ cho 1 tổ hợp các tín hiệu điều khiển
ngỏ ra xác định. Bảng 7.1 liệt kê các tín hiệu điề
u khiển ngỏ ra.



Đơn vị đường dữ liệu Tín hiệu điều khiển
ALU IMM_VALUE[7..0]; ASEL[1..0]; BSEL[1..0]; WCARRY
ADD; LOGICSEL[1..0]; RIGHTSEL[1..0]; DIRSEL
ALU_SEL[1..0]
Thanh ghi đa dụng AddA[3..0]; AddB[3..0]; AddW[3..0]
WRE; INC_ZP; DEC_ZP
Program Counter Offset[8..0]; SPC; PUSH; POP; LD_C
RAM WR_RAM
Data mux DATAMUX[2..0]
State Register M_SR[5..0]; LD_M; SEL_BIT[2..0]
I/O Register IO_SEL[1..0]

Các chức năng của tín hiệu đã được nêu ở trên
Bảng 7.1 các tín hiệu điều khiển


2. Đơn vị điều khiển thực thi


Đơn vị điều khiển của RISC thường là hệ tuần tự sử dụng các cổng logic và
D flip-flop thay vì sử dụng đơn vị điều khiển vi chương trình, chứa trong ROM, như cấu trúc
CISC. CISC có tập lệnh với các chiều dài lệnh chu kỳ lệnh khác nhau nên đơn vị điều khiển sử
dụng ROM vi chương trình để thực hiện thiết kế dễ dàng và mềm dẻo như
ng bất lợi của vi chương
trình là làm chậm khả năng thục thi lệnh. Đối với RISC, các lệnh có chiều dài cố định và thực thi

×