Bài giảng Thiết kế hệ thống nhúng - Chương 2: Cấu trúc phần cứng hệ thống nhúng - Bài 2: Bộ xử lý chức năng đơn chuyên

Tổng quan

• Giới thiệu

• Mạch tổ hợp

• Mạch tuần tự

• Thiết kế bộ xử lý chức năng đơn

• Thiết kế bộ xử lý chức năng đơn chuyên dụng thời

gian thực3

Giới thiệu

* Các loại vi điều khiển trên thị trường hiện nay:

– Freescale 68HC11 (8-bit)

– Intel 8051

– STMicroelectronics STM8S (8-bit), ST10 (16-bit) và STM32 (32-bit)

– Atmel AVR (8-bit), AVR32 (32-bit), và AT91SAM (32-bit)

– Freescale ColdFire (32-bit) và S08 (8-bit)

– Hitachi H8 (8-bit), Hitachi SuperH (32-bit)

– MIPS (32-bit PIC32)

– PIC (8-bit PIC16, PIC18, 16-bit dsPIC33 / PIC24)

– PowerPC ISE

– PSoC (Programmable System-on-Chip)

– Texas Instruments Microcontrollers MSP430 (16-bit), C2000 (32-bit), và Stellaris (32-bit)

– Toshiba TLCS-870 (8-bit/16-bit)

– Zilog eZ8 (16-bit), eZ80 (8-bit)

– Philips Semiconductors LPC2000, LPC900, LPC700

Bài giảng Thiết kế hệ thống nhúng - Chương 2: Cấu trúc phần cứng hệ thống nhúng - Bài 2: Bộ xử lý chức năng đơn chuyên trang 1

Trang 1

Bài giảng Thiết kế hệ thống nhúng - Chương 2: Cấu trúc phần cứng hệ thống nhúng - Bài 2: Bộ xử lý chức năng đơn chuyên trang 2

Trang 2

Bài giảng Thiết kế hệ thống nhúng - Chương 2: Cấu trúc phần cứng hệ thống nhúng - Bài 2: Bộ xử lý chức năng đơn chuyên trang 3

Trang 3

Bài giảng Thiết kế hệ thống nhúng - Chương 2: Cấu trúc phần cứng hệ thống nhúng - Bài 2: Bộ xử lý chức năng đơn chuyên trang 4

Trang 4

Bài giảng Thiết kế hệ thống nhúng - Chương 2: Cấu trúc phần cứng hệ thống nhúng - Bài 2: Bộ xử lý chức năng đơn chuyên trang 5

Trang 5

Bài giảng Thiết kế hệ thống nhúng - Chương 2: Cấu trúc phần cứng hệ thống nhúng - Bài 2: Bộ xử lý chức năng đơn chuyên trang 6

Trang 6

Bài giảng Thiết kế hệ thống nhúng - Chương 2: Cấu trúc phần cứng hệ thống nhúng - Bài 2: Bộ xử lý chức năng đơn chuyên trang 7

Trang 7

Bài giảng Thiết kế hệ thống nhúng - Chương 2: Cấu trúc phần cứng hệ thống nhúng - Bài 2: Bộ xử lý chức năng đơn chuyên trang 8

Trang 8

Bài giảng Thiết kế hệ thống nhúng - Chương 2: Cấu trúc phần cứng hệ thống nhúng - Bài 2: Bộ xử lý chức năng đơn chuyên trang 9

Trang 9

Bài giảng Thiết kế hệ thống nhúng - Chương 2: Cấu trúc phần cứng hệ thống nhúng - Bài 2: Bộ xử lý chức năng đơn chuyên trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 55 trang xuanhieu 2460
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Thiết kế hệ thống nhúng - Chương 2: Cấu trúc phần cứng hệ thống nhúng - Bài 2: Bộ xử lý chức năng đơn chuyên", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Thiết kế hệ thống nhúng - Chương 2: Cấu trúc phần cứng hệ thống nhúng - Bài 2: Bộ xử lý chức năng đơn chuyên

Bài giảng Thiết kế hệ thống nhúng - Chương 2: Cấu trúc phần cứng hệ thống nhúng - Bài 2: Bộ xử lý chức năng đơn chuyên
kiến trúc
 27
 Giới thiệu
5.Vi điều khiển ARM.
Ngôn ngữ lập trình chính cho ARM hiện nay là ngôn ngữ C. Các trình biên dịch cho ARM thƣờng 
đƣợc dùng:
 – Keil ARM.
 – IAR.
 – HTPICC for ARM.
 – ImageCraft ICCV7 for ARM
 28
 Giới thiệu
6. FPGA và các ứng dụng nhúng
Hệ thống nhúng (embedded system) bắt đầu từ các họ Vi điều khiển 8051 rồi đến PIC, AVR và cao 
hơn nữa là họ ARM, AVR32 hay PSoC. Với FPGA tiếp cận hoàn toàn khác. 
Vậy bao nhiêu công sức, kinh nghiệm về vi điều khiển và cả những công trình nghiên cứu bị bỏ rơi? 
thực ra FPGA chỉ phát huy sức mạnh của nó khi đƣợc ghép nối với vi điều khiển. Đó cũng chính là 
mục đích và tƣ tƣởng thiết kế của co-design.
 29
 Giới thiệu
6. FPGA và các ứng dụng nhúng
Co-design kết hợp năng lực về phần cứng của FPGA với ƣu thế xử lý phần mềm của Vi điều khiển 
để tạo nên một hệ thống đầy sức mạnh. 
Ví dụ : Muốn thiết kế một ứng dụng đo nhiệt độ phòng với cảm biến nhiệt có giao tiếp I2C. 
Nếu chỉ dùng MCU thông thƣờng không có giao tiếp I2C thì sẽ gặp rất nhiều khó khăn (Phải lập trình 
ngắt, bắt sƣờn, mức của xung,...). 
Còn nếu chỉ sử dụng FPGA trong ứng dụng này cũng không ổn vì lúc đó bạn sẽ gặp khó khăn nhất 
định trong các tính toán số học. 
Ví dụ cảm biến đo nhiệt độ bằng đơn vị độ F, trong khi ta muốn hiển thị độ C, mà muốn thực hiện 
các phép toán cộng trừ nhân chia để chuyển đổi độ F với độ C bằng FPGA là không hề đơn giản. 
Trong trƣờng hợp này ta thiết kế theo phƣơng thức co-design. FPGA phụ trách giao tiếp với cảm 
biến I2C và trả về các số liệu thô để MCU thực hiện các tính toán số học.
 30
 Transistor CMOS trên silicon
• Transistor
 – Là phần điện tử cơ bản trên mạch số
 – Hoạt động nhƣ một chuyển mạch on/off
 – Điện áp ở cực “cổng” điều khiển dòng giữa cực nguồn 
 và cực máng
 source
 – Đừng nhầm lẫn “cổng” ở đây với cổng logic gate Conducts
 if gate=1
 1 drain
 gate
 IC package IC oxide
 source channel drain
 Silicon substrate
 31
 Thực hiện transistor CMOS
• CMOS - Complementary source source
 Metal Oxide Semiconductor gate Conducts gate Conducts
 if gate=1 if gate=0
• Chúng ta quan tâm đến mức drain drain
 pMOS
 logic nMOS
 – Điển hình 0 là 0V, 1 là 5V
• Hai kiểu CMOS cơ bản 1 1 1
 x y x
 – nMOS dẫn nếu “cổng” =1 x F = x'
 F = (xy)' y
 – pMOS dẫn nếu “cổng” =0 x F = (x+y)'
 – Vì thế gọi là “complementary” 0 y x y
 0 0
• Các cổng cơ bản inverter NAND gate NOR gate
 – Đảo, NAND, NOR
 32
 Các cổng logic cơ bản
 x F x F x x y F x x y F x x y F
 F F F
 0 0 y 0 0 0 y 0 0 0 y 0 0 0
 1 1 0 1 0 0 1 1 0 1 1
 1 0 0 1 0 1 1 0 1
 F = x F = x y F = x + y F = x y
 1 1 1 1 1 1 1 1 0
 Driver AND OR XOR
 x F x F x x y F x x y F x x y F
 F F F
 0 1 y 0 0 1 y 0 0 1 y 0 0 1
 1 0 0 1 1 0 1 0 0 1 0
F = x’ F = (x y)’ 1 0 1 F = (x+y)’ 1 0 0 F = x y 1 0 0
Inverter NAND 1 1 0 NOR 1 1 0 XNOR 1 1 1
 33
 Thiết kế logic tổ hợp
 A) Mô tả vấn đề B) Bảng chân lý C) Phƣơng trình đầu ra
y là 1 nếu a là 1, hoặc b và c là 1. z là 1 Inputs Outputs y = a'bc + ab'c' + ab'c + abc' + abc
nếu b hoặc c là 1, nhƣng không phải cả a b c y z
hai, hoặc nếu tất cả là 1. 0 0 0 0 0
 0 0 1 0 1 z = a'b'c + a'bc' + ab'c + abc' + abc
 0 1 0 0 1
 0 1 1 1 0
 1 0 0 1 0
 1 0 1 1 1
 D) Phƣơng trình đầu ra tối thiểu 1 1 0 1 1
 1 1 1 1 1
 y bc E) Mạch logic
 a 00 01 11 10
 0 0 0 1 0
 a y
 1 1 1 1 1 b
 c
 y = a + bc
 z
 bc
 a 00 01 11 10
 0 0 1 0 1
 z
 1 0 1 1 1
 z = ab + b’c + bc’
 34
 Các phần tử mạch tổ hợp
 A B
 I(log n -1) I0 A B A B
 I(m-1) I1 I0 n
  n n n n
 n 
 n bit, 
 log n x n n-bit n-bit
 S0 n-bit, m x 1 m function S0
 Decoder Adder Comparator
  Multiplexor ALU 
  n
 S(log m) n n S(log m)
 O(n-1) O1 O0 carry sum less equal greater
 O O
O = O0 =1 nếu I=0..00 sum = A+B Less = 1 nếu A<B O = A op B
I0 nếu S=0..00 O1 =1 nếu I=0..01 (n bit đầu) equal =1 nếu A=B op đƣợc xác định bởi S.
I1 nếu S=0..01  carry = bit thứ (n+1) của greater=1 nếu A>B
 O(n-1) =1 nếu I=1..11 A+B 
I(m-1) nếu S=1..11
 Với đầu vào enable e Với đầu vào Carry-in Có thể có các đầu ra 
 tất cả các bit đầu ra là 0 Ci trạng thái.
 nếu e=0
 sum = A + B + Ci
 35
 Các phần tử mạch tuần tự
 I
 n
 load
 n-bit shift n-bit n-bit
 Register Shift register Counter
 clear I Q
 n n
 Q Q
Q = Q = lsb Q = 
 0 nếu clear=1, - Nội dung đƣợc dịch 0 nếu clear=1,
 I nếu load=1 and clock=1, - I đƣợc lƣu trong msb Q(prev)+1 nếu count=1 và clock=1.
 Q(previous) nếu khác.
 36
 Thiết kế mạch tuần tự
 A) Mô tả vấn đề C) Mô hình thực hiện D) Bảng trạng thái (Moore-type)
Giả sử ta muốn xây dựng 1 bộ chia 
 x
xung clock. Đầu ra có tín hiệu “1” a Mạch tổ hợp Inputs Outputs
sau mỗi 4 xung clock. I1 Q1 Q0 a I1 I0 x
 0 0 0 0 0
 I0 0
 0 0 1 0 1
 0 1 0 0 1 0
 Q1 Q0 0 1 1 1 0
 1 0 0 1 0 0
 B) Đồ hình trạng thái Thanh ghi trạng thái 1 0 1 1 1
 1 1 0 1 1
 a=0 x=0 x=1 a=0 1
 I1 I0 1 1 1 0 0
 0 a=1 3
 a=1 a=1
 1 2
 a=1 • Cho mô hình thực hiện này
 a=0 x=0 x=0 a=0
 – Vấn đề thiết kế mạch tuần tự trở thành thiết 
 kế mạch tổ hợp
 37
 Thiết kế mạch tuần tự (cont.)
 E) Phƣơng trình đầu ra tối thiểu F) Mạch tổ hợp
I1 Q1Q0
 a 00 01 11 10
 a
 0 0 0 1 1
 I1 = Q1’Q0a + Q1a’ + x
 Q1Q0’
 1 0 1 0 1
 I0 Q1Q0
 00 01 11 10 I1
 a
 0 0 1 1 0 I0 = Q0a’ + Q0’a
 1 1 0 0 1
 x Q1Q0 I0
 a 00 01 11 10
 0 0 0 1 0 x = Q1Q0
 Q1 Q0
 1 0 0 1 0
 38
Mô hình cơ bản của bộ xử lý chức năng đơn 
 chuyên biệt
 Các đầu vào Các đầu vào 
 điều khiển dữ liệu bên Bộ điều khiển Luồng dữ liệu
 bên ngoài ngoài
 Các đầu vào Trạng thái Thanh ghi
 đk luồng dữ tiếp theo và 
 Bộ điều liệu Luồng dữ điều khiển 
 khiển liệu logic
 Các đầu ra 
 đk luồng dữ Thanh ghi Các đơn vị 
 chức năng
  liệu  trạng thái
 Các đầu ra Các đầu ra 
 điều khiển dữ liệu bên 
 bên ngoài ngoài
 Bộ điều khiển và luồng dữ liệu Nhìn bên trong bộ điều khiển và luồng dữ liệu
 39
 Ví dụ bộ xử lý chức năng đơn chuyên biệt
 Tìm ƣớc số chung lớn nhất
 !1
 (a) Sơ đồ khối 1: (c) Giản đồ 
• Đầu tiên tạo ra thật toán 1 !(!go_i) trạng thái
 2:
• Biến đổi thuật toán thành go_i x_i y_i !go_i
 2-J:
 GCD
 giản đồ trạng thái 3: x = x_i
 d_o
 – Thƣờng gọi là FSMD 
 4: y = y_i
 (finite-state machine with 
 (b) Chức năng yêu cầu
 datapath) 5: !(x!=y)
 0: int x, y; x!=y
 1: while (1) { 6:
 – Có thể sử dụng biểu tƣợng 2: while (!go_i);
 để thực hiện việc chuyển 3: x = x_i; x<y !(x<y)
 4: y = y_i; 7: y = y -x 8: x = x - y
 đổi 5: while (x != y) {
 6: if (x < y) 6-J:
 7: y = y - x;
 else 5-J:
 8: x = x - y; 9: d_o = x
 }
 9: d_o = x; 1-J:
 }
 40
 Biểu tƣợng giản đồ trạng thái
 Câu lệnh gán Câu lệnh lặp Câu lệnh rẽ nhánh
a = b while (đk) if (c1)
Câu lệnh tiếp { c1 stmts
theo thân vòng lặp else if c2
 } c2 stmts
 Câu lệnh tiếp theo else
 other stmts
 Câu lệnh tiếp theo
 !đk
 a = b C: C:
 đk c1 !c1*c2 !c1*!c2
 Thân vòng 
 Câu lệnh c1 stmts c2 stmts others
 tiếp theo lặp
 J: J:
 Câu lệnh Câu lệnh 
 tiếp theo tiếp theo
 41
 Tạo ra tuyến dữ liệu
 !1
• Tạo ra một thanh ghi cho 1:
 1 !(!go_i)
 biến đƣợc khai báo 2:
 x_i y_i
 !go_i
 Datapath
• Tạo ra một hàm cho mỗi 2-J:
 x_sel
 3: x = x_i n-bit 2x1 n-bit 2x1
 thuật toán tính toán y_sel
 x_ld
 4: y = y_i 0: x 0: y
• Kết nối các cổng, thanh ghi y_ld
 5: !(x!=y)
 và hàm != < subtractor subtractor
 x!=y
 5: x!=y 6: x<y 8: x-y 7: y-x
 – Dựa trên việc đọc và ghi 6: x_neq_y
 x<y !(x<y)
 x_lt_y 9: d
• Tạo ra bộ nhận dạng đồng 7: y = y -x 8: x = x - y d_ld
 d_o
 nhất 6-J:
 – Đối với mỗi luồng dữ liệu, 5-J:
 điều khiển đầu vào và đầu ra 9: d_o = x
 1-J:
 42
 Tạo ra biểu đồ trạng thái (FSM) cho bộ điều khiển
 !1 go_i
 1:
 Controller !1 • Có cùng cấu trúc nhƣ 
 1 !(!go_i) 0000 1:
 2: 1 !(!go_i)
 0001 2: FSMD
 !go_i
 !go_i
 2-J:
 0010 2-J: • Thay thế các phép tính 
 3: x = x_i x_sel = 0
 0011 3: x_ld = 1 phức tạp bằng luồng dữ 
 4: y = y_i
 y_sel = 0
 0100 4: y_ld = 1 liệu x_i y_i
 !(x!=y)
 5: !x_neq_y Datapath
 0101 5:
 x!=y x_sel
 x_neq_y n-bit 2x1 n-bit 2x1
 6: 0110 6: y_sel
 x<y !(x<y) x_lt_y !x_lt_y x_ld
 0: x 0: y
 y_sel = 1 x_sel = 1
7: y = y -x 8: x = x - y 7: 8: y_ld
 y_ld = 1 x_ld = 1
 6-J: 0111 1000
 1001 6-J: != < subtractor subtractor
 5: x!=y 6: x<y 8: x-y 7: y-x
 5-J: 1010 5-J: x_neq_y
 9: d_o = x 1011 9: d_ld = 1 x_lt_y 9: d
 d_ld
 1100 1-J:
 1-J: d_o
 43
 Tách thành bộ điều khiển và luồng dữ liệu
 go_i
Mô hình thực hiện bộ điều khiển (a) Bộ điều khiển !1
 0000 1: x_i y_i
 go_i
 x_sel 1 !(!go_i) (b) Dữ liệu
 Mạch tổ hợp y_sel 0001 2:
 !go_i x_sel
 x_ld n-bit 2x1 n-bit 2x1
 y_ld 0010 2-J: y_sel
 x_sel = 0 x_ld
 x_neq_y 0: x 0: y
 0011 3: x_ld = 1
 x_lt_y y_ld
 d_ld
 y_sel = 0
 0100 4: y_ld = 1
 != < subtractor subtractor
 x_neq_y=0 5:5: x!=y 6: x<y 8: x-y 7: y-x
 0101 5: x_neq_y
 Q3 Q2 Q1 Q0 x_neq_y=1
 0110 6: x_lt_y 9: d
 Thanh ghi d_ld
 x_lt_y=1 x_lt_y=0
 I3 I2 I1 I0
 7: y_sel = 1 8: x_sel = 1 d_o
 y_ld = 1 x_ld = 1
 0111 1000
 1001 6-J:
 1010 5-J:
 1011 9: d_ld = 1
 1100 1-J:
 44
Bảng trạng thái điều khiển cho ví dụ Tìm ƣớc số 
 chung lớn nhất (GCD)
 Inputs Outputs
Q3 Q2 Q1 Q0 x_neq x_lt_ go_i I3 I2 I1 I0 x_sel y_sel x_ld y_ld d_ld
 _y y
 0 0 0 0 * * * 0 0 0 1 X X 0 0 0
 0 0 0 1 * * 0 0 0 1 0 X X 0 0 0
 0 0 0 1 * * 1 0 0 1 1 X X 0 0 0
 0 0 1 0 * * * 0 0 0 1 X X 0 0 0
 0 0 1 1 * * * 0 1 0 0 0 X 1 0 0
 0 1 0 0 * * * 0 1 0 1 X 0 0 1 0
 0 1 0 1 0 * * 1 0 1 1 X X 0 0 0
 0 1 0 1 1 * * 0 1 1 0 X X 0 0 0
 0 1 1 0 * 0 * 1 0 0 0 X X 0 0 0
 0 1 1 0 * 1 * 0 1 1 1 X X 0 0 0
 0 1 1 1 * * * 1 0 0 1 X 1 0 1 0
 1 0 0 0 * * * 1 0 0 1 1 X 1 0 0
 1 0 0 1 * * * 1 0 1 0 X X 0 0 0
 1 0 1 0 * * * 0 1 0 1 X X 0 0 0
 1 0 1 1 * * * 1 1 0 0 X X 0 0 1
 1 1 0 0 * * * 0 0 0 0 X X 0 0 0
 1 1 0 1 * * * 0 0 0 0 X X 0 0 0
 1 1 1 0 * * * 0 0 0 0 X X 0 0 0
 1 1 1 1 * * * 0 0 0 0 X X 0 0 0
 45
 Hoàn thiện thiết kế bộ xử lý chức năng đơn 
 chuyên biệt GCD
• Chúng ta đã tạo ra tuyến  
 dữ liệu Bộ điều khiển Tuyến dữ liệu
• Chúng ta đã có bảng 
 Trạng thái Thanh ghi
 tiếp theo và 
 trạng thái và điều khiển điều khiển 
 logic logic
 – Bộ phận bên trái là thiết 
 Thanh ghi Đơn vị chức 
 kế logic năng
• Không phải là một thiết 
 kế tối ƣu, nhƣng chúng  
 ta đã thực hiện các bƣớc 
 thiết kế cơ bản Bên trong bộ điều khiển và tuyến dữ liệu
 46
 Thiết kế bộ xử lý chức năng đơn chuyên biệt 
 mức chuyển đổi thanh ghi (RT)
• Chúng ta thƣờng bắt đầu 
 với một giản đồ trạng thái Gửi Bridge Nhậ
 rdy_in A single-purpose processor that rdy_out n
 converts two 4-bit inputs, arriving one 
 – Khác với thuật toán clock at a time over data_in along with a 
 rdy_in pulse, into one 8-bit output on 
 – Việc lặp lại chu trình thƣờng data_out along with a rdy_out pulse.
 data_in(4) data_out(8)
 chỉ chú ý đến chức năng nghĩa vấn Định đề
• Ví dụ
 rdy_in=0 Bridge rdy_in=1
 – Một bộ chuyển đổi bus biến rdy_in=1
 WaitFirst4 RecFirst4Start RecFirst4End
 đổi một bus 4-bit sang bus 8- data_lo=data_in
 bit rdy_in=0 rdy_in=0 rdy_in=1
 rdy_in=1
 – Bắt đầu với FSMD WaitSecond4 RecSecond4Start RecSecond4End
 data_hi=data_in
 – Thƣờng đƣợc biết nhƣ mức 
 FSMD rdy_in=0
 Inputs
 chuyển đổi thanh ghi (RT) Send8Start rdy_in: bit; data_in: bit[4];
 Send8End
 data_out=data_hi Outputs
 rdy_out=0
 – Bài tập: hoàn thành thiết kế & data_lo rdy_out: bit; data_out:bit[8]
 rdy_out=1 Variables
 data_lo, data_hi: bit[4];
 47
 Tối ƣu bộ xử lý chức năng đơn
• Tối ƣu là nhiệm vụ tạo ra các giá trị của thông số thiết 
 kế phù hợp nhất có thể
• Các cơ hội tối ƣu
 – Chƣơng trình nguồn
 – FSMD
 – Tuyến dữ liệu
 – FSM
 48
 Tối ƣu chƣơng trình nguồn
• Phân tích thuộc tính của chƣơng trình và tìm ra các 
 khu vực có thể cải tiến đƣợc
 – Số phép tính
 – Kích thƣớc biến
 – Độ phức tạp về thời gian và không gian
 – Các toán hạng sử dụng
 • Ví dụ phép nhân và phép chia rất phức tạp về độ tính toán
 49
 Tối ƣu chƣơng trình nguồn (cont’)
original program optimized program
 0: int x, y; 0: int x, y, r;
 1: while (1) { 1: while (1) {
 2: while (!go_i); 2: while (!go_i);
 3: x = x_i; // x must be the larger number
 4: y = y_i; 3: if (x_i >= y_i) {
 5: while (x != y) { 4: x=x_i; 
 replace the subtraction 
 6: if (x < y) 5: y=y_i;
 operation(s) with modulo 
 7: y = y - x; }
 operation in order to speed 
 else 6: else {
 up program
 8: x = x - y; 7: x=y_i; 
 } 8: y=x_i;
 9: d_o = x; }
 } 9: while (y != 0) {
 10: r = x % y;
 11: x = y; 
 12: y = r;
 }
 13: d_o = x;
 }
GCD(42, 8) - 9 iterations to complete the loop GCD(42,8) - 3 iterations to complete the loop
x and y values evaluated as follows : (42, 8), (43, 8), x and y values evaluated as follows: (42, 8), (8,2), 
(26,8), (18,8), (10, 8), (2,8), (2,6), (2,4), (2,2). (2,0)
 50
 Tối ƣu FSMD
• Các trƣờng hợp có thể cải tiến
 – Ghép trạng thái
 • Trạng thái không có biến đổi (chuyển trạng thái) có thể bỏ đi
 • Trạng thái với các hoạt động độc lập có thể ghép 
 – Tách trạng thái
 • Các trạng thái yêu cầu các toán hạng phức tạp (a*b*c*d) có thể tách 
 thành các trạng thái nhỏ hơn để giảm kích thƣớc phần cứng
 – Lập lịch
 51
 Tối ƣu FSMD (cont.)
 int x, y;
 !1 FSMD ban đầu FSMD tối ưu
 1:
 int x, y;
 1 !(!go_i) Loại bỏ trạng thái 1 – quá trình chuyển có giá trị không 
 2: 2:
 đổi
 !go_i go_i !go_i
 x = x_i
 2-J: 3:
 Ghép trạng thái 2 và trạng thái 2J – không có hoạt y = y_i
 3: x = x_i động lặp trong nó
 5:
 4: y = y_i Ghép trạng thái 3 và 4 – hoạt động gán độc lập với các xy
 hoạt động khác 7: y = y -x 8: x = x - y
 5: !(x!=y)
 x!=y
 9: d_o = x
 6: Ghép trạng thái 5 và 6 – việc chuyển sang trạng thái 6 
 x<y !(x<y) có thể thực hiện ở trạng thái 5
 y = y -x x = x - y
7: 8:
 Loại bỏ trạng thái 5J và 6J – việc chuyển từ mỗi trạng 
 6-J: thái có thể thực hiện từ trạng thái 7 hoặc 8, tƣơng ứng
 5-J:
 Loại bỏ trạng thai 1-J – chuyển từ trạng thái 1-J có thể 
 d_o = x thực hiện trực tiếp từ trạng thái 9
 9:
 1-J:
 52
 Tối ƣu tuyến dữ liệu
• Chia sẻ các bộ phận chức năng
 – Ghép từng chức năng, nhƣ thực hiện trong phần trƣớc, là 
 không cần thiết
 – Nếu có cùng hoạt động xảy ra trong các trạng thái khác 
 nhau, chúng có thể chia sẻ một đơn vị chức năng đơn
• Các bộ phận đa chức năng
 – ALUs hỗ trợ một loạt các hoạt động, nó có thể chia sẻ các 
 hoạt động trong các trạng thái khác nhau
 53
 Tối ƣu FSM
• Mã hóa trạng thái
 – Là nhiệm vụ gán một mẫu bit duy nhất tới mỗi trạng thái 
 trong một FSM
 – Kích thƣớc của thanh ghi trạng thái và mạch tổ hợp biến đổi
 – Có thể đƣợc xem xét nhƣ một vấn đề sắp xếp
• Tối ƣu trạng thái
 – Là nhiệm vụ ghép các trạng thái tƣơng đồng thành một trạng 
 thái duy nhất
 • Trạng thái tƣơng đồng nếu kết hợp tất cả các đầu vào, hai trạng thái 
 tạo ra cùng đầu ra và cùng chuyển tới trạng thái kế tiếp
 54
 Tóm tắt
• Bộ xử lý chức năng đơn chuyên biệt
 – Kỹ thuật thiết kế trực tiếp
 – Có thể đƣợc xây dựng để thực hiện các thuật toán
 – Thƣờng bắt đầu với FSMD
 – Công cụ CAD có thể trợ giúp đắc lực
 55

File đính kèm:

  • pdfbai_giang_thiet_ke_he_thong_nhung_chuong_2_cau_truc_phan_cun.pdf