1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng lý thuyết vi xử lý kỹ thuật vi xử lý cd rom

156 197 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 156
Dung lượng 19,05 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- Khối giao tiếp nhập/xuất Input/Output - I/O: tạo ra khả năng giao tiếp giữa hệ vi xử lý với các thiết bị ngoại vi như bàn phím, chuột … thiết bị nhập, màn hình, máy in, loa … thiết bị

Trang 1

BÀI GIẢNG

VI XỬ LÝ/ KỸ THUẬT VI XỬ LÝ

BỘ MÔN ĐIỆN TỬ MÁY TÍNH_ KHOA CÔNG NGHỆ ĐIỆN TỬ

Trang 2

CHƯƠNG 1: TỔNG QUAN VỀ VI XỬ LÝ – VI ĐIỀU KHIỂN

- Trình bày được cấu trúc và hoạt động các thành phần của hệ vi xử lý tập lệnh của VĐK

- Trình bày được các dạng dữ liểu biểu diễn thông tin trong hệ vi xử lý

- Nhận dạng được thành phần của các hệ thống

Nhắc lại về Hệ thống số đếm:

Hệ nhị phân, hệ thập phân và hệ thập lục phân:

+ Hệ nhị phân, cơ số là 2, dùng hai số 0 và 1 để biểu diễn

Bảng chuyển đổi giữa số nhị phân, thập phân và thập lục phân:

Hệ nhị phân (8 chữ số) Hệ thập phân (2 chữ số) Hệ thập lục phân (2 chữ số)

Trang 3

- Máy vi tính bao gồm những máy tính dùng bộ vi xử lý (họ Intel, Motorola, AMD…) làm cốt lõi, các vi điều khiển (microcontroller) hay máy vi tính trong một vi mạch (one-chip microcomputer)

2 Ứng dụng của vi xử lý (tham khảo thêm trên Internet)

3 Sơ đồ khối của hệ vi xử lý

3.1 Sơ đồ khối tiêu biểu của hệ vi xử lý: (hệ thống vi xử lý có kiến trúc 3-bus)

3.2 Một hệ vi xử lý gồm có các thành phần chính sau:

- P (microprocessor hay còn gọi là CPU): đọc mã lệnh từ bộ nhớ (được ghi dưới dạng các bit 0

và 1), sau đó giải mã và thực thi lệnh

- Bộ nhớ (Memory): chứa các chương trình điều khiển hoạt động của toàn hệ và các dữ liệu, kết quả trung gian Có hai loại bộ nhớ: RAM (Random Access Memory) là loại bộ nhớ truy xuất ngẫu nhiên và ROM (Read-Only Memory) là loại bộ nhớ chỉ đọc

- Khối giao tiếp nhập/xuất (Input/Output - I/O): tạo ra khả năng giao tiếp giữa hệ vi xử lý với các thiết bị ngoại vi như bàn phím, chuột … (thiết bị nhập), màn hình, máy in, loa … (thiết bị xuất), các ổ đĩa… (thiết bị xuất/nhập)

P (Microprocessor): Vi xử lý

CPU (Central Processing Unit): Đơn vị xử lý trung tâm

Address bus: Bus địa chỉ

Data bus: Bus dữ liệu

Control bus: Bus điều khiển

RAM (Random Access Memory): Bộ nhớ truy xuất ngẫu nhiên

ROM (Read-Only Memory): Bộ nhớ chỉ đọc

I/O Interface: Khối giao tiếp nhập/xuất

Peripheral Devices: Thiết bị ngoại vi

P (CPU)

Hình 1.1

Output Devices Peripheral Devices

Trang 4

- Bus: ba khối chức năng trên liên hệ với nhau thông qua một tập các đường dây để truyền thông tin gọi là bus Trong hệ thống vi xử lý thường bao gồm 3 loại bus: bus địa chỉ, bus dữ liệu và bus điều khiển

3.3 Tổng kết lại các điểm quan trọng:

1 Hệ vi xử lý có 3 khối chính:

o Bộ nhớ

o CPU

o Phối ghép (giao tiếp) vào/ra (I/O)

2 CPU đọc thông tin từ bộ nhớ và ghi thông tin vào bộ nhớ

3 Các thiết bị đầu vào đưa thông tin từ bên ngoài vào hệ vi xử lý

4 Các thiết bị đầu ra đưa thông tin từ CPU đến các đối tượng bên ngoài

5 Thông tin không chạy trực tiếp từ bộ nhớ đến các phối ghép vào/ra (I/O) và ngược lại, trước tiên thông tin phải đi qua CPU

Có thể thấy rằng vi xử lý chỉ trao đổi thông tin với bộ nhớ và các phối ghép vào/ra I/O Dù hệ thống sau này phức tạp như thế nào hoặc chương trình có dài đến đâu thì vi xử lý chỉ làm những việc sau:

1 Đọc từ bộ nhớ

2 Ghi vào bộ nhớ

3 Đọc từ các đầu vào

4 Ghi vào các đầu ra

5 Thực hiện các lệnh nội bộ như lệnh cộng (ADD), lệnh trừ (SUB) …

II CÁC LOẠI BUS

1 Bus địa chỉ

- Có chức năng chuyển tải các thông tin về địa chỉ

- Khi đọc/ghi bộ nhớ hay thiết bị I/O, P sẽ đưa ra các bit địa chỉ trên bus địa chỉ để chọn chính xác một ngăn nhớ (word) hay một thiết bị I/O cụ thể nào đó sẽ được giao tiếp với nó

- Số lượng địa chỉ mà P có thể quản lý phụ thuộc vào số bit (số đường dây) của bus địa chỉ (16, 20,

24, 32 … bit)

Ví dụ: Một P có số đường dây của bus địa chỉ là N = 16

 có khả năng quản lý: 2N = 216 = 26.210 = 64.210 = 64 K= 65356 địa chỉ

- Bus địa chỉ là loại bus một chiều (xuất phát từ P)

 Đệm bus địa chỉ

Trang 5

Do tất cả các thiết bị ngoại vi và bộ nhớ đều được nối với bus địa chỉ nên về mặt điện có thể vượt quá tính chịu tải (fan-out) của vi xử lý Trong trường hợp các mạch nối vào bus địa chỉ tiêu thụ dòng điện lớn hơn khả năng chịu tải của vi xử lý thì hệ thống sẽ không hoạt động hay hoạt động không ổn định Để giải quyết vấn đề này ta sử dụng các bộ đệm trung gian được gọi là bộ đệm địa chỉ

Ví dụ: Đệm địa chỉ cho CPU có bus địa chỉ 16-bit:

Hình 1.2

2 Bus dữ liệu

- Có chức năng chuyển tải các thông tin về dữ liệu đến/từ P

- Số lượng đường dây của bus này quyết định số bit dữ liệu mà P có khả năng xử lý cùng một lúc (8, 16, 32, 64 … bit)

- Bus dữ liệu là loại bus hai chiều

Tuy nhiên tại một thời điểm nhất định thì dữ liệu chỉ được truyền theo một hướng duy nhất

Hình 1.3 Dữ liệu di chuyển 2 chiều truyền bus dữ liệu Lưu ý: Hoạt động của bus địa chỉ và bus dữ liệu hoàn toàn độc lập với nhau (hình 1.4)

Trang 6

Hình 1.4

 Đệm bus dữ liệu

- Tương tự như bus địa chỉ, bus dữ liệu cũng cần được đệm để tăng fan-out khi cần thiết Lưu ý là cần dùng kỹ thuật đệm 2 chiều (hình 1.5) (IC 74LS245)

3 Bus điều khiển

- Gồm nhiều đường dây tín hiệu khác nhau (WR , RD …), mỗi tín hiệu điều khiển có một chiều nhất định Khi hoạt động, P có thể đưa tín hiệu điều khiển đến các khối khác nhau trong hệ, đồng thời

nó cũng có thể nhận các tín hiệu từ các khối khác để phối hợp hoạt động của toàn hệ

Lưu ý: Bus điều khiển ở khối I/O vẽ dạng 2 chiều để chỉ tính 2 chiều của cả nhóm tín hiệu, chứ không phải của mỗi tín hiệu

- Có 6 loại truyền thông tiêu biểu mà bus điều khiển phải xác đinh bằng tín hiệu điện:

(i) Đọc từ bộ nhớ

(ii) Ghi vo bộ nhớ

(iii) Đọc từ phối ghép đầu vào (Input)

(iv) Ghi vào phối ghép đầu ra (Output)

Hình 1.5

Kỹ thuật đệm 2 chiều sử dụng thêm một tín hiệu điều khiển, tín hiệu này sẽ quy định chiều dữ liệu sẽ được đệm

Trang 7

(v) Nhận biết yêu cầu ngắt (Interrupt acknowledge)

(vi) Nhận biết yêu cầu treo (Hold acknowledge, phục vụ DMA)

Giải thích về truyền thông trong cấu trúc 3-bus dựa vào sơ đồ khối hình 1.1: đọc và ghi III VI XỬ LÝ (P – MICROPROCESSOR)

+ Sơ đồ khối của một P được cho trên hình 1.6

+ Có ba khối chức năng chính: khối thực thi (Execution Unit), khối điều khiển tuần tự (Sequencer)

và khối giao tiếp bus (Bus Interface)

- Bộ điều khiển tuần tự (Sequencer): nhận lệnh từ bộ nhớ, sau đó giải mã lệnh và truyền lệnh đã giải mã đến khối thực thi

Execution Unit: Khối thực thi

Control Unit: Khối điều khiển

Registers: Các thanh ghi

ALU (Arithmetic & Logic Unit): Khối logic - số học

Sequencer: Bộ điều khiển tuần tự

Instruction Register: Thanh ghi lệnh

Instruction Decoder: Bộ giải mã lệnh

Program Counter: Bộ đếm chương trình

Internal bus: Bus nội

Bus interface: Giao tiếp bus

Data bus driver: Bộ điều khiển bus dữ liệu

Control bus driver: Bộ điều khiển bus điều khiển

Address bus driver: Bộ điều khiển bus địa chỉ

Address bus Data bus Control bus

Registers (data, address)

ALU

Address bus driver

Data bus driver

Control bus driver

Program Counter

Internal bus

Bus Interface Execution Unit Sequencer

Hình 1.6

Control Unit

Instruction Decoder Instruction Register

Trang 8

+ Bộ đếm chương trình (Proram Counter): là một thanh ghi lưu giữ địa chỉ của lệnh kế tiếp

sẽ được thực thi Mỗi khi một lệnh được thực thi, bộ đếm chương trình sẽ được tăng lên 1 để chỉ ra địa chỉ của lệnh kế tiếp sẽ được thực thi Nội dung của bộ đếm chương trình được đặt lên bus địa chỉ để tìm và nhận lệnh mong muốn Như vậy, P thực hiện các lệnh của chương trình một cách tuần

tự, trừ khi gặp các lệnh chuyển điều khiển (lệnh nhảy, gọi chương trình con …) làm thay đổi nội dung

PC Trong một số vi xử lý, bộ đếm chương trình còn được gọi là con trỏ lệnh IP (Instruction Pointer)

+ Bộ giải mã lệnh (Instruction Decoder): thông dịch (diễn dịch) các lệnh được nhận vào P

Có thể xem bộ giải mã lệnh như một từ điển lưu trữ nghĩa của mỗi lệnh và các bước mà P cần thực hiện đối với mỗi lệnh được nhận vào Giống như từ điển nếu có càng nhiều trang thì có thể định nghĩa được nhiều từ hơn, một P có thể hiểu càng nhiều lệnh hơn nếu có bộ giải mã lệnh càng lớn

+ Thanh ghi lệnh (Instructin Register): lưu giữ mã nhị phân của lệnh đang được thực thi

- Khối thực thi (Execution Unit): thực thi và ghi kết quả câu lệnh Các toán hạng (operand) liên quan

có mặt ở các thanh ghi (registers) hoặc có từ bus nội (internal bus)

+ ALU (Arithmetic Logic Unit): là một mạch điện tử có khả năng thực hiện các phép toán số học (+, -, *, / …) và logic (AND, OR, NOT, XOR…)

+ Thanh ghi (Register): là một bộ nhớ cực nhanh, có dung lượng hạn chế nằm bên trong P Các thanh ghi thường được dùng để lưu trữ các thông tin tạm thời Mỗi thanh ghi có một địa chỉ để truy xuất tới nó Các thanh ghi được nối với nhau hoặc đến các phần tử khác của P hay nối với bus ngoài nhờ bus nội Độ rộng của các thanh ghi có thể là 8-bit, 16-bit, 32-bit hay 64-bit tùy thuộc vào loại P Thông tin có thể là 2 giá trị cần được xử lý hay địa chỉ chứa giá trị cần được xử lý nhận từ

bộ nhớ (hay I/O) P có càng nhiều thanh ghi và độ rộng càng lớn thì càng tốt vì lúc này chương trình không phải thực hiện nhiều phép truyền thông tin giữa P và bộ nhớ do có thể truy xuất trực tiếp từ thanh ghi, từ đó làm giảm thời gian truy xuất cũng như độ dài lệnh

+ Khối điều khiển: tạo ra các tín hiệu điều khiển hoạt động của các bộ phận bên trong và bên ngoài P (tùy theo mã lệnh)

- Giao tiếp bus (Bus Interface): gồm ba bộ điều khiển bus để giao tiếp với bus bên ngoài tương ứng: bus dữ liệu, bus điều khiển và bus địa chỉ

Việc tìm nạp lệnh từ bộ nhớ là một trong các thao tác cơ bản nhất mà P thực hiện, gồm các bước như sau:

- Nội dung của PC được đặt lên bus địa chỉ

- Tín hiệu điều khiển READ được xác lập (chuyển sang trạng thái tích cực)

Trang 9

- Mã lệnh được đọc từ bộ nhớ và đưa lên bus dữ liệu

- Mã lệnh được chốt vào thanh ghi lệnh IR bên trong

- PC được tăng lên để chuẩn bị tìm nạp lệnh kế từ bộ nhớ

Hình 1.7 minh họa luồng thông tin cho việc tìm nạp lệnh

- Bộ nhớ lưu trữ: băng từ, đĩa mềm, đĩa cứng…

+ Thông thường bộ nhớ lưu trữ được xem như là thiết bị I/O

a Bộ nhớ chỉ đọc – ROM (Read-Only Memory)

- Là bộ nhớ chỉ đọc, không thể sửa đổi thông tin trong các hoạt động thông thường

- Thông tin ghi trong ROM sẽ không bị mất đi khi mất nguồn cung cấp

- ROM được ghi bằng thiết bị chuyên dụng

Trang 10

- ROM thường được dùng để chứa các chương trình và dữ liệu cố định (chương trình khởi động, dữ liệu tra bảng …)

- Các loại ROM:

o ROM: thông tin được ghi lúc chế tạo

o PROM (Programable ROM): là ROM trắng, chỉ cho phép ghi thông tin một lần duy nhất

o EPROM (Erasable ROM): có thể ghi và xóa thông tin nhiều lần Loại này được xóa bằng cách rọi tia cực tím vào cửa sổ thủy tinh trên bề mặt

o EEPROM (Electrically EPROM): còn gọi là ROM điện, có thể ghi và xóa thông tin bằng xung điện

o Flash ROM: tương tự EEPROM

b Bộ nhớ truy xuất ngẫu nhiên – RAM (Random Access Memory)

- Cho phép đọc/ghi thông tin bất kỳ lúc nào trong quá trình làm việc mà không cần thiết bị đặc biệt

- Thông tin trong RAM sẽ bị mất khi mất nguồn cung cấp

- Có hai loại RAM chính:

o RAM động – DRAM (Dynamic RAM): có cấu tạo từ các transistor MOSFET và tụ điện (1 phần tử nhớ), lưu trữ thông tin bằng điện tích trong tụ nên thông tin có thể mất đi (rò rĩ hết) nếu không có biện pháp duy trì thích hợp Do đó cần có quá trình làm tươi (refresh) định kì để phục hồi nội dung của các ô nhớ trước khi nó mất đi (rò rĩ hết) DRAM có thể tích hợp với dung lượng lớn

o RAM tĩnh – SRAM (Static RAM): cấu tạo từ những Flipflop (FF) (1 phần tử nhớ), mỗi FF lưu trữ một bit thông tin nên SRAM không cần quá trình làm tươi để duy trì nội dung Tuy nhiên, nó khó tích hợp với dung lượng lớn

2 Cấu trúc bên trong tiêu biểu của bộ nhớ

- Bộ nhớ gồm các phần tử nhớ hay ô nhớ (memory cell) được tổ chức dưới dạng ma trận Mỗi ô nhớ chứa một bit thông tin

- Mảng nhớ được phân chia thành một chuỗi các ngăn nhớ hay từ nhớ (word)

- Mỗi ngăn nhớ đều có một địa chỉ duy nhất

- Một ngăn nhớ có thể có 4-bit, 8-bit, 16-bit …

- Ký hiệu: số ngăn nhớ x độ rộng mỗi ngăn nhớ

Ví dụ: bộ nhớ 1024 x 8 bao gồm 210 ngăn nhớ, mỗi ngăn nhớ có 8-bit

Trang 11

- Cấu trúc bên trong tiêu biểu của bộ nhớ:

- Các tín hiệu tiêu biểu trên một chip nhớ:

+ CS(Chip Select): tín hiệu chọn chip (cho phép chip)

+ OE(Output Enable): tín hiệu cho phép xuất dữ liệu (nhận xung kích RD từ P)

+ WE(Write Enable): tín hiệu cho phép ghi dữ liệu (nhận xung kích WR từ P)

+ Address: các tín hiệu địa chỉ (từ bus địa chỉ) để chọn ngăn nhớ cần thao tác

+ Data: các tín hiệu dữ liệu đọc ra (data output) hay ghi vào (data input), được nối với bus

dữ liệu

3 Truy xuất bộ nhớ

* Các quy ước trên giản đồ thời gian: Hình 1.9

Trang 13

a Truy xuất ROM

Giới thiệu EPROM 2764:

Đây là IC nhớ 28 chân 8K (8192 x 8) với 13 đường địa chỉ và 8 đường dữ liệu Chú ý rằng chân /PGM không được điều khiển bởi vi xử lý, chỉ dùng cho bộ nạp dữ liệu vào ROM Điện áp VPP chỉ sử dụng khi nạp ROM, còn điện áp VCC = 5V là điện áp hoạt động của ROM

Quy trình đọc ROM:

1 Xác định địa chỉ của ngăn nhớ cần truy xuất CPU sẽ đưa địa chỉ này lên bus địa chỉ đến ROM

2 Kích hoạt tín hiệu chọn chip cho phép dữ liệu được xuất ra bus

A0 – A12 Đường địa chỉ D0 – D7 Đường dữ liệu /CE Chọn chip /OE Cho phép xuất /PGM Lập trình

Trang 14

3 CPU đợi 1 khoảng thời gian ngắn gọi là thời gian truy cập để vi mạch nhớ giải mã địa chỉ

và xuất dữ liệu ra đường dữ liệu CPU xuất xung nhịp nạp dữ liệu vào thanh ghi bên trong

4 Tín hiệu chọn chip được đặt ở mức không tích cực và xóa dữ liệu từ ROM vào CPU

Hình 1.10

b Truy xuất RAM

Giới thiệu RAM 6264

Đây là IC nhớ cho phép đọc ghi tùy ý, 28 chân 8K (8192 x 8) với 13 đường địa chỉ và 8 đường

dữ liệu

Quy trình đọc RAM: tương tự như đọc dữ liệu từ ROM

A0 – A12 Đường địa chỉ D0 – D7 Đường dữ liệu /CE Chọn chip /OE Cho phép xuất /WE Cho phép ghi

Trang 15

Hình 1.11

Hình 1.12 Quy trình ghi RAM:

(i) Các đường địa chỉ được kết nối với RAM xác định ngăn nhớ nào trong RAM sẽ được kết nối (ii) Dữ liệu cần ghi vào RAM được xuất đến các đường dữ liệu vào của RAM

(iii) Hệ thống phải đợi một khoảng thời gian nhỏ Trong khoảng thời gian này RAM sẽ giải mã địa chỉ và chọn ngăn nhớ mang địa chỉ nhận được Khoảng thời gian này gọi là thời gian ghi vào RAM

(iv) Đường dẫn R/W sẽ được đặt ở mức logic tương ứng với thao tác ghi vào RAM Tín hiệu này cho phép dữ liệu được ghi vào RAM

(v) Chú ý rằng ở đây ta nói về các đường dẫn dữ liệu ra từ RAM và các đường dẫn dữ liệu vào RAM Trong thực tế vì rằng trong một khoảng khắc nhất định thì ta chỉ thực hiện một thao tác

l đọc hoặc ghi, nên cả hai loại đường dẫn trên được thực hiện bằng một đường dẫn hai chiều chung

Trang 16

Hình 1.13

4 Giải mã địa chỉ cho bộ nhớ

Trong một hệ thống vi xử lý, bộ nhớ có thể được tạo thành từ nhiều chip nhớ Các chip này đều dùng chung bus dữ liệu để trao đổi với P Do đó để tránh xung đột trên bus, cần phải giải mã địa chỉ để tại mỗi thời điểm chỉ cho phép một chip có thể kết nối với bus dữ liệu để trao đổi với P Kết nối mạch giải mã địa chỉ tổng quát:

Hình 1.14 Quan hệ giữa giải mã địa chỉ và bảng bộ nhớ:

Ví dụ: P có 16 đường địa chỉ (A15  A0)  có thể quản lý 216 = 26.210 = 64 K=65536 địa chỉ: + 3 bit cao (A15  A13) được đưa đến bộ giải mã (ở đây dùng IC 74LS138) + 13 bit thấp (A12  A0) được đưa đến các chip nhớ  có 23 = 8 vùng, mỗi vùng có 213 = 23.210 = 8 K=8192 địa chỉ

Các bit địa chỉ

m bit đến bộ giải mã địa chỉ

n bit đến các chip nhớ

Trang 17

V NHẬP/XUẤT (I/O – INPUT/OUTPUT)

- Theo dạng truyền dữ liệu:

+ Nối tiếp: đồng bộ và bất đồng bộ (thêm bit start, stop)

+ Song song

2 Cấu trúc tiêu biểu của port I/O

- Các port nhập (I) và xuất (O) giao tiếp P với các thiết bị ngoài không thể nối trực tiếp đến các bus

- Về cơ bản, một port xuất chỉ là một thanh ghi Khi P ghi ra địa chỉ được gán cho port, port

sẽ chứa dữ liệu có từ bus dữ liệu Như vậy nó cung cấp ngõ ra có chốt cho các thiết bị ngoài

- Một port nhập thông thường là một bộ đệm 3 trạng thái Khi P đọc vào từ địa chỉ được gán cho port, bộ đệm 3 trạng thái sẽ đưa dữ liệu từ các ngõ nhập ngoài vào bus dữ liệu rồi P đọc

dữ liệu từ bus

3 Giải mã địa chỉ cho I/O

a I/O trực tiếp (Định địa chỉ I/O theo kiểu trực tiếp)

- Các địa chỉ thiết bị I/O tách khỏi các địa chỉ bộ nhớ

- P cung cấp hai đường điều khiển đọc và ghi riêng cho I/O: IOR và IOW

- Giải mã địa chỉ cho I/O tương tự như giải mã địa chỉ cho bộ nhớ

Đưa đến các chân chọn chip của các chip nhớ

Hình 1.16

Trang 18

Hình 1.20 Định địa chỉ I/O theo kiểu trực tiếp Lưu ý: Một số thiết bị I/O có thể không có các tín hiệu địa chỉ

Ví dụ: Giải mã địa chỉ cho I/O:

Hình 1.20 Giải mã địa chỉ cho I/O Khi P cần trao đổi dữ liệu với một thiết bị I/O nào đó, nó phát tín hiệu địa chỉ của thiết bị lên bus địa chỉ Một số trong các tín hiệu địa chỉ này được đặt vào mạch giải mã chọn thiết bị Mạch giải mã này sẽ kích hoạt chỉ một tín hiệu chọn chip tương ứng với thiết bị được chọn, do đó chỉ có

bộ đệm dữ liệu của thiết bị này được nối với bus dữ liệu để trao đổi với P Trong quá trình này, tín hiệu điều khiển đọc hay ghi cũng được phát trên bus điều khiển để xác định thao tác tương ứng

b I/O được ánh xạ như bộ nhớ

- P xem các thiết bị I/O như các vị trí bộ nhớ Các vị trí này không được trùng với các địa chỉ có trong các thiết bị nhớ như ROM và RAM

- P không có các tín hiệu điều khiển đọc và ghi riêng cho I/O

Sau đây là hai ví dụ minh họa việc tạo ra các tín hiệu đọc/ghi I/O từ các đường điều khiển đọc/ghi

bộ nhớ:

Ví dụ 1: Giả sử P có 16 đường địa chỉ, tín hiệu đọc/ghi I/O tích cực mức 0:

Trang 19

Trong ví dụ này đường địa chỉ A15 được dùng như là bit chọn đọc/ghi bộ nhớ hay I/O Nếu A15 = 1, ngõ ra IOR và IOW luôn là mức 1 nên thao tác được chọn là đọc/ghi bộ nhớ Ngược lại khi A15 = 0, ngõ ra IOR hay IOW sẽ là mức 0 khi có tín hiệu RD hay WR tương ứng từ bộ xử lý

Ví dụ 2: Mức tích cực của các tín hiệu đọc/ghi I/O là mức 1:

CSx: tín hiệu chọn thiết bị I/O từ mạch giải mã địa chỉ

3 Các phương pháp điều khiển I/O

Có 3 phương pháp cơ bản: hỏi vòng hay kiểm tra tuần tự (polling), điều khiển ngắt (interrupt)

và DMA (Direct Access Memory) Ngoài ra cũng có thể kết hợp các phương pháp trên

a Polling (Hỏi vòng)

- P lần lượt kiểm tra từng I/O xem có yêu cầu dịch vụ không thông qua các cờ (flag)

- Tất cả các việc chuyển dữ liệu đến và từ các thiết bị I/O được thực hiện bằng chương trình  polling là cơ chế đồng bộ (synchronous) với việc thực thi chương trình

- Kỹ thuật polling có các hạn chế:

+ Mất thời gian của P (do kiểm tra trạng thái của tất cả các ngoại vi thường xuyên)

+ Chậm trong các hệ thống thời gian thực (real-time), không thỏa mãn cho các thiết bị yêu cầu tốc độ đáp ứng nhanh

Trang 20

+ Người sử dụng có thể gặp khó khăn trong trong vấn đề lập trình vì phải luôn canh chừng I/O

- Lưu đồ hoạt động của polling:

b Interrupt (Ngắt)

+ Ngắt là một quá trình xử lý thông tin của vi xử lý tương tự như con người xử lý thông tin

Ví dụ khi bạn đang nói chuyện với một người Người thứ ba đến và gọi tên bạn Đây là dấu hiệu rằng có một người khác yêu cầu sự quan tâm của bạn Người thứ ba này có thể được coi như

Trang 21

là một yêu cầu ngắt bên ngoài (external interrupt request) Người này yêu cầu bạn ngắt cuộc nói chuyện của mình Bạn có thể xử lý yêu cầu nầy bằng các cách như sau:

1 Bạn có thể bỏ qua yêu cầu và coi như người thứ ba là không tồn tại

2 Bạn có thể dừng một cách thích hợp đối thoại đang diễn ra, rồi bắt đầu quan tâm đến người thứ ba Lúc này bạn bắt đầu nói chuyện với người này chứ không nói chuyện với người đầu tiên nữa

3 Bạn tức khắc dừng nói chuyện với người thứ nhất và bắt đầu nói chuyện ngay với người thứ

+ Ví dụ như ta có một cảm biến báo cháy Thông thường khi không có lửa thì cảm biến xuất

ra số 1, khi có lửa thì cảm biến xuất số 0 báo cho vi xử lý kích hoạt chương trình báo động Vi xử lý

có thể luôn luôn đọc trạng thi của cảm biến bằng lệnh IN từ cổng nối với cảm biến Sau đó vi xử lý kiểm tra trạng thi cảm biến và gọi chương trình báo động khi trạng thi cảm biến là 0 Tuy vậy đây là một thao tác lặp đi lặp lại nhiều lần một cách không hiệu quả, vì phần lớn thời gian cảm biến không báo cháy Một cách xử lý hiệu quả hơn là đưa tín hiệu của cảm biến vào yêu cầu ngắt của vi xử lý Chỉ khi nào yêu cầu ngắt này được kích hoạt thì vi xử lý mới gọi chương trình báo động

Ngắt là cơ chế bất đồng bộ (asynchronous) với việc thực thi chương trình Nó được dùng với mục đích là tránh tối đa hoặc loại bỏ hẳn cơ chế hỏi vòng để kiểm tra trạng thái thiết bị

Trang 22

- Khi I/O có yêu cầu trao đổi dữ liệu nó sẽ phát ra một tín hiệu báo cho P Tín hiệu đó được gọi

là tín hiệu yêu cầu ngắt IRQ (interrupt request) Khi P nhận được yêu cầu ngắt đó, nếu đồng ý trao đổi thông tin với I/O, nó sẽ trả lời với bộ điều khiển nhập/xuất bằng tín hiệu chấp nhận ngắt INTA (interrupt acknownledge) đồng thời ngừng chương trình đang làm và gọi chương trình phục

vụ ngắt cho I/O Sau khi phục vụ xong, nó quay về tiếp tục thực hiện chương trình đang làm tại nơi bị ngắt

- Khi có nhiều I/O yêu cầu ngắt đồng thời  cần có mạch điều khiển ưu tiên ngắt

- Lưu đồ hoạt động của ngắt:

- Thủ tục interrupt về nguyên tắc tương tự với gọi chương trình con, ngoại trừ:

(i) Interrupt được khởi động từ 1 tín hiệu bên trong hoặc bên ngoài thay vì từ những thực thi lệnh

(ii) Địa chỉ của chương trình phục vụ interrupt được xác định bằng thủ tục hardware thay vì từ vùng địa chỉ của lệnh (bảng vector ngắt được xác định trước của từng loại vi xử lý)

(iii) Khi đáp ứng 1 interrupt cần lưu tất cả các thông tin định nghĩa trạng thái hiện hành của hệ thống thay vì chỉ lưu trữ bộ đếm chương trình PC

c DMA (Direct Memory Access)

- Thông thường khi chương trình muốn chuyển một byte dữ liệu từ ngoại vi vào bộ nhớ, nó phải thực hiện thông qua P gồm một thao tác nhập và sau đó là thao tác ghi bộ nhớ Hoặc ngược lại, khi muốn đưa thông tin từ bộ nhớ ra ngoại vi, P phải làm thao tác đọc bộ nhớ rồi xuất ra ngoại vi Trong trường hợp này, chức năng của P chỉ là chuyển dữ liệu mà không xử lý gì cả Điều này lặp đi lặp lại nhiều lần sẽ làm lãng phí việc sử dụng P vì chức năng chủ yếu của P là xử lý dữ liệu

Trang 23

- DMA là cơ chế điều khiển cho phép truy xuất bộ nhớ trực tiếp, không thông qua P

- Cơ chế DMA được thực hiện bởi một mạch phần cứng được gọi là bộ điều khiển DMA (DMAC - DMA Controller)

- DMA giúp rút ngắn thời gian truy xuất giữa bộ nhớ và I/O Cơ chế này rất tiện dụng cho các thiết bị ngoại vi có khối lượng thông tin trao đổi lớn (trao đổi một khối dữ liệu lớn trong một thời gian ngắn) ví dụ như card màn hình, đĩa cứng … trong máy tính

- Quá trình DMA bắt đầu khi có tín hiệu yêu cầu DMA (DRQ) từ thiết bị I/O đến DMAC DMAC tiếp tục gởi tín hiệu yêu cầu P nhường bus (HRQ) đến chân HOLD của P để nó thực thi việc trao đổi dữ liệu trực tiếp giữa bộ nhớ và I/O Khi P đồng ý nhường bus, nó trả lời cho DMAC bằng tín hiệu chấp nhận nhường bus (HLDA) đồng thời tạm ngưng mọi hoạt động, tự tách ra khỏi hệ thống Đến lượt DMAC gởi tín hiệu thông báo cho phép trao đổi dữ liệu theo kiểu DMA (DACK) đến thiết bị I/O Khi DMAC chuyển hết dữ liệu, nó trả quyền điều khiển các bus lại cho P, quá trình DMA kết thúc

- Trong thực tế, việc sử dụng cơ chế DMA khá phức tạp và qua nhiều công đoạn vì DMAC không thi hành bất kì lệnh nào, chương trình nào (không thực thi phần mềm) để chuyển dữ liệu mà

nó thực hiện hoàn toàn bằng phần cứng nên cần phải có trước đầy đủ các thông tin về vị trí dữ liệu của I/O, vị trí bộ nhớ chứa dữ liệu và số lượng byte cần chuyển để P nạp cho DMAC Ngoài ra, DMAC còn phải có khả năng tạo ra các tín hiệu điều khiển cần thiết giống như các tín hiệu của P

VI VI XỬ LÝ VÀ VI ĐIỀU KHIỂN

- Về cấu trúc phần cứng:

+ Vi xử lý: là một CPU đơn chip (như trong sơ đồ khối ở trên)

Trang 24

+ Vi điều khiển: gồm CPU và một số thành phần khác như bộ nhớ ROM, RAM, các port I/O

và một số mạch chức năng như mạch định thời (timer), mạch điều khiển ngắt (interrupt controller), mạch giao tiếp nối tiếp (serial interface)…

- Về ứng dụng:

+ Vi xử lý: thường dùng làm CPU trong các máy vi tính

+ Vi điều khiển: thường dùng trong các thiết kế nhỏ, hướng điều khiển

- Đặc trưng về tập lệnh:

+ Vi xử lý: mạnh về các kiểu định địa chỉ, số lệnh nhiều

+ Vi điều khiển: có thể thao tác với từng bit đơn (định hướng bit)

***

Trang 25

CHƯƠNG 2: BỘ VI XỬ LÝ INTEL 80X86 2.1 Cấu trúc phần cứng của bộ vi xử lý 8086

+ Control Unit (CU) tạo ra tất cả các tín hiệu điều khiển trong CPU Nó khởi tạo các thanh ghi khi ở nguồn, tạo ra các tín hiệu để lấy lệnh cho ALU Khối điều khiển có thể được thực hiện hoàn toàn bởi phần cứng (điều khiển cứng, ví dụ như sử dụng một bộ đếm trạng thái và một mảng logic khả lập triình) hay kết hợp giữa các lệnh phần mềm (vi lệnh được lưu trữ trong CPU) và phần cứng (bộ điều khiển vi chương trình Cả hai họ vi xử lý Intel 8086 và Motorola 68000 đều sử dụng các bộ điều khiển vi chương trình

+ Registers – là các bộ nhớ nhỏ, nhanh, thường được sử dụng để lưu dữ liệu và địa chỉ gắn với (tương ứng với) các mã lệnh của chương trình

+ ALU thực hiện các phép toán số học và logic

2.2 Cấu trúc bên trong và sự hoạt động

+ Trong sơ đồ khối, ta thấy trong CPU 8086 có hai khối chính: khối phối ghép bus (bus interface unit, BIU) và khối thực hiện lệnh (execution unit, EU) Việc chia CPU thành hai phần đồng thời có liên hệ với nhau qua đệm lệnh làm tăng đáng kể tốc độ xử lý của CPU Các bus bên trong CPU có nhiệm vụ chuyển tải tín hiệu của các khối khác Trong số các bus có bus dữ liệu 16 bit của ALU, bus các tín hiệu điều khiển ở EU và bus trong của hệ thống ở BIU Trước khi đi ra bus ngoài hoặc đi vào bus trong của bộ vi xử lý, các tín hiệu truyền trên bus thường được cho đi qua các bộ đệm để nâng cao tính tương thích cho nối ghép hoặc nâng cao khả năng phối ghép

Trang 26

+ BIU có nhiệm vụ đưa ra địa chỉ, đọc mã lệnh từ bộ nhớ, đọc/ghi dữ liệu từ/vào cổng hoặc

bộ nhớ Bên trong BIU còn có bộ nhớ đệm lệnh (còn gọi là hàng đợi lệnh) dùng để chứa các lệnh đã đọc được nằm sẵn chờ EU xử lý

+ EU có nhiệm vụ cung cấp địa chỉ cho BIU để khối này đọc lệnh và dữ liệu, còn bản thân nó thì giải mã lệnh và thực hiện lệnh Mã lệnh đọc vào từ bộ nhớ được đưa đến đầu vào của bộ giải mã (nằm trong khối điều khiển CU), các thông tin thu được từ đầu ra của bộ giải mã sẽ được đưa đến mạch tạo xung điều khiển để tạo ra các dãy xung khác nhau (tùy từng lệnh) điều khiển hoạt động của các bộ phận bên trong và bên ngoài CPU Trong EU còn có khối tính toán số học và logic ALU dùng để thực hiện các thao tác khác nhau với các toán hạng của lệnh

2.3 Sơ đồ khối bên trong của 8086

+ Đơn vị giao tiếp Bus (BIU)

BIU bao gồm các thanh ghi đoạn (segment registers: CS, DS, SS, ES), con trỏ lệnh IP (instruction pointer) và bộ điều khiển logic bus (bus control logic, BCL) Đơn vị giao diện BIU còn có

bộ nhớ đệm cho mã lệnh Bộ nhớ này có chiều dài 4 byte (trong 8088) và 6 byte (trong 8086) Bộ nhớ đệm mã lệnh được nối với khối điều khển CB (control block) của đơn vị thực hiện lệnh EU Bộ nhớ này lưu trữ tạm thời mã lệnh trong một dãy gọi là hàng đợi lệnh Hàng đợi lệnh cho phép bộ

vi xử lý có khả năng xử lý xen kẽ liên tục dòng mã lệnh (pipelining) Hoạt động của bộ CPU được chia làm ba giai đoạn: đọc mã lệnh (operation code fetching), giải mã lệnh (decording) và thực hiện lệnh (execution)

BIU đưa ra địa chỉ, đọc mã lệnh từ bộ nhớ, đọc/ghi dữ liệu từ các cổng vào hoặc bộ nhớ Nói cách khác BIU chịu trách nhiệm đưa địa chỉ ra bus và trao đổi dữ liệu với bus

Trang 27

+ Đơn vị xử lý lệnh (EU)

Trong EU có khối điều khiển (control unit, CU) Chính tại bên trong khối điều khiển này có mạch giải mã lệnh Mã lệnh đọc vào từ bộ nhớ được đưa đến đầu vào của bộ giải mã, các thông tin thu được từ đầu ra của nó sẽ được đưa đến mạch tạo xung điều khiển, kết quả thu được là các dãy xung khác nhau tuỳ theo mã lệnh, để điều khiển hoạt động của các bộ phận bên trong và bên ngoài CPU

Trong EU có khối số học và lôgic (arithmatic and logic unit, ALU) chuyên thực hiện các phép tính số học và logic mã toán tử của nó nằm trong các thanh ghi đa năng Kết quả thường được đặt

về thanh ghi AX

Ngoài ra trong EU còn có các thanh ghi đa năng (registers: AX, BX, CX, DX, SP, BP, SI, DI), thanh ghi cờ FR (flag register)

Tóm lại, khi CPU hoạt động EU sẽ cung cấp thông tin về địa chỉ cho BIU để khối này đọc lệnh và dữ liệu, còn bản thân nó thì giải mã và thực hiện lệnh

+ Nhóm các thanh ghi

Trang 28

o Thanh ghi dữ liệu (data register)

o Thanh ghi chỉ số và con trỏ (index & pointer register)

o Thanh ghi đoạn (segment register)

o Thanh ghi cờ

a Các thanh ghi dữ liệu

Các thanh ghi dữ liệu gồm có các thanh ghi 16 bit AX, BX, CX và DX trong đó nửa cao và nửa thấp của mỗi thanh ghi có thể định địa chỉ một cách độc lập Các nửa thanh ghi này (8 bit) có tên là

AH và AL, BH và BL, CH và CL, DH và DL Các thanh ghi này được sử dụng trong các phép toán số học và logic hay trong quá trình chuyển dữ liệu Trong đó :

 AX (ACC – Accumulator):

 BX (Base): thanh ghi cơ sở

 CX (Count): đếm

 DX (Data): thanh ghi dữ liệu

b Các thanh ghi chỉ số và con trỏ

Bao gồm các thanh ghi 16 bit SP, BP, SI và DI, thường chứa các giá trị offset (độ lệch) cho các phần tử định địa chỉ trong một phân đoạn (segment) Chúng có thể được sử dụng trong các phép toán số học và logic Hai thanh ghi con trỏ (SP – Stack Pointer và BP – Base Pointer) cho phép truy xuất dễ dàng đến các phần tử đang ở trong ngăn xếp (stack) hiện hành Các thanh ghi chỉ số (SI – Source Index và DI – Destination Index) được dùng để truy xuất các phần tử trong các đoạn dữ liệu

và đoạn thêm (extra segment) Thông thường các ghi con trỏ liên hệ đến đoạn stack hiện hành và các thanh ghi chỉ số liên hệ đến doạn dữ liệu hiện hành SI và DI dùng trong các phép toán chuỗi

c Các thanh ghi đoạn

Bao gồm các thanh ghi 16 bit CS (Code segment), DS (Data segment), SS (stack segment) và

ES (extra segment), dùng để định địa chỉ vùng nhớ 1 MB bằng cách chia thành 16 đoạn 64 KB Tất cả các lệnh phải ở trong đoạn mã hiện hành, được định địa chỉ thông qua thanh ghi CS Offset (độ lệch) của mã được xác định bằng thanh ghi IP Dữ liệu chương trình thường được đặt ở đoạn

dữ liệu, định vị thông qua thanh ghi DS Stack định vị thông qua thanh ghi SS Thanh ghi đoạn thêm

có thể sử dụng để định địa chỉ các toán hạng, dữ liệu, bộ nhớ và các phần tử khác ngoài đoạn dữ liệu và stack hiện hành

Do Bus địa chỉ của vi xử lý 8086 có kích thước là 20 bit, nhưng các thanh ghi con trỏ và thanh ghi chỉ số chỉ rộng 16 bit nên không thể định địa chỉ cho toàn bộ nhớ vật lý của máy tính là (220B = 1.048.576B = 1Mbyte) Vì vậy trong chế độ thực (real mode) bộ nhớ được chia làm nhiều đoạn để

Trang 29

một thanh ghi con trỏ 16 bit có thể quản lý được Các thanh ghi đoạn 16 bit sẽ chỉ ra địa chỉ đầu của

4 đoạn trong bộ nhớ, dung lượng lớn nhất của mỗi đoạn nhớ sẽ dài 216 = 64 Kbyte và tại một thời điểm nhất định bộ vi xử lý chỉ làm việc được với 4 đoạn nhớ 64Kbyte này Việc thay đổi giá trị của các thanh ghi đoạn làm cho các đoạn có thể dịch chuyển linh hoạt trong không gian 1 Mbyte, vì vậy các đoạn có thể nằm cách nhau khi thông tin cần lưu trong chúng đòi hỏi dung lượng đủ 64 Kbyte hoặc cũng có thể nằm chồng nhau do có những đoạn không dùng hết độ dài 64 Kbyte và vì thế các đoạn khác có thể bắt đầu nối tiếp ngay sau đó Địa chỉ của ô nhớ nằm ở đầu đoạn được ghi trong một thanh ghi đoạn 16 bit, địa chỉ này gọi là địa chỉ cơ sở Mười sáu bit này tương ứng với các đường dây địa chỉ từ A4 đến A20 Như vậy giá trị vật lý của địa chỉ đoạn là giá trị trong thanh ghi đoạn dịch sang trái 4 vị trí Điều này tương đương với phép nhân với 24 = 16 Địa chỉ của các ô nhớ khác nằm trong đoạn tính được bằng cách cộng thêm vào địa chỉ cơ sở một giá trị gọi là địa chỉ lệch hay độ lệch (offset), gọi như thế vì nó ứng với khoảng lệch của toạ độ một ô nhớ cụ thể nào đó so với ô đầu đoạn Độ lệch này được xác định bởi các thanh ghi 16 bit khác đóng vai trò thanh ghi lệch (offset register)

d Thanh ghi cờ

Các cờ chỉ thị tình trạng của bộ vi xử lý cũng như điều khiển sự hoạt động của chính nó Một thanh ghi cờ là 1 flip-flop mà nó chỉ thị một số tình trạng được tạo bởi việc thực thi 1 lệnh hay các hoạt động điều khiển cụ thể của EU Thanh ghi cờ 16-bit trong EU có 9 cờ

o Các cờ điều kiện - conditional flags: Có 6 cờ được gọi là cờ điều kiện Chúng được lập hay

xoá là bởi EU, dựa trên kết quả của các phép toán số học

o Cờ điều khiển - control flags: 3 cờ còn lại trong thanh ghi cờ được sử dụng để điều khiển

một số hoạt động của vi xử lý Chúng được gọi là các cờ điều khiển

a) Carry Flag (CF)- set by carry out of MSB

b) Parity Flag (PF)- set if result has even parity

c) Auxiliary carry Flag (AF)- for BCD

d) Zero Flag (ZF)- set if results = 0

e) Sign Flag (SF) = MSB of result

f) TF- single step trap flag

g) IF- interrupt enable flag

h) DF- string direction flag

i) Overflow Flag (OF)- overflow flag

Trang 30

o Cờ nhớ - Carry flag (CF) – Cờ này được đặt lên 1 khi tính toán một số không dấu bị tràn Ví

dụ khi cộng dạng byte: 255+1 (kết quả không nằm trong vùng 0 255) Khi không tràn, cờ

o Cờ không - zero flag (ZF)- chỉ thị rằng kết qủa của phép toán số học hay logic là bằng 0

o Cờ dấu - sign flag (SF) - chỉ thị dấu số học của kết quả sau 1 phép toán số học Nếu số là âm (MSB=1) thì SF=1 và ngược lại SF=0 khi MSB=0

o Cờ tràn - overflow flag (OF)- Cờ tràn OF=1 khi tính toán tràn số âm Ví dụ khi tính bới 2

byte: 100+50 (kết quả ngoài khoảng -128 127)

+ Các cờ điều khiển

Các cờ điều khiển được lập hay xoá thông qua các lệnh đặc biệt trong chương trình người dùng Ba cờ điều khiển là:

o Cờ bẫy - trap flag (TF) – Khi cờ TF=1, CPU sẽ chờ ngắt từ thiết bị ngoài

o Cờ ngắt - interrupt flag (IF) - được sử dụng để cho phép hay cấm ngắt của các chương

trình;

o Cờ hướng - direction flag (DF) - được sử dụng với các lệnh chuỗi, mảng dữ liệu, nếu DF=0 thực thi theo hướng tiến, DF=1 thực thi theo hướng lùi

o Không có lệnh riêng để lập cờ TF

2.4 Mô tả chức năng các chân

+ Sơ đồ chân 8086/8088 là gần tương tự như nhau, chỉ khác ở chỗ 8088 có 8bit dữ liệu còn

8086 có 16 bit dữ liệu ngoài Cả 2 bộ xử lý đều có:

o Độ rộng bus dữ liệu nội là 16 bit

o 20 đường địa chỉ (16 address/data + 4 address/status), cho phép địa chỉ hoá không gian bộ nhớ tối đa là 1Mbyte ở chế độ dồn kênh address/data pins (8088 only multiplexes 8 pins)

o 2 chế độ hoạt động (maximum và minimum mode)

o Cùng 1 tập lệnh

*** Sinh viên tham khảo them trên Internet ***

Trang 31

CHƯƠNG 3: GIỚI THIỆU VĐK PIC 8 BIT HỌ 16F8XX

- Trình bày được chức năng của họ VĐK PIC và PIC 16F8xx

- Trình bày được sơ đồ cấu trúc, cách tổ chức bộ nhớ thanh ghi và các modul thành phần, tập lệnh của VĐK PIC

- Phân tích, lựa chọn loại VĐK cho mục đích thiết kế

3.1 Đặc tính, cấu trúc, chức năng

3.1.1 Giới thiệu các VĐK , lịch sử phát triển của VĐK

+ PIC viết tắt của “Programmable Intelligent Computer”, có thể dịch là máy tính thông minh lập trình được, là một sản phẩm do hãng General Instruments đặt cho dòng sản phẩm đầu tiên của

họ PIC 1650

+ PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip Technology Dòng PIC đầu tiên là PIC 1650 được phát triển bởi MicroElectronics Division thuộc General Instruments Lúc này PIC 1650 được dung để giao tiếp với các thiết bị ngoại vi cho máy chủ CP 1600 Hiện nay PIC phát triển mạnh, có rất nhiều loại PIC ra đời

 PIC 12 (độ dài mã lệnh 12 bit) như là dòng PIC 12Cxxx (thí dụ: PIC 12F50x, PIC 12F675), PIC 5x (16F54),

 PIC 14 như dòng PIC 16Fxxx (16F84, 16F818, 16F877A, 16F872),

 PIC 16 như dòng PIC 18Fxxx (PIC 18F4520, 18F2550)

3.1.2 Khảo sát VĐK 8 bit

o Cấu hình VĐK 8 bit

+ PIC 16F877A là vi điều khiển PIC thông dụng, loại trung (mid- range) có đặc điểm:

- Đây là vi điều khiển thuộc họ PIC 16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit

- Mỗi lệnh đều được thực thi trong một chu kì xung clock

- Tốc độ hoạt động tối đa cho phép là 20 Mhz với một chu kì lệnh 20 ms

- Bộ nhớ chương trình Flash là 8k x 14 words, bộ nhớ dữ liệu (RAM) là 368x8 byte, và bộ nhớ EEPROM với dung lượng 256 x 8 byte

- Số port I/O là 5 với 33 chân I/O

+ Các đặc tính ngọai vi bao gồm các khối chức năng sau:

-Timer 0: bộ đếm 8 bit bộđếm với hệ số tỉ lệ trước

-Timer 1: bộ đếm 16 bit, bộ đếm với hệ số tỉ lệ trước.Có thể được đếm thông qua xung clock/ xung clock thạch anh ngoài ở chế độ phương thức cất giữ sleep

Trang 32

-Timer 2: bộ đếm 8 bit với thanh ghi chu kì 8 bit, bộ đếm8 bit của hệ số tỉ lệ trước, hệ số tỉ

lệ sau

- Có hai bộ bắt giữ/so sánh/điều rộng xung

- Các cổng giao tiếp nối tiếp đồng bộ (SSP) với SPI phương thức chủ và I2C (chủ/tớ)

- Bộ truyền nhận nối tiếp đồng bộ, không đồng bộ (UASRT/SCL) có khả năng phát hiện 9 bit địa chỉ

- Cổng phụ song song với 8 bit mở rộng, với các chân điều khiển RD, WR, CS

- Các đặc tính analog:

 Bộ chuyển đổi tương tự-số 10 bit trên chip với 8 kênh vào

 Hai bộ so sánh, + Bên cạnh đó là một vài đặc tính của vi điều khiển như:

- Bộ nhớ Flash với khả năng ghi xóa được 100000 lần

- Bộ nhớ dữ liệu EEPROM với khả năng ghi xóa được 1000000 lần

- Dữ liệu bộ nhớ EEPROM có thể lưu trữ được 40 năm

- Khả năng tự nạp chương trình với sựđiều khiển của phần mềm

- Nạp được chương trình ngay trên mạch điện ISP (in circuit programming) thông qua 2 chân

- Bộ đếm xung thời gian (WDT-Watch dog timer) với dao động RC bên trong

- Có mã chương trình bảo vệ (chức năng bảo mật mã chương trình)

- Có thể hoạt động hiều dạng dao động khác nhau

- Chếđộ sleep (phương thức cất giữ) tiết kiệm năng lượng

- Công nghệ CMOS Flash/ eeprom với nguồn mức thấp, tốc độ cao

- Dãi điện thế hoạt động rộng: 2V -> 5,5 V

- Công suất tiêu thụ thấp: <0,6 mA với 5V, 4Mhz 20 μA với nguồn 3V, 32 Khz <1 μA với nguồn dự phòng

- Khả năng ngắt: lên tới 14 nguồn ngắt trong và ngắt ngoài

- Ngăn xếp được chia làm 8 mức

- Truy cập bộ nhớ bằng địa chỉ trực tiếp hay gián tiếp

- Nguồn khởi động lại (POR-Power on reset)

o Sơ đồ cấu trúc của VĐK PIC 16F8xx 8 bit

Trang 33

o Khảo sát sơ đồ chân, chức năng các chân, port của VĐK PIC 16F8xx 8 bit

Trang 34

+ Ý nghĩa các chân:

 OSC1/CLKI: chân ngõa vào mạch dao động, chân 13

 OSC2/CLKO: chân ngõ ra của mạch dao động, chân 14

 /MCLR/Vpp: chân số 1, chân reset, tích cực mức thấp và còn là xung lập trình cho ROM

 RA0, RA1, RA2, RA3, RA4, RA5: chân 2-7, là các chân xuất nhập của PORTA

 Chân 2-7, 8-10 còn là ngõ vào analog AN0, AN1, AN2, AN3, AN4, AN5, AN6, AN7

 RA4/T0CKI: vừa là chân xuất nhập dữ liệu của port A, vừa là chân lấy xung cho thanh đếm của timer 0 (timer 0 clock input)

 RE0, RE1, RE2: chân 8-10, là các chân xuất nhập của PORTE

 RE0/RD: còn là xung cho phép đọc bộ nhớ (read), tích cực logic 0

 RE1/WR: còn là xung cho phép ghi bộ nhớ (write), tích cực logic 0

 RE2/CS: còn là xung chọn chip (chip select), tích cực logic 0

 RC0, RC1, RC2, RC3: chân 15-18, và RC4, RC5, RC6, RC7: chân 23-26: là các chân xuất nhập của port C

 RC0/T1OSO/T1KCI: còn là chân lấy xung cho thanh đếm của timer 1, và là chân T1OSO

 RC1/T1OSI: còn là chân T1OSI

 RC2/CCP1, RC1/T1OSI/CCP2: còn là chân bắt (capture), so sánh (compare) và điều rộng xung (PWM) Mođun CCP giao tiếp với timer 1 và timer 2

 RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7: chân 33-40 là các chân xuất nhập của PORTB

 RB0/INT: còn là chân phát động theo ngắt ngoài

Trang 35

 RC6/TX/CK: nó có thể được lập trình để dung chân này phát xung nhịp (serial clock) dung cho truyền bit dạng nối tiếp Đây còn là chân phát TX (transmit data) Hai chân này dung cho thu phát bất đồng bộ và đồng bộ (USART), có thể định địa chỉ

 RC7/RX/DT: nó có thể được lập trình để dung chân này trao đổi dữ liệu (serial data) Đây còn là chân thu dữ liệu (receive data)

 RA3/AN3/Vref+, RA2/AN2/Vref-/Cref: là các chân điện áp tham chiếu cho bộ chuyển đổi tương tự-số (ADC) 10 bit

 RC3/SCK/SCL: chân 18, còn là xung clock nối tiếp (Serial clock-SCK) cho SPI, và là chân clock nối tiếp cho I2C

 RC4/SDI/SDA: chân 23, còn là chân dữ liệu nối tiếp (serial data)

 RC5/SDO: chân 24, còn là chân xuất dữ liệu nối tiếp (serial data out)

 Môđun nối tiếp đồng bộ chủ (Master synchronous serial port-MSSP) có thể hoạt động ở hai chếđộ: SPI và I2C

 SPI (serial peripheral interface): giao tiếp ngoại vi nối tiếp SPI dùng 3 chân SDO, SDI, SCK

 I2C: (inter-integrated circuit): mạch tích hợp lien kết, dung 2 chân: SCL, SDA, có thể ở chế

độ chủ hoàn toàn (full master mode) hay chế độ tớ (slave mode) (với gọi địa chỉ tổng quát)

 RD0, RD1, RD2, RD3: chân 19-22, và RD4, RD5, RD6, RD7: chân 27-30: là các chân xuất nhập của PORT D

 VDD: chân 11, 32: là nguồn dương Vcc từ 2V đến 6V (5,5 V)

 VSS: chân 12, 31, là chân đất (mass, GND, 0V)

3.2 Tổ chức bộ nhớ thanh ghi

3.2.1 Giới thiệu

+ Thanh ghi là một bộ nhớ dung lượng nhỏ và rất nhanh, được sử dụng để tăng tốc độ xử lý của các chương trình máy tính bằng cách cung cấp các truy cập trực tiếp đến các giá trị cần dùng Hầu hết, nhưng không phải tất cả, các máy tính hiện đại hoạt động theo nguyên lý chuyển dữ liệu

từ bộ nhớ chính vào các thanh ghi, tính toán trên chúng, sau đó chuyển kết quả vào bộ nhớ chính 3.2.2 Các loại kiến trúc bộ nhớ

+ Kiến trúc Harvard được dùng để chỉ những kiến trúc máy tính mà trong đó phân biệt rõ ràng bộ nhớ dữ liệu và bộ nhớ chương trình, chúng có những đường truyền (bus) riêng để truy cập vào bộ nhớ dữ liệu và bộ nhớ chương trình (ngược lại, kiến trúc von Neumann có bộ nhớ và bộ nhớ chương trình chung)

Trang 36

+ Trong một máy tính sử dụng kiến trúc von Neumann, CPU có thể đọc một lệnh, hoặc đọc/ghi dữ liệu từ bộ nhớ Tuy vậy, cả hai quá trình tương tác với lệnh hoặc với dữ liệu, không thể thực hiện cùng lúc, vì nó sử dụng chung một đường truyền và bộ nhớ Trong một máy tính kiến trúc Harvard, CPU có thể vừa đọc một lệnh, vừa truy cập dữ liệu từ bộ nhớ cùng lúc Một máy tính kiến trúc Harvard có thể chạy nhanh hơn, bởi vì nó có thể thực hiện ngay lệnh tiếp theo khi vừa kết thúc lệnh trước đó Tốc độ được tăng lên nhưng phải trả giá bằng sự thiết kế phần cứng phức tạp hơn (cụ thể nhất mà chúng ta thấy, đó là việc phải thiết kế 2 bus khác nhau cho dữ liệu và chương trình)

+ Những năm gần đây, tốc độ CPU tăng lên rất nhiều lần so với tốc độ truy cập vào bộ nhớ chính Người ta cần quan tâm đến việc giảm số lần truy cập vào bộ nhớ để đảm bảo tốc độ hoạt động của CPU Nếu, trong cùng một lúc, mỗi lệnh của CPU cần phải truy cập vào bộ nhớ 1 lần, vậy thì việc tăng tốc độ CPU chẳng còn ý nghĩa gì nữa, bởi vì nó luôn luôn bị giới hạn bởi việc truy cập vào bộ nhớ

+ Bộ nhớ có thể được thiết kế để có tốc độ truy cập cao, nhưng nó đồng nghĩa với việc giá sản xuất sẽ cao Giải pháp là cung cấp một dung lượng nhỏ bộ nhớ đệm, với tốc độ truy cập rất cao,

và chúng ta gọi đó là cache (bộ nhớ đệm) Khi bộ nhớ CPU cần tương tác đang nằm trong cache, vì việc tương tác vào đó tốn ít thời gian hơn rất nhiều lần so với khi cache phải thay đổi và lấy dữ liệu

từ bộ nhớ chính đưa vào Việc điều chỉnh cache là một vấn đề quan trọng trong việc thiết kế máy tính

+ Những thiết kế chip CPU tốc độ cao ngày này thường kết hợp hai kiến trúc Harvard và von Neumann Bộ nhớ cache trên chip được phân thành cache chương trình và cache dữ liệu Kiến trúc Harvard được dùng khi CPU truy cập vào cache Tuy nhiên, trong trường hợp không có cache, dữ liệu được lấy từ bộ nhớ chính, mà bộ nhớ chính không được chia thành vùng nhớ chương trình và vùng nhớ dữ liệu Như vậy, kiến trúc von Neumann được dùng ở tầm vực truy cập bộ nhớ chính

+ Kiến trúc Harvard cũng thường được dùng trong một số DSP chuyên dụng, thường dùng trong các sản phẩm xử lý âm thanh, hình ảnh

Trang 37

+ Thêm vào đó, hầu hết các vi điều khiển thông dụng được dùng trong các ứng dụng điện tử như là PIC được sản xuất bởi Microchip Technology Inc và AVR của hãng Atmel Corporation, được phát triển dựa trên kiến trúc Harvard Những vi xử lý này có đặc tính là có lượng bộ nhớ dữ liệu và

bộ nhớ chương trình nhỏ, rất phù hợp với kiến trúc Harvard và tập lệnh RISC để đảm bảo hầu hết các lệnh được thực hiện trong 1 chu kỳ máy Việc phân chia bộ nhớ ra thành bộ nhớ chương trình

và bộ nhớ dữ liệu có thể làm cho bus dữ liệu và bus chương trình có kích thước băng truyền khác nhau Ví dụ như các vi điều khiển PIC có bus dữ liệu 8-bit (phụ thuộc vào dòng PIC), nhưng bus chương trình có thể là 12-bit, 14-bit hoặc 16-bit word Điều này cho phép mỗi một lệnh đơn có đủ chỗ chứa cho một giá trị hằng Những CPU RISC khác, ví dụ như ARM, thường cần ít nhất 2 lệnh để load một hằng số đủ kích thước

3.2.3 Tổ chức bộ nhớ của VĐK PIC 16F8xx 8 bit

o Tổ chức bộ nhớ

+ Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình (Program Memory)

và bộ nhớ dữ liệu (Data Memory)

o Khảo sát bộ nhớ chương trình

- Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash, dung lượng bộ nhớ 8K word (1 word = 14 bit) và được phân thành nhiều trang (từ page0 đến page 3) Như vậy bộ nhớ chương trình có khả năng chứa được 8*1024 = 8192 lệnh (vì một lệnh sau khi mã hóa sẽ có dung lượng 1 word (14 bit)

- Để mã hóa được địa chỉ của 8K word bộ nhớ chương trình, bộ đếm chương trình có dung lượng

13 bit (PC<12:0>)

- Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h (Reset vector)

- Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h (Interrupt vector)

- Bộ nhớ chương trình không bao gồm bộ nhớ stack và không được địa chỉ hóa bởi bộ đếm chương trình Bộ nhớ stack sẽ được đề cập cụ thể trong phần sau

Trang 38

o Khảo sát bộ nhớ dữ liệu

- Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều bank

- Đối với PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank Mỗi bank có dung lượng 128 byte, bao gồm các thanh ghi có chức năng đặc biệt SFG (Special Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung GPR (General Purpose Register) nằm ở vùng địa chỉ còn lại trong bank

- Các thanh ghi SFR thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) sẽ được đặt ở tất

cà các bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làm giảm bớt lệnh của chương trình

- Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877A như sau:

Trang 40

o Khảo sát các thanh ghi đặc biệt

+ Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và điều khiển các khối chức năng được tích hợp bên trong vi điều khiển

+ Có thể phân thanh ghi SFR làm hai lọai: thanh ghi SFR liên quan đến các chức năng bên trong (CPU) và thanh ghi SRF dùng để thiết lập và điều khiển các khối chức năng bên ngoài (ví dụ như ADC, PWM, …) Phần này sẽ đề cập đến các thanh ghi liên quan đến các chức năng bên trong Các thanh ghi dùng để thiết lập và điều khiển các khối chức năng sẽ được nhắc đến khi ta đề cập đến các khối chức năng đó

+ Chi tiết về các thanh ghi SFR sẽ được liệt kê cụ thể trong bảng phụ lục Chúng ta liệt kê các SFR đặc biệt quan trong sau:

 Thanh ghi STATUS (03h, 83h, 103h, 183h):thanh ghi chứa kết quả thực hiện phép toán của khối ALU, trạng thái reset và các bit chọn bank cần truy xuất trong bộ nhớ dữ liệu

 Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và ghi, cho phép điều khiển chức năng pull-up của các chân trong PORTB, xác lập các tham số về xung tác động, cạnh tác động của ngắt ngoại vi và bộ đếm Timer0

 Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh):thanh ghi cho phép đọc và ghi, chứa các bit điều khiển và các bit cờ hiệu khi timer0 bị tràn, ngắt ngoại vi RB0/INT và ngắt interrputon-change tại các chân của PORTB

 Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của các khối chức năng ngoại

vi

Ngày đăng: 25/11/2021, 17:11

HÌNH ẢNH LIÊN QUAN

Bảng chuyển đổi giữa số nhị phân, thập phân và thập lục phân: - Bài giảng lý thuyết vi xử lý   kỹ thuật vi xử lý   cd rom
Bảng chuy ển đổi giữa số nhị phân, thập phân và thập lục phân: (Trang 2)
3. Sơ đồ khối của hệ vi xử lý - Bài giảng lý thuyết vi xử lý   kỹ thuật vi xử lý   cd rom
3. Sơ đồ khối của hệ vi xử lý (Trang 3)
Hình 1.3 Dữ liệu di chuyển 2 chiều truyền bus dữ liệu   Lưu ý: Hoạt động của bus địa chỉ và bus dữ liệu hoàn toàn độc lập với nhau (hình 1.4) - Bài giảng lý thuyết vi xử lý   kỹ thuật vi xử lý   cd rom
Hình 1.3 Dữ liệu di chuyển 2 chiều truyền bus dữ liệu Lưu ý: Hoạt động của bus địa chỉ và bus dữ liệu hoàn toàn độc lập với nhau (hình 1.4) (Trang 5)
Hình 1.7 minh họa luồng thông tin cho việc tìm nạp lệnh. - Bài giảng lý thuyết vi xử lý   kỹ thuật vi xử lý   cd rom
Hình 1.7 minh họa luồng thông tin cho việc tìm nạp lệnh (Trang 9)
Hình 1.20 Giải mã địa chỉ cho I/O  Khi P cần trao đổi dữ liệu với một thiết bị I/O nào đó, nó phát tín hiệu địa chỉ của thiết bị  lên bus địa chỉ - Bài giảng lý thuyết vi xử lý   kỹ thuật vi xử lý   cd rom
Hình 1.20 Giải mã địa chỉ cho I/O Khi P cần trao đổi dữ liệu với một thiết bị I/O nào đó, nó phát tín hiệu địa chỉ của thiết bị lên bus địa chỉ (Trang 18)
Hình 1.20 Định địa chỉ I/O theo kiểu trực tiếp  Lưu ý: Một số thiết bị I/O có thể không có các tín hiệu địa chỉ - Bài giảng lý thuyết vi xử lý   kỹ thuật vi xử lý   cd rom
Hình 1.20 Định địa chỉ I/O theo kiểu trực tiếp Lưu ý: Một số thiết bị I/O có thể không có các tín hiệu địa chỉ (Trang 18)
2.3. Sơ đồ khối bên trong của 8086 - Bài giảng lý thuyết vi xử lý   kỹ thuật vi xử lý   cd rom
2.3. Sơ đồ khối bên trong của 8086 (Trang 26)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w