VI XỬ LÝ VÀ HỆ VI XỬ LÝ b THIẾT KẾ PHẦN CỨNG CỦA HỆ VXL - Thiết kế bộ nhớ cho hệ thống VXL Ghép nối các Chíp nhớ bán dẫn có sẵn với Bus hệ thống sao cho khi bộ VXL truy cập bộ nhớ không
Trang 1VI XỬ LÝ TRONG
ĐO LƯỜNG VÀ ĐIỀU KHIỂN 1
Giảng viên: TS Đoàn Thị Hương Giang
ĐT: 037 263 0593 Email: giangdth@epu.edu.vn
MICROCONTROLLER
(µC, MCU)
1
[1] Họ Vi điều khiển 8051, Tống Văn On
[2] Cấu trúc và lập trình cho họ vi điều khiển 8051, Nguyễn Tăng Cường
[3] MCS51 Microcontroller Family User’s Manual, Intel (334 pages)
[4] Kỹ Thuật vi xử lý, Văn Thế Minh
[5] Kỹ Thuật VXL và Lập Trình Assembly về VXL, Đỗ Xuân Tiến
[6] Cấu Trúc – Lập Trình – Ghép Nối và Ứng dụng Vi điều khiển (tập 1, 2),
Nguyễn Mạnh Giang
TÀI LIỆU THAM KHẢO
Trang 21 Các hệ đếm và mã hóa thông tin
Chuyển đổi giữa các hệ đếm:
Mọi hệ đếm → Hệ thập phân : Dùng công thức khai triển tổng quát
Trang 3Chuyển đổi giữa các hệ đếm:
Hệ thập phân → Nhị phân : Chia liên tiếp cho 2 và lấy ngược lại
Hệ thập phân → Hexa : Chia liên tiếp cho 16 và lấy ngược lại
dư 155 16 9
dư 11
Cách tính này làm sẽ nhanh đối với những số lớn
Cách tính này làm sẽ lâu đối với những số lớn
a) 1256 Hệ 2 và hệ 16
B: 0100 1110 1000B 4E8H
b) 137 hệ 2 và hệ 16
10001001B 89H
Trang 4TS Đoàn Thị Hương Giang 7
HEXA → BINARY (Chuyển từ hexa sang nhị phân)
Ví dụ số hexa: 0 DEAD H Sử dụng bảng trên ta sẽ có:
D → 1101 B
E → 1110 B
A → 1010 B
D → 1101 B DEAD (hex) → 1101 1110 1010 1101 (binary)
1.1 CÁC HỆ ĐẾM
Trang 5BINARY → HEXA (Chuyển từ nhị phân sang hexa)
Ví dụ cho mã nhị phân sau: 10110111101111
Lấy từ phải sang trái, gom 4 bit một và chuyển sang mã hexa
2 Mã ASCII (American Standard Code for Information
Interchange): Là mã chuẩn quốc tế của Hoa Kỳ, sẽ là mã
dùng chủ yếu trong máy tính và các ngôn ngữ máy khác để
Trang 6TS Đoàn Thị Hương Giang 11
Trang 7Thập phân
1.2 CÁC MÃ
3 Mã BCD (Binary Coded Decimal): Là mã thập phân biểu diễn dưới dạng nhị
phân 4 bít (mã BCD gói_packed) hoặc 8 bit (mã BCD không gói_unpacked)
Sự khác nhau giữa mã BCD và nhị phân:
12D → 1100B 1 D → ( 0001 0010 )BCD 1 D → (000 00010000 0010)BCD
Binary
BCD gói BCD không gói
Ứng dụng trong hiển thị LED 7 thanh
Decimal
Trang 81 CÁC HỆ ĐẾM VÀ MÃ HÓA THÔNG
TIN
1.2 CÁC MÃ
5 Biểu diễn số âm:
Biểu diễn số không dấu:
Biểu diễn số số âm:
Biểu diễn dưới dạng số có dấu.
Biểu diễn dưới dạng mã bù 1
Biểu diễn dưới dạng mã bù 2
Cơ bản
(của số dương tương ứng)
1.2 CÁC MÃ
5 Biểu diễn số âm:
Số có dấu: Biểu diễn dưới dạng mã nhị phân và bít có trọng số cao nhất
(MSB) là bit quy ước dấu
Nếu số có dấu 8 bit: Thì bit7 sẽ là bit quy ước dấu:
Nếu 8bit số có dấu sẽ đi từ: -127,…., -0,+0,….+127
Trang 91 CÁC HỆ ĐẾM VÀ MÃ HÓA THÔNG
TIN
1.2 CÁC MÃ
5 Biểu diễn số âm:
Mã bù 1: Là mã biểu diễn dưới dạng mã nhị phân trong đó các bit là giá trị
đảo của số nhị phân của số dương tương ứng.
+ 0000 0101
1111 1010
1.2 CÁC MÃ
5 Biểu diễn số âm:
Mã bù 2: Là mã biểu diễn dưới dạng mã nhị phân được tính như sau
Trang 10TS Đoàn Thị Hương Giang 19
Trang 11CÂY VI XỬ LÝ (Microprocessor_ µP):
4004 (Intel) ← 1971
8088 8086 8085 8080
Intel
Bộ VXL là một mạch tích hợp hàng ngàn thậm chí hàng triệu Transistor (LSI,
VLSI, MSI) được kết nối với nhau Các Transistor cùng nhau làm việc để lưu
trữ và xử lý dữ liệu cho bộ VXL Chúng có thể thực hiện nhiều chức năng hữu
ích.
Chức năng của một bộ VXL được xác định bằng phần mềm (có thể lập
trình được).
LSI: Large Scale Integration
VLSI: Very Large Scale Integration
MSI: Medium Scale Integration
2 VI XỬ LÝ VÀ HỆ VI XỬ LÝ
Trang 12b) Lịch sử phát triển của bộ VXL.
- Thế hệ 1: (1971-1973)
Năm 1971: hãng Intel cho ra đời bộ VXL đầu tiên 4004 (4 bít)
Năm 1972: Bộ VXL 8008 (8 bít) cũng của Intel.
- Thế hệ 2: (1974-1977)
Các bộ VXL đại diện cho thế hệ này là: 8080 và 8085 (Intel), 6800 và
6809 (Motorola) và Z80 của Zilog
- Register: Thanh ghi
- PC (Program Counter): Bộ đếm chương trình
- IR (Intruction Register): Thanh ghi lưu giữ mã lệnh được thực thi
2 VI XỬ LÝ VÀ HỆ VI XỬ LÝ
Trang 132
n-opcode
Address Bus
Data Bus Control Bus Read (2)`
(4) (1)
+) Mã lệnh được gửi lên kênh dữ liệu (Data bus)
+) Nội dung PC tăng lên một: PC+1 chuẩn bị lệnh kế tiếp
- Giai đoạn thực thi lệnh:
Giải các mã lệnh tạo ra các tín hiệu điều khiển việc xuất/nhập thanh ghi
nội với ALU thông báo cho ALU để thực hiện các thao tác được xác định
2 VI XỬ LÝ VÀ HỆ VI XỬ LÝ
Trang 14I/O ports: Các cổng vào ra
BUS: Tuyến truyền thông tin (địa chỉ, dữ liệu, điều khiển)
Address Bus (A-Bus): Tuyến địa chỉ
Data Bus (D-Bus): :Tuyến dữ liệu
Control Bus (C-Bus): Tuyến điều khiển
2 VI XỬ LÝ VÀ HỆ VI XỬ LÝ
b) THIẾT KẾ PHẦN CỨNG CỦA HỆ VXL
- Thiết kế bộ nhớ cho hệ thống VXL
Ghép nối các Chíp nhớ bán dẫn có sẵn với Bus hệ thống sao cho khi bộ
VXL truy cập bộ nhớ không xảy ra xung đột giữa các chíp nhớ với
nhau và xung đột với các chip làm cổng vào/ra.
- Thiết kế các cổng vào ra cho hệ thống VXL
Ghép nối các chip MSI hoặc LSI thường dùng làm cổng vào/ra với Bus
hệ thống sao cho khi truy cập giữa VXL với bộ nhớ, cổng vào ra và ngược
lại không bị xung đột.
2 VI XỬ LÝ VÀ HỆ VI XỬ LÝ
Trang 15b) THIẾT KẾ PHẦN CỨNG CỦA HỆ VXL
- Thiết kế bộ nhớ cho hệ thống VXL
Ví dụ EEPROM (24C xx ):
24C256: dung lượng là 256Kbit = 32KB (256/8bit)
24C512 : dung lượng là 512Kbit = 64KB
Các loại ROM : Flash, EEPROM, EPROM, PROM
Các loại RAM : SRAM, DRAM, NV-RAM (Nonvolatile RAM)
TS Đoàn Thị Hương Giang
c) THIẾT KẾ PHẦN MỀM
- Viết chương trình điều khiển hoạt động của hệ thống
(thường dùng hợp ngữ Assembly, ngôn ngữ C)
- Dịch chương trình đã viết sang ngôn ngữ máy ( BIN hoặc HEX) bằng
chương trình dịch thích hợp (Read51, Keil, Codevision, Mplab…)
- Nạp ngôn ngữ máy vào bộ nhớ của hệ thống VXL
- Kiểm tra hoạt động của hệ thống và thực hiện hiệu chỉnh nếu cần thiết
- Có thể sử dụng chương trình mô phỏng trên máy tính để kiểm tra
2 VI XỬ LÝ VÀ HỆ VI XỬ LÝ
Trang 164 SO SÁNH BỘ VXL VÀ BỘ VĐK
Phần cứng CPU chip đơn
CPU, ROM, RAM, TIMER, SFR, Mạch giao tiếp, Hệ thống ngắt,
Cơ chế đ/k ngắt (ON CHIP)
-Các nhóm lệnh chính (di chuyển,
rẽ nhánh, tính toán số học, đ/k biến logic)
Ứng dụng Trong các hệ máy tính Trong các hệ thống ĐL và ĐK…
2 VI XỬ LÝ VÀ HỆ VI XỬ LÝ
Một số loại kiến trúc và tập lệnh trong VĐK
• Kiến trúc Harvard và Von Neuman
– Harvard: PIC, AVR
– Von Neuman: 8051
• Tập lệnh RISC và CISC
– RISC: PIC, AVR, ARM
– CISC: 8051
Trang 17Kiến trúc Harvard
• CPU giao tiếp với Data memory (bộ nhớ dữ liệu) và
Program memory (bộ nhớ chương trình) một cách tách
biệt Hay nói các khác, bộ nhớ dữ liệu và bộ nhớ
chương trình được truy xuất một cách độc lập
Khi data và code nằm ở cácvùngnhớ (block) khác nhau,
ta gọi kiểu kiến trúc đó là
“kiến trúc Harvard”
Khác với Von Neumann, kiến trúc Harvard phân biệt rõ ràng bộ nhớ dữ liệu và
bộ nhớ chương trình Nhờ đó, instruction và data có thể được lôi ra cùng một
lúc, giúp tăng tốc độ xử lý của CPU Hầu hết các bộ xử lý DSP hiện nay sử
dụng kiến trúc harvard
Kiến trúc Harvard
Trang 18Kiến trúc Von Neuman
• Trong khi đó, nhìn về bên phải của hình vẽ ta thấy CPU
giao tiếp (truy cập) với cả hai bộ nhớ (dữ liệu và chương
trình) chỉ qua một đường duy nhất và cách giao tiếp đó
thuộc kiến trúc Von-Neuman.
Khi data và code nằm chung một vùng nhớ, ta gọi đó
là“kiến trúc Von NeuMann”
Máy tính làsự kết hợp của 4 thành phần: ALU, CU, bộ
nhớ chứa lệnh và dữ liệu(RAM), các thiết bị I/O
Cáclệnh thực hiện tuần tự, mỗi thời điểm chỉ thực hiện 1
lệnh
Thực thi lệnh trong kiến trúc Von
Neuman
lệnh được lưu trữ trong cùng một vùng nhớ (ở đây
là RAM) nên phải có cách phân biệt chúng Do giá
trị trên các vùng nhớ chỉ là số nhị phân 0,1 nên
khối CU – control unit sẽ đảm nhận nhiệm vụ phân
biệt lệnh và dữ liệu
• Khi khối CU bắt đầu gọi một lệnh để xử lý, nó gọi
tới bộ đếm chương trình – Program Counter đẻ trỏ
tới địa chỉ của lệnh trong bộ nhớ, rồi lệnh này sẽ
được nạp và thực thi bởi vi xử lý Địa chỉ của dữ
liệu cần xử lý được chứa trong chính lệnh cần thực
thi
Counter sẽ tăng lên để trỏ tới lệnh tiếp theo cần
thực thi Quá trình này là tuần tự, nghĩa là tại mỗi
Trang 19So sánh Harvard và Von Neuman
liệu diễn ra song song vì sử
dụng hai đường bus khác
nhau
• Tốc độ xử lý thấp hơn
• Độ rộng Bus phải giống nhau
• Code và data chia sẻ bộ nhớ chonhau
• Tận dụng được tài nguyên bộ nhớ
• Thiết kế đơn giản
• Thực hiện lệnh và thao tác dữ liệudiễn ra tuần tự vì sử dụng chungbus
- Instruction Set Architecture
Reduced instruction set computing (RISC)
Complex instruction set computing (CISC)
RISC and CISC Processors
CISC tiếp cận theo hướng làm giảm tối đa số dòng code assembly
RISC thì cố gắng xây dựng các lệnh đơn giản sao cho chúng có thể được
hoàn thành trong một chu kỳ của clock
Trang 20So sánh tập lệnh RISC và CISC
Kích thước tập lệnh
Nhỏ: Thường ít hơn 100 lệnh và sử dụng định dạng lệnh cố định (32 bit) Nó sử dụng một vài chế độ địa chỉ đơn giản.
Lớn: Khoảng 120 đến 350 lệnh Sử dụng các kiểu định dạng biến với nhiều chế độ địa chỉ.
Định dạng lệnh
Định dạng cố định (32-bit) Cácmỗi lệnh).định dạng biến khác nhau (16-64 bit
Chế độ địa chỉ được sử dụng Giới hạn 3-5
12-24
Thanh ghi đa mục đích 32-192 8-24
Thiết kế bộ nhớ cache Tách bộ đệm dữ liệu và bộ đệm hướng dẫn. Bộ nhớ cache thống nhất cho hướng dẫn và dữ liệu.
Tần số xung nhịp 50-150 MHz
33-50 MHz
So sánh tập lệnh RISC và CISC
Trang 21Hình dạng thực và sơ đồ chân của
PIC16F877A
PIC16F84A có khoảng 35 lệnhRISC (Reduced Instructions Set Computer)
Kiến trúc Harvard
Pháttriển bởi Microchip
Cấu trúc bên trong vi điều khiển PIC
• 4 port (cổng) xuất nhập (I/O): A
(6 chân); B (8 chân); C (8 chân);
D (8 chân) và E (3 chân)
• 2 chân 13, 14 dùng để kết nối với
thạch anh để tạo dao động ngoài
cho PIC
PIC còn được tích hợp bên trong nó các môđun như 3 bộ định thời T0, T1, T2; Các
bộ truyền thông nối tiếp SPI, I2C, USART; PWM
Trang 22Hình dạng thực và sơ đồ chân của
AT89C52
1 2 3 4 5 6 7 8 9 1 0 1 2 3 4 5 6 7 8 9 0
4 3 3 3 3 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST
CISC (Complex Instructions Set Computer)
256 lệnh của 89c51Kiến trúc Von-Neuman
Intel pháttriển vào năm 1981
Vi điều khiển AVR
Vi điều khiển AVR có sẵn trong ba loại
• TinyAVR: – Bộ nhớ ít hơn, kích thước nhỏ, phù
hợp chỉ dành cho các ứng dụng đơn giản hơn
• MegaAVR: – Đây là những thiết bị phổ biến chủ
yếu có dung lượng bộ nhớ tốt (lên tới 256 KB), số
lượng thiết bị ngoại vi sẵn có cao hơn và thích
hợp cho các ứng dụng từ đơn giản đến phức tạp.
• XmegaAVR: – Được sử dụng trong thương mại
cho các ứng dụng phức tạp, cần bộ nhớ chương
trình lớn và tốc độ cao.
Được phát triển vào năm 1996 bởi Tập đoàn Atmel
Trang 23Bộ xử lý ARM
• Dựa trên kiến trúc RISC (máy tính tập lệnh
giảm) được phát triển bởi Advanced RISC
Machines (ARM).
Trang 24TS Đoàn Thị Hương Giang 47
1 CÁC ĐẶC TRƯNG VÀ SƠ ĐỒ CHÂN VĐK 8051
A) CÁC ĐẶC TRƯNG (FEATURE) 8051
4 KB ROM nội (on-chip)
128Byte RAM nội (on-chip)
64 KB ROM ngoài
64KB RAM ngoài
Có khả năng truy cập 210 bit
Truyền nối tiếp chuẩn UART
2 bộ Timer/Counter 16 bit
Có 6 nguồn ngắt và có 2 mức ưu tiên ngắt
Bộ tạo dao động on-chip
4 Port xuất /nhập I/O 8 bit.
Lệnh nhân, chia mất 4 µs
3 VI ĐIỀU KHIỂN HỌ 8051
Trang 25Timer 1Timer 2
Serial
128 bytes RAM
4 I/O Ports
TXD RXD
External Interrupts
P0 P2 P1 P3 Addr/Data
Comparison of the 8051 Family Members
Trang 26Comparison of the 8051 Family Members
89XX ROM RAM Timer Int
ISP: In System Programable
8051 Internal Block Diagram
Trang 2740 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
RST ( RXD ) P3.0
( TXD ) P3.1
( T0 ) P3.4
( T1 ) P3.5
XTAL2 XTAL1 GND
Trang 28Các chân quan trọng (IO Ports)
• One of the most useful features of the 8051 is that it
contains four I/O ports (P0 - P3)
– 8-bit R/W - General Purpose I/O
– Oracts as a multiplexed low byte addressand databus for externalmemory design
– Only8-bit R/W - General Purpose I/O
– 8-bit R/W - General Purpose I/O
– Orhighbyte of the addressbus for external memory design
– if not using any of the internal peripherals (timers) or external interrupts
• Each port can be used as input or output (bi-direction)
Lưu ý
• P0, P2 dùng làm bus địa chỉ:
– P0 byte thấp: A0->A7
– P2 byte cao: A8->A15
• P0 dung làm bus dữ liệu: D0->D7
• Khi nào dung với chức năng gì? Sử dụng
ALE (chân tín hiệu chốt địa chỉ) như sau:
– ALE = 0: P0 làm bus dữ liệu
Trang 29Port 3 Alternate Functions
Hardware Structure of I/O Pin
VccLoad(L1)Read latch
TB1TB2
Trang 30Writing “1” to Output Pin P1.X
VccLoad(L1)Read latch
2 output pin is Vcc
1 write a 1 to the pin
1
TB1TB2
Writing “0” to Output Pin P1.X
VccLoad(L1)Read latch
2 output pin is ground
1 write a 0 to the pin
0
TB2
Trang 31Reading “High” at Input Pin
Vcc Load(L1) Read latch
2 MOV A,P1 external pin=High
1 write a 1 to the pin MOV
Reading “Low” at Input Pin
Vcc Load(L1) Read latch
8051 IC
2 MOV A,P1 external pin=Low
1 write a 1 to the pin
Trang 32Port 0
P0.0 P0.2 P0.3 P0.5 P0.6
DS5000 8751 8951
Đặc điểm: Ngoài chức năng vào/ra thông thường còn có chức năng sau:
- Là cổng Open Drain (cực máng để hở) khác so với các cổng P1, P2,
P3 còn lại: phải mắc điện trở treo ở ngoài Rpull-up
- Là cổng đa hợp : AD0 ÷ AD7
Vừa xuất nhập dữ liệu (Data)
Vừa xuất nhập địa chỉ (Address): xuất nhập địa chỉ byte thấp
Chân chức năng đặc biệt
Vcc (chân 40):
• Cung cấp nguồn cho chip
• Nguồn +5V ±5%
GND (chân 20): Đất
XTAL1 & XTAL2 (chân 19, 18)
• 2 chân cung cấp xung clock ngoài
• Cách 1: dao động dùng thạch anh
• Cách 2: dao động từ nguồn xung clock TTL bên ngoài
Trang 33Chân chức năng đặc biệt
• Using a quartz crystal oscillator
• We can observe the frequency on the XTAL2
Chân chức năng đặc biệt
• Using a TTL oscillator
• XTAL2 is unconnected.
NC
EXTERNALOSCILLATORSIGNAL
XTAL2
XTAL1
GND
Trang 35Chương trình con sử dụng ngôn ngữ
Trang 36• Lệnh di chuyển số liệu:
Ví dụ:
Mov R1,#30 ; R1 = 30
– Mov: tiêu tốn 1 chu kỳ lệnh
– Chuyển số liệu bên phải sang bên trái dấu “,”
Mov R2, #56H ; R2 = 56H Mov a, #10010010B ; a= 10010010B
• Lệnh “nop”:
– Lệnh tiêu tốn 1 chu kỳ lệnh và máy không làm gì hết
– Được sử dụng để tạo chương trình trễ
• Lệnh “ djnz thanh ghi, nhãn ”: d ecrease and j ump if
n ot z ero
– Giảm giá trị thanh ghi đi 1 đơn vị và so sánh với 0 Nếu
khác không thì nhảy đến nhãn, nếu bằng 0 thì thực hiện
Trang 38Thời gian tạo trễ của chương trình trên nếu thạch anh sử dụng là Fta = 12MHz???
N1=(2+3)*50 = 250
Trang 39Chân chức năng đặc biệt
EA/VPP X1
X2 RST
RST (chân 9): reset
Input & kích hoạt mức cao
Để đảm bảo hoạt động reset
xảy ra, xung kích phải kéo dài ít
nhất là 2 chu kỳ máy
Giá trị các thanh ghi chịu tác
động bởi hoạt động reset
Mạch reset yêu cầu phải có
chống rung
Với thạch anh sử dụng là 6MHz thì thời gian tối thiểu để reset cho VXL
là bao lâu?
Chân chức năng đặc biệt
ALE (pin 30): A ddress L atch E nable
• Là chân output cho phép chốt địa chỉ byte thấp của
cổng đa hợp chung bus dữ liệu và bus địa chỉ.
• ALE xuất tín hiệu để chốt địa chỉ (byte thấp địa chỉ
16-bit) vào 1 thanh ghi ngoài trong suốt nửa đầu
của chu kỳ bộ nhớ (memory cycle) Trong nửa chu
kỳ bộ nhớ còn lại, P0 sẽ xuất/nhập dữ liệu
• ALE có f= (1/6)fclock
• Có 1 ngoại lệ: trong thời gian thực thi lệnh
MOVX, một xung ALE bị bỏ qua
Với thạch anh sử dụng là 24MHz thì chu kỳ chốt DL ở chân ALE là bao nhiêu?
Trang 40Chân chức năng đặc biệt
EA (chân 31): E xternal A ccess
• /EA nối GND chỉ định rằng code lưu trên bộ nhớ ngoài
• /PSEN & ALE dùng cho ROM ngoài
• Với 8051, 8031, 8032 thì /EA nối Vcc: truy cập bộ nhớ trong
• “/”: chỉ định tác động mức thấp
PSEN (chân 29): P rogram S tore En able
• Output, cho phép truy xuất bộ nhớ chương trình ngoài
• Nối tới chân /OE của ROM/EPROM
• Khi thực thi chương trình ở ROM nội, /EA được gán mức 1,
(khi đó /PSEN được tự động giữ ở mức 1)
Ex : P0.7 là bit 7 (MSB) của P0 8 bits này cấu thành 1 byte
Các cổng vào/ra (I/O= Input/Output)
Mỗi cổng có thể được dùng như input hay output:
Mặc định là cổng ra
Nếu muốn là cổng vào thì out ra mức 1 mọi chân trước khi đọc về
P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7
P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7