CHƢƠNG 2 TỔNG QUAN VỀ HỆ VI XỬ LÝ 1Mục lục 2.1. Giới thiệu chung 2.2. Cấu trúc một hệ Vi xử lý điển hình 2.3. Chu kỳ trong Vi xử lý 2.4. Tập lệnh của Vi xử lý 2.5. Ghép nối bộ nhớ 22.1. Giới thiệu chung 2.1.1. Định nghĩa Vi xử lý – Là mạch bán dẫn tích hợp trên một chip (IC) có nhiệm vụ thực hiện các công việc xử lý tín hiệu hoặc điều khiển các thành phần trong hệ thống – Vi xử lý thực hiện công việc của nó theo chƣơng trình, thuật toán do ngƣời dùng đặt ra – Ký hiệu: P hoặc uP 32.1. Giới thiệu chung • Phân loại Vi xử lý • Hoặc phân loại theo số lƣợng bit: Vi xử lý 4bit, 8bit, 16bit, 32 bit và bây giờ là 64bit. • Chip của Intel dùng nhiều trong máy tính còn của Motorola dùng nhiều trong viễn thông Vi xử lý Loại đa năng: Phục vụ cho nhiều mục đích khác nhau Ví dụ: 8080, 8085 … của Intel 6800, 6802… của Motorola Loại chuyên dụng: Phục vụ một mục đích cụ thể Ví dụ: các IC trong đồ chơi của trẻ em 42.1. Giới thiệu chung • Lịch sử ra đời và phát triển của Vi xử lý 1960 Fairchild Semiconductor: Chip bán dẫn đầu tiên 1971 Intel: 4004, 8008, 8080 1976 Zilog: Z80 TI: VXL 16bit 1982 32 bit ATT: BELLMAC32A 1985 Motorola: 680xx ARM I 1990 Power PC (IBM) 64bit 1993 1999 Intel: Pentium, Xeon, Celeron 2005 Intel: Multi Core Thương mại hóa chip bán dẫn Tăng mật độ, Máy tính trên chip VLSI và 32 bit 32bit nhường chỗ 64bit Kỷ nguyên đa lõi 52.1. Giới thiệu chung 2.1.2. Hệ Vi xử lý • Định nghĩa: – Là hệ thống số làm việc theo chƣơng trình đƣợc lƣu giữ trong bộ nhớ, xử lý dữ liệu bằng vi xử lý và đƣa ra các quyết định liên lạc với thế giới bên ngoài thông qua các cổng vào ra – Một hệ Vi xử lý luôn bao gồm 2 thành phần: Phần cứng và phần mềm 62.1. Giới thiệu chung 2.1.3. Các thành phần trong hệ Vi xử lý 72.1. Giới thiệu chung 2.1.4. Các kiến trúc thông dụng của Vi xử lý • Kiến trúc Von Neumann – Chỉ có một bộ nhớ chung cho dữ liệu và chƣơng trình – Đọc dữ liệu và đọc lệnh không diễn ra đồng thời 82.1. Giới thiệu chung • Kiến trúc Von Newmann 92.1. Giới thiệu chung • Kiến trúc Harvard – Có các bus độc lập cho bộ nhớ chƣơng trình và dữ liệu – Đọc dữ liệu và đọc chƣơng trình diễn ra đồng thời 102.1. Giới thiệu chung • Kiến trúc Harvard 112.1. Giới thiệu chung • Kiến trúc SHARC – Super Harvard Architecture – Thêm vào một số đặc trƣng để cải thiện băng thông dữ liệu 122.1. Giới thiệu chung • Kiến trúc DSP – Digital Signal Processing 132.2. Cấu trúc của một hệ VXL điển hình 2.2.1. Cấu trúc chung của một hệ VXL điển hình 142.2. Cấu trúc của một hệ VXL điển hình • Cấu trúc rút gọn – uP: Vi xử lý – M: Bộ nhớ (Memory) – I: Cổng vàoThiết bị vào dữ liệu (Input) – O: Cổng raThiết bị xuất dữ liệu (Output) uP M I O Address Bus Data bus Control bus 152.2. Cấu trúc của một hệ VXL điển hình 2.2.2. Các thành phần cơ bản trong hệ VXL 1. Hệ thống Bus Khái niệm Kết nối kiểu kinh điển A B C D Bus Kết nối kiểu Bus 162.2. Cấu trúc của một hệ VXL điển hình – Bus là nút dùng chung của cả hệ thống, dùng để truyền dữ liệu giữa các thành phần với nhau – Bus có thể nằm trong hoặc nằm ngoài Vi xử lý – Truyền thông song song: Bus là dải (tape) dây dẫn, mỗi dây truyền 1 bit. – Truyền thông nối tiếp: Bus có thể là cáp đồng trục, xoắn đôi, quang… 172.2. Cấu trúc của một hệ VXL điển hình Tổ chức và quản lý Bus • Bus sử dụng phần tử 3 trạng thái để cách ly các phần tử trong hệ thống • Các phần tử trong hệ thống Bus đƣợc quản lý bằng địa chỉ. – Mỗi thành viên trong hệ đều đƣợc xác định 1 địa chỉ duy nhất – Quản lý địa chỉ bằng phần cứng (mỗi đầu dây, IO có 1 địa chỉ xác định) hoặc bằng phần mềm (địa chỉ IP) 182.2. Cấu trúc của một hệ VXL điển hình • Truy cập Bus: – Phƣơng pháp ngẫu nhiên: thời điểm truy cập bus của các phần tử là ngẫu nhiên. Dùng trong quảng bá • Tốc độ chậm • Quản lý số lƣợng phần tử lớn • Cần giải quyết vấn đề xung đột – Phƣơng pháp tiền định: xác định trƣớc quy luật, thời gian truy nhập • Tốc độ cao • Số phần tử ít 192.2. Cấu trúc của một hệ VXL điển hình Ưu nhược điểm • Ƣu điểm: – Tiết kiệm, đơn giản hóa hệ thống – Làm hệ có tính mở. Có thể thêm hoặc bớt phần tử dễ dàng • Nhƣợc điểm: – Tốc độ bị hạn chế do Bus là đƣờng truyền chung 202.2. Cấu trúc của một hệ VXL điển hình 2. Tổ chức cổng vào ra Thiết bị cơ bản • IC 8282 – Tích hợp mạch 3 trạng thái và chốt dữ liệu D STB D0 Q0 OE D STB D7 Q7 STB OE OE D0 – D7: 8 đường dữ liệu vào Q0 – Q7: 8 đường dữ liệu ra STB: chốt tín hiệu STB = 1: cho phép đưa dữ liệu ra STB = 1>0: chốt dữ liệu đầu ra OE: Cho phép xuất tín hiệu 212.2. Cấu trúc của một hệ VXL điển hình Tổ chức cổng vào 8282 Data bus Address bus Control bus D0…..D7 IOM RD Ax STB OE +5V Ax: Địa chỉ của thiết bị (Tín hiệu sau giải mã địa chỉ) IOM: Tín hiệu chọn thiết bị: IOM = 1 chọn cổng vào ra IOM = 0 chọn bộ nhớ RD: Lệnh chỉ thao tác đọc thiết bị 222.2. Cấu trúc của một hệ VXL điển hình Ax = 1 IOM = 1 RD = 0 Data từ bên ngoài Address Bus Control Bus Data Bus 232.2. Cấu trúc của một hệ VXL điển hình • Tổ chức cổng ra 8282 Data bus Address bus Control bus Q0…..Q7 IOM WR Ax STB OE 242.2. Cấu trúc của một hệ VXL điển hình Ax = 1 IOM = 1 WR = 0 Data đưa ra ngoàii Address Bus Control Bus Data Bus 252.2. Cấu trúc của một hệ VXL điển hình 3. Bộ nhớ • Định nghĩa: Là thiết bị dùng để lƣu trữ thông tin gồm chƣơng trình và dữ liệu • Phân loại: – Bộ nhớ chính: là bộ nhớ hoạt động, yêu cầu tốc độ cao. Chế tạo dƣới dạng bộ nhớ bán dẫn. VD: RAM – Bộ nhớ phụ: yêu cầu cao về dung lƣợng lƣu trữ và thời gian lƣu trữ. VD: ROM, HDD… 262.2. Cấu trúc của một hệ VXL điển hình • Tổ chức của bộ nhớ: Bộ nhớ đƣợc tạo thành từ các ô nhớ sắp xếp cạnh nhau về mặt logic. Các tham số của ô nhớ gồm: – Vị trí (logic) của ô nhớ: là địa chỉ của ô nhớ, do bus địa chỉ truyền đi trong hệ – Nội dung của ô nhớ: là dữ liệu chứa trong ô nhớ, do bus dữ liệu truyền đi trong hệ. Thông thƣờng, mỗi ô nhớ có độ lớn là 8bit (1byte) Quản lý bộ nhớ bằng phương pháp địa chỉ hóa các ô nhớ 272.2. Cấu trúc của một hệ VXL điển hình • Các phƣơng pháp địa chỉ hóa ô nhớ – Phƣơng pháp địa chỉ tuyệt đối: • Địa chỉ của một ô nhớ chính là khoảng cách của nó so với địa chỉ gốc • Địa chỉ gốc thƣờng đƣợc xác định là 0 • Ứng dụng cho các loại bộ nhớ dung lƣợng nhỏ 1 0 10 11 3 2 1 0 14 1110 15 ô nhớ 282.2. Cấu trúc của một hệ VXL điển hình – Phƣơng pháp địa chỉ đoạn • Chia toàn bộ bộ nhớ thành nhiều vùng (segment), mỗi vùng có một địa chỉ xác đinh. • Địa chỉ của một ô nhớ trong bộ nhớ đƣợc xác định bởi: – Địa chỉ của segment chứa ô nhớ đó – Địa chỉ offset của ô nhớ trong segment Segment 0 Segment 1 Segment n Địa chỉ offset Địa chỉ segment 292.2. Cấu trúc của một hệ VXL điển hình – Phƣơng pháp địa chỉ đoạn (tiếp) • Các thiết bị lƣu trữ địa chỉ ô nhớ có kích thƣớc nhỏ – Ví dụ: 8085A địa chỉ hóa ô nhớ bằng 16bit > Dùng 2 thanh ghi 8bit, 1 thanh ghi chứa địa chỉ segment, 1 chứa địa chỉ offset • Quản lý đƣợc bộ nhớ có dung lƣợng lớn – Không gian nhớ: toàn bộ địa chỉ có thể địa chỉ hóa đƣợc của bộ nhớ • Nếu bus địa chỉ có n bit thì không gian nhớ là 2n địa chỉ 302.2. Cấu trúc của một hệ VXL điển hình – Bản đồ bộ nhớ: cho thấy bộ nhớ hay các thiết bị có kết nối với bus địa chỉ đƣợc đặt ở đâu trong không gian nhớ – Ví dụ: 312.2. Cấu trúc của một hệ VXL điển hình 4. Vi xử lý 8085 • Một số đặc tính cơ bản: – Bộ xử lý 8 bit tốc độ 3 – 6MHz – 4 đầu vào ngắt – Có các cổng vào ra nối tiếp – Có khả năng tính toán số học thập phân, nhị phân và dấu phẩy động – Chu kỳ lệnh 0.8s – Địa chỉ hóa trực tiếp cho 64KB bộ nhớ – …. 322.2. Cấu trúc của một hệ VXL điển hình • Sơ đồ chân linh kiện – Bus địa chỉ: AD0 – AD7 và A8 – A15 – Bus dữ liệu: AD0 – AD7 – Bus điều khiển: IOM, RD, WR… – ALE: Cho phép chốt địa chỉ – SID, SOD: vàora dữ liệu nối tiếp – S0, S1: trạng thái chu kỳ máy U5 8085 30 31 32 34 3 37 4 38 40 20 5 1 2 6 10 11 29 33 39 35 21 22 23 24 25 26 27 28 12 13 14 15 16 17 18 19 9 8 7 36 ALE WR RD IOM RSTOUT CLKOUT SOD HLDA VCC GND X2 SID TRAP X1 INTR INTA S0 S1 HOLD READY A8 A9 A10 A11 A12 A13 A14 A15 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 RST 5.5 RST 6.5 RST 7.5 RSTIN 332.2. Cấu trúc của một hệ VXL điển hình • Phối hợp các tín hiệu điều khiển – MEMR: cho phép đọc từ bộ nhớ – MEMW: cho phép ghi bộ nhớ – IOR: cho phép đọc từ cổng vào – IOW: cho phép ghi ra cổng ra 1 2 IO(M) WR IO(M) 4 5 2 4 5 2 WR IO(M) 4 5 2 RD 1 2 IO(M) MEMR IOW 4 5 2 RD IOR MEMW 342.2. Cấu trúc của một hệ VXL điển hình • Biểu đồ thời gian làm việc trong 8085 352.2. Cấu trúc của một hệ VXL điển hình • Sơ đồ cấu trúc Vi xử lý 8085 362.2. Cấu trúc của một hệ VXL điển hình • Các thành phần điển hình: – Đơn vị điều khiển (Control Unit): điều khiển và đồng bộ quá trình trao đổi và biến đổi số liệu trong hệ Vi xử lý. – Đơn vị logic số học (Arithmetic Logic Unit – ALU) thực hiện các phép toán – Hệ thống thanh ghi: lƣu giữ dữ liệu tạm thời phục vụ cho tính toán. 8085 có 7 thanh ghi mục đích chung 8 bit B, C, D, E, H, L và có thể ghép thành 3 thanh ghi 16 bit. 372.2. Cấu trúc của một hệ VXL điển hình • Các thành phần điển hình: – Thanh chứa (Accumulator – A) là một thành phần của ALU. Chứa dữ liệu 8 bit – Hệ thống cờ (Flag – F) • Cờ không – Zero (Z) • Cờ nhớ – Carry (C) • Cờ dấu – Sign (S) • Cờ chẵn lẻ – Parity (P) • Cờ nhớ phụ – Auxiliary Carry (AC) 382.2. Cấu trúc của một hệ VXL điển hình • Các thành phần điển hình: – Bộ đếm chƣơng trình (Program Counter – PC): 16 bit, là con trỏ bộ nhớ. Dùng để lập trình tự thực hiện lệnh trong Vi xử lý – Con trỏ ngăn xếp (Stack Pointer – SP): 16 bit, cũng là con trỏ bộ nhớ, trỏ đến vùng nhớ ngăn xếp (stack) – Thanh ghi lệnh và giải mã lệnh (IR, ID): lƣu giữ tạm thời lệnh hiện thời của chƣơng trình (IR), ID sẽ giải mã lệnh thành các vi lệnh 392.2. Cấu trúc của một hệ VXL điển hình – Thanh ghi địa chỉ bộ nhớ: lƣu giữ địa chỉ, nhận về từ PC, của câu lệnh tiếp theo – Bộ phát xung điều khiển (Control Generator) tạo ra các xung trong uP để thực hiện các lệnh đã đƣợc giải mã – Bộ chọn thanh ghi (Register Selector) điều khiển việc lựa chọn sử dụng các thanh ghi trong hệ thống thanh ghi của uP 402.2. Cấu trúc của một hệ VXL điển hình • Quá trình thực hiện lệnh – Địa chỉ lệnh đầu tiên: n – Sau Reset, IP = 0 – Khi thực hiện, IP = n – Địa chỉ trong IP chỉ ra vị trí câu lệnh trong chƣơng trình 412.2. Cấu trúc của một hệ VXL điển hình • Quá trình thực hiện lệnh (tiếp) ((IP)) > uP ID giải mã lệnh IP ++ Lệnh được thực hiện 42432.3. Chu kỳ trong Vi xử lý 1. Chu kỳ lệnh (Instruction Cycle) Khoảng thời gian để Vi xử lý thực hiện một lệnh từ bộ nhớ chƣơng trình. 2. Chu kỳ máy (Machine Cycle) Số bƣớc mà vi xử lý thực hiện ứng với một lệnh nhận đƣợc. Thƣờng gồm 4 bƣớc: đọc lệnh, dịch lệnh, thực hiện lệnh và lƣu giữ kết quả Bằng một số nguyên lần xung đồng hồ 442.4. Tập lệnh của Vi xử lý • 4 nhóm lệnh chủ yếu: – Nhóm lệnh di chuyển dữ liệu • VD: MOV A, B – Nhóm lệnh tính toán logic • VD: ANL A, R0 – Nhóm lệnh toán học • VD: ADD A, R1 – Nhóm lệnh nhảy và rẽ nhánh • VD: JNB TF0, LOOP • VD: ACALL LOOP 452.4. Tập lệnh của Vi xử lý • Ngày nay, tập lệnh của VXL ngày càng phong phú, thời gian thực hiện lệnh ngày càng nhanh – Do sự phát triển về công nghệ chế tạo – Do mức độ tích hợp các thiết bị ngoại vi – Do sự đa dạng của các sản phẩm – Do sự đa dạng của các hãng sản xuất – …. 462.5. Ghép nối bộ nhớ 2.5.1. Một số chip nhớ thông dụng 1. ROM – Thiết kế bởi công nghệ NMOS, CMOS – Dung lƣợng thƣờng 2Kbyte – 64Kbyte – Dữ liệu lƣu trữ dạng ma trận – Không bị ảnh hƣởng bởi việc mất điện – 2716, 2732, .., 27256 472.5. Ghép nối bộ nhớ • Ví dụ ROM 2716 482.5. Ghép nối bộ nhớ 2. RAM • Static RAM – Mỗi bít dữ liệu đƣợc lƣu trữ bởi cặp flipflop – Cấu trúc đơn giản – Ghi và xóa tín hiệu bằng điện – Dữ liệu mất đi khi mất điện – Tiêu thụ năng lƣợng lớn khi có điện – Kích thƣớc lớn khi dung lƣợng lớn – 6216, 6232, ..62256 492.5. Ghép nối bộ nhớ • Dynamic RAM – Dữ liệu ghi bằng tụ – Dữ liệu phải refresh từng 2ms > phải có bộ điều khiển refresh – Dung lƣợng lớn – Cấu trúc ma trận – Ít tổn hao điện 502.5. Ghép nối bộ nhớ • Ví dụ: RAM 62256 512.5. Ghép nối bộ nhớ 2.5.2. Ghép nối nhiều bộ nhớ • Ghép nối các chip nhớ 2Kx8bit để tạo ra bộ nhớ 4Kx8bit • Một số chú ý: – Số lƣợng bit địa chỉ phải phù hợp – Thống nhất tín hiệu điều khiển – Bộ nhớ 2Kx8bit có 11 bit địa chỉ trong khi 4Kx8bit có 12bit địa chỉ 522.5. Ghép nối bộ nhớ 53 D1 A1 A2 A0 A0..11 D6 A9 D5 A6 A8 D0 A3 RD U1 2016 8 7 6 5 4 3 2 1 23 22 19 9 10 11 13 14 15 16 17 20 21 18 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 D1 D2 D3 D4 D5 D6 D7 D8 OE WE CE Data0..7 D7 WR WR A8 U2 2016 8 7 6 5 4 3 2 1 23 22 19 9 10 11 13 14 15 16 17 20 21 18 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 D1 D2 D3 D4 D5 D6 D7 D8 OE WE CE D6 D0 A9 A4 A2 U3 NOT 2 1 A3 RD A4 A10 A7 D5 A11 A7 D7 A10 A6 A11 D2 A5 D4 A5 A0 D4 D3 D1 D2 A1 D32.5. Ghép nối bộ nhớ 2.5.3. Thiết lập bộ nhớ tại địa chỉ xác định 54Vấn đề về ngắt của Vi điều khiển Chương 3 13.4.1 Khái niệm về ngắt 1. Hệ thống điều khiển sự kiện • Eventdrive System • Là hệ thống có khả năng đáp ứng lại với các sự kiện xảy ra trong hệ • Các công việc mà hệ thống đáp ứng lại các sự kiện gọi là dịch vụ cho sự kiện (event service) 23.4.1 Khái niệm về ngắt • Ví dụ về hệ thống điều khiển sự kiện – Vòng lặp Polling: 3 int main (void) { sys_init(); while (TRUE) { if (event_1) service_event_1(); if (event_2) service_event_2(); if (event_n) service_event_n(); } }3.4.1 Khái niệm về ngắt • Một số đặc điểm của vòng lặp Polling: – Cấu trúc hệ thống đơn giản – Các sự kiện bình đẳng, không phân cấp bậc – Thời gian phản ứng 1 sự kiện phụ thuộc nhiều yếu tố – Nếu sự kiện mới thêm vào, thời gian vòng quét dài ra 43.4.1 Khái niệm về ngắt 2. Định nghĩa Ngắt của Vi điều khiển • Ý tưởng: Sự xuất hiện của một sự kiện làm “ngắt” tiến trình thực hiện chương trình chính, “nhồi” thêm và thực hiện một tiến trình khác. • Chương trình nhồi gọi là Chương trình con dịch vụ ngắt – Interrupt Service Routine (ISR) • ISR sau khi thực hiện xong, chương trình chính lại tiếp tục thực hiện 53.4.1 Khái niệm về ngắt Giản đồ thực thi chương trình: a) Không dùng ngắt; b) Có dùng ngắt 6 CHƢƠNG TRÌNH CHÍNH (CTC) Thời gian CTC Chƣơng trình con ngắt (ISR) CTC CTC ISR Thời gian a) Chƣơng trình đƣợc thực thi nhƣng không sử dụng ngắt b) Chƣơng trình có sử dụng ngắtt3.4.1 Khái niệm về ngắt • Ngắt làm chương trình có tính ưu tiên • Ngắt giúp hệ thống phản ứng nhanh hơn với các sự kiện • Ngắt làm song song hóa các tác vụ trong chương trình • Ngắt làm chương trình phức tạp hơn 73.4.2. Các nguyên nhân gây ngắt • Nguyên nhân ngắt: nguồn ngắt • Ngắt cứng: nguồn ngắt từ bên ngoài đưa tới – Ví dụ: Tín hiệu chuyển từ 1 > 0 đưa về 1 chân của vi điều khiển (nút bấm) • Ngắt mềm: nguồn ngắt từ các thiết bị ngoại vi bên trong vi điều khiển – Ví dụ: tín hiệu báo tràn bộ định thời 83.4.2. Các nguyên nhân gây ngắt • 8051 có 5 nguồn ngắt – 2 Ngắt ngoài • Lấy trên các chân INT0 và INT1 – 2 Ngắt do bộ định thời • Từ các cờ tràn TF0 và TF1 – 1 ngắt do cổng nối tiếp • Từ các cờ nhận và truyền RITI 93.4.3. Tổ chức ngắt 1. Cho phépkhông cho phép ngắt Thanh ghi IE – Interrupt Enable 10 Bit Ký hiệu Địa chỉ Mô tả IE.7 EA AFH Cho phépkhông cho phép ngắt toàn cục IE.6 AEH Không dùng IE.5 ET2 ADH Cho phép ngắt từ bộ định thời 2 (8052) IE.4 ES ACH Cho phép ngắt từ cổng nối tiếp IE.3 ET1 ABH Cho phép ngắt từ bộ đinh thời 1 IE.2 EX1 AAH Cho phép ngắt ngoài 1 IE.1 ET0 A9H Cho phép ngắt từ bộ định thời 0 IE.0 EX0 A8H Cho phép ngắt ngoài 03.4.3. Tổ chức ngắt 2. Ưu tiên ngắt Thanh ghi IP – Interrupt Priority 11 Bit Ký hiệu Địa chỉ Mô tả IP.7 Không sử dụng IP.6 Không sử dụng IP.5 PT2 BDH Ưu tiên ngắt do bộ định thời 2 IP.4 PS BCH Ưu tiên ngắt do cổng nối tiếp IP.3 PT1 BBH Ưu tiên ngắt do bộ định thời 1 IP.2 PX1 BAH Ưu tiên ngắt ngoài 1 IP.1 PT0 B9H Ưu tiên ngắt do bộ định thời 0 IP.0 PX0 B8H Ưu tiên ngắt ngoài 03.4.3. Tổ chức ngắt • Một số lưu ý – 8051 chỉ có 2 mức ưu tiên – ISR có mức ưu tiên cao có thể ngắt ISR có mức ưu tiên thấp, tình huống ngược lại không cho phép – 2 ISR có cùng mức ưu tiên không ngắt được ngắt lẫn nhau – Cùng mức ưu tiên, ngắt nào tới trước thì ISR được thực hiện trước 123.4.3. Tổ chức ngắt 3. Chuỗi vòng 13 IE1 IT1 IT1 0 0 1 1 IE0 IT0 IT0 0 0 1 1 Thanh ghi IE Thanh ghi IE Mức ngắt cao Mức ngắt cao INT0 INT0 TF0 TF0 INT1 INT1 TF1 TF1 RI RI TI TI Cho phép ngắt từng nguồn Cho phép ngắt từng nguồn Cho phép ngắt toàn cục Cho phép ngắt toàn cục Thứ tự quét các ngắt Thứ tự quét các ngắt Mức ngắt thấp Mức ngắt thấp Thanh ghi IP Thanh ghi IP3.4.3. Tổ chức ngắt 4. Vector ngắt • Là địa chỉ tương ứng mà tại đó ISR được đặt • Vector ngắt là địa chỉ đầu tiên của ISR tương ứng • Mỗi vector ngắt dành cho một nguồn ngắt xác định 143.4.3. Tổ chức ngắt • Bảng vector ngắt 15 Nguồn ngắt Cờ ngắt Địa chỉ vector Reset hệ thống RST 0000H Ngắt ngoài 0 IE0 0003H Bộ định thời 0 TF0 000BH Ngắt ngoài 1 IE1 0013H Bộ định thời 1 TF1 001BH Cổng nối tiếp TI hoặc RI 0023H3.4.3. Tổ chức ngắt 5. Một số đặc điểm của ngắt ngoài • Ngắt theo mức: – ISR của ngắt ngoài sẽ được thực hiện nếu chân ngắt ngoài INTx = 0 – INTx phải = 1 trước khi ISR thực hiện xong • Ngắt theo sườn: – ISR được thực hiện khi INTx chuyển từ 1→0 • Cài đặt bằng 2 bit IT0 và IT1 trong TCON 163.4.3. Tổ chức ngắt 6. Xử lý ngắt 17 Thực hiện nốt lệnh đang dang dở Cất nội dung PC vào Stack Lƣu trạng thái hiện hành của ngắt Các ngắt đƣợc chặn lại ở mức ngắt Nạp địa chỉ vector ngắt vào PC Thực thi ISR3.4.3. Tổ chức ngắt 7. Bảo vệ khi chương trình sử dụng ngắt Cú pháp: POP ACC POP PSW …. PUSH ACC PUSH PSW 18 Các thanh ghi cần bảo vệ Accumulator ACC PSW DPTR B Các thanh ghi R0 – R73.4.3. Tổ chức ngắt 8. Giả lập mức ưu tiên ngắt thứ 3 19 1: PUSH IE 2: MOV IE, MASK 3: CALL LABEL Mã của chương trình con dịch vụ ngắt được đặt tại đây 4: POP IE 5: RET 6: LABEL: 7: RETI3. 4.4. Lập trình cho ngắt 1. Cấu trúc chung 20 ORG 0000H ;vector ngắt của Reset hệ thống LJMP MAIN ;nhảy đến chương trình chính ;khai báo vector ngắt và chương trình ;con dịch vụ ngắt ORG 0030H ; địa chỉ bắt đầu của chương trình chính MAIN: ;chương trình chính bắt đầu END3.4.4. Lập trình cho ngắt 2. ISR có kích thước nhỏ 21 ORG 0000H ;vector ngắt của Reset hệ thống LJMP MAIN ;nhảy đến chương trình chính ORG 00xxH ; 00xxH là vector ngắt ISR: ;nội dung của ISR RETI ;trở về chương trình chính ORG 0030H ;địa chỉ bắt đầu của chương trình chính MAIN: ;chương trình chính bắt đầu 3.4.4. Lập trình cho ngắt 3. ISR có kích thước lớn 22 ORG 0000H ;vector ngắt của Reset hệ thống LJMP MAIN ;nhảy đến chương trình chính ORG 00xxH ;00xxH là vector ngắt LJMP ISR ;nhảy đến chương trình con ORG 0030H ; địa chỉ bắt đầu của chương trình chính MAIN: ;chương trình chính bắt đầu ISR: ;chương trình con dịch vụ ngắt RETI ;trở về chương trình chính3.4.4. Lập trình cho ngắt 4. Ví dụ ứng dụng Lập trình điều khiển nhiệt độ Nhiệt độ cao: Tắt lò Nhiệt độ thấp: Bật lò 23 HOT COLD INT0 INT1 P1.0 Đến chân điều khiển lò Từ cảm biến nhiệt độ T = 21oC T = 20oC T = 19oC HOT COLD P1.03.4.4. Lập trình cho ngắt • ORG 0000H • LJMP MAIN • ORG 0003H • EXOISR: • SETB P1.0 ;Bật lò • RETI • ORG 0013H • EX1ISR: • CLR P1.0 ;Tắt lò • RETI • MAIN: • MOV IE, 85H ;Cho phép ngắt ngoài • SETB IT0 ;Cho phép ngắt ngoài tác động theo sườn âm • SETB IT1 • SETB P1.0 ;Bật lò • JB P3.3, SKIP ;Kiểm tra lò đang quá nóng hay không? • CLR P1.7 ;Nếu lò đang nóng quá cho phép thì tắt lò • SKIP: • SJMP ;Không làm gì • END 2425HOẠT ĐỘNG ĐỊNH THỜI Chương 4 14.1. Giới thiệu chung 4.1.1. Định nghĩa • Bộ định thời (Timer) là một chuỗi các flipflop nối tiếp. Các FF là bộ chia 2. • Ngõ ra FF sau cùng nối với 1 FF báo tràn D Q Q0 D Q Q1 D Q Qn D Q Q clock LSB MSB Cờ tràn 24.1. Giới thiệu chung • Bộ định thời thường đi kèm với chức năng đếm sự kiện (Counter) • 8051 có 2 bộ định thời là T0 và T1 • 8052 có thêm một bộ định thời T2 34.1. Giới thiệu chung 4.1.2. Nguyên lý hoạt động – Nội dung Timer tăng lên 1 sau mỗi chu kỳ clock – Timer đếm tiến – Giá trị bắt đầu đếm được đặt sẵn trong Timer do người dùng – Khi nội dung Timer đếm tới giá trị cực đại và chuyển về 0 thì cờ tràn lật lên 44.1. Giới thiệu chung 4.1.3. Ứng dụng của định thời – Tạo trễ hoặc tính toán thời gian chính xác gần như tuyệt đối – Đếm sự kiện – Tạo tốc độ baud trong truyền thông nối tiếp – Kết hợp với ngắt để làm nền tảng cho một hệ điều hành thời gian thực hoặc đa nhiệm 54.2. Các thanh ghi liên quan 4.2.1. Thanh ghi THx và TLx • Đây vừa là 2 thanh ghi 8 bit vừa chính là bộ định thời • x = 0 hoặc 1 • Nội dung của 2 thanh ghi chính là số đếm của bộ định thời • Phối ghép 2 thanh ghi này sẽ có các chế độ khác nhau 64.2. Các thanh ghi liên quan 4.2.2. Thanh ghi cài đặt chế độ định thời • GATE: bit điều khiển cổng • CT: bit chọn chế độ đếm hay định thời • M1 và M0: 2 bit chọn chế độ định thời 7 Bit 7 Bit0 GATE C(T) M1 M0 GATE C(T) M1 M04.2. Các thanh ghi liên quan • Nếu GATE = 1, bộ định thời chỉ hoạt động khi chân INTx ở mức cao • Nếu GATE = 0 bộ định thời chỉ hoạt động khi có lệnh của người dùng 8 M1 M0 Chế độ Mô tả 0 0 0 Chế độ định thời 13 bit 0 1 1 Chế độ định thời 16bit 1 0 2 Chế độ tự động nạp lại 8bit 1 1 3 Chế độ định thời chia sẻ.4.2. Các thanh ghi liên quan 4.2.3. Thanh ghi điều khiển định thời – TFx: Cờ tràn của bộ định thời x – TRx: Bit điều khiển hoạt động của bộ định thời x – IEx: Cờ ngắt ngoài x – Itx: Đặt kiểu ngắt cho ngắt ngoài (mức hay sườn) 9 Bit 7 Bit0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT04.3. Các chế độ định thời 4.3.1. Chế độ định thời 13bit (chế độ 0) • Byte cao THx + 5bit TLx = Timer 13bit • Hoạt động định thời 13 bit • Ghép nối với các hệ Vi xử lý cũ 104.3. Các chế độ định thời 4.3.2. Chế độ định thời 16bit (chế độ 1) • Byte cao THx + Byte thấp TLx = Timer 16bit • Timer có thể đếm từ giá trị min là 0000H đến giá trị max là FFFFH • Nội dung của THxTLx có thể đọc hoặc ghi ở thời điểm bất kỳ • TFx = 1 khi Timer chuyển từ FFFFH →0000H 114.3. Các chế độ định thời • Hoạt động của Timer 16bit 12 THx TLx 00H 00H 00H 01H FFH FFH clock 1 clock 2 clock n 00H 00H 00H 01H clock 1 clock 2 TFx = 1 Lưu ý: Giá trị trong các thanh ghi THxTLx có thể là một giá trị bất kỳ do người dùng đặt theo yêu cầu thực tế4.3. Các chế độ định thời 4.3.3. Định thời 8bit tự động nạp lại (chế độ 2) • TLx hoạt động định thời 8bit • THx lưu trữ giá trị nạp lại • TFx = 1 khi TLx chuyển từ FFH về 00H • Nội dung của TLx có thể được đọcghi ở thời điểm bất kỳ 134.3. Các chế độ định thời • Hoạt động của bộ định thời 8bit nạp lại 14 TLx XYH 00 01 FF clock 1 clock 2 clock n 00 XYH clock 1 clock 2 TFx = 1 THx Giá trị nạp lại Tự động nạp lại Lưu ý: Chu kỳ đầu tiên TLx bắt đầu đếm từ 00H nếu người dùng không ghi trước nội dung của nó4.3. Các chế độ định thời 4.3.4. Chế độ định thời chia sẻ (chế độ 3) • TH0 và TL0 trở thành 2 bộ định thời 8bit • TL0: FFH →00H: TF0 = 1 • TH0: FFH →00H: TF1 = 1 • Không tự nạp lại • Bộ định thời 1 luôn chạy, không thể điều khiển • Ứng dụng: 2 Timer 8bit và 1 Timer tạo xung cho cổng nối tiếp 154.4. Cấu trúc timer trong 8051 4.4.1. Sơ đồ khối ghép nối 16 Oscillator ÷12 Timer Timer Clock CT = 0 CT = 1 Tx pin P3.5P3.6 INTx pin P3.2P3.3 GATE TRx4.4. Cấu trúc timer trong 8051 4.4.2. Clock của bộ định thời • Được tính từ tần số của thạch anh • Một số loại thạch anh thông dụng: – 4MHz; 8MHz; 10MHz; 11,0592MHz; 12MHz…. • Việc chọn thạch anh ảnh hưởng tới hệ thống thời gian của toàn hệ thống 174.4. Cấu trúc timer trong 8051 4.4.2. Hoạt động đếm – bộ đếm (counter) • Sử dụng tín hiệu clock từ bên ngoài • CT phải bằng 1 • Nội dung của Timer chính là số đã đếm • Các chế độ của bộ đếm cũng giống của timer • Ứng dụng: đếm sự kiện: sản phẩm, người, xe… 184.4. Cấu trúc timer trong 8051 4.4.3. Bit điều khiển cổng – GATE • GATE = 1: cho phép điều khiển timer từ tín hiệu bên ngoài • Việc điều khiển bậttắt timer vẫn phải bằng TRx 194.5. Lập trình cho Bộ định thời 4.5.1. Sử dụng chế độ 16bit (chế độ 1) Chọn Timer làm việc Cài đặt chế độ cho Timer tương ứng bằng TMOD Nạp giá trị cho các thanh ghi THxTLx TRx = 1 Chờ cờ tràn TFx = 1 Nạp lại THxTLx và xóa cờ TFx cho chu kỳ sau Thực hiện các công việc cần thiết Quay trở lại bước 204.5. Lập trình cho Bộ định thời • Cấu trúc chương trình 21 MOV TMOD, xxxx xxxxb ; Cài đặt cho Timer MOV THx, xxxxB ; Nạp các giá trị hoạt động MOV TLx, xxxxB SETB TRx ; Khởi động Timer WAIT: JNB TFx, WAIT ; Chờ cờ tràn MOV THx, xxxxB MOV TLx, xxxxB CLR TFx ; xóa cờ TFx ; Thực hiện các công việc ; theo yêu cầu JMP WAIT ; quay trở lại chờ chu kỳ sau4.5. Lập trình cho Bộ định thời • Ví dụ 1: Tạo xung vuông có dutycycle = 50% trên chân P1.5, sử dụng Timer 0 22 MOV TMOD, 01H MOV TL0, 0F2H MOV TH0, 0FFH SETB TR0 WAIT: JNB TF0, WAIT MOV TL0, 0F2H MOV TH0, 0FFH CLR TF0 CPL P1.5 SJMP WAIT4.5. Lập trình cho Bộ định thời • Ví dụ 2: Tạo xung vuông 2KHz trên P1.5 – Sử dụng thạch anh 12MHz → clock = 1MHz – Xung vuông có chu kỳ T = 12000 = 500μs nên khoảng thời gian cao thấp = 1T = 250μs – Clock có chu kỳ 11MHz = 1μs → Số nhịp cần đếm = 250μs1μs = 250 lần → Số cần nạp vào thanh ghi = 65536 – 250 = 65286 65286 = FF06H → TLx = 06H; THx = FFH 234.5. Lập trình cho Bộ định thời 4.5.2. Sử dụng chế độ 8bit tự nạp lại Chọn Timer làm việc Cài đặt chế độ cho Timer tương ứng bằng TMOD Ghi giá trị nạp lại cho THx TRx = 1 Chờ cờ tràn TFx = 1 Xóa cờ TFx cho chu kỳ sau Thực hiện các công việc cần thiết Quay trở lại bước 244.5. Lập trình cho Bộ định thời • Cấu trúc chương trình 25 MOV TMOD, xxxx xxxxb ; Cài đặt cho Timer MOV THx, xxxxB ; Ghi giá trị nạp lại SETB TRx ; Khởi động Timer WAIT: JNB TFx, WAIT ; Chờ cờ tràn CLR TFx ; xóa cờ TFx ; Thực hiện các công việc ; theo yêu cầu JMP WAIT ; quay trở lại chờ chu kỳ sau4.5. Lập trình cho Bộ định thời • Ví dụ: – Với Thạch anh 11,0592MHz, tìm tần số sóng vuông trong đoạn lệnh sau – Tần số nhỏ nhất có thể bằng bao nhiêu? 26 MOV TMOD, 20H MOV TH1, 5 SETB TR1 WAIT: JNB TF1, WAIT CLR TF1 CPL P1.0 SJMP WAIT4.5. Lập trình cho Bộ định thời • Lời giải: – Chu kỳ clock = 1211,0592 = 1,085μs – Phần cao của xung = (256 – 5)x1,085 = 272,33μs – Chu kỳ xung vuông = 2x272,33 = 544,66μs → Tần số xung = 1,83597KHz – Tần số nhỏ nhất khi TH1 = 00H – Khi đó, chu kỳ xung = 2x256x1,085 = 555,52μs → Tần số nhỏ nhất = 1,8KHz 274.5. Lập trình cho Bộ định thời 4.5.3. Lập trình đếm sự kiện • Ví dụ: Đoạn lệnh sau đếm các xung xuất hiện trên chân T1 và hiển thị số xung đếm được trên cổng P2 28 MOV TMOD, 0110 0000B MOV TH1, 0 SETB P3.5 AGAIN: SETB TR1 BACK: MOV A, TL1 MOV P2, A JNB TF1, BACK CLR TR1 CLR TF1 SJMP AGAIN4.5. Lập trình cho Bộ định thời 4.5.4. Một số chú ý về việc lập trình • Trình dịch hợp ngữ có thể tự tính giá trị 8bit nạp cho các thanh ghi • Ví dụ: MOV TH0, 100 trình dịch hợp ngữ sẽ tính FFH – 100D = 9CH và sẽ gán thành câu lệnh MOV TH0, 9CH 294.6. Bộ định thời thứ 3 trong 8052 4.6.1. Các chế độ hoạt động • Dùng như một bộ định thời 16bit tự nạp lại • Chế độ Capture – bắt xung • Tạo tốc độ Baud cho cổng nối tiếp 304.6. Bộ định thời thứ 3 trong 8052 4.6.2. Các thanh ghi • T2CON – TF2: Cờ tràn – EXF2: Cờ định thời ngoài. Dùng trong chế độ Capture hoặc nạp lại – RCLK: Xác định tốc độ baud cho việc nhận data – TCLK: Xác định tốc độ baud cho truyền data – EXEN2: Kích hoạt định thời ngoài. Dùng cho Capture hoặc nạp lại – CT2: Chọn chế độ đếmđịnh thời – CPRL2: CaptureReload 31 Bit 7 Bit0 TF2 EXF2 RCLK TCLK EXEN2 TR2 CT2 CPRL24.6. Bộ định thời thứ 3 trong 8052 • RCAP2L và RCAP2H – Lưu giá trị nạp lại – Lưu giá trị được capture trong chế độ bắt xung • TH2TL2: thanh ghi bộ định thời 324.6. Bộ định thời thứ 3 trong 8052 4.6.3. Các chế độ cơ bản • Chế độ tự nạp lại: – Hoạt động giống Timer 0 và 1 – 16bit Timer – Các giá trị nạp lại đặt ở RCAP2H và RCAP2L – CPRL2 = 0 – TF2 = 1 khi có tràn ở TH2TL2 từ FFFFH về 0H 334.6. Bộ định thời thứ 3 trong 8052 • Chế độ capture – Nội dung TH2TL2 được chụp và chuyển vào RCAP2H và RCAP2L khi T2EX (P1.1) = 1→0 – CPRL2 = 1 – EXEN2 = 1 – Dùng để đo độ rộng xung 34
Trang 1CHƯƠNG 2
TỔNG QUAN VỀ HỆ VI XỬ LÝ
Trang 32.1 Giới thiệu chung
2.1.1 Định nghĩa Vi xử lý
– Là mạch bán dẫn tích hợp trên một chip (IC) có nhiệm vụ thực hiện các công việc xử lý tín hiệu hoặc điều khiển các thành phần trong hệ thống
– Vi xử lý thực hiện công việc của nó theo chương trình,
thuật toán do người dùng đặt ra
– Ký hiệu: P hoặc uP
Trang 42.1 Giới thiệu chung
4
Trang 52.1 Giới thiệu chung
• Lịch sử ra đời và phát triển của Vi xử lý
1976
Zilog: Z-80 TI: VXL 16bit
1982
32 bit AT&T: BELLMAC-32A
1985
Motorola: 680xx ARM I 1990
Power PC (IBM) 64bit
1993
1999
Intel: Pentium, Xeon, Celeron
2005
Intel: Multi Core
Thương mại hóa Tăng mật độ, VLSI 32bit nhường chỗ Kỷ nguyên đa lõi
Trang 62.1 Giới thiệu chung
2.1.2 Hệ Vi xử lý
• Định nghĩa:
– Là hệ thống số làm việc theo chương trình được lưu giữ
trong bộ nhớ, xử lý dữ liệu bằng vi xử lý và đưa ra các
quyết định liên lạc với thế giới bên ngoài thông qua các
cổng vào ra
– Một hệ Vi xử lý luôn bao gồm 2 thành phần: Phần cứng và phần mềm
6
Trang 72.1 Giới thiệu chung
2.1.3 Các thành phần trong hệ Vi xử lý
Trang 82.1 Giới thiệu chung
2.1.4 Các kiến trúc thông dụng của Vi xử lý
• Kiến trúc Von Neumann
– Chỉ có một bộ nhớ chung cho dữ liệu và chương trình
– Đọc dữ liệu và đọc lệnh không diễn ra đồng thời
8
Trang 92.1 Giới thiệu chung
• Kiến trúc Von Newmann
Trang 102.1 Giới thiệu chung
• Kiến trúc Harvard
– Có các bus độc lập cho bộ nhớ chương trình và dữ liệu
– Đọc dữ liệu và đọc chương trình diễn ra đồng thời
10
Trang 112.1 Giới thiệu chung
• Kiến trúc Harvard
Trang 122.1 Giới thiệu chung
• Kiến trúc SHARC – Super Harvard Architecture
– Thêm vào một số đặc trƣng để cải thiện băng thông dữ liệu
12
Trang 132.1 Giới thiệu chung
• Kiến trúc DSP – Digital Signal Processing
Trang 142.2 Cấu trúc của một hệ VXL điển hình
2.2.1 Cấu trúc chung của một hệ VXL điển hình
14
Trang 152.2 Cấu trúc của một hệ VXL điển hình
• Cấu trúc rút gọn
– uP: Vi xử lý
– M: Bộ nhớ (Memory)
– I: Cổng vào/Thiết bị vào dữ liệu (Input)
– O: Cổng ra/Thiết bị xuất dữ liệu (Output)
Trang 162.2 Cấu trúc của một hệ VXL điển hình
Trang 172.2 Cấu trúc của một hệ VXL điển hình
– Bus là nút dùng chung của cả hệ thống, dùng để truyền dữ liệu giữa các thành phần với nhau
– Bus có thể nằm trong hoặc nằm ngoài Vi xử lý
– Truyền thông song song: Bus là dải (tape) dây dẫn, mỗi dây truyền 1 bit
– Truyền thông nối tiếp: Bus có thể là cáp đồng trục, xoắn đôi, quang…
Trang 182.2 Cấu trúc của một hệ VXL điển hình
Trang 192.2 Cấu trúc của một hệ VXL điển hình
• Cần giải quyết vấn đề xung đột
– Phương pháp tiền định: xác định trước quy luật, thời gian truy nhập
• Tốc độ cao
• Số phần tử ít
Trang 202.2 Cấu trúc của một hệ VXL điển hình
Ưu nhược điểm
Trang 212.2 Cấu trúc của một hệ VXL điển hình
2 Tổ chức cổng vào ra
Thiết bị cơ bản
• IC 8282 – Tích hợp mạch 3 trạng thái và chốt dữ liệu
D STB
D 0
Q 0
OE
D STB
D 7
Q 7
OE STB
D0 – D7: 8 đường dữ liệu vào Q0 – Q7: 8 đường dữ liệu ra
STB: chốt tín hiệu STB = 1: cho phép đưa dữ liệu ra STB = 1->0: chốt dữ liệu đầu ra /OE: Cho phép xuất tín hiệu
Trang 222.2 Cấu trúc của một hệ VXL điển hình
- /RD: Lệnh chỉ thao tác đọc thiết bị
22
Trang 232.2 Cấu trúc của một hệ VXL điển hình
Trang 242.2 Cấu trúc của một hệ VXL điển hình
Ax
STB
OE
24
Trang 252.2 Cấu trúc của một hệ VXL điển hình
Trang 262.2 Cấu trúc của một hệ VXL điển hình
Trang 272.2 Cấu trúc của một hệ VXL điển hình
• Tổ chức của bộ nhớ:
Bộ nhớ được tạo thành từ các ô nhớ sắp xếp cạnh
nhau về mặt logic Các tham số của ô nhớ gồm:
– Vị trí (logic) của ô nhớ: là địa chỉ của ô nhớ, do bus địa chỉ truyền đi trong hệ
– Nội dung của ô nhớ: là dữ liệu chứa trong ô nhớ, do bus dữ liệu truyền đi trong hệ Thông thường, mỗi ô nhớ có độ lớn
là 8bit (1byte)
Quản lý bộ nhớ bằng phương pháp địa chỉ hóa các ô nhớ
Trang 282.2 Cấu trúc của một hệ VXL điển hình
• Các phương pháp địa chỉ hóa ô nhớ
– Phương pháp địa chỉ tuyệt đối:
• Địa chỉ của một ô nhớ chính là khoảng cách của nó so với địa chỉ gốc
• Địa chỉ gốc thường được xác định là 0
• Ứng dụng cho các loại bộ nhớ dung lượng nhỏ
0 1 10 11
0 1 2 3
1110 14
15 ô nhớ
28
Trang 292.2 Cấu trúc của một hệ VXL điển hình
– Phương pháp địa chỉ đoạn
• Chia toàn bộ bộ nhớ thành nhiều vùng (segment), mỗi vùng có một địa chỉ xác đinh
• Địa chỉ của một ô nhớ trong bộ nhớ được xác định bởi:
– Địa chỉ của segment chứa ô nhớ đó – Địa chỉ offset của ô nhớ trong segment
Segment 0 Segment 1
Segment n Địa chỉ offset
Địa chỉ segment
Trang 302.2 Cấu trúc của một hệ VXL điển hình
– Phương pháp địa chỉ đoạn (tiếp)
• Các thiết bị lưu trữ địa chỉ ô nhớ có kích thước nhỏ
– Ví dụ: 8085A địa chỉ hóa ô nhớ bằng 16bit -> Dùng 2 thanh ghi 8bit,
1 thanh ghi chứa địa chỉ segment, 1 chứa địa chỉ offset
Trang 312.2 Cấu trúc của một hệ VXL điển hình
– Bản đồ bộ nhớ: cho thấy bộ nhớ hay các thiết bị có kết nối với bus địa chỉ đƣợc đặt ở đâu trong không gian nhớ
– Ví dụ:
Trang 322.2 Cấu trúc của một hệ VXL điển hình
4 Vi xử lý - 8085
• Một số đặc tính cơ bản:
– Bộ xử lý 8 bit tốc độ 3 – 6MHz
– 4 đầu vào ngắt
– Có các cổng vào ra nối tiếp
– Có khả năng tính toán số học thập phân, nhị phân và dấu phẩy động
– Chu kỳ lệnh 0.8s
– Địa chỉ hóa trực tiếp cho 64KB bộ nhớ
– …
32
Trang 332.2 Cấu trúc của một hệ VXL điển hình
• Sơ đồ chân linh kiện
– Bus địa chỉ: AD0 – AD7 và A8 – A15
– Bus dữ liệu: AD0 – AD7
– Bus điều khiển: IO/M, RD, WR…
– ALE: Cho phép chốt địa chỉ
– SID, SOD: vào/ra dữ liệu nối tiếp
– S0, S1: trạng thái chu kỳ máy
38
2 5
6
1
29 33
39 35
21 22 23 24 25 26 27 28
12 13 14 15 16 17 18 19
9 8 7 36
ALE
WR
RD IO/M RSTOUT CLKOUT SOD
TRAP
X1
S0 S1
HOLD READY
A8 A9 A10 A11 A12 A13 A14 A15
AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7
RST 5.5 RST 6.5 RST 7.5 RSTIN
Trang 342.2 Cấu trúc của một hệ VXL điển hình
• Phối hợp các tín hiệu điều khiển
– MEMR: cho phép đọc từ bộ nhớ – MEMW: cho phép ghi bộ nhớ – I/OR: cho phép đọc từ cổng vào – I/OW: cho phép ghi ra cổng ra
IO/(/M) /WR
IO/(/M)
4
5
2 /RD
IO/(/M) /MEMR
Trang 352.2 Cấu trúc của một hệ VXL điển hình
• Biểu đồ thời gian làm việc trong 8085
Trang 362.2 Cấu trúc của một hệ VXL điển hình
• Sơ đồ cấu trúc Vi xử lý 8085
36
Trang 372.2 Cấu trúc của một hệ VXL điển hình
Trang 382.2 Cấu trúc của một hệ VXL điển hình
• Các thành phần điển hình:
– Thanh chứa (Accumulator – A) là một thành phần của
ALU Chứa dữ liệu 8 bit
Trang 392.2 Cấu trúc của một hệ VXL điển hình
Trang 402.2 Cấu trúc của một hệ VXL điển hình
– Thanh ghi địa chỉ bộ nhớ: lưu giữ địa chỉ, nhận về từ PC, của câu lệnh tiếp theo
– Bộ phát xung điều khiển (Control Generator) tạo ra các
xung trong uP để thực hiện các lệnh đã được giải mã
– Bộ chọn thanh ghi (Register Selector) điều khiển việc lựa chọn sử dụng các thanh ghi trong hệ thống thanh ghi của
uP
40
Trang 412.2 Cấu trúc của một hệ VXL điển hình
Trang 422.2 Cấu trúc của một hệ VXL điển hình
• Quá trình thực hiện lệnh (tiếp)
Trang 442.3 Chu kỳ trong Vi xử lý
1 Chu kỳ lệnh (Instruction Cycle)
Khoảng thời gian để Vi xử lý thực hiện một lệnh từ
Trang 472.5 Ghép nối bộ nhớ
2.5.1 Một số chip nhớ thông dụng
1 ROM
– Thiết kế bởi công nghệ NMOS, CMOS
– Dung lượng thường 2Kbyte – 64Kbyte
– Dữ liệu lưu trữ dạng ma trận
– Không bị ảnh hưởng bởi việc mất điện
– 2716, 2732, , 27256
Trang 482.5 Ghép nối bộ nhớ
• Ví dụ ROM 2716
48
Trang 492.5 Ghép nối bộ nhớ
2 RAM
• Static RAM
– Mỗi bít dữ liệu được lưu trữ bởi cặp flip-flop
– Cấu trúc đơn giản
– Ghi và xóa tín hiệu bằng điện
– Dữ liệu mất đi khi mất điện
– Tiêu thụ năng lượng lớn khi có điện
– Kích thước lớn khi dung lượng lớn
– 6216, 6232, 62256
Trang 512.5 Ghép nối bộ nhớ
• Ví dụ: RAM 62256
Trang 52– Số lƣợng bit địa chỉ phải phù hợp
– Thống nhất tín hiệu điều khiển
– Bộ nhớ 2Kx8bit có 11 bit địa chỉ trong khi 4Kx8bit có
12bit địa chỉ
52
Trang 538 7 6 5 4 3 2 1 23 22 19
9 10 11 13 14 15 16 17
20 21 18
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
D1 D2 D3 D4 D5 D6 D7 D8
OE WE
U2 2016
8 7 6 5 4 3 2 1 23 22 19
9 10 11 13 14 15 16 17
20 21 18
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
D1 D2 D3 D4 D5 D6 D7 D8
OE WE
CE
D6 D0
A9
A4 A2
U3
NOT
1 2
D3
Trang 542.5 Ghép nối bộ nhớ
2.5.3 Thiết lập bộ nhớ tại địa chỉ xác định
54
Trang 55Vấn đề về ngắt của Vi điều khiển
Chương 3
Trang 583.4.1 Khái niệm về ngắt
• Một số đặc điểm của vòng lặp Polling:
– Cấu trúc hệ thống đơn giản
– Các sự kiện bình đẳng, không phân cấp bậc
– Thời gian phản ứng 1 sự kiện phụ thuộc nhiều yếu
tố
– Nếu sự kiện mới thêm vào, thời gian vòng quét dài
ra
4
Trang 593.4.1 Khái niệm về ngắt
2 Định nghĩa Ngắt của Vi điều khiển
• Ý tưởng: Sự xuất hiện của một sự kiện làm
“ngắt” tiến trình thực hiện chương trình chính,
“nhồi” thêm và thực hiện một tiến trình khác
• Chương trình nhồi gọi là Chương trình con
dịch vụ ngắt – Interrupt Service Routine (ISR)
• ISR sau khi thực hiện xong, chương trình
chính lại tiếp tục thực hiện
Trang 613.4.1 Khái niệm về ngắt
• Ngắt làm chương trình có tính ưu tiên
• Ngắt giúp hệ thống phản ứng nhanh hơn với
các sự kiện
• Ngắt làm song song hóa các tác vụ trong
chương trình
• Ngắt làm chương trình phức tạp hơn
Trang 623.4.2 Các nguyên nhân gây ngắt
• Nguyên nhân ngắt: nguồn ngắt
• Ngắt cứng: nguồn ngắt từ bên ngoài đưa tới
– Ví dụ: Tín hiệu chuyển từ 1 -> 0 đưa về 1 chân của
Trang 633.4.2 Các nguyên nhân gây ngắt
Trang 643.4.3 Tổ chức ngắt
1 Cho phép/không cho phép ngắt
Thanh ghi IE – Interrupt Enable
10
Bit Ký hiệu Địa chỉ Mô tả IE.7 EA AFH Cho phép/không cho phép ngắt toàn cục
IE.5 ET2 ADH Cho phép ngắt từ bộ định thời 2 ( 8052)
IE.4 ES ACH Cho phép ngắt từ cổng nối tiếp
IE.3 ET1 ABH Cho phép ngắt từ bộ đinh thời 1
IE.1 ET0 A9H Cho phép ngắt từ bộ định thời 0
Trang 653.4.3 Tổ chức ngắt
2 Ưu tiên ngắt
Thanh ghi IP – Interrupt Priority
Bit Ký hiệu Địa chỉ Mô tả
IP.7 - Không sử dụng
IP.6 - Không sử dụng
IP.5 PT2 BDH Ưu tiên ngắt do bộ định thời 2
IP.4 PS BCH Ưu tiên ngắt do cổng nối tiếp
IP.3 PT1 BBH Ưu tiên ngắt do bộ định thời 1
IP.2 PX1 BAH Ưu tiên ngắt ngoài 1
IP.1 PT0 B9H Ưu tiên ngắt do bộ định thời 0
IP.0 PX0 B8H Ưu tiên ngắt ngoài 0
Trang 67Cho phép ngắt từng nguồn
Cho phép ngắt toàn cục
Cho phép ngắt toàn cục
Thứ tự quét các ngắt
Thứ tự quét các ngắt
Mức ngắt thấp
Mức ngắt thấp
Thanh ghi IP
Thanh ghi IP
Trang 683.4.3 Tổ chức ngắt
4 Vector ngắt
• Là địa chỉ tương ứng mà tại đó ISR được đặt
• Vector ngắt là địa chỉ đầu tiên của ISR tương ứng
• Mỗi vector ngắt dành cho một nguồn ngắt xác định
14
Trang 70– ISR được thực hiện khi INTx chuyển từ 1→0
• Cài đặt bằng 2 bit IT0 và IT1 trong TCON
16
Trang 713.4.3 Tổ chức ngắt
Cất nội dung PC vào Stack
Lưu trạng thái hiện hành của ngắt
Các ngắt được chặn lại ở mức ngắt
Nạp địa chỉ vector ngắt vào PC
Thực thi ISR
Trang 74ORG 0030H ; địa chỉ bắt đầu của chương trình chính
-
- END
Trang 753.4.4 Lập trình cho ngắt
2 ISR có kích thước nhỏ
ORG 0000H ;vector ngắt của Reset hệ thống LJMP MAIN ;nhảy đến chương trình chính ORG 00xxH ; 00xxH là vector ngắt
ISR:
- ;nội dung của ISR RETI ;trở về chương trình chính ORG 0030H ;địa chỉ bắt đầu của chương trình chính MAIN: ;chương trình chính bắt đầu
-
-
Trang 76LJMP ISR ;nhảy đến chương trình con ORG 0030H ; địa chỉ bắt đầu của chương trình chính MAIN: ;chương trình chính bắt đầu
-
- ISR: ;chương trình con dịch vụ ngắt
-
- RETI ;trở về chương trình chính
Trang 77Từ cảm biến nhiệt độ
Trang 7824
Trang 80HOẠT ĐỘNG ĐỊNH THỜI
Chương 4
1
Trang 814.1 Giới thiệu chung
Trang 824.1 Giới thiệu chung
• Bộ định thời thường đi kèm với chức năng
đếm sự kiện (Counter)
• 8051 có 2 bộ định thời là T0 và T1
• 8052 có thêm một bộ định thời T2
3
Trang 834.1 Giới thiệu chung
Trang 844.1 Giới thiệu chung
4.1.3 Ứng dụng của định thời
– Tạo trễ hoặc tính toán thời gian chính xác gần như tuyệt đối
– Đếm sự kiện
– Tạo tốc độ baud trong truyền thông nối tiếp
– Kết hợp với ngắt để làm nền tảng cho một hệ điều hành thời gian thực hoặc đa nhiệm
5
Trang 854.2 Các thanh ghi liên quan
Trang 864.2 Các thanh ghi liên quan
4.2.2 Thanh ghi cài đặt chế độ định thời
• GATE: bit điều khiển cổng
• C/T: bit chọn chế độ đếm hay định thời
Trang 874.2 Các thanh ghi liên quan
• Nếu GATE = 1, bộ định thời chỉ hoạt động khi chân INTx ở mức cao
• Nếu GATE = 0 bộ định thời chỉ hoạt động khi
Trang 884.2 Các thanh ghi liên quan
4.2.3 Thanh ghi điều khiển định thời
Trang 894.3 Các chế độ định thời
4.3.1 Chế độ định thời 13bit (chế độ 0)
• Byte cao THx + 5bit TLx = Timer 13bit
• Hoạt động định thời 13 bit
• Ghép nối với các hệ Vi xử lý cũ
Trang 904.3 Các chế độ định thời
4.3.2 Chế độ định thời 16bit (chế độ 1)
• Byte cao THx + Byte thấp TLx = Timer 16bit
• Timer có thể đếm từ giá trị min là 0000H đến giá trị max là FFFFH
• Nội dung của THx/TLx có thể đọc hoặc ghi ở thời điểm bất kỳ
• TFx = 1 khi Timer chuyển từ FFFFH →0000H
11
Trang 91clock n
clock 1 clock 2
TFx = 1
Lưu ý: Giá trị trong các
thanh ghi THx/TLx có thể là một giá trị bất kỳ
do người dùng đặt theo yêu cầu thực tế
Trang 924.3 Các chế độ định thời
4.3.3 Định thời 8bit tự động nạp lại (chế độ 2)
• TLx hoạt động định thời 8bit
• THx lưu trữ giá trị nạp lại
• TFx = 1 khi TLx chuyển từ FFH về 00H
• Nội dung của TLx có thể được đọc/ghi ở thời điểm bất kỳ
13
Trang 93clock n
00 XYH
clock 1 clock 2 TFx = 1
Trang 94• Bộ định thời 1 luôn chạy, không thể điều khiển
• Ứng dụng: 2 Timer 8bit và 1 Timer tạo xung cho cổng nối tiếp
15
Trang 954.4 Cấu trúc timer trong 8051
4.4.1 Sơ đồ khối ghép nối
Timer
Timer Clock C/T = 0
C/T = 1
Tx pin P3.5/P3.6
INTx pin
P3.2/P3.3
GATE TRx
Trang 964.4 Cấu trúc timer trong 8051
4.4.2 Clock của bộ định thời
• Được tính từ tần số của thạch anh
• Một số loại thạch anh thông dụng:
– 4MHz; 8MHz; 10MHz; 11,0592MHz; 12MHz…
• Việc chọn thạch anh ảnh hưởng tới hệ thống
thời gian của toàn hệ thống
17
Trang 974.4 Cấu trúc timer trong 8051
4.4.2 Hoạt động đếm – bộ đếm (counter)
• Sử dụng tín hiệu clock từ bên ngoài
• C/T phải bằng 1
• Nội dung của Timer chính là số đã đếm
• Các chế độ của bộ đếm cũng giống của timer
• Ứng dụng: đếm sự kiện: sản phẩm, người,
xe…
Trang 984.4 Cấu trúc timer trong 8051
4.4.3 Bit điều khiển cổng – GATE
• GATE = 1: cho phép điều khiển timer từ tín
hiệu bên ngoài
• Việc điều khiển bật/tắt timer vẫn phải bằng
TRx
19
Trang 994.5 Lập trình cho Bộ định thời
4.5.1 Sử dụng chế độ 16bit (chế độ 1)
Chọn Timer làm việc
Cài đặt chế độ cho Timer tương ứng bằng TMOD
Nạp giá trị cho các thanh ghi THx/TLx
TRx = 1
Chờ cờ tràn TFx = 1
Nạp lại THx/TLx và xóa cờ TFx cho chu kỳ sau
Thực hiện các công việc cần thiết
Quay trở lại bước
Trang 100SETB TRx ; Khởi động Timer WAIT:
JNB TFx, WAIT ; Chờ cờ tràn MOV THx, #xxxxB
MOV TLx, #xxxxB CLR TFx ; xóa cờ TFx
- ; Thực hiện các công việc
JMP WAIT ; quay trở lại chờ chu kỳ sau
Trang 1014.5 Lập trình cho Bộ định thời
• Ví dụ 1: Tạo xung vuông có duty-cycle = 50%
trên chân P1.5, sử dụng Timer 0
MOV TMOD, #01H MOV TL0, #0F2H MOV TH0, #0FFH SETB TR0
WAIT:
JNB TF0, WAIT MOV TL0, #0F2H MOV TH0, #0FFH CLR TF0
CPL P1.5 SJMP WAIT
Trang 1024.5 Lập trình cho Bộ định thời
• Ví dụ 2: Tạo xung vuông 2KHz trên P1.5
– Sử dụng thạch anh 12MHz → clock = 1MHz
– Xung vuông có chu kỳ T = 1/2000 = 500μs nên
khoảng thời gian cao/ thấp = 1/T = 250μs
Trang 1034.5 Lập trình cho Bộ định thời
4.5.2 Sử dụng chế độ 8bit tự nạp lại
Chọn Timer làm việc
Cài đặt chế độ cho Timer tương ứng bằng TMOD
Ghi giá trị nạp lại cho THx
TRx = 1
Chờ cờ tràn TFx = 1
Xóa cờ TFx cho chu kỳ sau
Thực hiện các công việc cần thiết
Quay trở lại bước
Trang 1044.5 Lập trình cho Bộ định thời
• Cấu trúc chương trình
25
- - MOV TMOD, #xxxx xxxxb ; Cài đặt cho Timer MOV THx, #xxxxB ; Ghi giá trị nạp lại SETB TRx ; Khởi động Timer WAIT:
JNB TFx, WAIT ; Chờ cờ tràn CLR TFx ; xóa cờ TFx - ; Thực hiện các công việc - ; theo yêu cầu
JMP WAIT ; quay trở lại chờ chu kỳ sau