Bài giảng Vi xử lý - Chương 1: Giới thiệu hệ vi xử lý tổng quát - Hồ Trung Mỹ
Người ta có thể chia CPU làm 3 loại :
• Multi-chip CPU (CPU đa chip): Cần 2 hay nhiều chip
LSI để cài đặt ALU và phần điều khiển của máy tính.
• Microprocessor (Vi xử lý): ta sẽ hạn chế từ
microprocessor (mP/UP) cho một chip LSI/VLSI chứa
ALU và phần điều khiển của một máy tính.
• Single chip microprocessor (Vi xử lý đơn chip): (còn
gọi là microcomputer/microcontroller) là 1 chip
LSI/VLSI chứa toàn bộ một máy tính như ở hình 1.1, và
thường được gọi tắt là MCU (Micro-Controller Unit)
phải, đánh số bit từ trái sang phải. • không nhất quán với little endian đánh số byte từ phải sang trái, đánh số bit từ trái sang phải. • không nhất quán với big endian (TD: Motorola 68000) đánh số byte từ trái sang phải, đánh số bit từ phải sang trái. 3/26/2011 31 Thí dụ: thứ tự byte trong little endian và big endian One Annoying Thing: Byte Order • Hosts differ in how they store data – E.g., four-byte number (byte3, byte2, byte1, byte0) • Little endian (“little end comes first”) Intel PCs!!! – Low-order byte stored at the lowest memory location – Byte0, byte1, byte2, byte3 • Big endian (“big end comes first”) – High-order byte stored at lowest memory location – Byte3, byte2, byte1, byte 0 • Makes it more difficult to write portable code – Client may be big or little endian machine – Server may be big or little endian machine 3/26/2011 32 +0 +1 +2 +3 1000 1004 1008 100C 78 +0 +1 1000 1002 1004 1006 78 +3 +2 +1 +0 1000 1004 1008 100C 78 +1 +0 1000 1002 1004 1006 781000 1001 1002 1003 78 Endian Example: Where is the Byte? 31 24 23 16 15 8 7 0 8 bits memory 16 bits Memory 32 bits Memory 1000 1001 1002 1003 Little- Endian Big- Endian 78 1 2 3 4 5 6 7 8 1.5 NGOẠI VI 3/26/2011 33 Phân loại ngoại vi Bus I/O và các module giao tiếp 3/26/2011 34 • Mỗi thiết bị ngoại vi có một module giao tiếp tương ứng với nó. Module giao tiếp có nhiệm vụ: – Giải mã địa chỉ thiết bị (mã thiết bị) – Giải mã các lệnh (tác vụ) – Cung cấp các tín hiệu cho bộ điều khiển ngoại vi. – Đồng bộ hóa luồng dữ liệu và giám sát tốc độ chuyển dữ liệu giữa ngoại vi với CPU hoặc bộ nhớ. • Lệnh I/O tiêu biểu có dạng: 3/26/2011 35 TD: Kết nối bus I/O đến mạch giao tiếp Bus I/O và bus bộ nhớ (1/2) • Chức năng của các bus - Bus bộ nhớ: dành cho chuyển thông tin giữa CPU và bộ nhớ. - Bus I/O: dành cho chuyển thông tin giữa CPU và các thiết bị ngoại vi qua giao tiếp I/O • Tổ chức vật lý - Nhiều hệ thống sử dụng chung một bus hệ thống cho cả bộ nhớ và các đơn vị I/O. Sử dụng một bus chung với các đường điều khiển riêng cho mỗi chức năng hoặc dạng có những đường điều khiển chung cho cả 2 chức năng. - Một số hệ sử dụng 2 bus riêng, một để liên lạc với bộ nhớ, cái còn lại liên lạc với các giao tiếp I/O. 3/26/2011 36 Bus I/O và bus bộ nhớ (2/2) Bus I/O - Liên lạc giữa CPU và tất cả các đơn vị giao tiếp qua bus I/O chung. - Giao tiếp kết nối với thiết bị ngoại vi có thể có một số các thanh ghi dữ liệu, thanh ghi điều khiển và thanh ghi trạng thái. - Lệnh được chuyển đến ngoại vi bằng cách gửi đến thanh ghi ngoại thích hợp. - Có thể không cần mã chức năng và các đường dò (cảm nhận) (sense lines) (chuyển dữ liệu, điều khiển và thông tin trạng thái luôn luôn qua bus I/O chung). I/O cách ly và I/O ánh xạ bộ nhớ (Isolated I/O and memory-mapped I/O) 3/26/2011 37 Giao tiếp I/O lập trình được Các vấn đề chuyển dữ liệu Hoạt động đồng bộ và bất đồng bộ – đồng bộ (synchronous): Tất cả các thiết bị có được thông tin định thì từ đường xung nhịp chung. – bất đồng bộ (asynchronous): Không có xung nhịp chung. 3/26/2011 38 Chuyển dữ liệu bất đồng bộ • Chuyển dữ liệu bất đồng bộ giữa 2 đơn vị độc lập cần có các tín hiệu điều khiển truyền giữa các đơn vị truyền thông để chỉ thời điểm mà dữ liệu sẽ được truyền. • Có hai phương pháp chuyển dữ liệu bất đồng bộ: – Xung strobe: Xung strobe được cung cấp bởi một đơn vị này để báo cho đơn vị kia khi việc chuyển dữ liệu xảy ra. – Thực hiện bắt tay (Handshaking): Một tín hiệu điều khiển được đi kèm với mỗi dữ liệu sẽ được truyền để chỉ sự hiện diện của dữ liệu. Đơn vị nhận trả lời với tín hiệu điều khiển khác để báo nhận được dữ liệu rồi. Chuyển dữ liệu bất đồng bộ với xung strobe 3/26/2011 39 Chuyển dữ liệu khởi động bởi đơn vị nguồn với phương pháp bắt tay Chuyển dữ liệu khởi động bởi đơn vị đích với phương pháp bắt tay 3/26/2011 40 Truyền dữ liệu nối tiếp bất đồng bộ (Asynchronous serial transfer) • Có 4 loại truyền dữ liệu: - Truyền nối tiếp bất đồng bộ. - Truyền nối tiếp đồng bộ. - Truyền song song bất đồng bộ. - Truyền song song đồng bộ. • Truyền nối tiếp bất đồng bộ - Sử dụng các bit đặt biệt chèn vào cả 2 đầu của mã ký tự. - Mỗi ký tự bao gồm 3 phần: bit bắt đầu (Start bit), các bit dữ liệu (Data bits) và các bit dừng (Stop bits) (có thể 1, 1½ hoặc 2 bit dừng) . Truyền dữ liệu nối tiếp bất đồng bộ Bộ thu có thể phát hiện được ký tự dựa trên 4 quy tắc sau: 1. Khi dữ liệu không được gửi đi, đường dây được giữ ở trạng thái 1 (trạng thái nghỉ). 2. Khởi động truyền ký tự được phát hiện bởi “Start bit” (luôn luôn bằng 0). 3. Các bit ký tự luôn luôn theo sau “Start bit”. 4. Sau khi hết ký tự, “Stop bit” được phát hiện khi đường dây quay về trạng thái 1 trong khoảng thời gian ít nhất 1 bit. Bộ thu phải biết trước tốc truyền các bit và số bit thông tin mong muốn. 3/26/2011 41 Bộ thu phát bất đồng bộ vạn năng UART (Universal Asysnchronous Receiver-Transmitter) Các phương pháp điều khiển I/O Có 3 phương pháp cơ bản để chuyển dữ liệu giữa máy tính trung tâm (CPU hay bộ nhớ) và các thiết bị ngoại vi: 1. Hỏi vòng (polling) hay còn gọi là I/O được điều khiển bằng chương trình (Program-controlled I/O) 2. I/O bằng ngắt (interrupt-initiated I/O), và 3. DMA (Direct Memory Access=Truy cập bộ nhớ trực tiếp). Chú ý: Người ta cũng có thể kết hợp các phương pháp trên. 3/26/2011 42 Polling hoặc I/O điều khiển bằng lập trình Kỹ thuật polling có 2 hạn chế: 1. Mất thời gian của MPU (do kiểm tra trạng thái của tất cả các ngoại vi thường xuyên ). 2. Chậm, do đó làm trở ngại trong hệ thống thời gian thực, không thỏa mãn cho các thiết bị nhanh (thí dụ: disks hoặc CRT). Lưu đồ vòng lặp polling 3/26/2011 43 I/O bằng ngắt (Interrupt) DMA (Direct Memory Access) Phần cứng DMAC (Direct Memory Access Controller= Bộ điều khiển truy cập bộ nhớ trực tiếp) được thiết kế để thực hiện chuyển dữ liệu tốc độ cao giữa bộ nhớ và thiết bị. Do đó, DMAC sẽ cần sử dụng cả hai bus dữ liệu và bus địa chỉ. 3/26/2011 44 1.6 BUS HỆ THỐNG Bus • Bus có thể hai chiều (bidirectional) hay một chiều (unidirectional) • Nếu cả hai dữ liệu và địa chỉ được truyền trên cùng một bus thì người ta gọi bus có dồn kênh (multiplexed). • Nếu hai thiết bị gửi thông tin đồng thời trên cùng bus thì xảy ra tranh chấp bus (bus contention) và có thiết bị hư. 3/26/2011 45 Cài đặt bus chung với Bus dồn kênh (Multiplexer Bus) Cài đặt bus chung với Các bộ đệm bus 3 trạng thái 3/26/2011 46 Chu kỳ đọc bus (Read Bus Cycle) Chu kỳ ghi bus (Write Bus Cycle) 3/26/2011 47 1.7 GIẢI MÃ ĐỊA CHỈ Giải mã địa chỉ (Addressing Decoding) • CPU cho phép một chip bộ nhớ (hoặc thiết bị I/O) chỉ khi nó muốn liên lạc với nó. Để thực hiện việc này CPU sử dụng mạch giải mã địa chỉ. • Các phương pháp giải mã địa chỉ: 1. Giải mã đầy đủ hay toàn phần (Full decoding): Mỗi ngoại vi được gán với một địa chỉ duy nhất. Tất cả các bit địa chỉ được dùng để định nghĩa vị trí tham chiếu. 2. Giải mã một phần (Partial decoding): Không phải tất cả các bit được xử dụng trong quá trình giải mã. Các ngoại vi có thể đáp ứng với hơn 1 địa chỉ. Phương pháp này làm giảm độ phức tạp trong mạch giải mã địa chỉ. 3/26/2011 48 3/26/2011 49 Thí dụ: Thiết kế mạch ánh xạ 8 chip bộ nhớ EPROM 2764 khác nhau (mỗi EPROM được tổ chức như 8K x 8 bits) thành khối bộ nhớ 64K byte với địa chỉ vật lý trong dãi F0000H đến FFFFFH. Bài giải. Mỗi EPROM 2764 có thể được ánh xạ trực tiếp vào khối 8 KB như sau Khối thứ 1: F0000 - F1FFFh Khối thứ 2: F2000 - F3FFFH Khối thứ 3: F4000 - F5FFFH Khối thứ 4: F6000 - F7FFFH Khối thứ 5: F8000 - F9FFFH Khối thứ 6: FA000 - FBFFFH Khối thứ 7: FC000 - FDFFFH Khối thứ 8: FE000 - FFFFFH 3/26/2011 50 Bảng bộ nhớ (memory map) và bảng I/O • Bảng bộ nhớ Bảng bộ nhớ minh họa những đoạn nào sẽ được sử dụng với RAM, ROM và một số trường hợp là các thiết bị I/O. Thí dụ: • Bảng I/O hay Vùng I/O Được tổ chức và định địa chỉ như vùng nhớ. Mỗi địa chỉ tương ứng với một cổng I/O (thông thường rộng 8 bit). 1.8 ĐỊNH THÌ (Timing) 3/26/2011 51 Các quy ước trong giản đồ định thì 3/26/2011 52 3/26/2011 53 Định thì đọc cấp hệ thống 3/26/2011 54 Định thì ghi bộ nhớ Giao tiếp DRAM 3/26/2011 55 Định thì đọc với DRAM Định thì ghi với DRAM 3/26/2011 56 1.9 CHƯƠNG TRÌNH Chương trình • Chương trình (program) là danh sách các lệnh (instruction=lệnh, chỉ thị) hay các phát biểu (statement) để điều khiển máy tính hay CPU thực hiện công việc xử lý dữ liệu mong muốn. • Có nhiều loại ngôn ngữ lập trình: – Ngôn ngữ máy (machine language) + Mã nhị phân + Mã bát phân hay thập lục phân – Hợp ngữ (Assembly Language) (cần có Assembler [Trìnhdịch hợp ngữ]) Mã ký hiệu – Ngôn ngữ cấp cao (cần có Compiler [Trình biên dịch]) 3/26/2011 57 Ngôn ngữ máy • Một chuỗi các mã nhị phân biểu diễn các công việc mà vi xử lý sẽ thực thi. Dạng dài các bit có thể được đơn giản hóa bằng dạng số Hex hay Octal. Ngôn ngữ này khó lập trình. Các vi xử lý khác nhau sẽ có những ngôn ngữ máy khác nhau. • Thí dụ: 3/26/2011 58 Lưu đồ chương trình (Program flowchart) 3/26/2011 59 1.10 VI ĐIỀU KHIỂN 3/26/2011 60 Các giới hạn của vi xử lý – Cần bộ nhớ ngoài để thực thi chương trình. – Không thể giao tiếp trực tiếp với các thiết bị I/O. So sánh vi xử lý (MPU) và vi điều khiển (MCU) • MPU: – Được thiết kế để thực hiện chức năng CPU trong hệ máy vi tính. – Tập lệnh được sắp xếp để cho phép mã và một lượng lớn dữ liệu được chuyển đi giữa vi xử lý với bộ nhớ và thanh ghi ngoài. – Các tác vụ tác động với nhóm bit không nhỏ hơn 4 bit. • MCU: – Được thiết kế để làm việc với mạch ngoài tối thiểu. – Tập lệnh đơn giản (khoảng 255 lệnh). – Các tác vụ có thể tác động lên từng bit. • MCU là máy tính với tất cả trong một chip: MCU = CPU + Bộ nhớ + Giao tiếp I/O 3/26/2011 61 Microprocessor and Microcontroller Sơ đồ khối của một MCU
File đính kèm:
- bai_giang_vi_xu_ly_chuong_1_gioi_thieu_he_vi_xu_ly_tong_quat.pdf