Bài giảng Thiết kế hệ thống nhúng - Chương 4: Kỹ thuật lập trình nhúng - Bài 8: Biểu diễn trạng thái và mô hình hóa quá trình

CHƢƠNG 4: KỸ THUẬT LẬP TRÌNH  
NHÚNG  
Bài 8: Biểu diễn trạng thái và mô hình  
hóa quá trình  
1
Tổng quan  
• Mô hình vs Ngôn ngữ  
• Mô hình trạng thái  
FSM/FSMD  
– HCFSM và ngôn ngữ biểu đồ  
– Mô hình M) Model)  
• Mô hình quá trình đồng thời  
– Truyền thông  
– Đồng bộ  
– Thực hiệ
• Mô hình luồng dữ liệu  
• Các hệ thời gian thực  
2
Giới thiệu  
• Mô tả trạng thái xử lý của hệ thống nhúng  
– Đôi khi là rất khó  
• Độ phức tạp tăng khi khả năng của IC tăng  
– Trong quá khứ: máy giặt, games etc.  
– Ngày nay: Đầu TV kỹ thuật số, điện thoại di động etc.  
• Vài trăm nghìn dòng lệnh  
• Trạng thái yêu cầu thƣờng không đƣợc hiểu đầy đủ khi bắt đầu  
– Nhiều quá trình thực hiện lỗi do mô tả sự kiện thiếu, ko chính xác  
– Tiếng Anh (hoặc ngôn ngữ khác) – điểm khởi đầu chung  
• Khó mô tả chính xác hoặc đôi khi không thể  
• Ví dụ: Mã điều khiển cho một ô tô – dài hàng nghìn trang...  
3
Mô hình và ngôn ngữ  
• Làm thế nào chúng ta ghi nhận hành vi (chính xác)?  
– Chúng ta có thể nghĩ đến ngôn ngữ (C, C++), nhƣng mô hình tính toán là  
mấu chốt  
• Mô hình tính toán cơ bản:  
– Mô hình lập trình tuần tự  
• Các c
– Mô hình xử lý thông tin  
• Nhiều mô hình tuần tự chạy đồng thời  
– Mô hình trạng thái  
• Cho các hệ riêng, giám sát đầu vào điều khiển, thiết lập đầu ra điều khiển  
– Mô hình luồng dữ liệu  
• Cho cng dữ liệu đầu ra  
– Mô hình hƣớng đối tƣợng  
• Để tách phần mềm phức tạp thành đơn giản, các mục đƣợc định nghĩa  
4
Mô hình vs ngôn ngữ  
Poetry  
Recipe  
Story  
State  
machine  
Sequent.  
program  
Data-  
flow  
Mô hình  
English  
Spanish  
Japanese  
C
C++  
Java  
Ngôn ngữ  
Ngôn ngữ nấu ăn –  
Chương trình tuần tự - C  
• Mô hình tính toán mô tả trạng thái của hệ  
– Ghi chú khái niệm, vd công thức hay chƣơng trình tuần tự  
• Ngôn ngữ để thể hiện mô hình  
– Dạng duy nhất, ví dụ tiếng Anh, C  
• Hiều ngôn ngữ đƣợc dùng để thể hiện một mô hình  
– VD mô hình lập trình tuần tự C,C++, Java  
• Một ngôn ngữ
VD C++ → mô hình lập trình tuần tự, mô hình hƣớng đối tƣợng, mô hình trạng thái  
• Các ngôn ngữ nhất định thể hiện tốt các mô hình tính toán nhất định  
5
Chữ vs Đồ họa  
• Mô hình và ngôn ngữ không đƣợc nhầm lẫn với “chữ  
và đồ họa”  
– “Chữ và đồ họa” chỉ là hai kiểu ngôn ngữ  
• Chữ: ký tự, số  
• Đồ họa: vòng tròn, mũi tên (với một số ký tự, số)  
X = 1  
X = 1;  
Y = X + 1;  
Y = X + 1  
6
Ví dụ: Bộ điều khiển thang máy  
Giao diện hệ thống  
Mô tả tiếng Anh một phần  
• Bộ điều khiển thang  
máy đơn giản  
up  
Unit  
Control  
“Di chuyển thang máy lên hoặc xuống  
để đến tầng yêu. Một khi ở tầng yêu  
cầu, mở cửa ít nhất 10 giây, và duy trì  
nó đến khi tầng đƣợc yêu cầu thay  
đổi. Đảm bảo cửa không bao giờ mở  
đi lên hoặc tầng thấp hơn khi đi  
xuống…”  
down  
open  
Bộ phận yêu cầu chuyển  
các yêu cầ
thành yêu cầu của một  
tầng duy nhất  
floor  
req  
st  
Resolver  
buttons  
inside  
elevator  
b1  
b2  
bN  
...  
...  
up1  
up2  
Đơn vị điều khiển di  
chuyển thang máy tới  
tầng yêu cầu  
up/down  
buttons on  
each  
dn2  
up3  
floor  
dn3  
dnN  
• Thử thể hiện bằng C...  
7
Bộ điều khiển thang máy sử dụng mô hình  
lập trình tuần tự  
Giao diện hệ thống  
Mô hình cương trình tuần tự  
Mô tả tiếng Anh một phần  
Inputs: int floor; bit b1..bN; up1..upN-1; dn2..dnN;  
Outputs: bit up, down, open;  
Global variables: int req;  
up  
Unit  
Control  
“Di chuyển thang máy lên hoặc xuống  
để đến tầng yêu. Một khi ở tầng yêu  
cầu, mở cửa ít nhất 10 giây, và duy trì  
nó đến khi tầng đƣợc yêu cầu thay  
trừ khi có yêu cầu ở tầng cao hơn khi  
đi lên hoặc tầng thấp hơn khi đi  
xuống…”  
down  
open  
void UnitControl()  
{
void RequestResolver()  
{
up = down = 0; open = 1;  
while (1) {  
while (1)  
floor  
req  
while (req == floor);  
open = 0;  
}
st  
Resolver  
if (req > floor) { up = 1;}  
else {down = 1;}  
while (req != floor);  
up = down = 0;  
open = 1;  
buttons  
inside  
elevator  
b1  
b2  
bN  
void main()  
{
...  
...  
Call concurrently:  
UnitControl() and  
RequestResolver()  
}
delay(10);  
up1  
up2  
up/down  
buttons on  
each  
}
}
dn2  
up3  
floor  
dn3  
Có thể thực hiện chương
lệnh “if” hơn.  
dnN  
8
Mô hình trạng thái máy hữu hạn (Finite-state  
machine model FSM)  
• Cố gắng thể hiện trạng thái này nhƣ một chƣơng trình tuần tự là  
đôi khi không đầy đủ hoặc khó  
• Thay vào đó, chúng ta có thể xem xét nhƣ một mô hình FSM, mô  
tả hệ nhƣ sau:  
– Các trạng
• VD, nghỉ, đi lên, đi xuống, mở cửa  
– Chuyển đổi có thể từ trạng thái này đến trạng thái khác dựa trên các đầu  
vào  
• VD yêu cầu tầng  
– Các hoạt động xảy ra trong mỗi trạng thái  
• VD trpen, and  
timer_start = 0)  
• Thử...  
9
Mô hình trạng thái máy hữu hạn (FSM)  
Quá trình của đơn vị điều khiển sử dụng máy trạng thái  
req > floor  
u,d,o, t = 1,0,0,0  
!(req > floor)  
!(timer < 10)  
GoingUp  
req > floor  
timer < 10  
u,d,o,t = 0,0,1,0  
req == floor  
Idle  
req < floor  
DoorOpen  
u,d,o,t = 0,0,1,1  
!(req<floor)  
u,d,o,t = 0,1,0,0  
u is up, d is down, o is open  
t is timer_start  
req < floor  
10  
Định nghĩa chuẩn  
• Một FSM gồm 6-phần tử F<S, I, O, F, H, s0>  
S là tập tất cả các trạng thái {s0, s1, …, sl}  
I là tập đầu vào {i0, i1, …, im}  
O là tập đầu ra {o0, o1, …, on}  
F là hàm trạng thái tiếp theo (S x I S)  
H là hàm
s0 là trạng thái đầu  
• Kiểu Moore  
– Liên kết các đầu vào với các trạng thái (nhƣ trên, H liên kết S O)  
• Kiểu Mealy  
– Liên kết đầu ra với chuyển trạng thái (H liên kết S x I O)  
• Viết tắt để đơn giản hóa các mô tả  
– Gán 0 cho tất cả các đầu ra, không gán giá trị trong một trạng thái  
– AND tất cả các điều kiện chuyển với xung đồng hồ (FSM là quá trình đồng bộ)  
11  
Trạng thái máy hữu hạn với mô hình tuyến  
dữ liệu (FSMD)  
• FSMD mở rộng FSM: các kiểu dữ liệu và biến phức tạp để lƣu trữ dữ liệu  
– FSMs chỉ sử dụng kiểu dữ liệu và toán hạng Boolean, không có biến  
We described UnitControl as an FSMD  
FSMD: 7-phần tử <S, I , O, V, F, H, s0>  
S là tập các trạng thái {s0, s1, …, sl}  
req > floor  
I là tập các đầu vào {i0, i1, …, im}  
u,d,o, t = 1,0,0,0  
!(req > floor)  
GoingUp  
O là tập các đầu ra {o0, o1, …, on}  
V là tập
F là hàm của trạng thái tiếp (S x I x V S)  
H là một hàm tác động (S O + V)  
s0 là trạng thái đầu  
timer < 10  
)  
DoorOpen  
u,d,o,t = 0,0,1,1  
req == floor  
req < floor  
!(req<floor)  
u,d,o,t = 0,1,0,0  
GoingDn  
u is up, d is down, o is open  
t is timer_start  
req < floor  
I,O,V có thể diễn tả các kiểu dữ liệu phức tạp (i.e., integers, floating point, etc.)  
F,H có thể bao gồm các toán hạng  
H là một hàm
– Mô tả các biến cập nhật cũng nhƣ đầu ra  
• Trạng thái hoàn thiện của hệ bao gồm trạng thái hiện tại, si, và các giá trị của tất cả  
các biến  
12  
Mô tả hệ theo trạng thái máy  
1. Liệt kê tất cả các trạng thái có thể  
2. Khai báo tất cả các biến  
3. Với mỗi trạng thái, liệt kê các chuyển trạng thái có thể, với các điều  
kiện, sang các trạng thái khác  
req > floor  
4. Với mỗi trạng thái/chuyển, liệt  
kê các hoạt động liên quan  
5. Với mỗi trạng thái, đảm bảo loại  
trừ và các điều kiện chuyển đã  
có  
timer < 10  
req > floor  
u,d,o,t = 0,0,1,0  
req == floor  
!(timer < 10)  
Idle  
req < floor  
DoorOpen  
u,d,o,t = 0,0,1,1  
• Không tồn tại hai điều kiện  
đúng tại một thời điểm  
!(req<floor)  
u,d,o,t = 0,1,0,0  
– Nế
thá
u is up, d is down, o is open  
t is timer_start  
req < floor  
• Một điều kiện phải đúng tại  
mọi thời điểm  
13  
Trạng thái máy vs. Mô hình lập trình tuần tự  
• Trạng thái máy:  
– Khuyến khích ngƣời thiết kế nghĩ đến tất cả các trạng thái có  
thể và chuyển trạng thái dựa trên tất cả các điều kiện đầu vào  
có thể  
• Mô hình lập trình tuần tự:  
– Đƣợc thiết kế để chuyển dữ liệu thông qua chuỗi các lệnh  
mà có thể lặp lại hoặc thực hiện có điều kiện  
14  
Thử mô tả các hành vi khác với một mô hình FSM  
• VD: Máy trả lời nhấp nháy đèn khi có bản tin  
• VD: Một máy trả lời điện thoại đơn giản mà trả lời sau  
4 hồi chuông  
• VD: Một
• Nhiều ví dụ khác  
15  
Mô tả trạng thái máy trong ngôn ngữ lập  
trình tuần tự  
• Mặc dù mô hình trạng thái máy có nhiều lợi ích, hầu hết các công cụ phát triển phổ  
biến sử dụng ngôn ngữ lập trình tuần tự  
– C, C++, Java, Ada, VHDL, Verilog HDL, vv….  
– Công cụ phát triển đắt và phức tạp, bởi vậy không dễ để thích nghi hay thay đổi  
• Phải đầu tƣ  
• Hai phƣơng ptrình tuần tự  
– Phƣơng pháp công cụ hỗ trợ  
• Công cụ bổ sung đƣợc cài đặt để hỗ trợ ngôn ngữ trạng thái máy  
– Đồ họa  
– Có thể hỗ trợ mô phỏng đồ họa  
– Tự động tạo ra code trong ngôn ngữ lập trình tuần tự là đầu vào cho các công cụ phát triển chính  
• Hạn chế: phải hỗ trợ các công cụ bổ sung (giá bản quyền, nâng cấp, đào tạo, vv.)  
– Phƣơng ph
• Phƣơng pháp thông dụng nhất...  
16  
Phƣơng pháp ngôn ngữ tập con  
• Tuân theo các quy tắc (mẫu) để mô tả  
cấu trúc trạng thái máy trong cấu trúc  
ngôn ngữ tuần tự tƣơng đƣơng  
• Đƣợc sử dụng với phần mềm (VD: C)  
và ngôn ngữ phần cứng (VD: VHDL)  
#define IDLE0  
#define GOINGUP1  
#define GOINGDN2  
#define DOOROPEN3  
void UnitControl() {  
int state = IDLE;  
while (1) {  
• Mô tả trạng thái máy UnitControl bằng  
switch (state) {  
C
IDLE: up=0; down=0; open=1; timer_start=0;  
if  
;}  
NGUP;}  
(req < floor) {state = GOINGDN;}  
– Liệt kê các tr
– Khai báo các
giá trị đầu (IDLE)  
– Câu lệnh chuyển mạch đơn rẽ nhánh  
tới trạng thái hiện tại  
break;  
GOINGUP: up=1; down=0; open=0; timer_start=0;  
if  
if  
break;  
(req > floor) {state = GOINGUP;}  
(!(req>floor)) {state = DOOROPEN;}  
– Mỗi trƣờng hợp có các hoạt động  
GOINGDN: up=1; down=0; open=0; timer_start=0;  
up, down, open, timer_start  
if  
if  
break;  
(req < floor) {state = GOINGDN;}  
(!(req<floor)) {state = DOOROPEN;}  
– Mỗi trƣờng hợp kiểm tra điều kiện  
chuyển để xác định trạng thái tiếp theo  
mer_start=1;  
EN;}  
if(…) {st
break;  
}
}
}
Trạng thái máy UnitControl trong ngôn ngữ lập trình tuần tự  
17  
Mẫu chung  
#define S0  
#define S1  
...  
0
1
#define SN  
N
void StateMachine() {  
int state = S0; // or whatever is the initial state.  
while (1) {  
switch (state) {  
S0:  
// Insert S0’s actions here & Insert transitions Tleaving S0:  
ns*/ }  
ns*/ }  
...  
if( Tm’s condition is true ) {state = Tm’s next state; /*actions*/ }  
break;  
S1:  
// Insert S1’s actions here  
// Insert transitions Ti leaving S1  
break;  
...  
SN:  
break;  
}
}
}
18  
HCFSM và ngôn ngữ biểu đồ trạng thái  
• Mô hình trạng thái máy phân  
cấp/đồng thời  
With hierarchy  
Without hierarchy  
(Hierarchical/concurrent state  
A
machine model - HCFSM)  
– Mở rộng mô hình trạng thái máy để  
hỗ trợ p
A1  
z
A1  
z
x
w
B
y
x
y
B
w
A2  
– Các trạng thái có thể tách thành các  
trạng thái máy khác  
– Các trạng thái có thể thực hiện đồng  
thời  
Concurrency  
B
C
D
• Biểu đồ trạng thái  
D1  
– Ngôn ng
u
v
timeout: chuyển trạng thái với giới  
C2  
D2  
hạn thời gian nhƣ là một điều kiện  
19  
UnitControl với FireMode  
req>floor  
GoingUp  
UnitControl  
FireMode  
u,d,o = 1,0,0  
!(req>floor)  
Khi fire đúng, di chuyển thang  
req>floor  
Idle  
u,d,o = 0,0,1  
req==floor  
máy tới tầng 1st và mở cửa  
timeout(10)  
u,d,o = 0,0,1  
u,d,o = 0,1,0  
DoorOpen  
fire  
fire  
req<floor  
!(req<floor)  
w/o hierarchy: Getting messy!  
w/ hierarchy: Simple!  
fire  
fire  
u,d,o = 0,1,0  
FireGoingDn  
GoingDn  
u,d,o = 0,0,1  
FireDrOpen  
floor==1  
floor>1  
req<floor  
UnitControl  
Không phân cấp  
NormalMode  
req>floor  
GoingUp  
u,d,o = 1,0,0  
!(req>floor)  
req>floor  
ElevatorController  
u,d,o = 0,0,1  
req==floor  
u,d,o = 0,0,1  
DoorOpen  
Idle  
timeout(10)  
!(req>floor)  
UnitControl  
RequestResolver  
req<floor  
NormalMode  
u,d,o = 0,1,0  
GoingDn  
!fire  
fire  
FireMode  
FireMode  
fire  
u,d,o = 0,1,0  
u,d,o = 0,0,1  
FireDrOpen  
fire  
FireGoingDn  
!fire  
floor==1  
floor>1  
Xử lý đồng thời với  
RequestResolver  
20  
Tải về để xem bản đầy đủ
pdf 33 trang yennguyen 19/04/2022 2260
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Thiết kế hệ thống nhúng - Chương 4: Kỹ thuật lập trình nhúng - Bài 8: Biểu diễn trạng thái và mô hình hóa quá trình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_thiet_ke_he_thong_nhung_chuong_4_ky_thuat_lap_trin.pdf