Giáo trình Kỹ thuật vi xử lý

Chương 1 Hệ vi xử lý

1.1. Vi xử lý là gì?

1.2. Các thế hệ của bộ vi xử lý

1.2.1. Thế hệ 1 (1971 đến 1973)

1.2.2. Thế hệ 2 (1974 đến 1977)

1.2.3. Thế hệ 3 (1978 đến 1982)

 

1.3. Thế hệ 4 (1983 đến nay)

 

1.4. Giới thiệu cấu trúc của hệ vi xử lý

1.3.1. CPU - Bộ xử lý trung tâm

1.3.2. Bộ nhớ bán dẫn (ROM, RAM)

1.3.3. Hệ thống vào ra (I/O)

1.3.4. Liên hệ giữa các khối

Chương 2 Bộ vi xử lý 8088 của Intel

2.1. Giới thiệu hoạt động của bộ vi xử lý 8088

2.1.1. Giới thiệu chung

2.1.2. Cấu trúc và hoạt động của bộ VXL 8088

2.2. Chế độ địa chỉ của 8088

2.2.1. Chế độ địa chỉ thanh ghi

2.2.2. Chế độ địa chỉ tức thì

2.2.3. Chế độ địa chỉ tực tiếp

2.2.4. Chế độ địa chỉ gián tiếp qua thanh ghi

2.2.5. Chế độ địa chỉ tương đối cơ sở

2.2.6. Chế độ địa chỉ tương đối chỉ số

2.2.7. Chế độ địa chỉ tương đối chỉ số cơ sở

2.3. Mô tả tập lệnh của 8088

2.3.1. Nhóm lệnh chuyển dữ liệu

2.3.2. Nhóm lệnh số học

2.3.3. Nhóm lệnh logic, dịch và quay

2.3.4. Nhóm lệnh so sánh

2.3.5. Nhóm lệnh rẽ nhánh (nhảy), lặp

2.3.6. Nhóm các lệnh đặc biệt

Chương 3 Lập trình bằng hợp ngữ cho 8088 trên máy tính IBM PC và các máy tương thích IBM PC

3.1. Giới thiệu chung

3.2. Giới thiệu khung chương trình

3.2.1. Cấu trúc của một lệnh hợp ngữ

3.2.2. Dữ liệu cho chương trình hợp ngữ

3.2.3. Biến và hằng

3.2.4. Khung của một chương trình hợp ngữ

3.3. Cách tạo và cho chạy một chương trình hợp ngữ

3.4. Các cấu trúc lập trình cơ bản trong assembly

3.4.1. Cấu trúc tuần tự

3.4.2. Cấu trúc lựa chọn

3.4.3. Cấu trúc lặp

3.5. Truyền tham số

3.6. Một số ngắt của DOS và của BIOS

Chương 4 Ghép 8088 với bộ nhớ và tổ chức vào ra dữ liệu

4.1. Giới thiệu tín hiệu chân của 8088 và các mạch phụ trợ

4.1.1. Bảy nhóm tín hiệu

4.1.2. Phân kênh để tách thông tin và đệm bus

4.1.3. Mạch tạo xung nhịp 8284

4.1.4. Mạch điều khiển bus 8288

4.1.5. Biều đồ thời gian của các lệnh đọc/ghi

4.2. Phối ghép 8088 với bộ nhớ

4.2.1. Bộ nhớ bán dẫn

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

4.2.3. Phối ghép 8088 với bộ nhớ

4.3. Phối ghép 8088 với thiết bị ngoại vi

4.3.1. Các kiểu phối ghép vào ra

4.3.2. Giải mã địa chỉ cho thiết vị vào/ra

4.3.3. Các mạch cổng đơn giản

4.3.4. Mạch phối ghép vào/ra song song lập trình được PPI 8255

Chương 5 Vào ra dữ liệu bằng cách thăm dò

5.1. Giới thiệu chung về các phương pháp điều khiển vào/ra dữ liệu

5.2. Vào/ra dữ liệu bằng cách thăm dò trạng thái sẵn sàng của thiết bị ngoại vi

Chương 6 Ngắt và xử lý ngắt trong hệ vi xử lý 8088

6.1. Sự cần thiết phải ngắt CPU

6.2. Ngắt trong vi xử lý 8088

6.2.1. Các loại ngắt trong hệ 8088

6.2.2. Đáp ứng của CPU khi có yêu cầu ngắt

6.2.3. Xử lý ưu tiên ngắt

6.2.4. Mạch điều khiển ngắt ưu tiên PPI 8259A

Chương 7 Vào ra dữ liệu bằng DMA

7.1. Nguyên tắc của việc trao đổi dữ liệu với thiết bị ngoại vi bằng cách thâm nhập trực tiếp vào bộ nhớ (DMA)

7.2. DMAC 8237-5 trong hệ vi xử lý 8088

7.2.1. Tín hiệu HOLD và HLDA trong CPU 8088

7.2.2. Mạch DMAC 8237-5 của Intel

 

doc113 trang | Chia sẻ: maiphuongdc | Lượt xem: 8403 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Giáo trình Kỹ thuật vi xử lý, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
bus (chống suy giảm tín hiệu do đảm nhận nhiều việc nuôi các mạch bên ngoài) các tín hiệu vào/ra CPU phải được khuếch đại thông qua các mạch đệm 1 chiều hoặc 2 chiều với các đầu ra: thường hoặc 3 trạng thái. Các mạch: 74LS373 chốt, 74LS244 khuếch đại đệm 1 chiều, 74LS245 khuếch đại đệm 2 chiều. 1 18 2 17 3 16 4 15 5 14 6 13 7 12 8 11 9 10 Vcc X1 X2 ASYNC EFI FC OSC RES RESET CSYN PCLK AEN1 RDY1 READY RDY2 AEN2 CLK GND Hình vẽ:Mạch 8284 Mạch tạo xung nhịp 8284 Dù cho 8088 làm việc ở chế độ Max hay chế độ Min thì nó vẫn luôn cần xung nhịp (xung clock) từ mạch tạo xung nhịp 8284. Mạch tạo xung clock ngoài việc cung cấp xung clock cho 8088, nó còn cung cấp xung nhịp có tần số thích hợp cho toàn hệ và nó còn đồng bộ tín hiệu RESET và tín hiệu READY của CPU. Các tín hiệu AEN1, AEN2 (Address ENable) [I]: Tín hiệu cho phép chọn đầu vào tương ứng RDY1, RDY2 làm tín hiệu báo trạng thái sẵn sàng của bộ nhớ hoặc thiết bị ngoại vi. RDY1, RDy2 (Bus Ready): Các tín hiệu này cùng với AEN1, AEN2 dùng để tạo ra các chu kỳ đợi (Tw) ở CPU. Data Bus Control Bus Address Bus IO/M RD WR A19/S6 A18/S5 A17/S4 A16/S3 A15 A14 A13 A12 A11 A10 A9 A8 CPU 8088 ALE A/D7 A/D6 A/D5 A/D4 A/D3 A/D2 A/D1 A/D0 DT/R DEN ‘LS244 G OC oc1 oc2 ‘LS373 ‘LS373 G OC G 74LS373 OC 74LS244 Hình vẽ: Lược đồ máy IBM PC/XT ASYNC (Ready Synchronisation Setect) [I]: Chọn đồng bộ hai tầng hoặc đồng bộ một tầng cho tín hiệu RDY1, RDY2. Trong chế độ đồng bộ một tầng (ASYNC=1) tín hiệu RDY có ảnh hưởng tới các tín hiệu READY tới tận sườn âm của xung đồng hồ tiếp theo. Còn trong chế độ đồng bộ hai tầng (ASYNC = 0), tín hiệu RDY chỉ có ảnh hưởng đến tín hiệu READY khi có sườn xuống (sườn âm) của xung đồng hồ tiếp theo. READY [O]: Nối đến đầu vào READY của 8088. Tín hiệu này được đồng bộ với các tín hiệu RDY1, RDY2. X1, X2 (Crystal) [I]: Nối với 2 chân của thạch anh với tần số fx. Thạch anh này là một bộ phận của mạch dao động bên trong 8284 có nhiệm vụ tạo xung chuẩn làm tín hiệu đồng bộ cho toàn bộ hệ thống. F/C (Frequency/Crystal) [I]: Dùng để chọn nguồn tín hiệu chuẩn cho 8284. Khi chân này ở mức cao thì xung đồng hồ bên ngoài sẽ được dùng làm xung nhịp cho 8284, ngược lai thì xung đồng hồ của mạch dao động bên trong sẽ được chọn làm xung nhịp. EFI (External Frequency Input) [I]: Lối vào cho xung từ bộ dao động ngoài. CLK [O]: Xung nhịp, fclk = fx/3, với độ rỗng 77% nối đến chân CLK của 8088. PCLK (Peripheral Clock) [O]: Xung nhip fpclk = fx/6, với độ rỗng 50% dành cho thiét bị ngoại vi. OSC (OSC Input) [O]: Xung nhịp có tần số fx đã được khuếch đại. RES (Reset Input) [I]: Chân khởi động, nối với mạch RC để 8284 có thể tự khởi động khi bật nguồn. RESET (Reset Output) [O]: Nối vào Reset của 8088, là tín hiệu khởi động lại (Reset) cho toàn hệ thống. CSYNC (Clock Synchronisation) [O]: Lối vào cho xung đồng bộ chung khi trong hệ thống có các 8284 dùng dao động ngoài tai chân EFI. Khi dùng mạch dao động trong thì phải nối đất chân này. X1 CLK X2 8284 RES RESET F/C CSYNC +5v K 10K 10ỡ CLK 8088 RESET F/C CSYNC Reset hệ thống Hình vẽ: 8284 nối với 8088 Mạch điều khiển bus 8288 Vcc S0 S2 MCE/PDEN DEN CEN INTA IORC AIOWC IOWC 1 20 2 19 3 18 4 17 5 16 6 15 7 14 8 13 9 12 10 11 IOB CLK S1 DT/R ALE AEN MRDC AMWC MWTC GND Vi mạch 8288 là mạch điều khiển bus, nó nhận một số tín hiệu điều khiển từ CPU (8088) và cung cấp tất cả các tín hiệu điều khiển cần thiết cho hệ vi xử lý khi CPU 8088 làm việc ở chế độ MAX. Trong đó có một số tín hiệu mang tên: AEN: Address ENable CEN: Command ENable IOB: Input/Output Bus mode MRDC: Memory ReaD Command MWTC: Memory WriTe Command AMWC: Advanced MWTC IORC: Input/Output Read Command AIOWC: Advanced IOWC DT/R: Data transmit/Receive DEN: Data Enable. MCE/PDEN: Master Cascade Enable/Peripheral Data Enable Các tín hiệu của 8288 gồm: S2, S1, S0 [I] (Status): Là tín hiệu trạng thái lấy trực tiếp từ CPU. Tuỳ theo các tín hiệu này mà 8288 sẽ tạo ra các tín hiệu điều khiển khác nhau tại các chân ra của nó để điều khiển sự hoạt động của các thiết bị nối với CPU (Bảng tín hiệu trạng thái Si của 8088 ở chế độ MAX, bao gồm cả vào và ra của các tín hiệu). CLK [I] (Clock): Nối với xung đồng hồ của hệ thống (từ 8284) và dùng để đồng bộ các xung điều khiển đi ra từ mạch 8284. ANE [I] (Address Enable): Đây là tín hiệu vào, sau khoảng thời gian trễ cỡ 150 ms thì sẽ kích hoạt các tín hiệu điều khiển đầu ra của 8288. CEN [I] (Command Enable): Tín hiệu vào để cho phép đea ra tín hiệu DEN và các tín hiệu điều khiển khác của 8288. IOB [I] (Input/Output bus mode): Tín hiệu để điều khiển mạch 8284 làm việc ở các chế độ bus khác nhau. Khi IOB = 1 thì 8288 làm việc ở chế độ bus vào/ra. Khi IOB = 0 thì 8288 làm việc ở chế độ bus hệ thống. (Như trong các máy IBM PC) MRDC [O] (Memory Read Command): Là tín hiệu điều khiển đoc bộ nhớ, nó sẽ kích hoạt bộ nhớ đưa dữ liệu ra bus. MWTC, AMWC [O] (Memory Write Command – Advanced MWTC): Là các tín hiệu ghi bộ nhớ hoặc ghi bộ nhớ kéo dài. Chúng giống như MEMW, nhưng AMWC hoạt động sớm lên một chút để tạo ra khả năng cho các bộ nhớ chậm có thêm thời gian. IORC [O] (I/O Read Command): Là các tín hiệu điều khiển đọc thiết bị ngoại vi. Nó kích hoạt các thiết bị ngoại vi được chọn để các thiết bị này đưa dữ liệu ra bus. IOWC, AIOWC [O] (I/O Write Command, Advanced IOWC): Là các tín hiệu điều khiển ghi thiết bị ngoại vi hoặc ghi thiết bi ngoại vi kéo dài. Chúng là các tín hiệu giống như IOW, nhưng AIOWC hoạt động sớm lên một chút để cho các thiết bị ngoại vi chậm được kéo dài thêm thời gian ghi. INTA [O] (Interrupt Acknowledge): Là đầu ra để thông báo cho thiết bị ngoại vi biết là CPU đã chấp nhận yêu cầu ngắt (yêu cầu của thiết bị ngoại vi). Và khi này thiết bị ngoại vi phải đưa số hiệu ngắt ra bus dữ liệu để CPU đọc lấy. DT/R [O] (Data Transmit/Receive): Là tín hiệu để điều khiển chiều của dữ liệu trong hệ thống là vào hay ra so với CPU. DT/R = 1: CPU đọc dữ liệu. DT/R = 0: CPU ghi dữ liệu. Trong các máy IBM PC thì tín hiệu này được nối đến chân DIR của mạch đệm 2 chiều 74LS245 để điều khiển hướng đi của dữ liệu. DEN [O] (Data Enable): Là tín hiệu để điều khiển dữ liệu trở thành bus cục bộ hay bus hệ thống. Trong các máy IBM PC thì tín hiệu này được sử dụng cùng với tín hiệu của mạch điều khiển ngắt PIC 8259 để tạo ra tín hiệu điều khiển cực G của mạch đệm 2 chiều 74LS245. MCE/PDEN [O] (Master Cascade Enable/Peripheral Data ENable): Đây là tín hiệu dùng để đặt chế độ làm việc cho mạch điều khiển ngắt PIC 8259 để nó làm việc ở chế độ chủ (Master). ALE [O] (Address Latch Enable): Là tín hiệu báo cho phép chốt địa chỉ có tại các chân dồn kênh A/D (A/D0 – A/D7), tín hiệu này thường nối với chân G của mạch chốt 74LS373 để điều khiển mạch mày chốt lấy địa chỉ. Biều đồ thời gian của các lệnh đọc/ghi Chu kỳ bus là một chu kỳ vận chuyển dữ liệu hoàn thành, điều này còn phụ thuộc vào số lượng các tín hiệu điều khiển (của CPU điều khiển hay DMAC, ...). Một chu kỳ bus thường tốn khoảng 4 chu kỳ xung clock. Cụ thể những hiện tượng xảy ra trong một chu kỳ bus (đã được đơn giản hoá) như sau: T1: Trong chu kỳ này tín hiệu địa chỉ của bộ nhớ hay thiết bị ngoại vi được đưa ra các chân địa chỉ, các chân dồn kênh A/D, A/S. Các tín hiệu điều khiển như ALE, DT/R, IO/M cũng được đưa ra để giúp cho việc chốt địa chỉ này (20 bit địa chỉ). T2: Trong chu kỳ này, CPU 8088 đưa ra các tín hiệu điều khiển RD, hoặc WR, DEN (Data Enable) và các tín hiệu dữ liệu: D7 – D0 (nếu là lệnh ghi). Tín hiệu DEN thường dùng để mở các bộ đệm của bus dữ liệu (nếu các mạch đệm này có mặt trong hệ thống). Tại cuối chu kỳ T2 (và giữa mỗi chu kỳ Ti cả Tw nếu có), CPU lây mẫu tín hiệu READY để xử lý trong các chu kỳ tiếp theo khi nó phải làm việc với bộ nhớ hoặc thiết bị ngoại vi hoạt động chậm. T3: Trong chu kỳ T3, CPU dành thời gian cho bộ nhớ hay thiết bị ngoại vi truy nhập dữ liệu. Nếu là chu kỳ đọc dữ liệu thì tại cuối T3, CPU sẽ lấy mẫu tín hiệu của bus dữ liệu. Nếu tại cuối chu kỳ T2 (hoặc giữa mỗi chu kỳ Ti của Tw) mà Cpu phát hiện ra tín hiệu READY = 0 (do bộ nhớ hoặc thiết bị ngoại vi đưa đên) thf CPU tự xen vào sau T3 một vai chu kỳ T để tạo chu kỳ đợik Tw (Tw (wait) = n*T) nhằm kéo dài thời gian thực hiện lệnh, tạo điều kiện cho bộ nhớ hoặc thiết bị ngoại vi chậm có đủ thời gian hoàn thành việc ghi/đọc dữ liệu. T4: Trong chu kỳ này các tín hiệu điều khiển được đưa về trạng thái không tích cực để chuẩn bị cho chu kỳ bus mới. Tín hiệu điều khiển WR trong khi chuyển trạng thái từ 0 => 1 sẽ kích hoạt việc ghi dữ liệu vào bộ nhớ hay thiết bị ngoại vi. T4 Twr Address Status Signal Address ổn định Data ghi Address Tw (Chu kỳ đợi – Wait) T giữa w Low active Low active CLK ALE A/S A/D A WR DEN Hight active Chu kỳ bus T3 T2 T1 Hình vẽ: Các tín hiệu của 8088 trong một chu kỳ ghi (đã được đơn giản hoá) T1 T2 T3 T4 Chu kỳ bus Trd Address Status Signal Address ổn định Tw Low active Low active CLK ALE A/S A/D A RD DEN Hight active T trễ địa chỉ Hình vẽ: Các tín hiệu của 8088 trong một chu kỳ đọc (đã được đơn giản hoá) Ví dụ: Xét với CPU 8088 làm việc ở tần số = 5MHz, mỗi Ti kéo dài 200 ns (nano giây). Theo hình vẽ chu kỳ đọc bộ nhớ: việc truy nhập bộ nhớ kéo dài trong khoảng từ T1 đến T3 mất khoảng 600 ns. Ttrễ địa chỉ = 110 ns, Tgiữ R = 30 ns (thời gian giữ của dữ liệu khi đọc) Ttrễ đệm = 40 ns (trễ khi truyền dữ liệu qua các mạch đệm) ==> thời gian thâm nhập = 3*T - Ttrễ địa chỉ - Tgiữ R - Ttrễ đệm = 420 ns ==> Bộ nhớ nối với 8088/5MHz cần có thời gian thâm nhập ≤ 420 ns thì hiệu quả (8088 không phải xen thêm các chu kỳ đợi). Hơn nữa, với CPU 8088 thì TRD (độ rộng xung đọc) = 325 ns, là khoảng thời gian đủ dài để cho bộ nhớ với thời gian thâm nhập 420 ns. Trong hình vẽ chu kỳ ghi dữ liệu: Cần có thời gian giữ dữ liệu tối thiểu Tgiữ W = 88 ns sau khi WR chuyển từ 0 --> 1. Thực tế thời gian này xấp xỉ bằng 0 đối với các bộ nhớ thông dụng. Độ dài xung ghi đối với 8088/5 MHz là TWR = 340 ns cũng phù hợp với các bộ nhớ có thời gian thâm nhập cỡ 420 ns. RDY1 AEN1 RDY2 CLK READY QA QB QC QD DE QF QG GH CLK CLR SI 1T 3T 4T 5T 6T 7T 8T READY CLK 8088 RD WR INTA READY CS của mạch nhớ T1 T2 T3 TW T5 CLK QA QB QC QD Hình vẽ: Mạch tạo 0 .. 7 trạng thái đợi và biểu đồ thời gian Phối ghép 8088 với bộ nhớ Bộ nhớ bán dẫn Các vi mạch nhớ thường dùng với các hệ vi xử lý gồm: ROM (Read Only Memory – Bộ nhớ cố định): Bộ nhớ loại này thường có nội dung được ghi săn từ khi sản xuất và chỉ có thể đọc ra nên chúng được gọi là bộ nhớ cố định. Loại này còn được gọi là ROM mặt nạ vì thông tin trong ROM được ghi thông qua một mặt nạ. Khi mất nguồn nuôi cung cấp cho vi mạch thì thông tin vẫn còn (nội dung trong RM không bị mất đi). PROM (Programmable ROM): Loại này ra ROM trắng (chưa ghi thôngo tin) sau khi sản xuất. Người sử dụng có thể ghi thông tin vào ROM theo ý mình một lần duy nhất bằng máy nạp ROM (máy ghi ROM chuyên dụng). EPROM (Erasable ROM): Loại ROM này có thể ghi (“lập trình”) bằng xung điện và xoá bằng tia cực tím (UV – Untra Violete), từ một máy nạp ROM. EEPROM (Electric EPROM): Giống như EPROM, nhưng việc ghi/xoá ROM có thể thực hiện ngay trong mạch làm việc mà không đòi hỏi phải thông qua máy nạp ROM. RAM (Random Access Memory – Bộ nhớ ghi/đọc): Đặc trưng của loại bộ nhớ này là thông tin sẽ bị mất đi khi mất nguồn nuôi cấp cho vi mạch. SRAM (Static RAM – RAM tĩnh): Mỗi phần tử nhớ của loại này được cấu tạo từ mạch lật (flip – flop) nên có đặc điểm là tác động nhanh, thông tin ổn định. Kèm theo đó là tốn nhiều transistor cho một đơn vị nhớ nên đắt tiền. Chúng thường được dùng vào những thành phần nhớ quan trọng như thanh ghi, cache, ... DRAM (Dynamic RAM): Mỗi phần tử nhớ của loại này được cấu tạo từ một tụ điện nhỏ, được chế tạo bằng công nghệ PMOS. Loại này có đặc điểm là tác động chậm, thông tin không ổn định vì có sự dò điện tích giữa 2 bản tụ (1: tụ được tích điện, 0: tụ không được tích điện) nên cần các mạch phụ trợ để bù lại lượng điện tích bị dò – gọi là các mạch làm tươi. Loại này rẻ hơn SRAM và có thể sản xuất vi mạch nhớ với dụng lượng lớn. Một bộ nhớ (hay một modul nhớ nói chung) được cấu tạo (tạo nên) từ nhiều vi mạch nhớ ghép lại. Mỗi vi mạch nhớ thường có cấu tạo như sau: A0 D0 A1 D1 Am-1 Dn-1 WE OE CS WRRD RD RD CS Address Data Am-1 – A0: m bit địa chỉ Dn-1 – D0: n bit dữ liệu Dung lượng tính theo bit: 2m*n (bits). Nếu n = 8 thì dung lượng là: 2m (bytes) WR [I] (WRite): Tín hiệu điều khiển ghi, với ROM thường là WE: Write Enale RD [I] (ReaD): Tín hiệu điều khiển đọc, với ROM thường là OE: Output Enale CS [I] (Chip Select): Tín hiệu chọn chip, với ROM thường là CE: Chip Enale Nhóm tín hiệu địa chỉ (Am-1 – A0): Dùng để chọn ra ô nhớ cụ thể được ghi/đọc. Các ô nhớ có độ dài khác nhau tuỳ từng loại vi mạch nhớ, từng nhà sản xuất: 1, 4, 8, ... bit. Số lượng các đường dây địa chỉ xác định dung lượng của vi mạch nhớ. Dung lượng = 2m (ô nhớ). Nếu m = 10 thì dung lượng là: 210 = 1 Kilo ô nhớ (kilo = 1024) Nếu m = 20 thì dung lượng là: 220 = 1 Mega ô nhớ (kilo = 1024*1024 = 1048576) Nhóm tín hiệu dữ liệu (Dn-1 – D0): Các đường tín hiệu này là đầu ra đối với vi mạch ROM và là vào/ra đối với vi mạch RAM, cũng có thể đặt riêng nhóm đường vào và ra của các tín hiệu này, khi nối vào bus dữ liệu: là nối chung vì các mạch nhớ thường có đầu ra đữ liệu 3 trạng thái. Số đường dữ liệu (n) xác định độ dài của ô nhớ (ngăn nhớ – từ nhớ). Thường ghi rõ 1Kx8 hoặc 16Kx4 hoặc 1Kx1. Tín hiệu chọn vi mạch: Người ta thường dùng ký hiệu CS (Chip Select) cho các vi mạch RAM và CE (Chip Enable) cho các vi mạch ROM. Tín hiệu này dùng để chọn ra (cho phép) vi mạch nhớ nào trong bộ nhớ làm việc thì mới tiến hành ghi/đọc ô nhớ của vi mạch đó. Tín hiệu này thường được nối với đầu ra của mạch giải mã địa chỉ. Khi một số vi mạch nhớ có tín hiệu này ở trạng thái không tích cực thì bus dữ liệu của nó (Am-1 – A0) bị treo (trạng thái trở kháng cao). Nhóm tín hiệu điều khiển: Các tín hiệu điều khiển đọc RD và WR (OE và WE đối với ROM) luôn ngược pha nhau để cho phép dữ liệu từ bus dữ liệu được đi vào bi mạch hoặc ngược lại từ vi mạch nhớ ra bus dữ liệu. Cũng có những RAM chỉ có 1 đường tín hiệu điều khiển cho cả ghi và đọc: R/W. Khi này: R/W=1: đọc, R/W=1: ghi. Một đặc trưng quan trọng của vi mạch nhớ là thời gian thâm nhập tac (taccess). Có thể định nghĩa rằng thời gian thâm nhập của một vi mạch nhớ là khoảng thời gian kể từ khi có (xung) địa chỉ trên bus địa chỉ cho đến khi dữ liệu ra ổn định trên bus dữ liệu. Thông số này phụ thuộc vào công nghệ chế tạo vi mạch nhớ. Với công nghệ lưỡng cực, có thể sản xuất các vi mạch nhớ có tac = 10 – 30 ns. Với công nghệ MOS, có thể sản xuất các vi mạch nhớ có tac lớn hơn, cỡ 150 ns hoặc hơn nữa. Bộ nhớ EPROM Các vi mạch EPROM thông dụng tồn tại dưới nhiều kiểu khác nhau. Hệ 27xxx có một số loại sau: 2708 (1Kx8); 27256 (32Kx8); 2732 (2Kx8); 27512 (64Kx8); 2764 (8Kx8); 27128 (16Kx8); Với tac = 250 – 450 ns tùy từng loại cụ thể. Chân (pins) Chế độ (Mode) CE/PGM OE Vpp [V] Vcc [V] D7–D0 Đọc 0 0 +5 +5 Dout Duy trì 1 x +5 +5 HZ Ghi Xung ghi kéo dài 50 ns 1 +25 +5 Din Kiểm tra ghi 0 0 +25 +5 Dout Cấm ghi 0 1 +25 +5 HZ Ví dụ: Xét vi mạch nhớ EPROM 2716 có tac = 450 ns. Vậy để ghép với bộ vi xử lý 8088 – 5 MHz cần có thêm các chu kỳ đợi (Tw). Ngược lại mạch 2716-1 lại có tac = 250 ns nên không cần có thêm các chu kỳ đợi. WRRD RD RD CS A11-A0 D7-D0 OE CE PGM (Vpp) Chú ý: Trong chế độ duy trì công suất tiêu thụ của mạch giảm được tới 75% so với công suất tiêu thụ khi nó ở chế độ tích cực. Bộ nhớ EPROM 2716 (2Kx8) x: Don’t care HZ: Trạng thái trở kháng cao. A10-A0: 11 bit địa chỉ. D7-D0: 8 bit dữ liệu. OE (Output Enable): Cho phép đưa dữ liệu ra. CE/PGM: Chọn chip/điều khiển ghi. Vpp: Điện áp ghi. Bộ nhớ SRAM (RAM tĩnh) Bộ nhớ được cấu tạo từ các phần tử nhớ là các mạch lật (flip – flop) nên nó sẽ lưu giữ thông tin một cách ổn định chừng nào nó còn được cấp điện (nguồn nuôi). Các bộ nhớ SRAM và các bộ nhớ EPROM có dung lượng bằng nhau thường có cách tổ chức (bố trí) các chân giống nhau để dễ dàng thay thế cho nhau trong quá trình phát triển hệ thống. Trong thực tế đã tồn tại các mạch nhớ SRAM với dung lượng: 32Kx8 (62256 LP – 10), tac = 100ns, công nghệ CMOS. SRAM được chế tạo theo công nghệ lưỡng cực (8KB – 128 KB) có thời gian trao đổi dữ liệu (thâm nhập): tac = 15 ns. WRRD RD RD CS A10-A0 D7-D0 TSM 4014 OE CE PGM (Vpp) Ví dụ: Xét vi mạch nhớ SRAM TMS 4014 (2Kx8), tac = 250 ns. A10-A0 : 11 bit địa chỉ D7-D0 : 8 bit dữ liệu OE/WE : Cho phép đọc/cho phép ghi. CS : Chọn chip. Bộ nhớ DRAM (RAM động) Bộ nhớ DRAM được cấu tạo từ các phần tử nhớ là các tụ điện. Nó lưu trữ thông tin bằng cách nạp tụ (1) hay không nạp (0) điên tích trên tụ. Vì có sự dò điện tích trên 2 bản cực tụ điện mà thông tin lưu trữ trong bộ nhớ loại này không ổn định. Vì vậy DRAM cần được làm tươi (refresh) bằng cách ghi hay đọc lại DRAM theo chu kỳ sau mỗi quãng thời gian khoảng 15,6 ms. Các mạch nhớ SRAM cần có thêm các mạch logic phụ để đảm bảo điều khiển việc làm tươi nên việc phối ghép nó với bộ vi xử lý là rất phức tạp. Nhưng DRAM có ưu điểm là có thể chế tạo được một số lượng rất lớn các phần tử nhớ trên một đơn vị diện tích (vì mỗi phần tử nhớ cần rất ít transistor – 1). Và vì vậy các vi mạch nhớ này cũng cần rất nhiều chân địa chỉ. Để giảm bớt số chân địa chỉ trên vi mạch nhớ (để dễ chế tạo mạch in và lắp ráp) người ta thường chia địa chỉ thành 2 nhóm là địa chỉ hàng và địa chỉ cột và dồn kênh chúng trên các chân địa chỉ. Vì vậy các phần tử nhớ của bộ nhớ được tổ chức theo ma trận mà mỗi ô nhớ là một phần tử của ma trận nhớ. Việc dồn kênh địa chỉ trên các chân địa chỉ cần thêm các tín hiệu báo thời điểm nào là địa chỉ hàng và thời điểm nào là địa chỉ cột trên các chân địa chỉ, các tín hiệu đó là: RAS (Row Access) : Cho phép chốt địa chỉ hàng. CAS (Column Access): Cho phép chốt địa chỉ cột. Hình vẽ: DRAM TMS 4464 (64Kx8) WRRD RD RD A7-A0 D7-D0 TSM 4464 OE CE CAS RAS RAS CAS A7-A0 Các mạch nhớ DRAM thường được chế tạo với độ dài 1 hoặc 4 bit trên một ngăn nhớ. Thực tế đã có các mạch nhớ 1Mx1, 4Mx1, 16Mx1 và chúng được xây dựng thành các modul nhớ kiểu SIMM (Single Inline Memory Modul) hay SIP (Single Inline Package) dùng trong các máy 80268, 80386, ... Giải mã địa chỉ cho bộ nhớ Mỗi vi mạch nhớ hay một modul nhớ khi ghép với bộ vi xử lý cần phải được bộ vi xử lý tham chiếu tới một cách chính xác khi thực hiện các thao tác ghi/đọc. Có nghĩa là mỗi “modul” nhớ cần được gán cho một vùng không gian riêng biệt cụ thể (trong không gian quản lý chung của bọ vi xử lý), có địa chỉ xác định. Việc gán địa chỉ cụ thể cho modul nhớ được thực hiện nhờ một xung chọn chip từ mạch giải mã địa chỉ. Việc phân chia không gian tổng thể của bộ vi xử lý thành các vùng khác nhau dành cho các mục đích khác nhau gọi là phân vùng bộ nhớ. Ví dụ: Với 8088 vì có 20 bit địa chỉ (A19 – A0) nên không gian tổng thể dành cho bộ nhớ là 220 = 210*210 = 1 MB (1 byte/ngăn nhớ). Trong không gian tổng thể đó: Vùng không gian 1 KB đầu, kể từ địa chỉ thấp nhất: 00000h – là phải được dành cho RAM vì tại đây phải có chỗ dành cho bảng vector ngắt gồm 256 (ngắt)*4 (byte)= 1KB). Address Decode Address Control CS0 CS1 CSn-1 Hình vẽ: Sơ đồ khối giải mã địa chỉ cho modul nhớ Vùng nhớ có địa chỉ FFFF0h thì nhất thiết phải được dành cho ROM hoặc EPROM – chứa chương trình khởi động hệ thống. Vì sau khi bật nguồn, CS sẽ mạng giá trị FFFF0h (là địa chỉ khởi động của CPU). Bộ giải mã địa chỉ để tạo ra xung chọn chip thường có cấu tạo như hình vẽ bên: Đầu vào bộ (mạch) giải mã là các tín hiệu địa chỉ và các tín hiệu điều khiển khác nữa (nếu cần thiết). Các tín hiệu địa chỉ gồm các bit địa chỉ có quan hệ nhất định với các tín hiệu chọn chip ở đầu ra. Tín hiệu điều khiển thường là tín hiệu IO/M dùng để phân biệt đối tượng mà bộ vi xử lý chọn làm việc là bộ nhớ hay thiết bị vào/ra (I/O device). Mạch giải mã là khâu gây ra việc trễ thời gian từ bộ vi xử lý đên thiết bvị ngoại vi mà trong khi chọn mạch nhớ/thiết bị ngoại vi ta cần tính đến. Tuỳ theo quy mô (yêu cầu) của mạch giải mã mà ở đầu ra ta có thể có nhiều tín hiệu chọn chip (CS). Giải mã đầy đủ cho một modul nhớ yêu cầu ta phải đưa đến đầu vào của mạch giải mã các tín hiệu địa chỉ sao cho tín hiệu đầu ra của nó chỉ chọn riêng mạch nhớ đã định trước. Trong trường hợp này ta phải dùng tổ hợp đầy đủ cả các đầu và địa chỉ tương ứng để chọn mạch nhớ. Nếu ta bỏ bớt đi một tín bit địa chỉ nào đó thì đó là việc giải mã thiếu cho modul nhớ, vì xung chọn chip ở đầu ra mạch giải mã ngoài việc chọn mạch nhớ ở vùng đã định sẽ có thể chọn ra các mạch nhớ ở vùng khác nữa. Vậy, việc giải mã thiếu thì có thể tiết kiệm được linh kiện khi xây dựng mạch giải mã nhưng lại không đảm bảo tính đơn trị theo ý nghĩa của việc giải mã. Trong thực tế, thông thường khi thiết kế mạch giải mã địa chỉ cho modul nhớ người ta thường tính dôi ra một chút để dự phòng sự phát triển tăng thêm dung lượng của bộ nhớ mà vẫn có thể tận dụng (sử dụng) được mạch giải mã sẵn có. Xây dựng mạch giải mã bằng các mạch NAND (các mạch logic đơn giản) Bằng các gates logic kiểu NAND, ta có thể xây dựng được mạch giải mã địa chỉ đơn giản với số lượng tín hiệu chọn chip ở đầu ra là hạn chế. Ta phải đưa đến đầu vào của mạch cửa NAND nhiều lối vào một tổ hợp thích hợp của các bit địa chỉ để nhận được ở đầu ra của nó tín hiệu chọn chip cho modul nhớ. Ví dụ: Cho modul nhớ SRAM có dung lượng 32 KB (32Kx8). Xây dựng mạch giải mã để ghép modul trên với 8088 tại địa chỉ 08000h. Chú ý: Một địa chỉ bắt đầu cho một modul nhớ cần đảm bảo sao cho có giá trị các bit địa chỉ đưa vào modul nhớ để chọn ra ô nhớ cần tham chiếu phải bằng 0, chúng sẽ “chạy” lần lượt tới 1 để chọn hết đủ tất cả các ô nhớ. Giải: SRAM 32KB NAND A14 – A0 D7 – D0 WR RD A19 – A15 IO/M CS Modul nhớ 32 KB cần có 15 bit địa chỉ để chọn các ô nhớ. Không gian địa chỉ của 8088 gồm 20 bit địa chỉ: A19 – A0. Nên phải sử dụng các bit địa chỉ thấp: A14 – A0 để đưa vào modul nhớ, còn lại 5 bit địa chỉ phần cao và các tín hiệu điều khiển IO/M sẽ đi vào mạch giải mã. Vậy ta có sơ đồ như sau: NAND A15 CS A16 A17 A18 A19 IO/M Triển khai địa chỉ của modul nhớ ta có: 0000 1000 0000 0000 0000=08000h 0000 1000 0000 0000 0001=08001h … 0000 1111 1111 1111 1111=0FFFFh Phần cố định Phần thay đổi Các tín hiệu điều khiển vào mạch NAND nhiều đầu vào phải đồng thời bằng 1 thì đầu ra CS = 0. Vậy ta có sơ đồ như bên: Hoặc ta có thể sử dụng các mạch logic đơn giản khác để xây dựng mạch giải mã sau cho có nhiều đầu ra CS = 0 như sau: A15 CS A16 A17 A18 A19 IO/M NOT NAND AND A15 CS A16 A17 A18 A19 IO/M NOT OR NOR NAND Kết luận: Để thực hiện mạch giải mã kiểu này, có nhiều cách sắp xếp các phần tử logic (gates) để đưa ra được tín hiệu CS = 0 ở đầu ra. Tuy nhiên người thiết kế cần phân tích hàm đầu vào và tín hiệu đầu ra và tối giản các phần tử để sao cho số lượng các gates logic sử dụng trong mạch giải mã là ít nhất (tối ưu mạch giải mã). Ví dụ, mạch giải mã trên có thể thay thế bằng mạch giải mã bên: Mạch này cũng thực hiện đúng yêu cầu như mạch giải mã trên, tuy nhiên tốn nhiều phần tử gates logic hơn nên chưa tốt. Giải thích: Trong mạch giải mã cho modul nhớ này, xung chọn chip (CS) sẽ có tác động (CS = 0 – tích cực thấp) khi ta truy xuất bộ nhớ (ghi/đọc) tại địa chỉ nằm trong phạm vi 08000h – 0FFFFh, 5 bit địa chỉ phần cao (A19 – A15) phối hợp cùng tín hiệu điều khiển IO/M (= 0 để chỉ ra sẵn sàng truy xuất bộ nhớ) để tạo ra xung chọn chip cho modul nhớ. Mỗi ô nhớ cụ thể trong 32 KB của modul nhớ sẽ do các bit thấp còn lại (A14 – A0) của bus địa chỉ chọn ra. Để kiểm chứng nhanh điều này ta thấy bit địa chỉ A15 để chọn ra vùng nhớ 32 KB, bit A16 để chọn ra vùng nhớ 64 KB, ... các vùng nhớ này nằm rải rác nhau trong không gian nhớ 1 MB. Xây dựng mạch giải mã bằng mạch giải mã chuyên dụng 74LS138 Khi ta muốn có nhiều đầu ta chọn chip (CS) ở đầu ra mạch giải mã mà vẫn dùng các mạch logic đơn giản thì thiết kế sẽ trở nên rất cồng kềnh do số lượng các gates tăng lên. Trong trường hợp đó người ta thường sử dụng mạch giải mã chuyên dụng có sẵn. Một trong các mạch giải mã kiểu đó hay được sử dụng là 74LS138. Đây là mạch giải mã 3 – 8 (vào 3, ra 8). Sơ đồ khối của 74LS138 và bảng trạng thái A y0 B y1 C y2 y3 y4 G2A y5 G2B y6 G1 y7 Các đầu vào Các đầu ra chọn Cho phép C B A G2B G2A G1 y0 y1 y2 y3 y4 y5 y6 y7 x x x 1 x x 1 1 1 1 1 1 1 1 x x x x 1 x 1 1 1 1 1 1 1 1 x x x x x 0 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 1 1 1 1 0 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 1 0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1

Các file đính kèm theo tài liệu này:

  • docbaigiangvxl_8436_4516.doc