Ky Thuat Vi Xu Ly - Pham Ngoc Nam

  • Uploaded by: le thanh
  • 0
  • 0
  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Ky Thuat Vi Xu Ly - Pham Ngoc Nam as PDF for free.

More details

  • Words: 30,844
  • Pages: 525
Kỹthuật vi xửlý Microprocessors

Giảng viên: Phạm Ngọc Nam

2/Chapter1

© DHBK 2005

Your instructor •

Bộmôn kỹthuật điện tửtin học



Research:



Education:

 Office: C9-401  Email: [email protected]

 FPGA, PSoC, hệnhúng  Trí tuệnhân tạo  K37 điện tử-ĐHBK Hà nội (1997)  Master vềtrí tuệnhân tạo 1999, Đại học K.U. Leuven, vương quốc Bỉ  Đềtài: Nhận dạng chữviết tay

 Tiến sỹkỹthuật chuyên ngành điện tử-tin học, 9/ 2004, Đại học K.U. Leuven, Vương Quốc Bỉ  Đềtài: quản lý chất lượng dị ch vụtrong các ứng dụng đa phương tiện tiên tiến

3/Chapter1

© DHBK 2005

Nội dung môn học 1. 2. 3. 4. 5. 6. 7.

Giới thiệu chung vềhệvi xửlý Bộvi xửlý Intel 8088/8086 Lập trình hợp ngữcho 8086 Tổchức vào ra dữliệu Ngắt và xửlý ngắt Truy cập bộnhớtrực tiếp DMA Các bộvi xửlý trên thực tế

4/Chapter1

© DHBK 2005

Tài liệu tham khảo • Slides • Văn ThếMinh, Kỹthuật vi xửlý, Nhà xuất bản giáo dục, 1997. • Barry B. Brey, The Intel Microprocessors: 8086/8088, 80186/80188, 80286, 80386, 80486, Pentium and Pentium Pro Processor: Architecture, Programming, and Interfacing, Fourth Edition, Prentice Hall, 1997.

• Quách Tuấn Ngọc và cộng sự, Ngôn ngữlập trình Assembly và máy vi tính IBM-PC, 2 tập, Nhà xuất bản giáo dục, 1995.

• Cảm ơn giáo sưRudy Lauwereins đã cho phép sử dụng slides của ông

5/Chapter1

© DHBK 2005

Mục đích của môn học • Nắm được cấu trúc, nguyên lý hoạt động của bộvi xửlý và hệvi xửlý • Có khảnăng lập trình bằng hợp ngữcho vi xửlý • Có khảnăng lựa chọn vi xửlý thích hợp cho các ứng dụng cụthể • Nắm được các bộvi xửlý trên thực tế

6/Chapter1

© DHBK 2005

Bài tập lớn và thi • Bài tập lớn: thiết kếmột ứng dụng trên vi điều khiển: 20% tổng sốđiểm Làm theo nhóm 2-6 sinh viên Nộp danh sách các nhóm vào 3/1 Các nhóm trình bày ý tưởng 17/1

• Kiểm tra: 10%

3 bài kiểm tra không báo trước dựđủít nhất 2 bài và kết quảcủa 2 bài > 5: 1 điểm thiếu 2 bài trởlên: không được thi lần 1

• Thi học kỳ: 1 câu lý thuyết, 2 câu bài tập (lập trình và thiết kế) 70% tổng sốđiểm

© DHBK 2005

• • • •

Chương 1 Giới thiệu chung vềhệvi xửlý

7/Chapter1

Lị ch sửphát triển của các bộvi xửlý và máy tính Phân loại vi xửlý Các hệđếm dùng trong máy tính ( nhắc lại) Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý

© DHBK 2005

Chương 1 Giới thiệu chung vềhệvi xửlý

8/Chapter1

• Lị ch sửphát triển của các bộvi xửlý và máy tính Thếhệ-1: The early days (…-1642) Thếhệ0: Mechanical (1642-1945) Thếhệ1: Vacuum tubes (1945-1955) Thếhệ2: Discrete transistors (1955-1965) Thếhệ3: Integrated circuits (1965-1980) Thếhệ4: VLSI (1980-?)

• Phân loại vi xửlý • Các hệđếm dùng trong máy tính ( nhắc lại) • Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý

© DHBK 2005

Chương 1 Giới thiệu chung vềhệvi xửlý

9/Chapter1

• Lị ch sửphát triển của các bộvi xửlý và máy tính Thếhệ-1: The early days (…-1642) Thếhệ0: Mechanical (1642-1945) Thếhệ1: Vacuum tubes (1945-1955) Thếhệ2: Discrete transistors (1955-1965) Thếhệ3: Integrated circuits (1965-1980) Thếhệ4: VLSI (1980-?)

• Phân loại vi xửlý • Các hệđếm dùng trong máy tính ( nhắc lại) • Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý

© DHBK 2005

Thếhệ-1: The early days (…-1642)

10/Chapter1

• Bàn tính, abacus, đã được sửdụng đểtính toán. Khái niệm vềgiá trịtheo vịtrí đã được xửdụng

© DHBK 2005

Thếhệ-1: The early days (…-1642)

11/Chapter1

• Thếkỷ12: Muhammad ibn Musa Al'Khowarizmi đưa

ra khái niệm vềgiải thuật algorithm

© DHBK 2005

Thếhệ-1: The early days (…-1642)

• Codex Madrid - Leonardo Da Vinci (1500)  Vẽmộ t cái máy tính cơkhí

12/Chapter1

© DHBK 2005

Chương 1 Giới thiệu chung vềhệvi xửlý

13/Chapter1

• Lị ch sửphát triển của các bộvi xửlý và máy tính Thếhệ-1: The early days (…-1642) Thếhệ0: Mechanical (1642-1945) Thếhệ1: Vacuum tubes (1945-1955) Thếhệ2: Discrete transistors (1955-1965) Thếhệ3: Integrated circuits (1965-1980) Thếhệ4: VLSI (1980-?)

• Phân loại vi xửlý • Các hệđếm dùng trong máy tính ( nhắc lại) • Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý

© DHBK 2005

14/Chapter1

Thếhệ0: Mechanical (1642-1945)

• Blaise Pascal, con trai của một người thu thuế, đã chếtạo một máy cộng có nhớvào năm 1642

© DHBK 2005

15/Chapter1

Thếhệ0: Mechanical (1642-1945) • Năm 1801, Joseph-Marie Jacquard đã phát minh ra máy dệt tựđộng sửdụng bìa đục lỗđểđiều khiển hoạ tiết dệt trên vải • Bìa đục lỗlưu trữchương trình: máy đa năng đầu tiên

© DHBK 2005

16/Chapter1

Thếhệ0: Mechanical (1642-1945) • 1822, Charles Babbage nhận ra rằng các bảng tính dùng trong hàng hải có quá nhiều lỗi dẫn tới việc rất nhiêu tàu bị mất tích • Ông đã xin chính phủ Anh hỗtrợđểnghiên cứu vềmáy tính

© DHBK 2005

17/Chapter1

Thếhệ0: Mechanical (1642-1945)

© DHBK 2005

18/Chapter1

Thếhệ0: Mechanical (1642-1945) • Babbage đã thiết kếmột cái máy vi phân Difference Engine để thay thếtoàn bộbảng tính: máy thực hiện một ứng dụng cụthể đầu tiên (application specific hard-coded machine)

19/Chapter1

© DHBK 2005

Thếhệ0: Mechanical (1642-1945) • Ada Augusta King, trở thành lập trình viên đầu tiên vào năm 1842 khi cô viết chương trình cho Analytical Engine, thiết bịthứ2 của Babbage

© DHBK 2005

20/Chapter1

Thếhệ0: Mechanical (1642-1945) • Herman Hollerith, ngừời Mỹ, thiết kếmột máy tính đểxửlý dữliệu vềdân sốMỹ1890 • Ông thành lập công ty, Hollerith Tabulating Company, sau đấy là Calculating-TabulatingRecording (C-T-R) company vào năm 1914 và sau này được đổi tên là IBM (International Business Machine) vào năm 1924.

21/Chapter1

© DHBK 2005

Thếhệ0: Mechanical (1642-1945) • Konrad Zuse, Berlin, Đức, phát triển vào năm 1935 máy tính Z-1 sửdụng rơle và sốnhịphân • Chu kỳlệ nh: 6 giây (0.17 Hz)

22/Chapter1

© DHBK 2005

Thếhệ0: Mechanical (1642-1945) • Máy tính cơđiện tựđộ ng lớn đa năng đầu tiên là máy Harvard Mark I ( IBM Automatic Sequence Control Calculator ), phát minh bởi Howard Aiken vào cuố i 1930 • ASCC không phả i là máy tính có chương trình lưu trữ

sằn mà các lệnh được ghi vào các băng giấy.

23/Chapter1

© DHBK 2005

Thếhệ0: Mechanical (1642-1945) • Grace Murray Hopper found the first computer bug beaten to death in the jaws of a relay. She glued it into the logbook of the computer and thereafter when the machine stops (frequently) she told Howard Aiken that they are "debugging" the computer.

Numbered pages for USA patents

Lab book!!

© DHBK 2005

Chương 1 Giới thiệu chung vềhệvi xửlý

24/Chapter1

• Lị ch sửphát triển của các bộvi xửlý và máy tính Thếhệ-1: The early days (…-1642) Thếhệ0: Mechanical (1642-1945) Thếhệ1: Vacuum tubes (1945-1955) Thếhệ2: Discrete transistors (1955-1965) Thếhệ3: Integrated circuits (1965-1980) Thếhệ4: VLSI (1980-?)

• Phân loại vi xửlý • Các hệđếm dùng trong máy tính ( nhắc lại) • Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý

© DHBK 2005

25/Chapter1

Thếhệ1: Vacuum tubes (1945-1955) • Năm 1943, John Mauchly và J. Presper Eckert bắt đầu nghiên cứu vềENIAC

© DHBK 2005

26/Chapter1

Thếhệ1: Vacuum tubes (1945-1955)

• 18000 vacuum tubes, 1500 rơle, 30 tấn, 140 kW, 20 thanh ghi 10 chữsốthập phân, 100 nghìn phép tính/ giây • “Trong tương lai máy tính sẽnặng tối đa là 1.5 tấn” (Popular Mechanics, 1949)

© DHBK 2005

27/Chapter1

Thếhệ1: Vacuum tubes (1945-1955)

• Lập trình thông qua 6000 công tắc nhiều nấc và hàng tấn d ây

© DHBK 2005

28/Chapter1

Thếhệ1: Vacuum tubes (1945-1955) • Năm 1946, John von Neumann phát minh ra máy tính có chương trình lưu trong bộnhớ • Máy tính của ông gồm có một đơn vịđiều khiển, một ALU, một bộnhớchương trình và dữliệu và sửdụng sốnhịphân thay vì sốthập phân. • Máy tính ngày nay đều có cấu trúc von Neumann • ông đặt nền móng cho hiện tượng “von Neumann bottleneck”, sựkhông tương thích giữa tốc độcủa bộnhớvới đơn vịxửlý

© DHBK 2005

29/Chapter1

Thếhệ1: Vacuum tubes (1945-1955) • Năm 1948, máy tính có chương trình lưu trữtrong bộnhớđầu tiên được vận hành tại trường đại học Manchester: Manchester Mark I

© DHBK 2005

30/Chapter1

Thếhệ1: Vacuum tubes (1945-1955) • Năm 1951, máy tính Whirlwind lần đầu tiên sửdụng bộnhớlõi từ(magnetic core memories). Gần đây nguyên lý này đã được sửdụng lại đểchếtạo MRAM ởdạng tích hợp.

31/Chapter1

© DHBK 2005

Thếhệ1: Vacuum tubes (1945-1955) • Mộ t magnetic core lưu trữ256 bits

© DHBK 2005

32/Chapter1

Thếhệ1: Vacuum tubes (1945-1955) • John von Neumann năm 1952 với chiếc máy tính mới của ông

33/Chapter1

© DHBK 2005

Thếhệ1: Vacuum tubes (1945-1955) • Năm 1954, John Backus, IBM phát minh ra FORTRAN

© DHBK 2005

Chương 1 Giới thiệu chung vềhệvi xửlý

34/Chapter1

• Lị ch sửphát triển của các bộvi xửlý và máy tính Thếhệ-1: The early days (…-1642) Thếhệ0: Mechanical (1642-1945) Thếhệ1: Vacuum tubes (1945-1955) Thếhệ2: Discrete transistors (1955-1965) Thếhệ3: Integrated circuits (1965-1980) Thếhệ4: VLSI (1980-?)

• Phân loại vi xửlý • Các hệđếm dùng trong máy tính ( nhắc lại) • Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý

© DHBK 2005

35/Chapter1

Th ếhệ2: Discrete transistors (1955-1965)

• Năm 1947, William Shockley, John Bardeen, and Walter Brattain phát minh ra transistor

© DHBK 2005

36/Chapter1

Th ếhệ2: Discrete transistors (1955-1965)

• Năm 1955, IBM công bốIBM704, máy tính mainframe sửdụng tranzistor • Đây là máy tính với phép toán dấu phấy động đầu tiên (5 kFlops, clock: 300 kHz)

© DHBK 2005

Chương 1 Giới thiệu chung vềhệvi xửlý

37/Chapter1

• Lị ch sửphát triển của các bộvi xửlý và máy tính Thếhệ-1: The early days (…-1642) Thếhệ0: Mechanical (1642-1945) Thếhệ1: Vacuum tubes (1945-1955) Thếhệ2: Discrete transistors (1955-1965) Thếhệ3: Integrated circuits (1965-1980) Thếhệ4: VLSI (1980-?)

• Phân loại vi xửlý • Các hệđếm dùng trong máy tính ( nhắc lại) • Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý

© DHBK 2005

38/Chapter1

Thếhệ3: Integrated circuits (1965-1980)

• Năm 1958, Jack St. Clair Kilby of Texas Instruments (Nobel prize physics, 2000) đưa ra và chứng minh ý tưởng tích hợp 1 transistor với các điện trởvà tụđiện trên một chip bán dẫn với kích thước 1 nửa cái kẹp giấy. Đây chính là IC.

© DHBK 2005

39/Chapter1

Thếhệ3: Integrated circuits (1965-1980)

• 7/4/1964 IBM đưa ra System/360, họmáy tính tương thích đầu tiên của IBM

© DHBK 2005

40/Chapter1

Thếhệ3: Integrated circuits (1965-1980)

• Năm 1965, Digital Equipment Corporation, đưa ra chiếc máy tính mini đầu tiên DP-8

41/Chapter1

© DHBK 2005

Thếhệ3: Integrated circuits (1965-1980) •

Năm 1971, Ted Hoff chếtạo Intel 4004 theo đơn đặt hàng của một công ty Nhật bản đểtạo chip sản xuất calculator. Đây là vi xửlý đầu tiên với 2400 transistor (microprocessor, processor-on-a-chip).



4 bít dữliệ u, 12 bit đị a chỉ

© DHBK 2005

42/Chapter1

Thếhệ3: Integrated circuits (1965-1980) • 1973-1974, Edward Roberts, William Yates and Jim Bybee chếtạo MITS Altair 8800, máy tính cá nhân đầ u tiên • Giá $375, 256 bytes of memory, không keyboard, không màn hình và không bộnhớngoài

• Sau đó, Bill Gate và Paul Allen viết chương trình dị ch BASIC cho Altair

© DHBK 2005

Chương 1 Giới thiệu chung vềhệvi xửlý

43/Chapter1

• Lị ch sửphát triển của các bộvi xửlý và máy tính Thếhệ-1: The early days (…-1642) Thếhệ0: Mechanical (1642-1945) Thếhệ1: Vacuum tubes (1945-1955) Thếhệ2: Discrete transistors (1955-1965) Thếhệ3: Integrated circuits (1965-1980) Thếhệ4: VLSI (1980-?)

• Phân loại vi xửlý • Các hệđếm dùng trong máy tính ( nhắc lại) • Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý

44/Chapter1

© DHBK 2005

Thếhệ4: VLSI (1980-?) • Năm 1981, IBM bắ t đầu với IBM "PC" sử dụng hệđiều hành DOS.

45/Chapter1

© DHBK 2005

Thếhệ4: VLSI (1980-?) • Năm 1984, Xerox PARC (Palo Alto Research Center) đưa ra máy tính đểbàn Alto với giao diện người và máy hoàn toàn mới: windows, biểu tượng, mouse

Con chuột đầu tiên

46/Chapter1

© DHBK 2005

Thếhệ4: VLSI (1980-?) • Năm 1986, siêu máy tính Cray-XMP với 4 bộxửlý đã đạt tốc độtính toán là 840 MFlops. Nó được làm mát bằng nước

47/Chapter1

© DHBK 2005

Thếhệ4: VLSI (1980-?) • Tố c độtính toán này đã đạt được với máy tính cá nhân 1 vi xửlý, Pentium III, vào quý 1 năm 2000

© DHBK 2005

• • • •

Chương 1 Giới thiệu chung vềhệvi xửlý

48/Chapter1

Lị ch sửphát triển của các bộvi xửlý và máy tính Phân loại vi xửlý Các hệđếm dùng trong máy tính ( nhắc lại) Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý

49/Chapter1

© DHBK 2005

Phân loại vi xửlý

50/Chapter1

© DHBK 2005

Phân loại vi xửlý • BMW > 100 processors • Trung bình 1 công dân Mỹ~ 75 processors

*Intelligent Transportation System (ITS)

*Cabin Air Quality

*Lighting

*Safety Systems *Engine Performance and Emission Control (Traction Control)

*Suspension and Braking Control

*Gear Box

*Digital Car *Steering Controls*Entertainment Radio

51/Chapter1

© DHBK 2005

Phân loại vi xửlý Phân loại theo giá thành: Type Disposable system Embedded system

Giá (USD) 1 10

Game computer Personal computer Server Collection of workstations Mainframe

100 1K 10K 100K

Supercomputer

10M

1M

Example application Greeting cards Watches, cars, appliances Home video games Desktop computer Network server Departmental supercomputer Batch processing in bank Weather forecasting

52/Chapter1

© DHBK 2005

Phân loại vi xửlý • Phân loại theo chức năng:  Vi xửlý đa năng (General Purpose Microprocessor)  DSP (Digital Signal Processor)  Vi điều khiển (Microcontroller)  ASIP (Application Specific Integrated Processor)

• Phân loại theo tập lệnh:

 CISC (complex Instruction Set computer): máy tính có tập lệnh phức tạp  nhiều lệnh  cấu trúc phức tạp  mỗi lệnh: có độdài khác nhau và thực hiện trong 1 đến chục chu kỳ xung nhị p

 RISC (reduced instruction Set computer): máy tính có tập lệnh rút gọn  ít lệnh  mỗi lệnh có độdài cốđị nh và thực hiện trong 1 đến 2 chu ký xung nhị p  cấu trúc vi xửlý đơn giản, có nhiều thanh ghi  tốc độxung nhị p lớn và tiêu thụnăng lượng thấp

© DHBK 2005

Chương 1 Giới thiệu chung vềhệvi xửlý

53/Chapter1

• Lị ch sửphát triển của các bộvi xửlý và máy tính • Phân loại vi xửlý • Các hệđếm dùng trong máy tính ( nhắc lại) Thập phân, Nhịphân, Hệ8, Hệ16 Cộng, trừ, nhân, chia Các sốâm Sốnguyên, sốthực, BCD, ASCII

• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý

© DHBK 2005

Chương 1 Giới thiệu chung vềhệvi xửlý

54/Chapter1

• Lị ch sửphát triển của các bộvi xửlý và máy tính • Phân loại vi xửlý • Các hệđếm dùng trong máy tính ( nhắc lại) Thập phân, Nhịphân, Hệ8, Hệ16 Cộng, trừ, nhân, chia Các sốâm Sốnguyên, sốthực, BCD, ASCII

• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý

55/Chapter1

© DHBK 2005

Hệthập phân • 1234,56710=

 1•1000+2•100+3•10+4•1+5•0.1+6•0.01+7•0.001  1•103+2•102+3•101+4•100+5•10-1+6•10-2+7•10-3  r = cơsố(r = 10), d=digit (0 d 9), m = sốchữsốtrước dấu phẩy, n = sốchữsốsau dấu phẩy

m 1

D d i r i n

i

56/Chapter1

© DHBK 2005

Hệnhịphân • 1011,0112=

 1•8+0•4+1•2+1•1+0•0.5+1•0.25+1•0.125  1•23+0•22+1•21+1•20+0•2-1+1•2-2+1•2-3  r = cơsố(r = 2), d=digit (0 d 1), m = sốchữsốtrước dấu phẩy, n = sốchữsốsau dấu phẩy

m 1

B d i 2 i n

i

57/Chapter1

© DHBK 2005

Hệ8 (Octal) • 7654,328=

 7•512+6•64+5•8+4•1+3•0.125+2•0.015625  7•83+6•82+5•81+4•80+3•8-1+2•8-2  r = cơsố(r = 8), d=digit (0 d 7), m = sốchữsốtrước dấu phẩy, n = sốchữsốsau dấu phẩy

m 1

O d i 8 i n

i

58/Chapter1

© DHBK 2005

Hệ16 (Hexadecimal) • FEDC,7616=

 15•4096+14•256+13•16+12•1+7•1/16+6•1/256  15•163+14•162+13•161+12•160+7•16-1+6•16-2  r = cơsố(r = 16), d=digit (0 d F), m = sốchữsốtrước dấu phẩy, n = sốchữsốsau dấu phẩy

m 1

H di  16 i n

i

59/Chapter1

© DHBK 2005

Chuyển đổi giữa các hệđếm • Chuyển từhệthập phân sang nhịphân Quy tắc: lấy sốcần đổi chia cho 2 và ghi nhớphần dư, lấy thương chia tiếp cho 2 và ghi nhớphần dư. Lặp lại khi thương bằng 0. Đảo ngược thứtựdãy các sốdưsẽđược chứ sốcủa hệnhịphân cần tìm Ví dụ: Đổi 34 sang hệnhịphân: 100010

• Chyển từhệnhịphân sang hệ16 và ngược lại 1011 0111B = B7H

© DHBK 2005

Chương 1 Giới thiệu chung vềhệvi xửlý

60/Chapter1

• Lị ch sửphát triển của các bộvi xửlý và máy tính • Phân loại vi xửlý • Các hệđếm dùng trong máy tính ( nhắc lại) Thập phân, Nhịphân, Hệ8, Hệ16 Cộng, trừ, nhân, chia Các sốâm Sốnguyên, sốthực, BCD, ASCII

• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý

61/Chapter1

© DHBK 2005

Cộng nhịphân • Cộng thập phân Nhớ 0 1 0 x

8273

y

562

Tổng

8835

• Cộng nhịphân Nhớ 0 0 1 1 1 1 1 x

10011011

y

1010111

Tổng

11110010

62/Chapter1

© DHBK 2005

Trừnhịphân

x

11101

y

1111

Mượn Hiệu

1110 01110

63/Chapter1

© DHBK 2005

Nhân nhịphân • Nguyên tắc: cộng và dị ch

1110 1101 1110 0000 1110 1110 10110110

64/Chapter1

© DHBK 2005

Chia nhịphân 10111010 1110 1001010 1110 10010 0000 10010 1110 100

• Nguyên tắc: trừvà dị ch

1110 1101

© DHBK 2005

Chương 1 Giới thiệu chung vềhệvi xửlý

65/Chapter1

• Lị ch sửphát triển của các bộvi xửlý và máy tính • Phân loại vi xửlý • Các hệđếm dùng trong máy tính ( nhắc lại) Thập phân, Nhịphân, Hệ8, Hệ16 Cộng, trừ, nhân, chia Các sốâm Sốnguyên, sốthực, BCD, ASCII

• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý

© DHBK 2005

Biểu diễn bằng dấu và độlớn (Sign-Magnitude)

66/Chapter1

• Một sốcó dấu bao gồm 2 phần: dấu và độlớn • Ví dụhệ10: +12310 (thông thường ‘123’) và -12310 • Hệnhịphân: bít dấu là bít MSB; ‘0’ = dương, ‘1’ = âm • Ví dụ: 011002 = +1210 và 111002 = -1210 • Các sốcó dấu 8 bít sẽcó giá trịtừ-127 đến +127 với 2 số0: 1000 0000 (-0) và 0000 0000 (+0)

67/Chapter1

© DHBK 2005

Sốbù 2 • Sốbù 1 (bù lô gic): đảo bit 1001 => 0110 0100 => 1011

• Sốbù 2 (bù sốhọc): sốbù 1 +1 • Ví dụ: Tìm sốbù 2 của 13 13 = 0000 1101 Sốbù 1 của 13 =1111 0010 Cộng thêm 1: 1 Sốbù 2 của 13= 1111 0011 (tức là -13)

68/Chapter1

© DHBK 2005

Sốbù 2 • Ví dụ: Tìm sốbù 2 của 0 0 = 0000 0000 Sốbù 1 của 0 =1111 1111 Cộng thêm 1: 1 Sốbù 2 của 0= 0000 0000 (tức là -0) • Nhưvậy với sốbù 2, số0 được biểu diễn 1 cách duy nhất • Sốcó dấu 8 bít sẽcó giá trịtừ-128 đến 127

69/Chapter1

© DHBK 2005

Sốbù 2 Decimal

Sốbù 2

Sign-magnitude

-8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7

1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111

1111 1110 1101 1100 1011 1010 1001 1000 & 0000 0001 0010 0011 0100 0101 0110 0111

© DHBK 2005

Chương 1 Giới thiệu chung vềhệvi xửlý

70/Chapter1

• Lị ch sửphát triển của các bộvi xửlý và máy tính • Phân loại vi xửlý • Các hệđếm dùng trong máy tính ( nhắc lại) Thập phân, Nhịphân, Hệ8, Hệ16 Cộng, trừ, nhân, chia Các sốâm Sốnguyên, sốthực, BCD, ASCII

• Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý

71/Chapter1

© DHBK 2005

Sốnguyên (integer) • 8 bit unsigned: 0 đến 255 signed : -128 đến 127 ( bù hai)

• 16 bit unsigned: 0 đến 65535 (216-1) signed : -32768 (215) đến 32767 (215 -1)

• 32 bit unsigned: 0 đến 232 -1 signed : -231 đến 231-1

72/Chapter1

© DHBK 2005

Little endian và big endian • Số1234 H được lưu trữthếnào trong bộnhớ8 bit?

FFFFH

FFFFH .....

.....

0101H

12H

0101H

34H

0100H

34H

0100H

12H

..... 0000H little endian Intel microprocessors

..... 0000H big endian Motorola microprocessors

© DHBK 2005

Sốthực (real number, floating point number)

73/Chapter1

• Ví dụ: 1,234=1,234*100=0,1234*10 1=... • 11,01 B= 1,101*21=0,1101*22=...

mantissa

exponent

• Real number: (m, e) , e.g. (0.1101, 2) Single precision: 32 bit Double precision: 64 bit

Sốthực (real number, floating point number)

74/Chapter1

© DHBK 2005

• IEEE-754 format cho single-precision 31 30 S

23 22

biased exponent e

0

fraction f of normalized mantissa

1 sign bit: 0 dương, 1 âm 8 bit biased exponent= exponent + 127 24 bit mantissa chuẩn hoá = 1 bit ẩn + 23 bit fraction Mantissa chuẩn hoá: có giá trịgiữa 1 và 2 : 1.f Ví dụ: biểu diễn 0.1011 dưới dạng IEEE-754 Sign bit s=0 chuẩn hoá mantissa: 0.1011=1.011*2-1 Biased exponent: -1 + 127=126=01111110 IEEE format: 0 01111110 0110000000000000000000

Sốthực (real number, floating point number)

75/Chapter1

© DHBK 2005

• IEEE-754 format cho double-precision 63 62 S

52 51

biased exponent e

0

fraction f of normalized mantissa

1 sign bit: 0 dương, 1 âm 11 bit biased exponent= exponent + 1023 53 bit mantissa chuẩn hoá = 1 bit ẩn + 52 bit fraction

single precision: double precision:

(-1)s x 2e-127 x (1.f)2 (-1)s x 2e-1023 x (1.f)2

© DHBK 2005

Sốthực (real number, floating point number)

76/Chapter1

Single Precision

Double Precision

Machine epsilon

2-23 or 1.192 x 10-7

2 -52 or 2.220 x 10-16

Smallest positive

2 -126 or 1.175 x 10 -38

2 -1022 or 2.225 x 10 -308

Largest positive

(2- 2 -23) 2127 or 3.403 x 10 38

(2- 2 -52) 21023 or 1.798 x 10308

6 significant digits

15 significant digits

Decimal Precision

77/Chapter1

© DHBK 2005

BCD • Binary Coded Decimal number BCD chuẩn (BCD gói, packed BCD): 1 byte biểu diễn 2 sốBCD Ví dụ: 25: 0010 0101

BCD không gói (unpacked BCD) : 1 byte biểu diễn 1 sốBCD ví dụ: 25: 00000010 00000101

Decimal digit

BCD

0 1 2

0000 0001 0010

3 4 5 6

0011 0100 0101 0110

7 8 9

0111 1000 1001

ASCII

© DHBK 2005

78/Chapter1

• American Standard Code for Information Interchange (7-bit code) b3b2b1b0

000

001

010

011

100

101

110

111

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI

DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US

SP ! “ # $ % & ‘ ( ) * + , . /

0 1 2 3 4 5 6 7 8 9 : ; < = > ?

@ A B C D E F G H I J K L M N O

P Q R S T U V W X Y Z [ \ ] ^ _

‘ a b c d e f g h i j k l m n o

p q r s t u V w x y z { | } ~ DEL

© DHBK 2005

• • • •

Chương 1 Giới thiệu chung vềhệvi xửlý

79/Chapter1

Lị ch sửphát triển của các bộvi xửlý và máy tính Phân loại vi xửlý Các hệđếm dùng trong máy tính ( nhắc lại) Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý Hệvi xửlý

© DHBK 2005

• • • •

Chương 1 Giới thiệu chung vềhệvi xửlý

80/Chapter1

Lị ch sửphát triển của các bộvi xửlý và máy tính Phân loại vi xửlý Các hệđếm dùng trong máy tính ( nhắc lại) Giới thiệu sơlược vềcấu trúc và hoạt động của hệvi xửlý Hệvi xửlý

81/Chapter1

© DHBK 2005

Hệvi xửlý Bus dữliệu Bus điều khiển

Bộnhớ Bộnhớ Memory Memory

Vi Vi xửlý xửlý CPU CPU

Phố ii ghép Phố ghép vào/ra vào/ra (I/O) (I/O)

Bus đị a chỉ

DRAM SRAM ROM EEPROM Flash

Intel 80X86 Motorola 680X PowerPC ...

ISA EISA PCI VESA SCSI USB ...

Thiết bị vào/ra Màn hình Máy in Bàn phím Con chuột Ổ cứng Ổ mềm CD-ROM DVD ...

82/Chapter1

© DHBK 2005

Hệvi xửlý • CPU Đơn vịsốhọc và logic (Arithmetic Logical Unit)

Đọc mã lệnh

Thực hiện các phép toán sốhọc  Cộng, trừ, nhân chia

Thực hiện các phép toán logic

Giải mã lệnh

 And, or, compare..

Đơn vịđiều khiển (Control Unit)

Thực hiện lệnh

Các thanh ghi (Registers) Lưu trữdữliệu và trạng thái của quá trình thực hiện lệnh

83/Chapter1

© DHBK 2005

Hệvi xửlý • Memory ROM: không bịmất dữliệu, chứa dữliệu điều khiển hệthống lúc khởi động RAM: mất dữliệu khi mất nguồn, chứa chương trình và dữ liệu trong quá trình hoạt động của hệthống

• Bus dữliệu

8, 16, 32, 64 bit tùy thuộc vào vi xửlý

• Bus đị a chỉ :

16, 20, 24, 32, 36 bit sốô nhớcó thểđánh đị a chỉ : 2N Ví dụ: 8088/8086 có 20 đường đị a chỉ=> quản lý được 220 bytes=1Mbytes

84/Chapter1

© DHBK 2005

Hệvi xửlý Nhà sản xuất

Tên vi xửlý

Bus dữliệu

Intel

8088 8086 80186 80286 80386SX 80386DX 80486DX

8 16 16 16 16 32 32

20 20 20 24 24 32 32

1M 1M 1M 16 M 16 M 4G 4G

Pentium Pentium Pro Pentium I, II, III, IV

64 64 64

32 36 36

4G 64 G 64 G

68000 68010 68020 68030

16 16 32 32

24 24 32 32

16 M 16 M 4G 4G

68040 68060 PowerPC

32 64 64

32 32 32

4G 4G 4G

Motorola

Bus đị a chỉ

Khảnăng đị a chỉ

1/Chapter2

© DHBK 2005

Nội dung môn học 1. 2. 3. 4. 5. 6. 7.

Giới thiệu chung vềhệvi xửlý Bộvi xửlý Intel 8088/8086 Lập trình hợp ngữcho 8086 Tổchức vào ra dữliệu Ngắt và xửlý ngắt Truy cập bộnhớtrực tiếp DMA Các bộvi xửlý trên thực tế

© DHBK 2005

2/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086 • • • • • • •

Cấu trúc bên trong Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086 Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

3/Chapter2

© DHBK 2005

Chương 2: Bộvi xửlý Intel 8088/8086 • Cấu trúc bên trong Sơđồkhối Các thanh ghi đa năng Các thanh ghi đoạn Các thanh ghi con trỏvà chỉsố Thanh ghi cờ Hàng đợi lệnh

• • • • • •

Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086 Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

4/Chapter2

© DHBK 2005

Chương 2: Bộvi xửlý Intel 8088/8086 • Cấu trúc bên trong Sơđồkhối Các thanh ghi đa năng Các thanh ghi đoạn Các thanh ghi con trỏvà chỉsố Thanh ghi cờ Hàng đợi lệnh

• • • • • •

Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086 Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

5/Chapter2

© DHBK 2005

Sơđồkhối 8088/8086 Các thanh ghi đa năng Các thanh ghi con trỏ và chỉsố

AX BX CX DX SP BP SI DI

EU

bus đị a chỉ 20 bit

Các thanh ghi đoạn và con trỏ lệ nh

 CS DS SS ES IP

Bus dữliệ u ALU 16 bit

Bus ngoài

Khối điề u khiể n của EU Hàng đợi lệ nh

Thanh ghi cờ

Bus trong của CPU 16 bit dữliệu 20 bit đị a chỉ

Logic điề u khiể n bus

Các thanh ghi tạ m thời

ALU

BIU

6/Chapter2

© DHBK 2005

Chương 2: Bộvi xửlý Intel 8088/8086 • Cấu trúc bên trong Sơđồkhối Các thanh ghi đa năng Các thanh ghi đoạn Các thanh ghi con trỏvà chỉsố Thanh ghi cờ Hàng đợi lệnh

• • • • • •

Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086 Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

7/Chapter2

© DHBK 2005

Các thanh ghi đa năng của 8088/8086 8 bit cao

8 bit thấp •8088/8086 đến 80286 : 16 bits

• • • •

AX

AH

AL

BX

BH

BL

CX

CH

CL

DX

DH

DL

•80386 trởlên: 32 bits EAX, EBX, ECX, EDX

Thanh ghi chứa AX (accumulator): chứa kết quảcủa các phép tính. Kết quả8 bit được chứa trong AL Thanh ghi cơsởBX (base): chứa đị a chỉcơsở, ví dụcủa bảng dùng trong lệnh XLAT (Translate) Thanh ghi đếm CX (count): dùng đểchứa sốlần lặp trong các lệnh lặp (Loop). CL được dùng đểchứa sốlần dị ch hoặc quay trong các lệnh dị ch và quay thanh ghi Thanh ghi dữliệu DX (data): cùng AX chứa dữliệu trong các phép tính nhân chia số16 bit. DX còn được dùng đểchứa đị a chỉcổng trong các lệnh vào ra dữliệu trực tiếp (IN/OUT)

8/Chapter2

© DHBK 2005

Chương 2: Bộvi xửlý Intel 8088/8086 • Cấu trúc bên trong

 Sơđồkhối  Các thanh ghi đa năng  Các thanh ghi đoạn  Các thanh ghi con trỏvà chỉsố  Thanh ghi cờ  Hàng đợi lệnh

• • • • • •

Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086 Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

9/Chapter2

© DHBK 2005

Các thanh ghi đoạn • Tổchức của bộnhớ1 Mbytes Đoạn bộnhớ(segment) FFFFFH 216 bytes =64 KB Đoạn 1: đị a chỉđầu 00000 H Đoạn 2: đị a chỉđầu 00010 H Đoạn cuối cùng: FFFF0 H

Ô nhớtrong đoạn:

đị a chỉlệch: offset Ô 1: offset: 0000 Ô cuối cùng: offset: FFFF 1FFFFH Đị a chỉvật lý: Segment : offset Đị a chỉvật lý=Segment*16 + offset

Chếđộthực (real mode)

1F000H 10000H 00000H

Offset=F000 1000 Thanh ghi đoạn

10/Chapter2

© DHBK 2005

Các thanh ghi đoạn • Ví dụ: Đị a chỉvật lý 12345H Đị a chỉđoạn

Điạchỉlệch

1000 H

2345H

1200 H

0345H

1004 H

?

0300 H

?

• Ví dụ: Cho đị a chỉđầu của đoạn: 49000 H, xác đị nh đị a chỉcuối

11/Chapter2

© DHBK 2005

Các thanh ghi đoạn • Các thanh ghi đoạn: chứa đị a chỉđoạn FFFFF 58FFF 49000 43FFF 34000 30000 2FFFF 20000 1FFFF 10000 00000

............. Đoạn dữliệ u phụ extra segment Đoạn ngăn xế p Stack segment

4900

ES

3400

SS

2000

CS

1000

DS

Đoạn mã Code segment Đoạn dữliệ u Data segment

12/Chapter2

© DHBK 2005

Các thanh ghi đoạn • Các đoạn chồng nhau FFFFF

s t a c k

d a t a

c o d e

0A480 0A47F 0A280 0A27F 0A0F0 0A0EF

Stack 0A28

SS

0A0F

DS

090F

CS

Data Code

090F0 00000

13/Chapter2

© DHBK 2005

Chương 2: Bộvi xửlý Intel 8088/8086 • Cấu trúc bên trong

 Sơđồkhối  Các thanh ghi đa năng  Các thanh ghi đoạn  Các thanh ghi con trỏvà chỉsố  Thanh ghi cờ  Hàng đợi lệnh

• • • • • •

Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086 Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

14/Chapter2

© DHBK 2005

Các thanh ghi con trỏvà chỉsố • Chứa đị a chỉlệch (offset)

 Con trỏlệnh IP (instruction pointer): chứa đị a chỉlệnh tiếp theo trong đoạn mã lệnh CS. CS:IP

Con trỏcơsởBP (Base Pointer): chứa đị a chỉcủa dữliệu trong đoạn ngăn xếp SS hoặc các đoạn khác SS:BP

 Con trỏngăn xếp SP (Stack Pointer): chứa đị a chỉhiện thời của đỉ nh ngăn xếp SS:SP

Chỉsốnguồn SI (Source Index): chứa đị a chỉdữliệu nguồn trong đoạn dữliệu DS trong các lệnh chuỗi DS:SI

Chỉsốđích (Destination Index): chứa đị a chỉdữliệu đích trong đoạn dữliệu DS trong các lệnh chuỗi DS:DI

SI và DI có thểđược sửdụng nhưthanh ghi đa năng 80386 trởlên 32 bit: EIP, EBP, ESP, EDI, ESI

15/Chapter2

© DHBK 2005

Các thanh ghi con trỏvà chỉsố • Thanh ghi đoạn và thanh ghi lệch ngầm đị nh Segment

Offset

Chú thích

CS

IP

Đị a chỉlệnh

SS

SP hoặc BP

Đị a chỉngăn xếp

DS

BX, DI, SI, số8 bit hoặc số16 bit

Đị a chỉdữliệu

ES

DI

Đị a chỉchuỗi đích

16/Chapter2

© DHBK 2005

Chương 2: Bộvi xửlý Intel 8088/8086 • Cấu trúc bên trong

 Sơđồkhối  Các thanh ghi đa năng  Các thanh ghi đoạn  Các thanh ghi con trỏvà chỉsố  Thanh ghi cờ  Hàng đợi lệnh

• • • • • •

Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086 Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

17/Chapter2

© DHBK 2005

Thanh ghi cờ(Flag Register) 15 14

2 O

D I

T

S

Z

A

• 9 bit được sửdụng, 6 cờtrạng thái:

P

1

0 C

C hoăc CF (carry flag)): CF=1 khi có nhớhoặc mượn từMSB P hoặc PF (parity flag): PF=1 (0) khi tổng sốbít 1 trong kết quảlà chẵn (lẻ) A hoặc AF (auxilary carry flag): cờnhớphụ, AF=1 khi có nhớhoặc mượn từmột sốBCD thấp sang BCD cao Z hoặc ZF (zero flag): ZF=1 khi kết quảbằng 0 S hoặc SF (Sign flag): SF=1 khi kết quảâm O hoặc OF (Overflow flag): cờtràn OF=1 khi kết quảlà một sốvượt ra ngoài giới hạn biểu diễn của nó trong khi thực hiện phép toán cộng trừsốcó dấu

18/Chapter2

© DHBK 2005

Thanh ghi cờ(Flag Register) 15 14

2 O

• 3 cờđiều khiển

D I

T

S

Z

A

P

1

0 C

T hoăc TF (trap flag)): cờbẫy, TF=1 khi CPU làm việc ởchế độchạy từng lệnh I hoặc IF (Interrupt enable flag): cờcho phép ngắt, IF=1 thì CPU sẽcho phép các yêu cầu ngắt (ngắt che được) được tác động (Các lệnh: STI, CLI) D hoặc DF (direction flag): cờhướng, DF=1 khi CPU làm việc với chuỗi ký tựtheo thứtựtừphải sang trái (lệnh STD, CLD)

19/Chapter2

© DHBK 2005

Thanh ghi cờ(Flag Register) • Ví dụ:

+

80h 80h

100h

SF=0 vì msb trong kết quả=0 PF=1 vì có 0 bít của tổng bằng 1 ZF=1 vì kết qủa thu được là 0 CF=1 vì có nhớtừbít msb trong phép cộng OF=1 vì có tràn trong phép cộng 2 sốâm

20/Chapter2

© DHBK 2005

Chương 2: Bộvi xửlý Intel 8088/8086 • Cấu trúc bên trong

 Sơđồkhối  Các thanh ghi đa năng  Các thanh ghi đoạn  Các thanh ghi con trỏvà chỉsố  Thanh ghi cờ  Hàng đợi lệnh

• • • • • •

Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086 Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

21/Chapter2

© DHBK 2005

Hà ng đợi lệnh • 4 bytes đối với 8088 và 6 bytes đối với 8086 • Xửlý pipeline

Không có pipelining

F1 D1 E1 F2 D2 E2 F3 D3 E3

F1 D1 E1 Có pipelining

F2 D2 E2 F3 D3 E3

© DHBK 2005

22/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086 • • • • • • •

Cấu trúc bên trong Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086 Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

23/Chapter2

© DHBK 2005

Intel 8088 • 16-bit processor • introduced in 1979 • 3 m, 5 to 8 MHz, 29 KTOR, 0.33 to 0.66 MIPS

24/Chapter2

© DHBK 2005

Intel 8088

•ChếđộMin và chếđộMax: MN/MX = 1 chếđộMin = 0 chếđộMax với bus controller 8288

25/Chapter2

© DHBK 2005

Intel 8086

© DHBK 2005

26/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086 • • • • • • •

Cấu trúc bên trong Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086 Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

27/Chapter2

© DHBK 2005

Bản đồbộnhớcủa máy tính IBM PC

Vùng nhớ mởrộng

FFFFF A0000 9FFFF 00000

Vùng nhớ hệthống 484 Kbytes Vùng nhớ chương trình 640 Kbytes

1 Mbytes bộnhớthực

28/Chapter2

© DHBK 2005

Bản đồvùng nhớchương trình 9FFFF 9FFF0

MSDOS Vùng dành cho các chương trình ứng dụng

08E30 08490 02530 01160 00700 00500 00400 00000

COMMAND.COM Device drivers (mouse.sys) MSDOS IO.SYS Vùng DOS Vùng BIOS Các vector ngắt

29/Chapter2

© DHBK 2005

Bản đồvùng nhớhệthống FFFFF F0000 E0000

ROM BIOS ROM BASIC

Vùng đểdành

C8000 C0000 B0000 A0000

Video BIOS ROM Video RAM (text) Video RAM (đồhoạ)

30/Chapter2

© DHBK 2005

Các cổng vào ra • Đị a chỉ : 0000H –FFFFH, M/IO =0 FFFF Vùng mởrộng

03F8 03F0 03D0 0378 0320 02F8 0060 0040 0020 0000

COM1 Điều khiển đĩ a mềm CGA adapter LPT1 Điều khiển ổcứng COM2 8255 Đị nh thời (8253) Điều khiển ngắt Điều khiển DMA

31/Chapter2

© DHBK 2005

Trình tựkhởi động • Khi bật nguồn hoặc nhấn Reset CS=FFFFh và IP=0000 => đị a chỉFFFF0 chứa chỉthịchuyển điều khiển đến điểm khới đầu của các chương trình BIOS Các chương trình BIOS kiểm tra hệthống và bộnhớ Các chương trình BIOS khởi tạo bảng vector ngắt và vùng dữliệu BIOS BIOS nạp chương trình khởi động (boot program) từđĩ a vào bộnhớ Chương trình khởi động nạp hệđiều hành từđĩ a vào bộnhớ Hệđiều hành nạp các chương trình ứng dụng

32/Chapter2

© DHBK 2005

Vùng nhớd ành riêng của 8088/8086 FFFFF FFFF0

Reset Bootstrap program jump

003FF 00000

Các vector ngắt

33/Chapter2

© DHBK 2005

Chương 2: Bộvi xửlý Intel 8088/8086 • • • •

Cấu trúc bên trong Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086  Chếđộđị a chỉthanh ghi  Chếđộđị a chỉtức thì  Chếđộđị a chỉtrực tiếp  Chếđộđị a chỉgián tiếp qua thanh ghi  Chếđộđị a chỉtương đối cơsở  Chếđộđị a chỉtương đối chỉsố  Chếđộđị a chỉtương đối chỉsốcơsở

• Cách mã hoá lệnh của 8086 • Mô tảtập lệnh của 8086 • Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

© DHBK 2005

Chếđộđị a chỉthanh ghi (Register Addressing Mode)

34/Chapter2

• Dùng các thanh ghi nhưlà các toán hạng • Tốc độthực hiện lệnh cao • Ví dụ:

MOV BX, DX ; Copy nội dung DX vào BX MOV AL, BL ; Copy nội dung BL vào AL MOV AL, BX ; không hợp lệvì các thanh ghi có kích thước khác nhau MOV ES, DS ; không hợp lệ (segment to segment) MOV CS, AX ; không hợp lệvì CS không được dùng làm thanh ghi đích ADD AL, DL ; Cộng nội dung AL và DL rồi đưa vào AL

© DHBK 2005

Chếđộđị a chỉtức thì (Immediate Addressing Mode)

35/Chapter2

• Toán hạng đích là thanh ghi hoặc ô nhớ • Toán hạng nguồn là hằng số • Dùng đểnạp hằng sốvào thanh thi (trừthanh ghi đoạn và thanh cờ) hoặc vào ô nhớtrong đoạn dữliệu DS • Ví dụ: MOV MOV MOV MOV MOV MOV

BL, 44 ; Copy sốthập phân 44 vào thanh ghi BL AX, 44H ; Copy 0044H vào thanh ghi AX AL, ‘A’ ; Copy mã ASCII của A vào thanh ghi AL DS, 0FF0H ; không hợp lệ AX, 0FF0H ; DS, AX ;

MOV [BX], 10 ; copy sốthập phân 10 vào ô nhớDS:BX

© DHBK 2005

Chếđộđị a chỉtrực tiếp (Direct Addressing Mode)

36/Chapter2

• Một toán hạng là đị a chỉô nhớchứa dữliệu • Toán hạng kia chỉcó thểlà thanh ghi • Ví dụ:

MOV AL, [1234H] ; Copy nộ i dung ô nhớcó đ ị a chỉ DS:1234 vào AL MOV [ 4320H ], CX ; Copy nộ i dung củ a CX vào 2 ô nhớliên tiế p DS: 4320 và DS: 4321

© DHBK 2005

Chếđộđị a chỉgián tiếp qua thanh ghi (Register indirect Addressing Mode)

37/Chapter2

• Một toán hạng là thanh ghi chứa đị a chỉcủa 1 ô nhớ dữliệu • Toán hạng kia chỉcó thểlà thanh ghi • Ví dụ: MOV AL, [BX] ; Copy nộ i dung ô nhớcó đ ị a chỉ DS:BX vào AL MOV [ SI ], CL ; Copy nộ i dung củ a CL vào ô nhớcó đ ị a chỉDS:SI MOV [ DI ], AX ; copy nộ i dung của AX vào 2 ô nhớliên tiế p DS: DI và DS: (DI +1)

© DHBK 2005

Chếđộđị a chỉtương đối cơsở (Based relative Addressing Mode)

38/Chapter2

• Một toán hạng là thanh ghi cơsởBX, BP và các hằng sốbiểu diễn giá trịdị ch chuyển • Toán hạng kia chỉcó thểlà thanh ghi • Ví dụ: MOV CX, [BX]+10 ; Copy nộ i dung 2 ô nhớliên tiế p có đ ị a chỉ DS:BX+10 và DS:BX+11 vào CX MOV CX, [BX+10] ; Cách viế t khác củ a lệ nh trên MOV AL, [BP]+5 ; copy nộ i dung củ a ô nhớSS:BP+5 vào thanh ghi AL

© DHBK 2005

Chếđộđị a chỉtương đối chỉsố (Indexed relative Addressing Mode)

39/Chapter2

• Một toán hạng là thanh ghi chỉsốSI, DI và các hằng sốbiểu diễn giá trịdị ch chuyển • Toán hạng kia chỉcó thểlà thanh ghi • Ví dụ: MOV AX, [SI]+10 ; Copy nộ i dung 2 ô nhớliên tiế p có đ ị a chỉDS:SI+10 và DS:SI+11 vào AX MOV AX, [SI+10] ; Cách viế t khác củ a lệ nh trên MOV AL, [DI]+5 ; copy nộ i dung củ a ô nhớDS:DI+5 vào thanh ghi AL

© DHBK 2005

40/Chapter2

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

( Based Indexed relative Addressing Mode)

• Ví dụ: MOV AX, [BX] [SI]+8 ; Copy nộ i dung 2 ô nhớliên tiế p có đ ị a chỉ DS:BX+SI+8 và DS:BX+SI+9 vào AX MOV AX, [BX+SI+8] ; Cách viế t khác củ a lệ nh trên MOV CL, [BP+DI+5] ; copy nộ i dung củ a ô nhớSS:BP+DI+5 vào thanh ghi CL

41/Chapter2

© DHBK 2005

Tóm tắt các chếđộđị a chỉ Chếđộđị a chỉ

Toán hạng

Thanh ghi đoạn ngầm đị nh

Thanh ghi

Thanh ghi

Tức thì

Dữliệ u

Trực tiế p

[offset]

DS

Gián tiế p qua thanh ghi

[BX]

DS

[SI] [DI]

DS DS

[BX] + dị ch chuyể n

DS

[BP] + dị ch chuyể n

SS

Tương đối chỉsố

[DI] + dị ch chuyể n [SI] + dị ch chuyể n

DS DS

Tương đối chỉsốcơsở

[BX] + [DI]+ dị ch chuyể n

DS

[BX] + [SI]+ dị ch chuyể n [BP] + [DI]+ dị ch chuyển [BP] + [SI]+ dị ch chuyể n

DS SS SS

Tương đối cơsở

© DHBK 2005

• Ví dụ:

Bỏchếđộngầm đị nh thanh ghi đoạn (Segment override)

MOV AL, [BX]; Copy nộ i dung ô nhớcó đ ị a chỉDS:BX vào AL MOV AL, ES:[BX] ; Copy nộ i dung ô nhớcó đ ị a chỉES:BX vào AL

42/Chapter2

© DHBK 2005

43/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086 • • • • • • •

Cấu trúc bên trong Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086 Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

44/Chapter2

© DHBK 2005

Cách mã hoá lệnh của 8086 Opcode 1-2 byte

MOD-REG-R/M 0-1 byte

Dị ch chuyển 0-2 byte

Tức thì 0-2 byte

• Một lệnh có độdài từ1 đến 6 byte

D Opcode

W W=0 dữliệu 1 byte W=1 dữliệu 2 byte

D=1 dữliệu đi đến thanh ghi cho bởi 3 bit REG D=0 dữliệu đi từthanh ghi cho bởi 3 bit REG

45/Chapter2

© DHBK 2005

Cách mã hoá lệnh của 8086

MOD

00 01 10 11

không có dị ch chuyển dị ch chuyển 8 bit dị ch chuyển 16 bit R/M là thanh ghi

REG

R/M

Thanh ghi W=1 AX BX CX DX SP DI BP SI

W=0 AL BL CL DL AH BH CH DH

Mã 000 011 001 010 100 111 101 110

MOD <> 11 Mã

Chếđộđị a chỉ

000 001 010 011 100 101 110 111

DS:[BX+SI] DS:[BX+DI] SS:[BP+SI] SS:[BP+DI] DS:[SI] DS:[DI] SS:[BP] DS:[BX]

46/Chapter2

© DHBK 2005

Cách mã hoá lệnh của 8086 • Ví dụ: chuyển lệnh MOV CL, [BX] sang mã máy opcode MOV: 100010 Dữliệu là 1 byte: W=0 Chuyển tới thanh ghi: D=1 Không có dị ch chuyển: MOD=00 [BX] nên R/M=111 CL nên REG=001

1

0

0

0

MOV

1

0

1

0

D W

0

0

MOD

0

0

1

1

CL

Ví dụ2: chuyển lệnh MOV [SI+F3H], CL sang mã máy

1

1

[BX]

47/Chapter2

© DHBK 2005

Chương 2: Bộvi xửlý Intel 8088/8086 • • • • • •

Cấu trúc bên trong Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086  Các lệnh di chuyển dữliệu  Các lệnh sốhọc và logic  Các lệnh điều khiển chương trình

• Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

48/Chapter2

© DHBK 2005

Chương 2: Bộvi xửlý Intel 8088/8086 • • • • • •

Cấu trúc bên trong Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086  Các lệnh di chuyển dữliệu  Các lệnh sốhọc và logic  Các lệnh điều khiển chương trình

• Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

49/Chapter2

© DHBK 2005

Cá c lệnh di chuyển dữliệu • MOV, XCHG, POP, PUSH, POPF, PUSHF, IN, OUT • Các lệnh di chuyển chuỗi MOVS, MOVSB, MOVSW • MOV

Dùng đểchuyển giữa các thanh ghi, giữa 1 thanh ghi và 1 ô nhớhoặc chuyển 1 sốvào thanh ghi hoặc ô nhớ Cú pháp: MOV Đích, nguồn  Lệnh này không tác động đến cờ Ví dụ: MOV AX, BX MOV AH, ‘A’ MOV AL, [1234H]

50/Chapter2

© DHBK 2005

Cá c lệnh di chuyển dữliệu • Khảnăng kết hợp toán hạng của lệnh MOV Thanh ghi đa năng

Thanh ghi đoạn

ô nhớ

Hằng số

Thanh ghi đa năng

YES

YES

YES

NO

Thanh ghi đoạn

YES

NO

YES

NO

Ô nhớ

YES

YES

NO

NO

Hằng số

YES

NO

YES

NO

Đích Nguồn

51/Chapter2

© DHBK 2005

Cá c lệnh di chuyển dữliệu • Lệnh XCHG  Dùng đểhoán chuyển nội dung giữa hai thanh ghi, giữa 1 thanh ghi và 1 ô nhớ  Cú pháp: XCHG Đích, nguồn  Giới hạn: toán hạng không được là thanh ghi đoạn  Lệnh này không tác động đến cờ  Ví dụ:  XCHG AX, BX  XCHG AX, [BX]

52/Chapter2

© DHBK 2005

Cá c lệnh di chuyển dữliệu • Lệnh PUSH  Dùng đểcất 1 từtừ thanh ghi hoặc ô nhớvào đỉ nh ngăn xếp  Cú pháp: PUSH Nguồn  Mô tả: SP=SP-2, Nguồn => {SP}  Giới hạn: thanh ghi 16 bit hoặc là 1 từnhớ  Lệnh này không tác động đến cờ  Ví dụ:  PUSH BX  PUSH PTR[BX]

• Lệnh PUSHF

 Cất nội dung của thanh ghi cờvào ngăn xếp

53/Chapter2

© DHBK 2005

Cá c lệnh di chuyển dữliệu • Ví dụvềlệnh PUSH SP

1300A 13009 13008 13007 13006 13005 13004 13003 13002 13001 13000

PUSH AX 1300A 13009 13008 13007 13006 13005 13004 13003 13002 13001

12 34

13000

PUSH BX 1300A 13009 SP 13008 13007 13006 13005 13004 13003 13002 13001

12 34 78 56

13000

SS

1300

SS

1300

SS

1300

SP

000A

SP

0008

SP

0006

1234

AX

1234

BX

7856

AX

SP

54/Chapter2

© DHBK 2005

Cá c lệnh di chuyển dữliệu • Lệnh POP  Dùng đểlấy lại 1 từvào thanh ghi hoặc ô nhớtừđỉ nh ngăn xếp  Cú pháp: POP Đích  Mô tả: {SP} => Đích, SP=SP+2  Giới hạn: thanh ghi 16 bit (trừCS) hoặc là 1 từnhớ  Lệnh này không tác động đến cờ  Ví dụ:  POP BX  POP PTR[BX]

• Lệnh POPF

 Lấy 1 từtừđỉ nh ngăn xếp rồi đưa vào thanh ghi cờ

55/Chapter2

© DHBK 2005

Cá c lệnh di chuyển dữliệu • Ví dụlệnh POP 1300A 13009 13008 13007 13006 13005 13004 13003 13002 13001

POP DX

12 34 78 56

13000

SP

1300A 13009 13008 13007 13006 13005 13004 13003 13002 13001

12 34 78 56

13000

SS

1300

SS

1300

SP

0006

SP

0008

DX

3254

DX

7856

SP

56/Chapter2

© DHBK 2005

Cá c lệnh di chuyển dữliệu • Lệnh IN  Dùng đểđọc 1 byte hoặc 2 byte dữliệu từcổng vào thanh ghi AL hoặc AX  Cú pháp: IN Acc, Port  Lệnh này không tác động đến cờ  Ví dụ:  IN AX, 00H  IN AL, F0H  IN AX, DX

• Lệnh OUT  Dùng đểđưa 1 byte hoặc 2 byte dữliệu từthanh ghi AL hoặc AX ra cổng  Cú pháp: OUT Port, Acc  Lệnh này không tác động đến cờ  Ví dụ:  OUT 00H, AX  OUT F0H, AL  OUT DX, AX

57/Chapter2

© DHBK 2005

Cá c lệnh di chuyển dữliệu • Các lệnh di chuyển chuỗi MOVS, MOVSB, MOVSW Dùng đểchuyển một phần tửcủa chuỗi này sang một chuỗi khác Cú pháp: MOVS chuỗi đích, chuỗi nguồn MOVSB MOVSW

Thực hiện: DS:SI là đị a chỉcủa phần tửtrong chuỗi nguồn ES:DI là đị a chỉcủa phần tửtrong chuỗi đích Sau mỗi lần chuyển SI=SI +/- 1, DI=DI +/- 1 hoặc SI=SI +/- 2, DI=DI +/- 2 tuỳthuộc vào cờhướng DF là 0/1

 Lệnh này không tác động đến cờ Ví dụ: MOVS byte1, byte2

58/Chapter2

© DHBK 2005

Chương 2: Bộvi xửlý Intel 8088/8086 • • • • • •

Cấu trúc bên trong Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086  Các lệnh di chuyển dữliệu  Các lệnh sốhọc và logic  Các lệnh điều khiển chương trình

• Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

59/Chapter2

© DHBK 2005

Các lệnh sốhọc và logic • • • •

ADD, ADC, SUB, MUL, IMUL, DIV, IDIV, INC, DEC AND, OR, NOT, NEG, XOR Lệnh quay và dị ch: RCL, RCR, SAL, SAR, SHL, SHR Lệnh so sánh: CMP, CMPS

• Lệnh ADD

Lệnh cộng hai toán hạng Cú pháp: ADD Đích, nguồn Thực hiện: Đích=Đích + nguồn Giới hạn: toán hạng không được là 2 ô nhớvà thanh ghi đoạn Lệnh này thay đổi cờ: AF, CF, OF, PF, SF, ZF Ví dụ: ADD AX, BX ADD AX, 40H

60/Chapter2

© DHBK 2005

Các lệnh sốhọc và logic • Lệnh ADC  Lệnh cộng có nhớhai toán hạng  Cú pháp: ADC Đích, nguồn  Thực hiện: Đích=Đích + nguồn+CF  Giới hạn: toán hạng không được là 2 ô nhớvà thanh ghi đoạn  Lệnh này thay đổi cờ: AF, CF, OF, PF, SF, ZF  Ví dụ:  ADC AL, 30H

• Lệnh SUB

 Lệnh trừ  Cú pháp: SUB Đích, nguồn  Thực hiện: Đích=Đích - nguồn  Giới hạn: toán hạng không được là 2 ô nhớvà thanh ghi đoạn  Lệnh này thay đổi cờ: AF, CF, OF, PF, SF, ZF  Ví dụ:  SUB AL, 30H

61/Chapter2

© DHBK 2005

Các lệnh sốhọc và logic • Lệnh MUL Lệnh nhân sốkhông dấu Cú pháp: MUL nguồn Thực hiện:  AX=AL* nguồn8bit DXAX=AX*nguồn16bit

Lệnh này thay đổi cờ: CF, OF Ví dụ: MUL BL

• Lệnh IMUL  nhân sốcó dấu

62/Chapter2

© DHBK 2005

Các lệnh sốhọc và logic • Lệnh DIV Lệnh chia 2 sốkhông dấu Cú pháp: DIV nguồn Thực hiện: AL = thương (AX / nguồn8bit) ; AH=dư(AX / nguồn8bit) AX = thương (DXAX / nguồn16bit) ; DX=dư(DXAX / nguồn16bit)

Lệnh này không thay đổi cờ Ví dụ: DIV BL

• Lệnh IDIV  chia 2 sốcó dấu

63/Chapter2

© DHBK 2005

Các lệnh sốhọc và logic • Lệnh INC Lệnh cộng 1 vào toán hạng là thanh ghi hoặc ô nhớ Cú pháp: INC Đích Thực hiện: Đích=Đích + 1 Lệnh này thay đổi cờ: AF, OF, PF, SF, ZF Ví dụ: INC AX

• Lệnh DEC Lệnh trừ1 từnội dung một thanh ghi hoặc ô nhớ Cú pháp: DEC Đích Thực hiện: Đích=Đích - 1 Lệnh này thay đổi cờ: AF, OF, PF, SF, ZF Ví dụ: DEC [BX]

64/Chapter2

© DHBK 2005

Các lệnh sốhọc và logic • Lệnh AND Lệnh AND logic 2 toán hạng Cú pháp: AND Đích, nguồn Thực hiện: Đích=Đích And nguồn Giới hạn: toán hạng không được là 2 ô nhớhoặc thanh ghi đoạn Lệnh này thay đổi cờ: PF, SF, ZF và xoá cờCF, OF Ví dụ: AND BL, 0FH

• Lệnh XOR, OR: tương tựnhưlệnh AND • Lệnh NOT: đảo từng bit của toán hạng • Lệnh NEG: xác đị nh sốbù 2 của toán hạng

65/Chapter2

© DHBK 2005

Các lệnh sốhọc và logic • Lệnh CMP

 Lệnh so sánh 2 byte hoặc 2 từ  Cú pháp: CMP Đích, nguồn  Thực hiện:  Đích = nguồn : CF=0  Đích> nguồn : CF=0  Đích < nguồn : CF=1

ZF=1 ZF=0 ZF=0

 Giới hạn: toán hạng phải cùng độdài và không được là 2 ô nhớ

• Lệnh CMPS

 Dùng đểso sánh từng phần tửcủa 2 chuỗi có các phần tửcùng loại  Cú pháp: CMPS chuỗi đích, chuỗi nguồn CMPSB CMPSW

 Thực hiện:

 DS:SI là đị a chỉcủa phần tửtrong chuỗi nguồn  ES:DI là đị a chỉcủa phần tửtrong chuỗi đích  Sau mỗi lần so sánh SI=SI +/- 1, DI=DI +/- 1 hoặc SI=SI +/- 2, DI=DI +/- 2 tuỳthuộc vào cờhướng DF là 0/1

 Cập nhật cờAF, CF, OF, PF, SF, ZF

66/Chapter2

© DHBK 2005

Các lệnh sốhọc và logic • Lệnh RCL

Lệnh quay trái thông qua cờnhớ Cú pháp: RCL Đích, CL (với sốlần quay lớn hơn 1) RCLĐích, 1 RCL Đích, Sốlần quay (80286 trởlên) Thực hiện: quay trái đích CL lần Đích là thanh ghi (trừthanh ghi đoạn) hoặc ô nhớ Lệnh này thay đổi cờ: CF, OF CF

• Lệnh RCR

MSB

Lệnh quay phải thông qua cờnhớ

LSB

67/Chapter2

© DHBK 2005

Các lệnh sốhọc và logic • Lệnh ROL

Lệnh quay trái Cú pháp: ROL Đích, CL (với sốlần quay lớn hơn 1) ROL Đích, 1 ROL Đích, Sốlần quay (80286 trởlên) Thực hiện: quay trái đích CL lần Đích là thanh ghi (trừthanh ghi đoạn) hoặc ô nhớ Lệnh này thay đổi cờ: CF, OF CF

• Lệnh ROR

Lệnh quay phải

MSB

LSB

68/Chapter2

© DHBK 2005

Các lệnh sốhọc và logic • Lệnh SAL

Lệnh dị ch trái sốhọc Cú pháp: SAL Đích, CL (với sốlần dị ch lớn hơn 1) SAL Đích, 1 SAL Đích, sốlần dị ch (80286 trởlên) Thực hiện: dị ch trái đích CL bit tương đương với Đích=Đích*2CL Lệnh này thay đổi cờSF, ZF, PF CF

MSB

LSB 0

• Lệnh SHL

Lệnh dị ch trái logic tương tựnhưSAL

69/Chapter2

© DHBK 2005

Các lệnh sốhọc và logic • Lệnh SAR Lệnh dị ch phải sốhọc Cú pháp: SAR Đích, CL (với sốlần dị ch lớn hơn 1) SAR Đích, 1 hoặc SAR Đích, sốlần dị ch (80286 trởlên) Thực hiện: dị ch phải đích CL bit Lệnh này thay đổi cờSF, ZF, PF, CF mang giá trịcủa MSB

MSB

LSB

CF

70/Chapter2

© DHBK 2005

Các lệnh sốhọc và logic • Lệnh SHR Lệnh dị ch phải logic Cú pháp: SHR Đích, CL (với sốlần dị ch lớn hơn 1) SHR Đích, 1 hoặc SHR Đích, sốlần dị ch (80286 trởlên)

Thực hiện: dị ch phải đích CL bit Lệnh này thay đổi cờSF, ZF, PF, CF mang giá trịcủa LSB MSB

LSB

CF

0

Chú ý: Trong các lệnh dị ch và quay, toán hạng không được là thanh ghi đoạn

71/Chapter2

© DHBK 2005

Chương 2: Bộvi xửlý Intel 8088/8086 • • • • • •

Cấu trúc bên trong Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086  Các lệnh di chuyển dữliệu  Các lệnh sốhọc và logic  Các lệnh điều khiển chương trình

 Lệnh nhảy không điều kiện: JMP  Lệnh nhảy có điều kiện JE, JG, JGE, JL, JLE...  Lệnh lặp LOOP  Lệnh gọi chương trình con CALL  Lệnh gọi chương trình con phục vụngắt INT và IRET

• Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ80286

72/Chapter2

© DHBK 2005

Lệnh nhảy không điều kiện JMP • Dùng đểnhảy tới một đị a chỉtrong bộnhớ • 3 loại: nhảy ngắn, gần và xa Lệnh nhảy ngắn (short jump) Độdài lệnh 2 bytes:

E B

Độlệch

Phạm vi nhảy: -128 đến 127 bytes so với lệnh tiếp theo lệnh JMP Thực hiện: IP=IP + độlệch Ví dụ: XOR BX, BX Nhan: MOV AX, 1 ADD AX, BX JMP SHORT Nhan

73/Chapter2

© DHBK 2005

Lệnh nhảy không điều kiện JMP Lệnh nhảy gần (near jump) Phạm vi nhảy: ± 32 Kbytes so với lệnh tiếp theo lệnh JMP Ví dụ:

XOR BX, BX

XOR CX, CX

XOR CX, CX

MOV AX, 1

MOV AX, 1

ADD AX, BX

ADD AX, BX

ADD AX, BX

JMP NEAR Nhan

JMP NEAR PTR BX

JMP WORD PTR [BX]

Nhan: MOV AX, 1

Thực hiện: IP=IP+ độlệch E 9

Độlệ chLo Độlệ chHi

IP=BX

IP=[BX+1] [BX] Nhảy gián tiếp

74/Chapter2

© DHBK 2005

Lệnh nhảy không điều kiện JMP Lệnh nhảy xa (far jump) Độdài lệnh 5 bytes đối với nhảy tới nhãn: E A

IP Lo

IP Hi

CS Lo

CS Hi

Phạm vi nhảy: nhảy trong 1 đoạn mã hoặc nhảy sang đoạn mã khác Ví dụ: EXTRN

Nhan: FAR

Next: MOV AX, 1

XOR CX, CX MOV AX, 1

ADD AX, BX

ADD AX, BX

JMP FAR PTR Next

JMP DWORD PTR [BX]

........ JMP FAR Nhan Thực hiện: IP=IP của nhãn CS=CS của nhãn

IP = [BX+1][BX] CS= [BX+3][BX+2]

75/Chapter2

© DHBK 2005

Tóm tắt lệnh JMP FFFFFH

Đoạn mã 2 Nhảy xa +127 Nhảy ngắn -128

00000H

Đoạn mã 1 JMP

Nhảy gần

76/Chapter2

© DHBK 2005

Lệnh nhảy có điều kiện • JE or JZ, JNE or JNZ, JG, JGE, JL, JLE (dùng cho sốcó dấu) và JA, JB, JAE, JBE (dùng cho sốkhông dấu) ... • Nhảy được thực hiện phụthuộc vào các cờ • Là các lệnh nhảy ngắn • Ví dụ: Nhan1: XOR BX, BX Nhan2: MOV AX, 1 CMP AL, 10H JNE Nhan1 JE Nhan2

Thực hiện: IP=IP + độdị ch

77/Chapter2

© DHBK 2005

Lệnh lặp LOOP • LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ • Là lệnh phối hợp giữa DEC CX và JNZ XOR AL, AL

XOR AL, AL

XOR AL, AL

MOV CX, 16

MOV CX, 16

MOV CX, 16

Lap: INC AL LOOP Lap

Lặp đến khí CX=0

Lap: INC AL

Lap: INC AL

CMP AL, 10

CMP AL, 10

LOOPE Lap

LOOPNE Lap

Lặp đến khí CX=0 hoặc AL<>10

Lặp đến khí CX=0 hoặc AL=10

78/Chapter2

© DHBK 2005

Lệnh CALL • Dùng đểgọi chương trình con • Có 2 loại: CALL gần và CALL xa

CALL gần (near call): tương tựnhưnhảy gần Gọi chương trình con ởtrong cùng một đoạn mã Tong PROC NEAR ADD AX, BX ADD AX, CX RET Tong ENDP ...

Tong PROC NEAR ADD AX, BX ADD AX, CX RET Tong ENDP ... MOV BX, OFFSET Tong CALL BX

CALL WORD PTR [BX]

CALL Tong Cất IP vào ngăn xế p IP=IP + dị ch chuyể n RET: lấy IP từngăn xế p

Cất IP vào ngăn xế p IP= BX RET: lấy IP từngăn xế p

Cất IP vào ngă n xế p IP= [BX+1] [BX] RET: lấ y IP từngăn xế p

79/Chapter2

© DHBK 2005

Lệnh CALL CALL xa (far call): tương tựnhưnhảy xa Gọi chương trình con ởngoài đoạn mã Tong PROC FAR

CALL DWORD PTR [BX]

ADD AX, BX ADD AX, CX RET Tong ENDP ... CALL Tong Cất CS vào ngăn xế p Cất IP vào ngăn xế p IP=IP của Tong CS =CS của Tong RET: lấy IP từngăn xế p lấy CS từngăn xế p

Cất CS vào ngăn xế p Cất IP vào ngăn xế p IP = [BX+1][BX] CS= [BX+3][BX+2] RET: lấy IP từngăn xế p lấy CS từngăn xế p

80/Chapter2

© DHBK 2005

Lệnh ngắt INT và IRET • INT gọi chương trình con phục vụngắt (CTCPVN) • Bảng vector ngắt: 1 Kbytes 00000H đến 003FF H 256 vector ngắt 1 vector 4 bytes, chứa IP và CS của CTCPVN 32 vector đầu dành riêng cho Intel 224 vector sau dành cho người dùng

• Cú pháp: INT Number • Ví dụ: INT 21H gọi CTCPVN của DOS

81/Chapter2

© DHBK 2005

Lệnh ngắt INT và IRET • Thực hiện INT: Cất thanh ghi cờvào ngăn xếp IF=0 (cấm các ngắt khác tác động), TF=0 (chạy suốt) Cất CS vào ngăn xếp Cất IP vào ngăn xếp IP=[N*4], CS=[N*4+2]

• Gặp IRET: Lấy IP từngăn xếp Lấy CS từngăn xếp Lấy thanh ghi cờtừngăn xếp

© DHBK 2005

82/Chapter2

Chương 2: Bộvi xửlý Intel 8088/8086 • • • • • • •

Cấu trúc bên trong Sơđồchân Bản đồbộnhớcủa máy tính IBM-PC Các chếđộđị a chỉcủa 8086 Cách mã hoá lệnh của 8086 Mô tảtập lệnh của 8086 Cách đánh đị a chỉởchếđộbảo vệởcác máy tính từ 80286

83/Chapter2

© DHBK 2005

Đánh đị a chỉbộnhớởchếđộbảo vệ • Cho phép truy cập dữliệu và chương trình ởvùng nhớtrên 1M • Thanh ghi lệch chứa đị a chỉlệch • Thanh ghi đoạn chứa từchọn đoạn (segment selector)

từchọn đoạn chọn 1 phần tửtrong 1 trong 2 bảng mô tả đoạn (descriptor table), mồi bảng có kích thước 64 KB Bảng mô tảđoạn toàn cục (Global DT): chứa thông tin vềcác đoạn của bộnhớmà tất cảcác chương trình có thểtruy nhập Bảng mô tảđoạn cục bộ(Local DT): chứa thông tin vềcác đoạn của 1 chương trình

Mô tảđoạn chứa thông tin vềđị a chỉbắt đầu của đoạn

84/Chapter2

© DHBK 2005

Đánh đị a chỉbộnhớởchếđộbảo vệ 15

2 Index

TI

1

0

RPL

RPL: mức ưu tiên yêu cầu, 00 cao nhất, 11 thấp nhất TI=0, sửdụng bảng toàn cục, TI=1 sửdụng bảng cục bộ Index: 13 bit chỉsốđểchọn 1 trong 8K mô tảđoạn trong bảng mô tảđoạn 7

00000000

00000000

5

Access rights

Base(B23-B16)

6

7

Base(B31-B24)

4

5

Access rights

GDOA

Limit

V (L19-L16)

Base(B23-B16)

6 4

3

Base(B15-B0)

2

3

Base(B15-B0)

2

1

Limit(L15-L0)

0

1

Limit(L15-L0)

0

mô tảđoạn của 80286

mô tảđoạn từ80386

Base: xác đị nh đị a chỉbắt đầu của đoạn Limit: giới hạn kích thước tối đa của đoạn

85/Chapter2

© DHBK 2005

Đánh đị a chỉbộnhớởchếđộbảo vệ •

80286    



Base 24 bit: 000000H đến FFFFFFH (16 MB) Limit 16 bit: kích thước đoạn: từ1 đến 64 KB Đị a chỉvật lý= Base + độlệch 1 chương trình có thếsửdụng tối đa: 2*8K*64 K= 1GB bộ nhớ=> bộnhớảo (virtual memory)

80386/486/Pentium

 Base 32 bit: 00000000H đến FFFFFFFFH (4 GB)  Limit 20 bit:  G=0: kích thước đoạn: từ1 đến 1MB  G=1: kích thước đoạn từ4K đến 4 GB

 Đị a chỉvật lý= Base + độlệch  1 chương trình có thếsửdụng tối đa: 2*8K*4 GB= 64 Terabytes bộnhớ

1/Chapter3

© DHBK 2005

Nội dung môn học 1. 2. 3. 4. 5. 6. 7.

Giới thiệu chung vềhệvi xửlý Bộvi xửlý Intel 8088/8086 Lập trình hợp ngữcho 8086 Tổchức vào ra dữliệu Ngắt và xửlý ngắt Truy cập bộnhớtrực tiếp DMA Các bộvi xửlý trên thực tế

© DHBK 2005

2/Chapter3

Chương 3 Lập trình h ợp ngữvới 8086 • • • •

Giới thiệu khung của chương trình hợp ngữ Cách tạo và chạy một chương trình hợp ngữtrên máy IBM PC Các cấu trúc lập trình cơbản thực hiện bằng hợp ngữ Một sốchương trình cụthể

3/Chapter3

© DHBK 2005

Chương 3 Lập trình h ợp ngữvới 8086 •

Giới thiệu khung của chương trình hợp ngữ    

• • •

Cú pháp của chương trình hợp ngữ Dữliệu cho chương trình Biến và hằng Khung của một chương trình hợp ngữ

Cách tạo và chạy một chương trình hợp ngữtrên máy IBM PC Các cấu trúc lập trình cơbản thực hiện bằng hợp ngữ Một sốchương trình cụthể

4/Chapter3

© DHBK 2005

Chương 3 Lập trình h ợp ngữvới 8086 •

Giới thiệu khung của chương trình hợp ngữ    

• • •

Cú pháp của chương trình hợp ngữ Dữliệu cho chương trình Biến và hằng Khung của một chương trình hợp ngữ

Cách tạo và chạy một chương trình hợp ngữtrên máy IBM PC Các cấu trúc lập trình cơbản thực hiện bằng hợp ngữ Một sốchương trình cụthể

5/Chapter3

© DHBK 2005

Cú pháp của chương trình h ợp ngữ 1.

.Model Small

2.

.Stack 100

3. 4. 5. 6. 7.

.Data

8. 9.

MAIN Proc

10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.

33. 34. 35. 36. 37. 38. 39. 40.

41. 42.

khai báo kiể u kích thước bộnhớ khai báo đoạn ngăn xế p khai báo đoạn dữliệ u

Tbao DB ‘Chuoi da sap xep:’, 10, 13 MGB DB ‘a’, ‘Y’, ‘G’, ‘T’, ‘y’, ‘Z’, ‘U’, ‘B’, ‘D’, ‘E’, DB ‘$’ .Code

MOV AX, @Data MOV DS, AX MOV BX, 10 LEA DEC LAP: MOV SI, DX MOV MOV MOV TIMMAX: INC SI CMP JNG MOV MOV AL, [DI] TIEP: LOOP TIMMAX CALL DOICHO DEC JNZ MOV AH, 9 MOV INT MOV INT

khai báo đoạn mã lệ nh ;khoi dau DS

DX, MGB BX CX, BX DI, SI AL, [DI]

[SI], AL TIEP DI, SI

BX LAP DX, Tbao 21H AH, 4CH 21H

;BX: so phan tu cua mang ;DX chi vao dau mang byte ;so vong so sanh phai lam ; SI chi vao dau mang ; CX so lan so cua vong so ;gia su ptu dau la max ;AL chua phan tu max ;chi vao phan tu ben canh ; phan tu moi > max? ;khong, tim max ; dung, DI chi vao max ;AL chua phan tu max ;tim max cua mot vong so ;doi cho max voi so moi ;so vong so con lai ;lam tiep vong so moi ; hien thi chuoi da sap xep

DOICHO Endp END MAIN

chú thích bắt đầu bằng dấu ;

;ve DOS

MAIN Endp DOICHO Proc PUSH AX MOV XCHG MOV POP RET

bắt đầu chương trình chính

kế t thúc chương trình chính AL, [SI] AL, [DI] [SI], AL AX

bắt đầu chương trình con kế t thúc đoạn mã

6/Chapter3

© DHBK 2005

Cú pháp của chương trình h ợp ngữ • Tên Mã lệnh Các toán hạng ; chú giải • Chương trình dị ch không phân biệt chữhoa, chữ thường • Trường tên: chứa các nhãn, tên biến, tên thủtục độdài: 1 đến 31 ký tự tên không được có dấu cách, không bắt đầu bằng số được dùng các ký tựđặc biệt: ? . @ _ $ % dấu . phải được đặt ởvịtrí đầu tiên nếu sửdụng Nhãn kết thúc bằng dấu : TWO_WORD ?1 two-word .@? 1word Let’s_go

7/Chapter3

© DHBK 2005

Chương 3 Lập trình h ợp ngữvới 8086 •

Giới thiệu khung của chương trình hợp ngữ    

• • •

Cú pháp của chương trình hợp ngữ Dữliệu cho chương trình Biến và hằng Khung của một chương trình hợp ngữ

Cách tạo và chạy một chương trình hợp ngữtrên máy IBM PC Các cấu trúc lập trình cơbản thực hiện bằng hợp ngữ Một sốchương trình cụthể

8/Chapter3

© DHBK 2005

Dữliệu cho chương trình • Dữliệu: các sốhệsố2: 0011B hệsố10: 1234 hệsố16: 1EF1H, 0ABBAH Ký tự, chuỗi ký tự: ‘A’, ‘abcd’

9/Chapter3

© DHBK 2005

Chương 3 Lập trình h ợp ngữvới 8086 •

Giới thiệu khung của chương trình hợp ngữ    

• • •

Cú pháp của chương trình hợp ngữ Dữliệu cho chương trình Biến và hằng Khung của một chương trình hợp ngữ

Cách tạo và chạy một chương trình hợp ngữtrên máy IBM PC Các cấu trúc lập trình cơbản thực hiện bằng hợp ngữ Một sốchương trình cụthể

10/Chapter3

© DHBK 2005

Biến và hằng • DB (define byte): đị nh nghĩ a biến kiểu byte • DW (define word): đị nh nghĩ a biến kiểu từ • DD (define double word): đị nh nghĩ a biến kiểu từkép • Biến byte:  Tên Ví dụ: B1 B1 C1 C1

DB DB DB DB DB

gia_trị _khởi đầu 4 ? ‘$’ 34

MOV AL, B1 LEA BX, B1 MOV AL, [BX]

11/Chapter3

© DHBK 2005

Biến và hằng • Biến từ:  Tên Ví dụ: W1 W2

DW

gia_trị _khởi đầu

DW DW

4 ?

• Biến mảng:

1300A 13009 13008 13007 13006 13005 13004 13003 13002 13001

M1 DB

4, 5, 6, 7, 8, 9

M2 DB M3 DB

100 DUP(0) 100 DUP(?)

M4 DB

4, 3, 2, 2 DUP (1, 2 DUP(5), 6)

M4 DB

4, 3, 2, 1, 5, 5, 6, 1, 5, 5, 6

13000

9 8 7 6 5 4

M1

12/Chapter3

© DHBK 2005

Biến và hằng • Biến mảng 2 chiều: 1

6

3

4

2

5

M1 DB DB

1, 6, 3 4, 2, 5

M2 DB DB DB

1, 4 6, 2 3, 5

1300A 13009 13008 13007 13006 13005 13004 13003 13002 13001

5 2 4 3 6 1

13000 MOV MOV MOV MOV MOV MOV MOV

AL, M1 ; copy 1 vao AL AH, M1[2] BX, 1 SI, 1 CL, M1[BX+SI] AX, Word Ptr M1[BX+SI+2] DL, M1[BX][SI]

M1

13/Chapter3

© DHBK 2005

Biến và hằng • Biến kiểu xâu ký tự STR1 DB STR2 DB STR3 DB

‘string’ 73h, 74h, 72h, 69h, 6Eh, 67h 73h, 74h, ‘r’, ‘i’, 6Eh, 67h

• Hằng có tên

Có thểkhai báo hằng ởtrong chương trình Thường được khai báo ởđoạn dữliệu Ví dụ: CR EQU LF EQU CHAO

0Dh ;CR là carriage return 0Ah ; LF là line feed EQU ‘Hello’

MSG DB

CHAO, ‘$’

14/Chapter3

© DHBK 2005

Chương 3 Lập trình h ợp ngữvới 8086 •

Giới thiệu khung của chương trình hợp ngữ    

• • •

Cú pháp của chương trình hợp ngữ Dữliệu cho chương trình Biến và hằng Khung của một chương trình hợp ngữ

Cách tạo và chạy một chương trình hợp ngữtrên máy IBM PC Các cấu trúc lập trình cơbản thực hiện bằng hợp ngữ Một sốchương trình cụthể

15/Chapter3

© DHBK 2005

Khung của chương trình hợp ngữ • Khai báo quy mô sửdụng bộnhớ  .MODEL Kiểu kích thuớc bộnhớ  Ví dụ: .Model Small

Kiể u

Mô tả

Tiny (hẹ p)

mã lệ nh và dữliệ u gói gọn trong một đoạn

Small (nhỏ)

mã lệ nh nằm trong 1 đoạn, dữliệ u 1 đoạn

Medium (tB)

mã lệ nh nằm trong nhiề u đoạn, dữliệ u 1 đoạn

Compact (gọn)

mã lệ nh nằm trong 1 đoạn, dữliệ u trong nhiể u đoạn

Large (lớn)

mã lệ nh nằm trong nhiề u đoạn, dữliệ u trong nhiề u đoạn, không có mảng nào lớn hơn 64 K

Huge (đồsộ)

mã lệ nh nằm trong nhiề u đoạn, dữliệ u trong nhiề u đoạn, các mảng có thểlớn hơn 64 K

16/Chapter3

© DHBK 2005

Khung của chương trình hợp ngữ • Khai báo đoạn ngăn xếp  .Stack  Ví dụ:

kích thuớc (bytes)

 .Stack

100 ; khai báo stack có kích thước 100 bytes

 Giá trịngầm đị nh 1KB

• Khai báo đoạn dữliệu:  .Data  Khai báo các biến và hằng

• Khai báo đoạn mã  .Code

17/Chapter3

© DHBK 2005

Khung của chương trình hợp ngữ

Stack

chương trình 100h

PSP

.COM

SS CS DS ES

chương trình

PSP

. EXE

100h

18/Chapter3

© DHBK 2005

Khung của chương trình hợp ngữ • Khung của chương trình hợp ngữđểdị ch ra file .EXE .Model .Stack .Data

Small 100 ;các đị nh nghĩ a cho biế n và hằng

.Code MAIN

Proc ;khới đầu cho DS MOV AX, @data MOV DS, AX ;các lệ nh của chương trình ;trởvềDOS dùng hàm 4CH của INT 21H MOV AH, 4CH INT 21H MAIN Endp ;các chương trình con nế u có END MAIN

19/Chapter3

© DHBK 2005

Khung của chương trình hợp ngữ • Chương trình Hello.EXE .Model .Stack .Data

Small 100 CRLF MSG

.Code MAIN

MAIN

DB DB

13,10,’$’ ‘Hello! $’

Proc ;khới đầu cho DS MOV AX, @data MOV DS, AX ;vềđầu dòng mới dùng hàm 9 của INT 21H MOV AH,9 LEA DX, CRLF INT 21H ;Hiể n thịlời chào dùng hàm 9 của INT 21H MOV AH,9 LEA DX, MSG INT 21H ;vềđầu dòng mới dùng hàm 9 của INT 21H MOV AH,9 LEA DX, CRLF INT 21H ;trởvềDOS dùng hàm 4CH của INT 21H MOV AH, 4CH INT 21H Endp END MAIN

20/Chapter3

© DHBK 2005

Khung của chương trình hợp ngữ • Khung của chương trình hợp ngữđểdị ch ra file .COM

.Model .Code

Tiny

ORG 100h START: JMP CONTINUE ;các đị nh nghĩ a cho biế n và hằng CONTINUE: MAIN Proc ;các lệ nh của chương trình INT 20H ;trởvềDOS MAIN Endp ;các chương trình con nế u có END START

21/Chapter3

© DHBK 2005

Khung của chương trình hợp ngữ FFFFH

SP Chiề u tiế n của ngăn xế p

Chiề u tiế n của mã và dữliệ u

CONTINUE: Dữliệ u 0100H

JMP CONTINUE

0000H

Đoạn đầu chương trình Program segment prefix

IP

22/Chapter3

© DHBK 2005

Khung của chương trình hợp ngữ • Chương trình Hello.COM .Model .Code

Tiny

ORG 100H START: JMP CONTINUE CRLF DB 13,10,’$’ MSG DB ‘Hello! $’ CONTINUE: MAIN Proc ;vềđầ u dòng mới dùng hàm 9 của INT 21H MOV AH,9 LEA DX, CRLF INT 21H ;Hiể n thị lời chào dùng hàm 9 của INT 21H MOV AH,9 LEA DX, MSG INT 21H ;vềđầ u dòng mới dùng hàm 9 của INT 21H MOV AH,9 LEA DX, CRLF INT 21H ;trởvềDOS INT 20H MAIN Endp END START

© DHBK 2005

23/Chapter3

Chương 3 Lập trình h ợp ngữvới 8086 • • • •

Giới thiệu khung của chương trình hợp ngữ Cách tạo và chạy một chương trình hợp ngữtrên máy IBM PC Các cấu trúc lập trình cơbản thực hiện bằng hợp ngữ Một sốchương trình cụthể

24/Chapter3

© DHBK 2005

Cách tạo một chương trình hợp ngữ Tạo ra tệ p văn bản của chương trình *.asm Dùng MASM đểdị ch ra mã máy *.obj Dùng LINK đểnối tệ p . obj thành *.exe

Dị ch được ra .com?

không

Dùng exe2bin đểdị ch *.exe thành *.com

chạy chương trình

25/Chapter3

© DHBK 2005

Chương 3 Lập trình h ợp ngữvới 8086 • • •

Giới thiệu khung của chương trình hợp ngữ Cách tạo và chạy một chương trình hợp ngữtrên máy IBM PC Các cấu trúc lập trình cơbản thực hiện bằng hợp ngữ  Cấu trúc lựa chọn  Cấu trúc lặp



Một sốchương trình cụthể

26/Chapter3

© DHBK 2005

Cấu trúc lựa chọn If-then • If điều_kiện then công_việc • Ví dụ: Gán cho BX giá trịtuyệt đối của AX

; If AX<0 CMP AX, 0 ; JNL End_if ; ; then NEG AX ; End_if: MOV BX,

AX<0 ? không, thoát ra đúng, đảo dấu AX ;gán

27/Chapter3

© DHBK 2005

Cấu trú c lựa chọn If-then-else • If điều_kiện then công_việc1 else công_việc2 • Ví dụ: if AX
; if AX
28/Chapter3

© DHBK 2005

Cấu trúc lựa chọn case • Case Biểu thức Giá trị1: công việc 1 Giá trị2: công việc 2 ... Giá trịN: công việc N END CASE

• Ví dụ: Nếu AX<0 thì CX=-1 Nếu AX=0 thì CX=0 Nếu AX>0 thì CX=1

CMP JL JE JG AM: MOV JMP Khong: MOV JMP

AX, 0 ; AM ; AX<0 Khong ; AX=0 DUONG; AX>0 CX, -1 End_case CX, 0 End_case

DUONG: MOV CX, 1 End_case:

29/Chapter3

© DHBK 2005

Cấu trúc lặp FOR-DO • For sốlần lặp Do công việc ví dụ: Hiển thịmột dòng ký tự$ trên màn hình

khởi tạo bộđếm

công việ c

giảm bộđếm đi 1

bộđế m=0?

Đ

S

MOV CX, 80 MOV AH,2 MOV DL,’$’ HIEN: INT 21H LOOP HIEN End_for

;sốlần lặp ;hàm hiể n thị ;DL chứa ký tựcần hiể n thị ; Hiể n thị

30/Chapter3

© DHBK 2005

Cấu trúc lặp While-DO • While điều kiện Do công việc ví dụ: đếm sốký tựđọc được từbàn phím, khi gặp ký tựCR thì thôi

S Điề u kiệ n

Đ công việ c

XOR CX, CX MOV AH,1 TIEP: INT 21H CMP AL, 13 JE End_while INC CX JMP TIEP End_while:

;CX=0 ;hàm đọc ký tựtừbàn phím ; đọc một ký tựvào AL ; đọc CR? ; đúng, thoát ; sai, thêm 1 ký tựvào tổng ; đọc tiế p

31/Chapter3

© DHBK 2005

Cấu trúc lặp Repeat-until • Repeat công việc until điều kiện ví dụ: đọc từbàn phím cho tới khi gặp ký tựCR thì thôi công việ c

Điều kiệ n

Đ

S

MOV AH,1 TIEP: INT 21H CMP AL, 13 JNE TIEP End_:

;hàm đọc ký tựtừbàn phím ; đọc một ký tựvào AL ; đọc CR? ; chưa, đọc tiế p

© DHBK 2005

32/Chapter3

Chương 3 Lập trình h ợp ngữvới 8086 • • • •

Giới thiệu khung của chương trình hợp ngữ Cách tạo và chạy một chương trình hợp ngữtrên máy IBM PC Các cấu trúc lập trình cơbản thực hiện bằng hợp ngữ Một sốchương trình cụthể

33/Chapter3

© DHBK 2005

Xuất nhập dữliệu • 2 cách:

 Dùng lệnh IN, OUT đểtrao đổi với các thiết bịngoại vi  phức tạp vì phải biết đị a chỉcổng ghép nối thiết bị  Các hệthống khác nhau có đị a chỉkhác nhau

 Dùng các chương trình con phục vụngắt của DOS và BIOS  đơn giản, dễsửdụng  không phụthuộc vào hệthống

• Ngắt 21h của DOS:

 Hàm 1: đọc 1 ký tựtừbàn phím

 Vào: AH=1  Ra: AL=mã ASCII của ký tự, AL=0 khi ký tựlà phím chức năng

 Hàm 2: hiện 1 ký tựlên màn hình

 Vào: AH=2 DL=mã ASCII của ký tựcần hiển thị

 Hàm 9: hiện chuỗi ký tựvới $ ởcuối lên màn hình  Vào: AH=9 DX=đị a chỉlệch của chuỗi ký tựcần hiẻn thị

 Hàm 4CH: kết thúc chương trình loại .exe  Vào: AH=4CH

34/Chapter3

© DHBK 2005

Một sốchương trình cụthể • Ví dụ1: Lập chương trình yêu cầu người sửdụng gõ vào một chữcái thường và hiển thịdạng chữhoa và mã ASCII dưới dạng nhịphân của chữcái đó lên màn hình  Ví dụ:  Hay nhap vao mot chu cai thuong: a  Mã ASCII dưới dạng nhịphân của a la: 11000001  Dang chu hoa cua a la: A

 Giải:

• Ví dụ2: Đọc từbàn phím một sốhệhai (dài nhất là 16 bit), kết quảđọc được đểtại thanh ghi BX. Sau đó hiện nội dung thanh ghi BX ra màn hình.  Giải:

• Ví dụ3: Nhập một dãy số8 bit ởdạng thập phân, các sốcách nhau bằng 1 dấu cách và kết thúc bằng phím Enter. Sắp xếp dãy sốtheo thứtựtăng dần và in dãy sốđã sắp xếp ra màn hình.  Giải:

35/Chapter3

© DHBK 2005

Một sốchương trình cụthể • Ví dụ4: Viết chương trình cho phép nhập vào kích thước M*N và các phần tửcủa một mảng 2 chiều gồm các sốthập phân 8 bit. Tìm sốlớn nhất và nhỏnhất của mảng, in ra màn hình Tính tổng các phần tửcủa mảng và in ra màn hình Chuyển thành mảng N*M và in mảng mới ra màn hình Hãy nhập giá trịM= Hãy nhập giá trịN= Nhập phần tử[1,1]= Nhập phần tử[1,2]

Giải:

...... Sốlớn nhất là phần tử[3,4]=15 Sốnhỏnhất là phần tử[1,2]=2 Tổng=256 ...

1/Chapter4

© DHBK 2005

Nội dung môn học 1. 2. 3. 4. 5. 6. 7.

Giới thiệu chung về hệ vi xử lý Bộ vi xử lý Intel 8088/8086 Lập trình hợp ngữ cho 8086 Tổ chức vào ra dữ liệu Ngắt và xử lý ngắt Truy cập bộ nhớ trực tiếp DMA Các bộ vi xử lý trên thực tế

© DHBK 2005

2/Chapter4

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi

3/Chapter4

© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 ‰ Các tín hiệu của 8086 ‰ Phân kênh và việc đệm cho các bus ‰ Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288 ‰ Biểu đồ thời gian của các lệnh ghi/đọc

• Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi

4/Chapter4

© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 ; Các tín hiệu của 8086 ‰ Phân kênh và việc đệm cho các bus ‰ Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288 ‰ Biểu đồ thời gian của các lệnh ghi/đọc

• Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi

5/Chapter4

© DHBK 2005

Các chân tín hiệu của 8086 M/IO (S2) AD0-AD15

DT/R(S1) Tín hiệu điều khiển hệ thống

RD WR (LOCK) DEN (S0) SS0 READY BHE/S7

Tín hiệu điều khiển CPU

đồng hồ và nguồn

NMI INTR RESET MN/MX TEST CLK Vcc GND GND

16 đường địa chỉ thấp/dữ liệu

A16/S3 A17/S4 A18/S5 A19/S6

4 đường bus C/ địa chỉ cao

8086 HOLD(RQ/GT0) HLDA(RQ/GT1) INTA(QS1) ALE(QS0)

Tín hiệu điều khiển bus

6/Chapter4

© DHBK 2005

Các chân tín hiệu của 8086 • AD0-AD15: ‰ ALE =1: 16 chân địa chỉ cho bộ nhớ hoặc I/O ‰ ALE=0: 16 đường dữ liệu



A19/S6-A16/S3 ‰ 4 bit địa chỉ cao ‰ 4 bit trạng thái: Ö S6 luôn bằng 1 Ö S5: trạng thái của IF Ö S4, S3: bit trạng thái về thanh ghi đoạn đang truy cập



READY: input pin,

S4 S3 0

0

ES

0

1

SS

1

0

CS or No

1

1

DS

‰ 0 => vi xử lý vào trạng thái đợi ‰ 1: has no effect



INTR: interrupt request ‰ IF=1 và INTR=1=> cho phép ngắt



TEST ‰ nếu =0, CPU ở trạng thái đợi và thực hiện lệnh NOP ‰ =1, lệnh WAIT đợi đến khi TEST=0

7/Chapter4

© DHBK 2005

Các chân tín hiệu của 8086 • NMI (Non-maskable interrupt) ‰ NMI=1 => thực hiện INT 2

• RESET

‰ 1: khởi động lại hệ thống và thực hiện lệnh tại ô nhớ FFFF0H

• MN/MX

‰ 1: chế độ min ‰ 0: chế độ max

• BHE/S7:

‰ 0: cho phép truy cập byte cao dữ liệu ‰ Trạng thái S7 luôn bằng 1

• RD

‰ 0: CPU đọc dữ liệu từ bộ nhớ hoặc thiết bị ngoại vi

• Các chân ở chế độ min ‰ M/IO

Ö 1: truy cập bộ nhớ Ö 0: truy cập thiết bị ngoại vi I/O

‰ WR

Ö 0: dữ liệu hợp lệ tại bus dữ liệu để đưa ra bộ nhớ hoặc thiết bị ngoại vi

8/Chapter4

© DHBK 2005

Các chân tín hiệu của 8086 • Các chân ở chế độ min ‰ INTA: interrupt acknowledge Ö 0: khi INTR=1 và IF=1

‰ ALE: address latch enable ‰ DT/R: data transmit/receive Ö 1: bus dữ liệu đang truyền dữ liệu đi Ö 0: bus dữ liệu đang nhận dữ liệu

‰ DEN: Data enable Ö 0: kích hoạt đệm dữ liệu ngoài

‰ HOLD Ö 1: CPU tạm dừng hoạt động để nhường quyền điều khiển cho DMA, các bus được đặt ở trạng thái trở kháng cao

‰ HLDA (Hold Acknowledge) Ö khi HOLD=1, HLDA=1

9/Chapter4

© DHBK 2005

Các chân tín hiệu của 8086 • Các chân ở chế độ Max ‰ S2, S1, S0 Ö ghép nối với điều khiển bus 8288 S2

S1

S0

0

0

0

chấp nhận yêu cầu ngắt

0

0

1

đọc thiết bị ngoại vi

0

1

0

Ghi thiết bị ngoại vi

0

1

1

Dừng

1

0

0

đọc mã lệnh

1

0

1

đọc bộ nhớ

1

1

0

ghi bộ nhớ

1

1

1

bus rỗi

chu kỳ điều khiển của bus

10/Chapter4

© DHBK 2005

Các chân tín hiệu của 8086 • Các chân ở chế độ Max ‰ RQ/GT0 và RQ/GT1: Request/Grant Ö Tín hiệu yêu cầu dùng bus của các bộ vi xử lý khác/chấp nhận treo bus của CPU Ö GT0 có mức ưu tiên cao hơn GT1

‰ LOCK Ö 0: cấm các bộ vi xử lý khác dùng bus

‰ QS0 và QS1: Ö trạng thái của hàng đợi lệnh

QS1 QS0

Trạng thái hàng đợi lệnh

0

0

không hoạt động

0

1

đọc byte mã lệnh đầu tiên

1

0

hàng đợi rỗng

1

1

đọc byte tiếp theo

11/Chapter4

© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 ‰ Các tín hiệu của 8086 ; Phân kênh và việc đệm cho các bus ‰ Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288 ‰ Biểu đồ thời gian của các lệnh ghi/đọc

• Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi

12/Chapter4

© DHBK 2005

Phân kênh và đệm cho các bus • Vì sao phải phân kênh và khuyếch đại đệm: ‰ Các bus địa chỉ và dữ liệu dùng chung chân ‰ Nâng cao khả năng tải của bus

• Các vi mạch phân kênh và đệm: ‰ 74LS373: phân kênh ‰ 74LS245: đệm dữ liệu 2 chiều ‰ 74LS244: đệm 3 trạng thái theo 1 chiều

13/Chapter4

© DHBK 2005

Phân kênh và đệm cho các bus M/IO RD WR BHE/S7 A19/S6 A16/S3

M/I RD WR BH A19

‘244 74LS373

A16 A15

G

A8 A7

8086

A0 ALE

G

74LS373

G

74LS373 D15

AD15

‘245 AD8 AD7

G DIR

D8 D7

‘245 AD0

DEN DT/R

G DIR

D0

14/Chapter4

© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 ‰ Các tín hiệu của 8086 ‰ Phân kênh và việc đệm cho các bus ; Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288 ‰ Biểu đồ thời gian của các lệnh ghi/đọc

• Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi

© DHBK 2005

Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288

15/Chapter4

16/Chapter4

© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 ‰ Các tín hiệu của 8086 ‰ Phân kênh và việc đệm cho các bus ‰ Mạch tạo xung nhịp 8284 và mạch điều khiển bus 8288 ; Biểu đồ thời gian của các lệnh ghi/đọc

• Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi

17/Chapter4

© DHBK 2005

Biểu đồ thời gian

18/Chapter4

© DHBK 2005

Biểu đồ thời gian • Các ký hiệu trong biểu đồ thời gian:

Min

CS

1

CS hold time

2

CS to data valid

3

Data hold time

max

60

Units

ns

1

Data 2

3

5

30

ns

10

ns

19/Chapter4

© DHBK 2005

Biểu đồ thời gian • Một chu kỳ ghi/đọc của CPU (chu kỳ bus): 4 chu kỳ xung nhịp T ‰ 5 MHz: 4*200 ns=800 ns ‰ T1: Ö CPU đưa ra địa chỉ của bộ nhớ hoặc I/O, DT/R, M/IO, ALE

‰ T2: Ö CPU đưa ra RD hoặc WR, DEN và dữ liệu trên D0-D15 nếu là lệnh ghi Ö CPU đọc tín hiệu READY tại cuối chu kỳ của T2 để xử lý trong chu kỳ tiếp theo khi nó làm việc với bộ nhớ hay I/O chậm

‰ T3: Ö Nếu READY=0 => T3 trở thành chu kỳ đợi: Tw=n*T Ö Tại cuối T3, CPU sẽ đọc dữ liệu nếu là lệnh đọc dữ liệu

‰ T4: Ö Các tín hiệu trên bus được giải phóng Ö WR chuyển từ 0 lên 1 kích hoạt quá trình ghi của bộ nhớ

20/Chapter4

© DHBK 2005

Biểu đồ thời gian

21/Chapter4

© DHBK 2005

Biểu đồ thời gian

22/Chapter4

© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 với bộ nhớ ‰ Các loại bộ nhớ bán dẫn ‰ Giải mã địa chỉ cho bộ nhớ ‰ Ghép nối 8088 với bộ nhớ

• Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi

23/Chapter4

© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 với bộ nhớ ; Các loại bộ nhớ bán dẫn ‰ Giải mã địa chỉ cho bộ nhớ ‰ Ghép nối 8088 với bộ nhớ

• Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi

24/Chapter4

© DHBK 2005

Các loại bộ nhớ bán dẫn • Bộ nhớ không bị mất dữ liệu (non-volatile) ‰ ‰ ‰ ‰ ‰ ‰ ‰

ROM (Read Only Memory) PROM (Programmable ROM) EPROM (Electrically programmable ROM) Flash EEPROM (Electrically Erasable Programmable ROM) FeRAM (Ferroelectric Random Access Memory) MRAM (Magnetoelectronic Random Access Memory)

• Bộ nhớ bị mất dữ liệu (volatile) ‰ ‰ ‰ ‰ ‰ ‰ ‰ ‰

SRAM (Static RAM) SBSRAM (Synchronous Burst RAM) DRAM (Dynamic RAM) FPDRAM (Fast Page mode Dynamic RAM) EDO DRAM (Extended Data Out Dynamic RAM) SDRAM (Synchronous Dynamic RAM) DDR-SDRAM (Double Data Rate SDRAM) RDRAM (Rambus Dynamic RAM)

25/Chapter4

© DHBK 2005

Các loại bộ nhớ bán dẫn

A0 Tín hiệu địa chỉ

WR

A1 A2

D0 D1 D2

Am

Dn

Dữ liệu

WE CS

OE WR: write

chọn chip

WE: Write enable RD

OE: Output enable CS: Chip Select RD: read

26/Chapter4

© DHBK 2005

EPROM Floating Gate

Isolator Gate

Source

n+

Drain

n+ p

27/Chapter4

© DHBK 2005

EPROM No charges on floating gate Infinite number of free electrons Vss

Vss

Vss

Many free electrons

Many free electrons n+

n+ p

D=Vss G=Vss

S=Vss

Hardly any free electrons: no conducting path between Source and Drain

28/Chapter4

© DHBK 2005

EPROM No charges on floating gate

Vcc

Vss

n+

Vss

n+ p

D=Vss G=Vcc

S=Vss

Many free electrons attracted by positive gate voltage: conducting channel between Source and Drain

29/Chapter4

© DHBK 2005

EPROM Many electrons trapped on floating gate

Vcc

Vss

n+

Vss

n+ p

D=Vss G=Vcc

S=Vss

No free electrons: positive gate voltage is shielded by negative floating gate: no conducting channel between Source and Drain

30/Chapter4

© DHBK 2005

EPROM: reading Vcc

Vcc

Vcc

Address

2-to-4 Decoder

2 MSB

4

2 LSB

2-to-4 Mux Data

Vcc

© DHBK 2005

Read(0x6) Vcc

31/Chapter4

EPROM: reading Vcc

Vcc

Vcc

0110

2-to-4 Decoder

01

4

10

2-to-4 Mux 0

© DHBK 2005

Read(0x8) Vcc

32/Chapter4

EPROM: reading Vcc

Vcc

Vcc

1000

2-to-4 Decoder

10

4

00

2-to-4 Mux 1

33/Chapter4

© DHBK 2005

EPROM: erasing Vcc

Vcc

Vcc

Address

2-to-4 Decoder

2 MSB

4

2 LSB

2-to-4 Mux Data

Vcc

UV light

© DHBK 2005

Write 1 at 0x2 Vcc

34/Chapter4

EPROM: writing Vcc

Vcc

Address 0010

2-to-4 Decoder

2 00 MSB

4

2 10 LSB

2-to-4 Mux Data

12V Vcc

35/Chapter4

© DHBK 2005

EPROM • Ghi vào EPROM ‰ Dùng mạch nạp với điện áp 12 V ‰ 1 ms một bit

• Xoá EPROM ‰ 20 phút dưới tia tử ngoại ‰ Số lần ghi 3 lần

• Đọc EPROM ‰ 100 ns

• EPROM họ 27xxx ‰ 2708 (1K*8), 2716 (2K*8), 2732 (4K*8), 2764 (8K*8) ‰ 27128 (16K*8), 27256 (32K*8), 27512 (64K*8)

36/Chapter4

© DHBK 2005

EPROM • Ví dụ: 2716 EPROM U2 8 7 6 5 4 3 2 1 23 22 19 20 18 21

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 OE CE VPP 2716

O0 O1 O2 O3 O4 O5 O6 O7

9 10 11 13 14 15 16 17

Address CE

Output 120 450

100

37/Chapter4

© DHBK 2005

So sánh các loại ROM Loại ROM

Thời gian ghi

Thời gian đọc

số lần ghi

Kích thước

ROM

NA

35 ns

0

Mbits

PROM

1μs/bit

35 ns

1

128 Kbits

EPROM

1ms/bit

45 ns

3

16 Mbits

Flash

1μs/2 KB

35 ns

1 triệu

GBits

EEPROM

10 ms/page

200 ns

10000

Mbit

FeRAM

60 ns

50 ns

1000 tỉ

32 Mbits

MRAM

5ns

5ns

1015

4 Mbits

© DHBK 2005

38/Chapter4

SRAM

One row of cells is read out at once MUX selects one out of these cells

0110

2-to-4 Decoder

01

4

10

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

2-to-4 Mux

39/Chapter4

© DHBK 2005

SRAM bit cell Bit line inverse

Bit line Word Vcc

Acts as a resistor

40/Chapter4

© DHBK 2005

Storage

SRAM bit cell Bit line inverse

Bit line Word Vcc R 5V

0V

Current Assumption

Stable situation; stores a ‘1’ Dissipates continuously

41/Chapter4

© DHBK 2005

SRAM bit cell

Storage

Bit line inverse

Bit line Word Vcc R 0V

5V

Current Stable situation; stores a ‘0’ Dissipates continuously

Assumption

42/Chapter4

© DHBK 2005

Reading of a ‘1’

SRAM bit cell Bit line inverse

Bit line Word Vcc R 5V

0V

Current 1

0

43/Chapter4

© DHBK 2005

Reading of a ‘0’

SRAM bit cell Bit line inverse

Bit line Word Vcc R 0V

5V

Current 0

1

44/Chapter4

© DHBK 2005

Writing of a ‘1’

SRAM bit cell

Vcc

Vcc

Word Word Vcc R

Bit Bit line line 0V 5V

Bit line inverse

5V 0V

Current W.D’

Current

Current

W.D

45/Chapter4

© DHBK 2005

SRAM • Đặc điểm: ‰ 6 transistors 1 bit: đắt! ‰ Bị mất dữ liệu khi mất nguồn ‰ nhanh: thời gian đọc và ghi 5 ns ‰ Liên tục tiêu thụ năng lượng ‰ Kích thước: 16 Mbit

• ứng dụng: ‰ Bộ nhớ nhỏ và nhanh (cache) ‰ Không dùng cho các thiết bị chạy pin

• Ví dụ: 4016 (2K*8), 250 ns A0-A10 D0-D7 OE WE CS

46/Chapter4

© DHBK 2005

DRAM

Bit line

Word line

Address

2-to-4 Decoder

2 MSB

4

2 LSB

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

2-to-4 Mux Data

47/Chapter4

DRAM

© DHBK 2005

One row of cells is read out at once MUX selects one out of these cells

0110

2-to-4 Decoder

01

4

10

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

1bit cell

2-to-4 Mux Data

DRAM bit cell

© DHBK 2005

Vcc/2

1 bit cell

Precharge Word line

Refresh

Vcc/2

48/Chapter4

Vcc/2

Vcc/2

Bit line Sense amplifier

MUX

Storage

© DHBK 2005

DRAM bit cell

49/Chapter4

Vcc/2 Precharge Word line

Refresh

Vcc/2

5V

0V

5V

0V

5V

5V

Vcc/2

Vcc/2

MUX

30 fF in .2 μm Stores .5 M e-

Read

© DHBK 2005

DRAM bit cell

50/Chapter4

Vcc/2 Precharge Word line 2.55V 2.5V 5V

Refresh

Vcc/2

2.55V 5V

2.45V 0V

2.55V 5V

0V

5V

5V

Vcc/2

Vcc/2

MUX

51/Chapter4

© DHBK 2005

DRAM bit cell • Chu kỳ đọc ‰ 1. Precharge ‰ 2. RAS (Row Address Select): đọc tất cả các bit trong hàng được chọn. Việc đọc này làm giá trị điện áp trên tụ điện bị thay đổi ‰ 3. Khuếch đại tín hiệu trên các cột tương ứng ‰ 4.a CAS (Column Address Select): chọn 1 cột và đưa dữ liệu ra ngoài ‰ 4.b Refresh: khôi phục lại dữ liệu ban đầu của hàng đã được chọn ở bước 2.

Write

© DHBK 2005

DRAM bit cell

52/Chapter4

Vcc/2 Precharge Word line

Refresh

Vcc/2

2.55V 5V

2.45V 5V 0V

2.55V 5V

0V

5V

5V

Vcc/2

Vcc/2

MUX

53/Chapter4

© DHBK 2005

DRAM bit cell • Chu kỳ ghi ‰ 1. Precharge ‰ 2. RAS (Row Address Select): đọc tất cả các bit trong hàng được chọn. Việc đọc này làm giá trị điện áp trên tụ điện bị thay đổi ‰ 3. Khuếch đại tín hiệu trên các cột tương ứng ‰ 4.a CAS (Column Address Select): chọn 1 cột và đưa giá trị cần ghi vào cột đó ‰ 4.b Refresh: khôi phục lại dữ liệu ban đầu của hàng đã được chọn ở bước 2 trừ bit vừa mới được ghi vào.

Refresh

© DHBK 2005

DRAM bit cell

54/Chapter4

Vcc/2 Precharge Word line

Refresh

Vcc/2

2.51V 5V 3V

2.49V 0V 2V

2.51V 5V 3V

2.49V 2V 0V

2.51V 3V 5V

2.51V 3V 5V

Vcc/2

Vcc/2

MUX

55/Chapter4

© DHBK 2005

DRAM bit cell • Chu kỳ làm tươi ‰ 1. Precharge ‰ 2. RAS (Row Address Select): đọc tất cả các bit trong hàng được chọn. Việc đọc này làm giá trị điện áp trên tụ điện bị thay đổi ‰ 3. Khuếch đại tín hiệu trên các cột tương ứng ‰ 4. Refresh: khôi phục lại dữ liệu ban đầu của hàng đã được chọn ở bước 2.

56/Chapter4

© DHBK 2005

DRAM • Đặc điểm:

‰ 1 transistor 1 bit: rẻ, tuy nhiên việc điều khiển quá trình làm tươi làm tăng giá thành của DRAM ‰ Chỉ tiêu thụ năng lượng trong quá trình làm tươi và truy nhập ‰ Tương đối nhanh: thời gian đọc và ghi 50 ns ‰ Mỗi một hàng phải được làm tươi sau 4 ms Ö Nếu có 1024 hàng, chu kỳ làm tươi sẽ là 4 μs

‰ Kích thước: 4 Gbits

• Được dùng làm bộ nhớ chính trong các hệ vi xử lý • Ví dụ: TMS 4464 (64K*4) A0-A7 D0-D3 OE

WE

CAS

RAS

CAS: cho phép chốt địa chỉ cột RAS: cho phép chốt địa chỉ hàng

57/Chapter4

© DHBK 2005

DRAM • Đặc điểm:

‰ 1 transistor 1 bit: rẻ, tuy nhiên việc điều khiển quá trình làm tươi làm tăng giá thành của DRAM ‰ Chỉ tiêu thụ năng lượng trong quá trình làm tươi và truy nhập ‰ Tương đối nhanh: thời gian đọc và ghi 50 ns ‰ Mỗi một hàng phải được làm tươi sau 4 ms Ö Nếu có 1024 hàng, chu kỳ làm tươi sẽ là 4 μs

‰ Kích thước: 4 Gbits

• Được dùng làm bộ nhớ chính trong các hệ vi xử lý • Ví dụ: TMS 4464 (64K*4) A0-A7 D0-D3 OE

WE

CAS

RAS

CAS: cho phép chốt địa chỉ cột RAS: cho phép chốt địa chỉ hàng

58/Chapter4

© DHBK 2005

DRAM • Examples of DRAM: ‰ SIMM (Single Inline Memory Module): 72 pins ‰ DIMM (Dual Inline Memory Module): 168 pins

72-Pin SIMM

59/Chapter4

© DHBK 2005

SRAM - DRAM

Cost

SRAM

DRAM

Refresh controller

Size

60/Chapter4

© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 với bộ nhớ ‰ Các loại bộ nhớ bán dẫn ; Giải mã địa chỉ cho bộ nhớ ; Dùng ; Dùng ; Dùng ; Dùng

cổng NAND bộ giải mã 74LS138, 74LS139 PROM PAL (Programmable Array Logic)

‰ Ghép nối 8088 với bộ nhớ

• Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi

© DHBK 2005

Giải mã địa chỉ bộ nhớ dùng cổng NAND

61/Chapter4

• Ví dụ: Ghép EPROM 2716 (2K * 8) với 8088 • Phân tích: ‰ 2716: 11 đường địa chỉ A10-A0 ‰ 8088: 20 đường địa chỉ A20-A0 ‰ Chọn vùng nhớ 2K trong 1M? Ö EPROM: 00000H-003FFH: không được phép Ö chọn: FF800H-FFFFFH: chứa đoạn khởi động FFFF0H-FFFFFH A19A18A17A16

A15A14A13A12

A11A10A9A8

A7 A6 A5 A4

A3 A2 A1 A0

• FF800: 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 • FFFFF: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

© DHBK 2005

Giải mã địa chỉ bộ nhớ dùng cổng NAND A19A18A17A16

A15A14A13A12

A11A10A9A8

A7 A6 A5 A4

62/Chapter4

A3 A2 A1 A0

• FF800: 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 • FFFFF: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

A19 A18 A17 A16 A15 A14

A13 A12 A11 IO/M

8088 A Bus

A0-A10 D0-D7

CS

OE

RD

8088 D Bus

Giải mã địa chỉ bộ nhớ dùng bộ giải mã

© DHBK 2005



63/Chapter4

Ví dụ: Dùng EPROM 2764 (8K*8) để ghép thành bộ nhớ 64 K cho 8088 bắt đầu từ địa chỉ F0000H • Phân tích: ‰ Địa chỉ bắt đầu F0000H => địa chỉ kết thúc: FFFFFH ‰ Cần ghép 8 EPROM 2764 vì 64=8*8K A19A18A17A16 A15A14A13A12 A11A10A9A8

A7 A6 A5 A4 A3 A2 A1 A0

• F0000: 1 1 1 1 • F1FFF: 1 1 1 1

0000 0000 0000 0000 0001 1111 1111 1111

IC 1

• F2000: 1 1 1 1 • F3FFF: 1 1 1 1

0010 0000 0000 0000 0011 1111 1111 1111

IC 2

• F4000: 1 1 1 1 • F5FFF: 1 1 1 1 ...

0100 0000 0000 0000 0101 1111 1111 1111

IC 3

• FE000: 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 • FFFFF: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

IC 8

...

Giải mã địa chỉ bộ nhớ dùng bộ giải mã

© DHBK 2005

64/Chapter4

• Dùng bộ giải mã 3-8 74LS138 U1 1 2 3 6 4 5

A B C G1 G2A G2B

74LS138

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

15 14 13 12 11 10 9 7

C

B

A

G2B

x x x 0 0 0 0 1 1 1 1

x x x 0 0 1 1 0 0 1 1

x x x 0 1 0 1 0 1 0 1

1 x x 0 0 0 0 0 0 0 0

G2A

G1

y0

y1

y2

y3

y4

y5

y6

y7

x 1 x 0 0 0 0 0 0 0 0

x x 0 1 1 1 1 1 1 1 1

1 1 1 0 1 1 1 1 1 1 1

1 1 1 1 0 1 1 1 1 1 1

1 1 1 1 1 0 1 1 1 1 1

1 1 1 1 1 1 0 1 1 1 1

1 1 1 1 1 1 1 0 1 1 1

1 1 1 1 1 1 1 1 0 1 1

1 1 1 1 1 1 1 1 1 0 1

1 1 1 1 1 1 1 1 1 1 0

Giải mã địa chỉ bộ nhớ dùng bộ giải mã

© DHBK 2005

65/Chapter4

• Dùng bộ giải mã 3-8 74LS138 A0-A12 D0-D7 RD

U1

A13 A14 A15 A16 IO/M A17 A18 A19

1 2 3 6 4 5

A B C G1 G2A G2B

74LS138

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

15 14 13 12 11 10 9 7

A0-A12 A0-A10 D0-D7 A0-A10 2764 D0-D7 A0-A10 2764 OE D0-D7 A0-A10 2764 OE D0-D7 A0-A10 2764 CS OE D0-D7 A0-A10 CS OE D0-D7 2764 A0-A10 CS OE D0-D7 2764 CS OE D0-D7 2764 CS OE 2764 CS OE CS CS

© DHBK 2005

Giải mã địa chỉ bộ nhớ dùng bộ giải mã

66/Chapter4

• Dùng bộ giải mã kép 2-4 74LS139 1A 1B 1G 2A 2B 2G

1Y0 1Y1 1Y2 1Y3 2Y0 2Y1 2Y2 2Y3

• Ví dụ: Dùng EPROM 27128 (16K*8) để ghép thành bộ nhớ 64 K cho 8088 bắt đầu từ địa chỉ F0000H

Giải mã địa chỉ bộ nhớ dùng PROM

© DHBK 2005

67/Chapter4

• Dùng PROM TPB28L42 (512*8) A0-A12 D0-D7 RD A13 A14 A15 A16 A17 A18 A19

A0 A1 A2 A3 A4 TPB28L42 A5 A6 A7 A8 G

IO/M

O0 O1 O2 O3 O4 O5 O6 O7

A0-A12 A0-A10 D0-D7 A0-A10 2764 D0-D7 A0-A10 2764 OE D0-D7 A0-A10 2764 OE D0-D7 A0-A10 2764 CS OE D0-D7 A0-A10 CS OE D0-D7 2764 A0-A10 CS OE D0-D7 2764 CS OE D0-D7 2764 CS OE 2764 CS OE CS CS

© DHBK 2005

Giải mã địa chỉ bộ nhớ dùng PAL

68/Chapter4

69/Chapter4

© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 với bộ nhớ ‰ Các loại bộ nhớ bán dẫn ‰ Giải mã địa chỉ cho bộ nhớ ; Ghép nối 8088 với bộ nhớ ; Ghép nối 8088 với ROM ; Ghép nối 8088 với SRAM ; Ghép nối 8088 với DRAM

• Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi

70/Chapter4

© DHBK 2005

Ghép nối 8088 với bộ nhớ • Nguyên tắc: ‰ Ghép trực tiếp: Ö Thời gian truy cập bộ nhớ của CPU > thời gian truy cập của bộ nhớ + thời gian giải mã địa chỉ

‰ Ghép có chèn thêm thời gian đợi của CPU Ö Thời gian truy cập bộ nhớ của CPU < thời gian truy cập của bộ nhớ + thời gian giải mã địa chỉ

8088 hoạt động ở 5 MHz có thời gian truy cập bộ nhớ 420 ns

71/Chapter4

© DHBK 2005

Ghép nối 8088 với ROM • Ví dụ: ghép nối 8088 với EPROM 2732-450 ns

A0-A11 D0-D7 RD

U1

A12 A13 A14

A16 A17 A18 A19

A15 IO/M

1 2 3 6 4 5

A B C G1 G2A G2B

74LS138

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

15 14 13 12 11 10 9 7

F8000-F8FFF F9000-F9FFF

FF000-FFFFF

A0-A11 A0-A10 D0-D7 A0-A10 2732 D0-D7 A0-A10 2764 OE D0-D7 A0-A10 2764 OE D0-D7 A0-A10 2764 CS OE D0-D7 A0-A10 CS OE D0-D7 2764 A0-A10 CS OE D0-D7 2764 CS OE D0-D7 2764 CS OE 2764 CS OE CS CS

Bộ tạo Tw

Tới chân RDY1 của 8284

72/Chapter4

© DHBK 2005

Ghép nối 8088 với SRAM • Ví dụ: ghép nối 8088 với SRAM 62256 (32K*8) để được bộ nhớ 256 KB, bắt đầu từ địa chỉ 00000H A0-A14 D0-D7 U1

A15 A16 A17 A18 IO/M

1 2 3 6 4 5

A B C G1 G2A G2B

A19 74LS138

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

15 14 13 12 11 10 9 7

RD WR

00000-07FFF 08000-0FFFF 10000-17FFF

38000-3FFFF

A0-A14 A0-A10 D0-D7 A0-A10 62256 D0-D7 A0-A10 2764 OE D0-D7 A0-A10 2764 OE D0-D7 WE A0-A10 2764 CS OE D0-D7 A0-A10 CS OE D0-D7 2764 A0-A10 CS OE D0-D7 2764 CS OE D0-D7 2764 CS OE 2764 CS OE CS CS

73/Chapter4

© DHBK 2005

Ghép nối 8088 với DRAM • Cần có DRAM controller: ‰ Dồn kênh 2 loại tín hiệu địa chỉ cho mỗi mạch nhớ và cung cấp xung cho phép chốt địa chỉ RAS và CAS ‰ Cung cấp tín hiệu việc ghi đọc bộ nhớ ‰ Làm tươi bộ nhớ trong thời gian thích hợp ‰ Đảm bảo không có xung đột trong hoạt động ghi đọc với công việc làm tươi

74/Chapter4

© DHBK 2005

Ghép nối 8088 với DRAM • Ví dụ: ghép 8088 với TMS 4464 (64K*4) DRAM để được bộ nhớ 128 KB, bắt đầu tại địa chỉ 00000H A0-A7

A8-A15 ALE A16 RD WR

RA0-RA7 CA0-CA7 ALE REN1 ACR TMS ACW

MA0-MA7

A0-A7

2x4464 RAS0

RAS

CAS

CAS

4500A A0-A7

RDY CLK A17 A18 A19 IO/M

RDY CLK CS

RAS1

2x4464 RAS CAS

© DHBK 2005

75/Chapter4

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi

76/Chapter4

© DHBK 2005

Ghép nối 8086 với bộ nhớ FFFFF

FFFFE

FFFFD

FFFFC

FFFFB

FFFFA

00005

00004

00003

00002

00001

00000 Bank cao (bank lẻ)

8088

8086

8 bit IO/M

16 bit M/IO BHE

BHE A0 Bank thấp (Bank chẵn)

Chức năng

0

0

chọn cả 2 bank

0

1

chọn bank cao

1

0

chọn bank thấp

1

1

không chọn bank nào

77/Chapter4

© DHBK 2005

Ghép nối 8086 với bộ nhớ • Ví dụ: Ghép EPROM 2716 (2K * 8) với 8086 để được vùng bộ nhớ FF000H-FFFFFH ‰ Cần 2 IC vì 4KB=2*2KB

A19A18A17A16

A15A14A13A12 A11A10A9A8

A7 A6 A5 A4 A3 A2 A1 A0

• FF000: 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 • FFFFE: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0

Bank thấp

• FF001: 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 • FFFFF: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Bank cao

78/Chapter4

© DHBK 2005

Ghép nối 8086 với bộ nhớ A19 A18 A17 A16 A15 A14

A1-A11

D0-D7

2716

CS

A13 A12

M/IO A0

A0-A10 D0-D7

OE

RD A19 A18 A17 A16 A15 A14 A13 A12

M/IO BHE

A1-A11

A0-A10 D0-D7

2716

CS

OE

RD

D8-D15

79/Chapter4

© DHBK 2005

Ghép nối 8086 với bộ nhớ BHE

HRD A1-A11

RD LRD

A0

A0-A10 D0-D7

D0-D7

2716

CS

OE

LRD A19 A18 A17 A16 A15 A14 A13 A12

M/IO

A1-A11

A0-A10 D0-D7

2716

CS

OE

HRD

D8-D15

80/Chapter4

© DHBK 2005

Ghép nối 8086 với bộ nhớ • Ví dụ: ghép nối 8086 với SRAM 62256 (32K*8) để được bộ nhớ 256 KB, bắt đầu từ địa chỉ 00000H BHE

HWR

WR A0

LWR

81/Chapter4

© DHBK 2005

Ghép nối 8086 với bộ nhớ • Ví dụ: thiết kế hệ thống nhớ cho 8086 với 64 KB EPROM và 128 KB SRAM sử dụng SRAM 62256 (32K*8) và EPROM 27128 (16K*8)

© DHBK 2005

82/Chapter4

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi ‰ Các kiểu giao tiếp giữa vi xử lý và thiết bị ngoại vi ‰ Các kiểu ghép nối vào/ra ‰ Giải mã địa chỉ cho các thiết bị vào/ra ‰ Mạch ghép nối vào ra song song lập trình được 8255A ‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279 ‰ Bộ định thời lập trình được 8254 ‰ Giao tiếp truyền thông lập trình được 16550 ‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số ADC0804

© DHBK 2005

83/Chapter4

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi ‰ Các kiểu giao tiếp giữa vi xử lý và thiết bị ngoại vi ‰ Các kiểu ghép nối vào/ra ‰ Giải mã địa chỉ cho các thiết bị vào/ra ‰ Mạch ghép nối vào ra song song lập trình được 8255A ‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279 ‰ Bộ định thời lập trình được 8254 ‰ Giao tiếp truyền thông lập trình được 16550 ‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số ADC0804

© DHBK 2005

Các kiểu giao tiếp giữa vi xử lý và thiết bị ngoại vi

84/Chapter4

Memory bus CPU

Memory

Bus Adapter I/O Bus

I/O Controller

I/O Controller

I/O Controller

I/O Device

I/O Device

I/O Device

© DHBK 2005

Các kiểu giao tiếp giữa vi xử lý và thiết bị ngoại vi



Giao tiếp kiểu thăm dò, móc nối (handshaking)



Giao tiếp bằng ngắt (Interrupt)



Giao tiếp bằng truy cập bộ nhớ trực tiếp (DMA)

85/Chapter4

1. CPU kiểm tra trạng thái của thiết bị ngoại vi 2. Nếu thiết bị ngoại vi sẵn sàng trao đối dữ liệu việc trao đối sẽ được thực hiện bởi tín hiệu móc nối 3. Nếu thiết bị ngoại vi chưa sẵn sàng, CPU sẽ thực hiện công việc khác và quay lại bước 1 1. Thiết bị ngoại vi muốn trao đổi dữ liệu với CPU, nó sẽ gửi tín hiệu yêu cầu ngắt tới chân INTR của CPU 2. CPU chấp nhận yêu cầu ngắt bằng cách gửi tín hiệu INTA tới thiết bị ngoại vi 3. CPU thực hiện chương trình con phục vụ ngắt 1. Thiết bị ngoại vi muốn truy cập trực tiếp bộ nhớ không thông qua CPU, nó đưa tín hiệu yêu cầu tới chân HOLD của CPU thông qua khối điều khiển DMA 2. CPU chấp nhận và gửi tín hiệu HLDA tới khối điều khiển DMA và treo các bus 3. Khối điều khiển DMA sẽ điều khiển việc trao đổi dữ liệu giữa thiết bị ngoại vi và bộ nhớ

© DHBK 2005

86/Chapter4

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi ; Các kiểu ghép nối vào/ra ‰ Giải mã địa chỉ cho các thiết bị vào/ra ‰ Mạch ghép nối vào ra song song lập trình được 8255A ‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279 ‰ Bộ định thời lập trình được 8254 ‰ Giao tiếp truyền thông lập trình được 16550 ‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số ADC0804

87/Chapter4

© DHBK 2005

Các kiểu ghép nối vào ra • Thiết bị vào ra có không gian địa chỉ cách biệt: FFFF Vùng mở rộng 03FF 03F8 03F0 03D0 0378 0320 02F8 0060 0040 0020 0000

COM1 Điều khiển đĩa mềm CGA adapter LPT1 Điều khiển ổ cứng COM2 8255 Định thời (8253) Điều khiển ngắt Điều khiển DMA

Địa chỉ: 0000H-FFFFH M/IO=0 Vào ra dữ liệu bằng lệnh IN, OUT Ví dụ:

IN AX, 00H IN AL, F0H IN AX, DX OUT 00H, AX OUT F0H, AL OUT DX, AX

88/Chapter4

© DHBK 2005

Các kiểu ghép nối vào ra • Thiết bị vào ra có không gian địa chỉ cách biệt:

89/Chapter4

© DHBK 2005

Các kiểu ghép nối vào ra • Thiết bị vào/ra có cùng không gian địa chỉ với bộ nhớ FFFFF

M/IO=1

I/O

Vào ra dữ liệu bằng bất kỳ lệnh di chuyển dữ liệu nào giữa CPU và bộ nhớ Ví dụ:

00000

Memory + I/O

MOV AX, [0FF3H]

90/Chapter4

© DHBK 2005

Các kiểu ghép nối vào ra • Ví dụ cổng vào đơn giản:

8 7 6 5 4 3 2 1

VCC

9 10 11 12 13 14 15 16

10K

U1 2 4 6 8 11 13 15 17 1 19

SEL

A1 A2 A3 A4 A5 A6 A7 A8

Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8

1OE 2OE 74ALS244

Từ giải mã địa chỉ cổng

18 16 14 12 9 7 5 3

Tới bus dữ liệu của CPU

91/Chapter4

© DHBK 2005

Các kiểu ghép nối vào ra • Ví dụ cổng ra đơn giản: VCC

330

U2

Từ bus dữ liệu của CPU

3 4 7 8 13 14 17 18 11 1 SEL

D0 D1 D2 D3 D4 D5 D6 D7

Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7

CLK OE 74ALS374

Từ giải mã địa chỉ cổng

2 5 6 9 12 15 16 19

© DHBK 2005

92/Chapter4

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi ‰ Các kiểu ghép nối vào/ra ; Giải mã địa chỉ cho các thiết bị vào/ra ‰ Mạch ghép nối vào ra song song lập trình được 8255A ‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279 ‰ Bộ định thời lập trình được 8254 ‰ Giao tiếp truyền thông lập trình được 16550 ‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số ADC0804

93/Chapter4

© DHBK 2005

Giải mã địa chỉ cho các thiết bị vào/ra • 8 bit địa chỉ hay 16 bit? ‰ Tổng số thiết bị < 256: 8 bit A0-A7: 00H-FFH ‰ Tổng số thiết bị >256: 16 bit A0-A15: 0000H-FFFFH

• 8 bit dữ liệu hay 16 bit? ‰ Nếu cổng là 8 bit: chọn 1 trong 2 bank ‰ Nếu cổng là 16 bit: chọn cả 2 bank BHE

A0 FFFE FFFC FFFA

FFFF FFFD FFFB

D8-D15 0005 0003 0001

Bank cao (bank lẻ)

D0-D7 0004 0002 0000

Bank thấp (Bank chẵn)

94/Chapter4

© DHBK 2005

Giải mã địa chỉ cho các thiết bị vào/ra • Ví dụ: Giải mã địa chỉ cho thiết bị ra 8 bit với địa chỉ 07H ‰ 07H= 0000 0111

A0 A1 A2 A3 A4

D0-D7 D0-D7 CS

A5 A6 A7

WE

WR

IO/M

8088

A0 A1 A2 A3 A4

D8-D15 D0-D7 CS

A5 A6 A7

WE

WR

M/IO BHE 8086

95/Chapter4

© DHBK 2005

Giải mã địa chỉ cho các thiết bị vào/ra • Ví dụ: Giải mã địa chỉ cho thiết bị ra 16 bit với địa chỉ cổng 64H và 65H ‰ 64H= 0110 0100 ‰ 65H= 0110 0101 D8-D15

D8-D15 CS

A1 A2 A3 A4

A5 A6 A7

M/IO

WE

WR

D7-D0

D0-D7 CS

WE

96/Chapter4

© DHBK 2005

Giải mã địa chỉ cho các thiết bị vào/ra • Ví dụ: Giải mã địa chỉ cho các cổng vào ra 8 bit ở bank thấp với các địa chỉ 10H, 12H, 14H, 16H, 18H, 1AH, 1CH, 1EH ‰ 10H=0001 0000 ‰ 12H=0001 0010 ‰ .... ‰ 1EH=0001 1110

U1

A1 A2 A3 A0 A4 A5 A6 A7

M/IO

1 2 3 6 4 5

A B C G1 G2A G2B

74LS138

Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

15 14 13 12 11 10 9 7

10H 12H 14H 16H 18H 1AH 1CH 1EH

97/Chapter4

© DHBK 2005

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi ‰ Các kiểu ghép nối vào/ra ‰ Giải mã địa chỉ cho các thiết bị vào/ra ; Mạch ghép nối vào ra song song lập trình được 8255A ; Cấu trúc của 8255A ; Các chế độ làm việc của 8255A ; Lập trình cho 8255A

‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279 ‰ Bộ định thời lập trình được 8254 ‰ Giao tiếp truyền thông lập trình được 16550 ‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số ADC0804

98/Chapter4

© DHBK 2005

Cấu trúc của 8255A • Giao tiếp các thiết bị tương thích TTL với vi xử lý • Thường được dùng để giao tiếp bàn phím và máy in trong các may tính PC (dưới dạng là một khối trong chíp tích hợp) • Cần chèn trạng thái đợi khi làm việc với vi xử lý >8 Mhz • Có 24 đường vào ra và có 3 chế độ làm việc • Trong các máy PC, địa chỉ cổng của 8255 là 60H63H

99/Chapter4

© DHBK 2005

Cấu trúc của 8255A

100/Chapter4

© DHBK 2005

Cấu trúc của 8255A

101/Chapter4

© DHBK 2005

Cấu trúc của 8255A

RD WR

© DHBK 2005

102/Chapter4

Các chế độ làm việc của 8255A

© DHBK 2005

103/Chapter4

Các chế độ làm việc của 8255A • Chế độ 0: Chế độ vào ra đơn giản: các cổng có thể làm việc như là cổng vào có đệm hoặc cổng ra có chốt đệm. • Chế độ 1: Chế độ này cho phép cổng A và B làm việc như các thiết bị vào hoặc ra có tín hiệu móc nối (handshaking) do các bit tương ứng của cổng C trong cùng nhóm đảm nhiệm • Chế độ 2: chế độ này cho phép cổng A làm việc 2 chiều với các tín hiệu móc nối do cổng PCH đảm nhiệm. Cổng B có thể làm việc ở chế độ 1 hoặc 0

104/Chapter4

© DHBK 2005

Chế độ 0

RD WR

© DHBK 2005

; Lập trình cho 8255 MOV AL, 10000000B MOV DX, 703H OUT DX, AL ; Thủ tục hiển thị LED từ dữ liệu chứa trong bộ nhớ DISP PROC NEAR

105/Chapter4

Chế độ 0

; Port A, Port B mode 0, output

• Giả thiết địaPUSHF chỉ của các cổng; cất của 8255 các thanh ghi vào ngăn xếp là 0700HPUSH AX PUSH BX 0703H PUSH DX PUSH

SI

; Thiết lập các thanh ghi để hiển thị MOV BX, 8 MOV AH, 7FH MOV SI, OFFSET MEM-1 MOV DX,701H ;Hiển thị 8 số DISP1: MOV AL, AH OUT DX, AL DEC DX MOV AL, [BX+SI] OUT DX, AL CALL Delay ROR AH, 1 INC DX DEC BX JNZ DISP1 ;khôi phục lại các thanh ghi POP POP POP POP POPF RET

DISP

ENDP

SI DX BX AX

;số LED ;chọn LED đầu tiên 0111 1111 ; địa chỉ chứa dữ liệu ; địa chỉ cổng B ;chọn 1 số ; địa chỉ cổng A ; dữ liệu của 7 đoạn led ; trễ 1 ms ;số tiếp theo ; địa chỉ cổng B ;giảm chỉ số ; lặp lại 8 lần

106/Chapter4

© DHBK 2005

Chế độ 0

107/Chapter4

© DHBK 2005

Chế độ 0

© DHBK 2005ROWS

KEY

4 ; 4 hàng 4 ; 4 cột 50H 51H USES CX ;test all keys ; if key closed ; đợi 10 ms

108/Chapter4

COLS PORTA PORTB PROC CALL JNZ CALL CALL JNZ

EQU EQU EQU EQU NEAR SCAN KEY DELAY SCAN KEY

CALL JZ CALL CALL JZ PUSH MOV SUB MOV MUL MOV DEC POP

SCAN KEY1 ; if no key closed DELAY SCAN KEY1 AX ;cất mã hàng AL, COLS ;cal starting row key AL, CL CH, ROWS CH CL, AL CL AX

SCAN1:

ROR INC JC MOV RET ENDP

AL,1 CL KEY2 AL,CL

DELAY

Chế độ 0

KEY1:

KEY2:

KEY

;find row position

SCAN

PROC MOV MOV SHL MOV MOV

NEAR USES BX CL, ROWS ;form row mask BH, OFFH BH, CL CX, COLS ;load column count BL, OFEH ;get selection mode

MOV OUT ROL IN OR CMP JNZ LOOP

AL, BL ;select column PORTB, AL BL, 1 AL, PORTA; read rows AL,BH AL, 0FFH ;test for a key SCAN2 SCAN1

SCAN2: SCAN

RET ENDP PROC MOV

NEAR CX, 5000

LOOP RET ENDP

DELAY1

DELAY1: ;move code to AL DELAY

USES CX ;10ms (8MHZ)

109/Chapter4

© DHBK 2005

Chế độ 1 • Port A và B làm việc ở chế độ cổng vào có chốt: ‰ dữ liệu sẽ được giữ tại cổng A, B cho đến khi CPU sẵn sàng ‰ cổng C làm cổng điều khiển và cấp tín hiệu móc nối

110/Chapter4

© DHBK 2005

Chế độ 1

111/Chapter4

© DHBK 2005

Chế độ 1 PA0-PA7

PC4

ASCII STB

D0-D7

DAV Keyboard

82C55 Bit5 PortC PortA

EQU EQU EQU

20H 22H 20H

Read

PROC

NEAR

IN AL, PortC Test AL, Bit5 JZ READ IN AL, PortA RET Read Endp

; ; ; ;

read PortC test IBF if IBF=0 read data

112/Chapter4

© DHBK 2005

Chế độ 1 • Port A và B làm việc ở chế độ cổng ra có chốt: ‰ tương tự như cổng ra ở chế độ 0 ‰ cổng C làm cổng điều khiển và cấp tín hiệu móc nối

1

113/Chapter4

© DHBK 2005

Chế độ 1

114/Chapter4

© DHBK 2005

Chế độ 1

ASCII

PB0-PB7

PC2

ACK

PC4 82C55

D0-D7

ACK DS Printer

DS: data strobe

115/Chapter4

© DHBK 2005

Chế độ 1 BIT1 EQU PORTC EQU PORTB EQU CMD EQU

2 62H 61H 63H

PRINT PROC NEAR ;check printer ready IN AL,PORTC ;get OBF TEST AL, BIT1 ;test OBF JZ PRINT ;if OBF=0 ;send character to printer MOV AL, AH OUT PORTB, AL ;send data strobe to printer MOV OUT MOV OUT RET PRINT ENDP

AL, 8 CMD,AL AL, 9 CMD, AL

;get data ;print data ;clear DS ;set DS

116/Chapter4

© DHBK 2005

Chế độ 2 • Chỉ cho phép đối với cổng A • Cổng A là cổng 2 chiều, dùng để giao tiếp giữa 2 máy tính hoặc dùng trong chuẩn giao tiếp IEEE-488 GPIB...

117/Chapter4

© DHBK 2005

Chế độ 2

© DHBK 2005

118/Chapter4

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi ‰ Các kiểu ghép nối vào/ra ‰ Giải mã địa chỉ cho các thiết bị vào/ra ‰ Mạch ghép nối vào ra song song lập trình được 8255A ; Mạch điều khiển bàn phím/màn hình lập trình được 8279 ‰ Bộ định thời lập trình được 8254 ‰ Giao tiếp truyền thông lập trình được 16550 ‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số ADC0804

119/Chapter4

© DHBK 2005

Mạch điều khiển 8279 •

Điều khiển bàn phím và màn hiển thị 8279: ‰ quét và mã hoá cho bàn phím tới 64 phím Ö bộ đệm FIFO có thể chứa 8 ký tự

‰ Điều khiển màn hiển thị tới 16 số



Ö 16*8 RAM để chứa thông tin về 16 số hiển thị

Các tín hiệu chính:

‰ A0: chọn giữa chế độ dữ liệu hoặc điều khiển ‰ BD: xoá trắng màn hiển thị ‰ CLK: tín hiệu xung nhịp vào ‰ CN/ST (control/Strobe): cổng vào nối với phím điều khiển của bàn phím ‰ CS : chip select ‰ DB7-DB0: bus dữ liệu 2 chiều ‰ IRQ: =1 khi có phím bấm ‰ OUTA3-OUTA0: dữ liệu tới màn hiển thị (bit cao) ‰ OUTB3-OUTB0: dữ liệu tới màn hiển thị (bit thấp) ‰ RD: cho phép đọc dữ liệu từ thanh ghi điều khiển hoặc trạng thái ‰ RL7-RL0: xác định phím được nhấn ‰ SHIFT: nối với phím shift của bàn phím ‰ SL3-SL0: tín hiệu quét màn hình và màn hiển thị ‰ WR: viết dữ liệu vào thanh ghi điều khiển hoặc thanh ghi dữ liệu

120/Chapter4

© DHBK 2005

Ghép nối 8279 với 8088

121/Chapter4

© DHBK 2005

Ghép nối 8279 với bàn phím

© DHBK 2005

122/Chapter4

Ghép nối 8279 với màn hiển thị

123/Chapter4

© DHBK 2005

Lập trình cho 8279 • Từ điều khiển: D7D6D5D4D3D2D1D0

124/Chapter4

© DHBK 2005

Lập trình cho 8279

© DHBK 2005

125/Chapter4

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi ‰ Các kiểu ghép nối vào/ra ‰ Giải mã địa chỉ cho các thiết bị vào/ra ‰ Mạch ghép nối vào ra song song lập trình được 8255A ‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279 ; Bộ định thời lập trình được 8254 ‰ Giao tiếp truyền thông lập trình được 16550 ‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số ADC0804

© DHBK 2005

126/Chapter4

Bộ định thời lập trình được 8254

© DHBK 2005

127/Chapter4

Bộ định thời lập trình được 8254

© DHBK 2005

128/Chapter4

Bộ định thời lập trình được 8254

© DHBK 2005

129/Chapter4

Bộ định thời lập trình được 8254

© DHBK 2005

130/Chapter4

Bộ định thời lập trình được 8254

© DHBK 2005

131/Chapter4

Bộ định thời lập trình được 8254

© DHBK 2005

132/Chapter4

Bộ định thời lập trình được 8254

© DHBK 2005

133/Chapter4

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi ‰ Các kiểu ghép nối vào/ra ‰ Giải mã địa chỉ cho các thiết bị vào/ra ‰ Mạch ghép nối vào ra song song lập trình được 8255A ‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279 ‰ Bộ định thời lập trình được 8254 ; Giao tiếp truyền thông lập trình được 16550 ‰ Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số ADC0804

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

134/Chapter4

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

135/Chapter4

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

136/Chapter4

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

137/Chapter4

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

138/Chapter4

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

139/Chapter4

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

140/Chapter4

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

141/Chapter4

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

142/Chapter4

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

143/Chapter4

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

144/Chapter4

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

145/Chapter4

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

146/Chapter4

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

147/Chapter4

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

148/Chapter4

© DHBK 2005

Giao tiếp truyền thông lập trình được 16550

149/Chapter4

© DHBK 2005

150/Chapter4

Chương 4: Tổ chức vào ra dữ liệu • Các tín hiệu của 8086 và các mạch phụ trợ 8284, 8288 • Ghép nối 8088 với bộ nhớ • Ghép nối 8086 với bộ nhớ • Ghép nối với thiết bị ngoại vi ‰ Các kiểu ghép nối vào/ra ‰ Giải mã địa chỉ cho các thiết bị vào/ra ‰ Mạch ghép nối vào ra song song lập trình được 8255A ‰ Mạch điều khiển bàn phím/màn hình lập trình được 8279 ‰ Bộ định thời lập trình được 8254 ‰ Giao tiếp truyền thông lập trình được 16550 ; Bộ biến đổi số tương tự DAC0830 và bộ biến đổi tương tự số ADC0804

151/Chapter4

© DHBK 2005

Bộ biến đổi số tương tự DAC

152/Chapter4

© DHBK 2005

Bộ biến đổi số tương tự DAC

153/Chapter4

© DHBK 2005

Bộ biến đổi tương tự số ADC

154/Chapter4

© DHBK 2005

Bộ biến đổi tương tự số ADC

155/Chapter4

© DHBK 2005

Bộ biến đổi tương tự số ADC

1/Chapter5

© DHBK 2005

Nội dung môn học 1. 2. 3. 4. 5. 6. 7.

Giới thiệu chung vềhệvi xửlý Bộvi xửlý Intel 8088/8086 Lập trình hợp ngữcho 8086 Tổchức vào ra dữliệu Ngắt và xửlý ngắt Truy cập bộnhớtrực tiếp DMA Các bộvi xửlý trên thực tế

2/Chapter5

© DHBK 2005

Chương 5: Ngắt và xửlý ngắt • • • • • •

Giới thiệu vềngắt Đáp ứng của CPU khi có yêu cầu ngắt Các thủtục ngắt của người sửdụng Xửlý ưu tiên ngắt Mạch điều khiển ngắt ưu tiên 8259A Ngắt trong máy tính IBM PC

3/Chapter5

© DHBK 2005

Giới thiệu vềngắt

• 2 loai ngắt:

Ngắt cứng: tín hiệu yêu cầu ngắt từ  NMI (ngắt không che được)  Lỗi chẵn lẻvà các lỗi hệthống nghiêm trọng khác (ví dụ: mất nguồn)

và INTR (ngắt che được)

Ngắt mềm: CPU thực hiện các lệnh ngắt INT N, 0=< N <=255

4/Chapter5

© DHBK 2005

Giới thiệu vềngắt

5/Chapter5

© DHBK 2005

Giới thiệu vềngắt

6/Chapter5

© DHBK 2005

Đáp ứng của CPU khi có yêu cầu ngắt • Bảng vector ngắt: 1 Kbytes 00000H đến 003FF H 256 vector ngắt 1 vector 4 bytes, chứa IP và CS của CTCPVN 32 vector đầu dành riêng cho Intel 224 vector sau dành cho người dùng

7/Chapter5

© DHBK 2005

Đáp ứng của CPU khi có yêu cầu ngắt Chương trình chính

CPU: •Cất thanh ghi cờF •Xoá IF và TF •Cất CS và IP •lấy đị a chỉCTCPVN

CPU: •Lấy lại IP và CS •Lấy lại thanh ghi cờF

CTCPVN lệnh cất các thanh ghi

lệnh lấy các thanh ghi IRET

8/Chapter5

© DHBK 2005

Các thủtục ngắt của người sửdụng • Thiết lập vector ngắt: Cất vector ngắt hiện tại:

Dùng hàm 35H của ngắt 21H của DOS  Vào: AH=35h, AL= sốhiệu ngắt  Ra: ES:BX = đị a chỉđoạn : đị a chỉoffset của CTCPVN

Cất ES và BX vào thanh ghi hoặc ô nhớ

Đưa vector của thủtục ngắt của người sửdụng vào bảng vector ngắt: Dùng hàm 25H của ngắt 21H

 Vào: AH=25H, AL= sốhiệu ngắt, DS:DX= đị a chỉđoạn: đị a chỉoffset cảu CTCPVN của người sửdụng

Khôi phục lại vector cũtrước khi kết thúc CTCPVN của người sửdụng

9/Chapter5

© DHBK 2005

Các thủtục ngắt của người sửdụng .Model Small .Stack 100 .Data OLD_IP OLD_CS

DW DW

? ?

.Code Main Proc ;Lấ y vector cũcủa ngắt 40H MOV AH, 35H MOV AL, 40H INT 21H MOV OLD_IP, BX MOV OLD_CS, ES ;Thiết lậ p vector ngắt 40H mới MOV DX, offset New40 MOV AX, CS PUSH DS MOV DS, AX MOV AH, 25H INT 21H POP DS Main Endp New40 Proc ;các lệ nh của CTCPVN New40 Endp End Main

10/Chapter5

© DHBK 2005

Xửlý ưu tiên ngắt • Ngắt có mức ưu tiên cao nhất sẽđược phục vụtrước • Các mức ưu tiên: Ngắt Ngắt Ngắt Ngắt

nội bộ: INT 0, INT 1 không che được: NMI che được INTR mềm INT N

• CPU sẽxửlý thếnào nếu CPU đang thực hiện phép chia và sốchia bằng 0 đồng thời có yêu cầu ngắt từ chân INTR?

11/Chapter5

© DHBK 2005

Mạch điều khiển ngắt 8259A

12/Chapter5

© DHBK 2005

Mạch điều khiển ngắt 8259A

13/Chapter5

© DHBK 2005

Mạch điều khiển ngắt 8259A

14/Chapter5

© DHBK 2005

Mạch điều khiển ngắt 8259A

15/Chapter5

© DHBK 2005

Mạch điều khiển ngắt 8259A

16/Chapter5

© DHBK 2005

Mạch điều khiển ngắt 8259A

17/Chapter5

© DHBK 2005

Mạch điều khiển ngắt 8259A

18/Chapter5

© DHBK 2005

Mạch điều khiển ngắt 8259A

19/Chapter5

© DHBK 2005

Mạch điều khiển ngắt 8259A

20/Chapter5

© DHBK 2005

Mạch điều khiển ngắt 8259A

21/Chapter5

© DHBK 2005

Mạch điều khiển ngắt 8259A

22/Chapter5

© DHBK 2005

Mạch điều khiển ngắt 8259A

23/Chapter5

© DHBK 2005

Mạch điều khiển ngắt 8259A

24/Chapter5

© DHBK 2005

Các ngắt trong máy tính IBM/PC Cascaded i8259As INTR

IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7

Hi

IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15

Lo

INT D0 IR0 D1 IR1 D2 IR2 D3 IR3 D4 8259A IR4 D5 IR5 Master D6 IR6 D7 IR7 INTA SP/EN CAS1 CAS0 CAS2

INT D0 IR0 D1 IR1 D2 IR2 D3 IR3 8259A D4 IR4 D5 IR5 Slave D6 IR6 D7 IR7 INTA SP/EN

INTA

25/Chapter5

© DHBK 2005

Các ngắt trong máy tính IBM/PC Priority Highest

IRQ0 IRQ1 IRQ2 IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15

Use of PC/AT Interrupt Timer 0 Keyboard From slave 8259 Real time clock *

IRQ3 IRQ4 IRQ5 IRQ6 Lowest IRQ7 * IRQ9 interrupt is redirected to IRQ2 vector

C0-processor Hard disk controller

COM2 port COM1 port LPT2 Floppydisk controller LPT1

Các ngắt trong máy tính IBM/PC

26/Chapter5

© DHBK 2005

PC/AT VECTOR TABLE 77h 76h 75h 74h 73h 72h 71h 70h

IRQ15 Reserved IRQ14 Fixed Disk Controller IRQ13 80x87 IRQ12 Reserved IRQ11...Reserved IRQ10 ..Reserved IRQ9 Directed to IRQ2 IRQ8 CMOS RTC

67h 66h

EMM User Interrupts

60h

4Ah

ROM BIOS and VIDEO 40h 3Fh

MSDOS SWI (30

-3F reserved)

20h 1Fh ROM BIOS SWI

00028 00024 00020

0000

10h 0Fh 0Eh 0Dh 0Ch 0Bh 0Ah 09h 08h 07h 06h 05h 04h 03h 02h 01h 00h

IRQ 7 LPT1 IRQ6 Floppy Disk IRQ5 LPT2 IRQ4 COM1 Port IRQ3 COM2 Port IRQ2 Cascade from Slave 8259 IRQ1 Keyboard IRQ0 Timer tick 80x87 not present Invalid opcode Print screen (BIOS) Overflow Break point instruction NMI Single step

Divide by zero

27/Chapter5

© DHBK 2005

Nội dung môn học 1. 2. 3. 4. 5. 6. 7.

Giới thiệu chung vềhệvi xửlý Bộvi xửlý Intel 8088/8086 Lập trình hợp ngữcho 8086 Tổchức vào ra dữliệu Ngắt và xửlý ngắt Truy cập bộnhớtrực tiếp DMA Các bộvi xửlý trên thực tế

© DHBK 2005

Chương 6: Truy c ập bộnhớtrực tiếp DMA

• Giới thiệu vềDMA • Mạch DMAC 8237A của Intel

28/Chapter5

29/Chapter5

© DHBK 2005

Giới thiệu vềDMA

30/Chapter5

© DHBK 2005

Mạch DMAC 8237A của Intel

31/Chapter5

© DHBK 2005

Mạch DMAC 8237A của Intel • Although i8237A may not appear as a discrete component in recent PCs, it’s still there… (integrated in chipsets, ISPC) • The i8237A has four independent DMA channels • Original PC/XT design had one i8237A for four DMA channels • PC/AT used two i8237As to provide 7 DMA channels • i8237A is programmable device and can be configured for single transfers, block transfers, Reads, Writes or Memory-toMemory transfers

32/Chapter5

© DHBK 2005

Mạch DMAC 8237A của Intel • i8237A allows byte addressing for 8-bit data transfers • In the PC/AT design, a contrived 16-bit transfer design is implemented using the i8237A • i8237A uses a multiplexed address and data bus to reduce the device pin count. DB0..DB7 lines contain the data bus along with the high byte of the 16bit address bus. An external latch is required to demultiplex the address lines

33/Chapter5

© DHBK 2005

Mạch DMAC 8237A của Intel

34/Chapter5

© DHBK 2005

Mạch DMAC 8237A của Intel

35/Chapter5

© DHBK 2005

Mạch DMAC 8237A của Intel

36/Chapter5

© DHBK 2005

How the PC uses the i8237A i8237A Address Latch and Page Registers I/O Mapped to MPU, read and write

DM A Page Regrs.

A16..A23 [A16..A19 for PC /XT ]

DM A Addr. Latch

IO R IOW M EM R M EM W

A8..A15

D B0..DB 7 ADST B

i8237 DM A HR Q

four DMA channels

HLD A

EO P

A0..A7

A0..A7

DR EQ 0 DAC K0 DR EQ 1 DAC K1 DR EQ 2 DAC K2 DR EQ 3 DAC K3

Hi Q

D

15 usecs.

OUT1

C LR

Floppy Controller

8253 (8254) Tim er/ Counter

37/Chapter5

© DHBK 2005

DMA Address Tracking • The i8237A has four registers for tracking memory addresses during a DMA block  BASE ADDRESS REGISTER  BASE WORD COUNT REGISTER  CURRENT ADDRESS REGISTER  CURRENT WORD COUNT REGISTER

© DHBK 2005

DMA in the PC/XT

38/Chapter5

© DHBK 2005

39/Chapter5

DMA Cascadation

Cascaded i8237As in the PC/AT Cascaded i8237A DMA Controllers DREQ0 DACK0

i8237A Slave

DREQ1 DACK1 DREQ2 DACK2

DREQ4

MPU

HRQ HOLDA

DREQ3 DACK3

DACK4

i8237A Master

DREQ5 DACK5 DREQ6 DACK6 DREQ7 DACK7

© DHBK 2005

40/Chapter5

PC/AT DMA Channel priorities • DMA channel 0 (DREQ0) has the highest priority • DMA channel 7 (DREQ7) has the lowest • Note, when a DMA transfer is in session, it cannot be 'interrupted' by another DMA request, even if the DMA request is made by a higher priority DMA channel. • The current DMA transfer session will be completed before the pending DMA request is accepted

41/Chapter5

© DHBK 2005

DMA Channels in the PC/AT DMA

Priority

Pre-defined 8-bit or Use in PC/AT 16-bit ____________________________________________________________ DREQ0 Highest Memory Refresh* 8-bits DREQ1

Not defined

8-bits

DREQ2

Floppy Disk

8-bits

DREQ3

Not defined

8-bits

DREQ4

Cascade

not used

DREQ5

Not defined

16-bits

DREQ6

Not defined

16-bits

Not defined

16-bits

DREQ7

Lowest

1/Chapter6

© DHBK 2005

Nội dung môn học 1. 2. 3. 4. 5. 6. 7.

Giới thiệu chung vềhệvi xửlý Bộvi xửlý Intel 8088/8086 Lập trình hợp ngữcho 8086 Tổchức vào ra dữliệu Ngắt và xửlý ngắt Truy cập bộnhớtrực tiếp DMA Các bộvi xửlý trên thực tế

© DHBK 2005

Chương 6: Truy c ập bộnhớtrực tiếp DMA

• Giới thiệu vềDMA • Mạch DMAC 8237A của Intel

2/Chapter6

3/Chapter6

© DHBK 2005

Giới thiệu vềDMA

4/Chapter6

© DHBK 2005

Mạch DMAC 8237A của Intel

5/Chapter6

© DHBK 2005

Mạch DMAC 8237A của Intel • Although i8237A may not appear as a discrete component in recent PCs, it’s still there… (integrated in chipsets, ISPC) • The i8237A has four independent DMA channels • Original PC/XT design had one i8237A for four DMA channels • PC/AT used two i8237As to provide 7 DMA channels • i8237A is programmable device and can be configured for single transfers, block transfers, Reads, Writes or Memory-toMemory transfers

6/Chapter6

© DHBK 2005

Mạch DMAC 8237A của Intel • i8237A allows byte addressing for 8-bit data transfers • In the PC/AT design, a contrived 16-bit transfer design is implemented using the i8237A • i8237A uses a multiplexed address and data bus to reduce the device pin count. DB0..DB7 lines contain the data bus along with the high byte of the 16bit address bus. An external latch is required to demultiplex the address lines

7/Chapter6

© DHBK 2005

Mạch DMAC 8237A của Intel

8/Chapter6

© DHBK 2005

Mạch DMAC 8237A của Intel

9/Chapter6

© DHBK 2005

Mạch DMAC 8237A của Intel

10/Chapter6

© DHBK 2005

How the PC uses the i8237A i8237A Address Latch and Page Registers I/O Mapped to MPU, read and write

DM A Page Regrs.

A16..A23 [A16..A19 for PC /XT ]

DM A Addr. Latch

IO R IOW M EM R M EM W

A8..A15

D B0..DB 7 ADST B

i8237 DM A HR Q

four DMA channels

HLD A

EO P

A0..A7

A0..A7

DR EQ 0 DAC K0 DR EQ 1 DAC K1 DR EQ 2 DAC K2 DR EQ 3 DAC K3

Hi Q

D

15 usecs.

OUT1

C LR

Floppy Controller

8253 (8254) Tim er/ Counter

11/Chapter6

© DHBK 2005

DMA Address Tracking • The i8237A has four registers for tracking memory addresses during a DMA block  BASE ADDRESS REGISTER  BASE WORD COUNT REGISTER  CURRENT ADDRESS REGISTER  CURRENT WORD COUNT REGISTER

© DHBK 2005

DMA in the PC/XT

12/Chapter6

© DHBK 2005

13/Chapter6

DMA Cascadation

Cascaded i8237As in the PC/AT Cascaded i8237A DMA Controllers DREQ0 DACK0

i8237A Slave

DREQ1 DACK1 DREQ2 DACK2

DREQ4

MPU

HRQ HOLDA

DREQ3 DACK3

DACK4

i8237A Master

DREQ5 DACK5 DREQ6 DACK6 DREQ7 DACK7

© DHBK 2005

14/Chapter6

PC/AT DMA Channel priorities • DMA channel 0 (DREQ0) has the highest priority • DMA channel 7 (DREQ7) has the lowest • Note, when a DMA transfer is in session, it cannot be 'interrupted' by another DMA request, even if the DMA request is made by a higher priority DMA channel. • The current DMA transfer session will be completed before the pending DMA request is accepted

15/Chapter6

© DHBK 2005

DMA Channels in the PC/AT DMA

Priority

Pre-defined 8-bit or Use in PC/AT 16-bit ____________________________________________________________ DREQ0 Highest Memory Refresh* 8-bits DREQ1

Not defined

8-bits

DREQ2

Floppy Disk

8-bits

DREQ3

Not defined

8-bits

DREQ4

Cascade

not used

DREQ5

Not defined

16-bits

DREQ6

Not defined

16-bits

Not defined

16-bits

DREQ7

Lowest

© DHBK 2005

Nội dung môn học 1. 2. 3. 4. 5. 6. 7.

1

Giới thiệu chung vềhệvi xửlý Bộvi xửlý Intel 8088/8086 Lập trình hợp ngữcho 8086 Tổchức vào ra dữliệu Ngắt và xửlý ngắt Truy cập bộnhớtrực tiếp DMA Các bộvi xửlý trên thực tế

© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế • General purpose microprocessors Intel 80x86 Xu hướng phát triển

• Microcontrollers Vi điều khiển của Motorola Họvi điều khiển 8051 Họvi điều khiển AVR PSOC Xu hướng phát triển

• Digital signal processors Texas Instruments Motorola Philips Xu hướng phát triển 2

© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế • General purpose microprocessors Intel 80x86 Xu hướng phát triển

• Microcontrollers Vi điều khiển của Motorola Họvi điều khiển 8051 Họvi điều khiển AVR PSOC Xu hướng phát triển

• Digital signal processors Texas Instruments Motorola Philips Xu hướng phát triển 3

© DHBK 2005

Intel 4004 • First microprocessor (1971) • 4-bit processor • 2300 Transistors (PMOS), 10 m • 0.06 MIPS, 108 KHz, 640 bytes addressable memory • -15V power supply

4

© DHBK 2005

Intel 8008 • First 8-bit processor (1972) • Cost $500; at this time, a 4-bit processor costed $50 • Complete system had 2 Kbyte RAM • 200 KHz clock frequency, 10 m, 3500 TOR, 0.06 MIPS, 16 Kbyte addressable memory • 18 pin package, multiplexed address and data bus

5

© DHBK 2005

Intel 8080 • Second gen. 8-bit processor, introduced in 1974 • 40 pin package, NMOS, 500K instructions/s, 6 m, 2 MHz, ±5V & +12V power supply, 6 KTOR, 0.64 MIPS • 64 Kbyte address space (“as large as designers want”, EDN 1974)

6

© DHBK 2005

Intel 8088 • 16-bit processor • introduced in 1979 • 3 m, 5 a 8 MHz, 29 KTOR, 0.33 a 0.66 MIPS, 1 Mbyte addressable memory

7

© DHBK 2005

Intel 8086 16 bit integer CPU

16 data 20 address

• •

8

Introduced: 1978 Clock frequency: 8 - 10 MHz

© DHBK 2005

Intel 80286 MMU

16 bit integer CPU

16 data 24 address

• • •

9

Introduced: 1983 1.5 m, 134 KTOR, 0.9 to 2.6 MIPS Clock frequency: 6 - 25 MHz

© DHBK 2005

Intel 80386sx MMU

32 bit integer CPU

16 data 24 address

• • • •

10

Introduced: 1986 1 m, 275 KTOR, 16 to 33 MHz, 5 to 11 MIPS Clock frequency: 16 - 25 MHz Software support and hardware protection for multitasking

© DHBK 2005

Intel 80386dx MMU

32 bit integer CPU

32 data 32 address

• • •

11

Introduced: 1988 Clock frequency: 16 - 40 MHz Software support and hardware protection for multitasking

© DHBK 2005

Intel 80486dx 8 Kbyte cache

32 bit integer CPU

MMU

64 bit FPU

32 data 32 address

• • • • • 12

Introduced: 1989 Clock frequency: 25 - 50 MHz Software support and hardware protection for multitasking Support for parallel processing Cache required: external memory is not fast enough

© DHBK 2005

Intel 80486sx 8 Kbyte cache MMU

32 bit integer CPU

32 data 32 address

• • • • • • 13

Introduced: 1989 0.8 m, 1.2 MTOR, 20 to 41 MIPS Clock frequency: 25 - 50 MHz Software support and hardware protection for multitasking Support for parallel processing Cache required: external memory is not fast enough

© DHBK 2005

Intel 80486dx2 8 Kbyte cache

32 bit integer CPU

MMU

64 bit FPU

32 data 32 address

• • • • • 14

Introduced: 1992 Clock frequency: internal: 50 - 66 MHz, external: 25 - 33 MHz Software support and hardware protection for multitasking Support for parallel processing Cache required: external memory is not fast enough

© DHBK 2005

Intel Pentium 8 Kbyte program cache

32 bit integer pipelined CPU

64

8 Kbyte data cache

32 bit integer pipelined CPU

32

Static branch prediction unit

64 bit FPU

data

MMU

• • • • • 15

Introduced: 1993 (.8 m, 3.1 MTOR) up to (.35 mm, 4.5 MTOR incl. MMX) Clock frequency: internal: 60 - 166 MHz, external: 66 MHz Support for parallel processing: cache coherence protocol Super scalar

address

© DHBK 2005

Intel Pentium Pro

• • • • • 16

8 Kbyte L1 program cache

32 bit integer pipelined CPU

8 Kbyte L1 data cache

32 bit integer pipelined CPU

Dynamic branch prediction unit

32 bit integer pipelined CPU

MMU

64 bit pipelined FPU

Instruction dispatch unit

Address generation unit

64+ECC data 36 address

to L2 cache

Introduced: 1995, 0.35 m, 3.3 V, 5.5 MTOR, 35W, 387 pin Clock frequency: 150 - 200 MHz Internal, 60 - >100 MHz External Super scalar (4 Instr./cycle), super pipelined (12 stages) Support for symmetrical multiprocessing (4 CPU) MCM: 256-1024 Kbyte L2 4-way set associative cache

© DHBK 2005

Intel Pentium II

• • • • • 17

16 Kbyte L1 program cache

32 bit integer pipelined CPU

16 Kbyte L1 data cache

32 bit integer pipelined CPU

Dynamic branch prediction unit

64 bit pipelined FPU

MMU

64 bit pipelined FPU

Instruction dispatch unit

Address generation unit

64+ECC data 36 address

ECC to L2 cache

Introduced: 1997, 0.25 m, 2.0 V, 9 MTOR, 43 W, 242 pin Clock frequency: 200 - 550 MHz Internal, 100 - 225 MHz L2 cache, 66 - 100 MHz External Super scalar (4 Instr./cycle), super pipelined (12 stages) Support for symmetrical multiprocessing (8 CPU) Single Edge Contact Cartridge with Thermal Sensor: 256-1024 Kbyte L2 4-way set associative cache

© DHBK 2005

Intel Pentium III 16 Kbyte L1 program cache

• • • •

18

16 Kbyte L1 data cache

32 bit integer pipelined CPU

256 Kbyte L2 unified cache

32 bit integer pipelined CPU

Dynamic branch prediction unit

64 bit pipelined FPU

MMU

64 bit pipelined FPU

Instruction dispatch unit

Address generation unit

64+ECC data 36 address

Introduced: 1999, 0.18 m , 6LM, 1.8 V, 28 MTOR, 370 pin Clock frequency: 450 - 1130 MHz Internal, 100-133 MHz External Super scalar (4 Instr./cycle), super pipelined (12 stages) Support for symmetrical multiprocessing (2 CPU)

© DHBK 2005

Intel Pentium IV 16 Kbyte L1 program cache

• • • •

19

16 Kbyte L1 data cache

32 bit integer pipelined CPU

256/512/1024 Kbyte L2

32 bit integer pipelined CPU

Dynamic branch prediction unit

64 bit pipelined FPU

MMU

64 bit pipelined FPU

Instruction dispatch unit

Address generation unit

64+ECC data 36 address

Introduced: 2002, 0.13 m or 90nm , 1.8 V, 55 MTOR Clock frequency: 1,4 to 3.8 GHz Internal, 400 to 800 MHz External Super scalar (4 Instr./cycle), super pipelined (12 stages) Newer versions: Hyper threading, 3.8 MHz

© DHBK 2005

Intel Pentium IV

• Available at 3.80F GHz, 3.60F GHz, 3.40F GHz and 3.20F GHz • • Supports Hyper-Threading Technology1 (HT Technology) for all frequencies with 800 MHz front side bus (FSB) • • Supports Intel® Extended Memory 64Technology2 (Intel® EM64T) • Supports Execute Disable Bit capability • Binary compatible with applications running on previous members of the Intel microprocessor line • Intel NetBurst® microarchitecture • FSB frequency at 800 MHz • Hyper-Pipelined Technology • Advance Dynamic Execution • Very deep out-of-order execution • Enhanced branch prediction • 775-land Package 20

© DHBK 2005

Intel Pentium IV

• 16-KB Level 1 data cache • 1-MB Advanced Transfer Cache (on-die, fullspeed Level 2 (L2) cache) with 8-way associativity and Error Correcting Code (ECC) • 144 Streaming SIMD Extensions 2 (SSE2) instructions • 13 Streaming SIMD Extensions 3 (SSE3) instructions • Enhanced floating point and multimedia unit for enhanced video, audio, encryption, and 3D performance • Power Management capabilities • System Management mode • Multiple low-power states • 8-way cache associativity provides improved cache hit rate on load/store operations

21

© DHBK 2005

IA-64 (Itanium) • Design started in 1994; first samples on the market in 2001 • 64-bit address space (4x109 Gbyte; we will never need that much…) • 256 64-bit integer and 128 82-bit floating point registers; 64 branch target registers; 64 1-bit predicate registers • 41 bit instruction word length • 10-stage pipeline • separate L1 data and program, 96 Kbyte L2 unified on-chip, 4 Mbyte L3 unified off-chip

22

© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế • General purpose microprocessors Intel 80x86 Xu hướng phát triển

• Microcontrollers Vi điều khiển của Motorola Họvi điều khiển 8051 Họvi điều khiển AVR PSOC Xu hướng phát triển

• Digital signal processors Texas Instruments Motorola Philips Xu hướng phát triển 23

© DHBK 2005

Trends for general purpose processors

• Higher clock frequencies: 4.7 -> 30 GHz • Faster memory: 120 ns -> 50 ns

not proportional to clock frequency increase => use of caches and special DRAM memories (e.g. SDRAM)

• Limited by power dissipation => decreasing power supply voltage • Parallel processing • Memory with processor instead of processor with memory

24

© DHBK 2005

The future: general characteristics Roadmap 2001 Roadmap 1998 Roadmap 1995 Line width (nm) Number of masks Wafer size (mm) Number of wiring levels Power supply V: desktop Max. power dissipation/chip

25

2002 2002 2004 130 24

2007 2008 2010 65 2628 300

2010 2011

2013 2014

2016

45 28

32 2930

22

300

2004 2005 2007 90 2426 300

1995 350 18

1997 1998 250 22

200

200

1999 2001 180 2224 300

4-5

6

6-7

7

7-8

8-9

9

10

3.3

1.82.5 70

1.51.8 90

1.11.5 130

1.01.2 160

0.70.9 170

0.6

0.5

175

183

80

0.4

Will 22 nm be the end of the scaling race for CMOS? Some believe10 nm will be the end… …thereafter, semiconductor drive will be scattered (MEMS, sensors, magnetic, optic, polymer, bio, …) Depending on application domain: besides and beyond silicon

© DHBK 2005

26

Besides and beyond silicon (e.g. polymer electronics)

© DHBK 2005

27

Besides and beyond silicon: applied to future ambient intelligent environments

© Emile Aarts, HomeLab, Philips

© DHBK 2005

28

Besides and beyond silicon: applied to future ambient intelligent environments

© Emile Aarts, HomeLab, Philips

© DHBK 2005

29

Besides and beyond silicon: applied to ambient intelligent HomeLab (2002)

© Emile Aarts, HomeLab, Philips

© DHBK 2005

The future: high performance (P) 1997 1998 11M 750

1999 2001 21M 1250

2001 2002 2004 76M 2100

300

375

1200

1600

2000

2500

3000

3674

250

300

340

430

520

620

750

901

Roadmap 2001 Roadmap 1998 Roadmap 1995 Number of TOR On chip local clock freq. (MHz) On chip global clock freq. (MHz) Chip size (mm2 )

1995 6M

• CTO Intel says in 2001

2004 2005 2007 200M 3500

2007 2008 2010 520M 6000

2012 2011

2016 2014

1.4G 10000

3.6G 16903

2005 425 MTOR 100 nm 1600 mm2 30 GHz on chip without specific measures like individual transistor powerdown: 3000 W, i.e. 3000 amps...

1.8 GTOR in 2010 30

© DHBK 2005

The future: high performance (P)

31

© DHBK 2005

Processor performance Performance 1M 100K 10K

55%/year

1K 100 10 1

Time 1980

1985

1990

1995

2000

2005

Exponential growth for 3 decades! This is called ‘Moore’s law’: number of transistors doubles every 18 months 32

(Gordon Moore, founder Intel Corp.)

© DHBK 2005

Processor performance • Smaller line size More transistors => parallelism

1983: 1 instruction per 4 clock cycles 2002: 8 instructions per clock cycle

Smaller capacitors => faster 1983: 4 MHz 2002: 2800 MHz

Speed-up: 25000

• Enables new applications UMTS with large rolled-up OLED screen enabling web downloadable services (e.g. virtual meetings)

• Do we find applications that are demanding enough for next decade’s processors?

33

© DHBK 2005

The future: DRAM Roadmap 2001 Roadmap 1995

1995

Number of bits per chip Chip size (mm 2)

64M

1997 1998 256M

190

280

Roadmap 1998

34

2003 1999 2001 1G

2007 2002 2004 4G

2011 2005 2007 16G

2016 2008 2010 64G

? 2011

? 2014

256G

1T

400

560

790

1120

1580

2240

© DHBK 2005

Memory density Performance 1M

Processor

100K 10K

55%/year

1K

Gap

100 10

10%/year

1 1980

35

1985

1990

1995

2000

Memory

2005

Time

© DHBK 2005

Memory density • Skills: center of gravity USA: processors (Intel, Motorola, TI, …) Japan: memory (NEC, Toshiba, …) Future: IC = processor + memory Where???

• Memory density grows faster than needs 1983: 512 Kbyte @ 64 Kbit/chip = 64 chips/PC 2001: 256 Mbyte @ 512 Mbit/chip = 4 chips/PC Compensated if you sell at least 16 times more PCs… … or if you find new applications (UMTS, car,…) 2010: 4 Gbyte @ 64 Gbit/chip = 0.5 chip/PC No need for such a large memory chip… … unless you find new applications (3D video…)

36

© DHBK 2005

Power consumption Power (W/cm2) 1K Nuclear reactor

100 Hot plate

10 386

1 1.5

486 1

P

0.7

P II

P III

P4

P Pro

0.5 0.35 0.25 0.18 0.13 0.1Line

width

Processor architecture design driven by memory bottleneck & power problem! Nevertheless, ‘cooling tower’ is necessary! 37

© Fred Pollack, Keynote at Micro99

© DHBK 2005

Power consumption

Cooling “tower”

38

© DHBK 2005

Power consumption • Let us do a calculation:

How long could a GSM using a Pentium 3 (hardly powerful enough…) last on a single battery charge? Capacity of a battery: 600 mAh @ 4V = 2400 mWh Power consumption Pentium 3: 45 W One charge lasts for … 3 minutes!!!

• Let us turn the computation upside down:

We want a GSM to last for 240 hours on a single charge. How much power may be consumed by the processor? Capacity of a battery: 600 mAh @ 4V = 2400 mWh Power consumption processor: 10 mW Possible via specialization to the application: dedicated hardware…

39

© DHBK 2005

Summary on technological trends • Technologically speaking, we can have the same exponential evolution for another decade • This gives us at least 4 decades of exponential evolution, never seen in history • End-user price stayed the same or even decreased Since 30 years, the price for a brand new processor is 1000 USD

• So far for the good news…

40

© DHBK 2005

Design issues Design complexity

Performance 1M 100K 10K

55%/year

1K 100

Gap

Design productivity 10%/year Time

10 1 1980

1985

1990

1995

2000

2005

Unfortunately, Gordon Moore’s law is also valid for the design complexity, which doubles every 18 months… … and worse, design productivity doubles only every 10 years 41

© DHBK 2005

Design issues • We can build exponentially complex circuits, but we cannot design them Design of Pentium 4: 8 years, during last 2 years with a team of 1000 persons Who can afford this???

42

© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế • General purpose microprocessors Intel 80x86 Xu hướng phát triển

• Microcontrollers Vi điều khiển của Motorola Họvi điều khiển 8051 Họvi điều khiển AVR PSOC Xu hướng phát triển

• Digital signal processors Texas Instruments Motorola Philips Xu hướng phát triển 43

© DHBK 2005

Giới thiệu vềvi điều khiển • Vi điều khiển = CPU + Bộnhớ+ các khối ghép nối ngoại vi + các khối chức năng EEPROM RAM ADC/DAC Timer Bộtạo xung nhị p PWM UART USB ...

44

© DHBK 2005

Vi xửlý vs. Vi điều khiển • Vi xửlý là một CPU được sửdụng trong các máy tính. • Các vi bộđiều khiển và các bộvi xửlý có ba điểm khác nhau chính sau:kiến trúc phần cứng, phạm vi ứng dụng, và đặc điểm tập lệnh. • Kiến trúc phần cứng: Một bộvi xửlý chỉlà một CPU đơn lẻtrong khi một bộvi điều khiển là một IC chứa CPU và các mạch ngoại vi chính của một máy tính hoàn chỉ nh (nhưRAM, ROM, giao diện nối tiếp, giao diện song song, bộđị nh thời, mạch xửlý ngắt) • Ứng dụng: Vi xửlý thường được dùng nhưmột CPU trong các máy tính trong khi các vi điều khiển được sửdụng trong các thiết bịnhỏđểđiều khiển các hoạt động. 45

© DHBK 2005

Vi xửlý vs. Vi điều khiển • Tập lệnh: Tập lệnh của vi xửlý thiên vềxửlý dữliệu.

Chúng có thểlàm việc với 4 bit, byte, word, thậm chí double word. Chếđộđị a chỉcho phép truy nhập các mảng dữliệu lớn bằng cách sửdụng con trỏvà đị a chỉoffset.

Tập lệnh của vi điều khiển dùng đểđiều khiển các truy nhập vào và ra. Chúng có các lệnh cho phép thiết lập và xoá các bit riêng rẽvà thực hiện các thao tác với bit. Có các lệnh cho các hoạt động vào/ra, đo thời gian các sựkiện, cho phép và thiết lập các mức độưu tiên cho các ngắt ngoài.

• Khảnăng xửlý của vi điều khiển thấp hơn rất nhiều so với vi xửlý. 46

© DHBK 2005

Microcontroller facts • 99% processor market • Shipments- > 16 Billion in 2000, 8 bit > 1/2 market • Major Players: Microchip 16Fxx, Intel 8051, Motorola MC68HC05, National COP800, SGS/Thomson ST62, Zilog Z86Cxx

47

© DHBK 2005

Motorola MC68331

1 12

2 Timers

32 bit integer CPU

16

Serial asynch. Buffered I/O

FT unit: watchdog clock&bus monitor

24

data

Programmable chip selects

7 Interrupt logic

• •

48

Clock frequency: > 16 MHz MC683xx: modular microcontroller unit: MC68000 core plus customized peripherals

address

© DHBK 2005

Motorola MC68332

1 12

Timer PU

32 bit integer CPU

16

Serial asynch. Buffered I/O

FT unit: watchdog clock&bus monitor

24

Programmable chip selects

2 Kbyte RAM

data

7 Interrupt logic 48

• •

49

Parallel I/O

Clock frequency: > 16 MHz MC683xx: modular microcontroller unit: MC68000 core plus customized peripherals

address

© DHBK 2005

Motorola MC68340

2 4

2 Timers

32 bit integer CPU

16

Serial asynch. I/O

FT unit: watchdog clock&bus monitor

32

Programmable chip selects

2 channel DMA controller

data

7 Interrupt logic 16

• •

50

Parallel I/O

Clock frequency: > 16 MHz MC683xx: modular microcontroller unit: MC68000 core plus customized peripherals

address

© DHBK 2005

Motorola MC68F333

• • • • • • •

51

64 Kbyte on chip flash EEPROM 68020 processor 4 Kbyte SRAM 8 channel 10-bit ADC 16 channel 16-bit timer several interfaces Introduced in 1994

© DHBK 2005

Motorola MC68HC16

• 16-bit microprocessor • Introduced in 1994 www.freescale.com 52

© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế • General purpose microprocessors Intel 80x86 Xu hướng phát triển

• Microcontrollers Vi điều khiển của Motorola Họvi điều khiển 8051 Họvi điều khiển AVR PSOC Xu hướng phát triển

• Digital signal processors Texas Instruments Motorola Philips Xu hướng phát triển 53

© DHBK 2005

Họvi điều khiển 8051 • Hiện nay có hơn 40 công ty sản xuất các loại vi điều khiển khác nhau của họ8051. • Một sốcông ty có trên 40 version 8051. • Các CORE 8051 có thểđược tổhợp trong các FPGA hay ASIC. • Trên 100 triệu vi điều khiển 8051 được bán ra mỗi năm. • Họ8051 gặt hái được rất nhiều thành công và nó cũng trực tiếp ảnh hưởng đến cấu trúc của các họ vi điều khiển hiện nay.

54

© DHBK 2005

MCS-51 • 8051 thuộc họvi điều khiển MCS-51. • MCS-51 được phát triển bởi Intel và các nhà sản xuất khác (nhưSiemens, Philips) là các nhà cung cấp đứng thứhai của họnày. • Tóm tắt một sốđặc điểm chính của họ8051: 4K bytes ROM trong 128 bytes RAM trong 4 cổng I/O 8-bit 2 bộđị nh thời 16 bit Giao diện nối tiếp Quản lý được 64K bộnhớcode bên ngoài Quản lý được 64K bộnhớdữliệu bên ngoài

55

© DHBK 2005

Họvi điều khiển 8051 C¸c sù kiÖn cÇn ®Õm

C¸c ng¾t ngoµi Ram trong Thanh ghi chøc n¨ng ®Æc biÖt

§iÒu khiÓn ng¾t

Nguån Ng¾t Trong

128 byte FF ram 80 128 byte 7F

RAM

00

CPU

Bé dao ®éng

XTAL 1,2 56

Qu¶n lý Bus

PSEN

ALE

Port 0

Port 1

§Þa chØ §Þa thÊp/d÷ liÖu chØ cao

Port 2

Port 3

Cæng nèi tiÕp

Më réng trong 8032

© DHBK 2005

Tham khảo • • • •

57

Họvi điều khiển 8051 www.atmel.com/products/8051/ http://chaokhun.kmitl.ac.th/~kswichit/ http://www.sunrom.com/

© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế • General purpose microprocessors Intel 80x86 Xu hướng phát triển

• Microcontrollers Vi điều khiển của Motorola Họvi điều khiển 8051 Họvi điều khiển AVR PSOC Xu hướng phát triển

• Digital signal processors Texas Instruments Motorola Philips Xu hướng phát triển 58

© DHBK 2005

Họvi điều khiển AVR Bus d÷ liÖu 8 bÝt Bé nhí flash 1k x 16 cho ch-¬ng tr×nh

Thanh ghi lÖnh Bé gi¶i m· lÖnh

C¸c ®-êng ®iÒu khiÓn

Bé ®Õm ch-¬ng tr×nh

Tr¹ng th¸i vµ kiÓm tra

Thanh ghi ®a n¨ng 32 x 8

Thanh ghi ®iÒu khiÓn §¬n vÞ ng¾t §¬n vÞ SPI UART nèi tiÕp

ALU

128 x 8 Data SRAM

Timer/Counter 8 bÝt Timer/Counter 16 bit víi Bé PWM ®Þnh thêi watchdog

128x8 EEPROM 59

Bé so s¸nh analog 15 ®-êng dÉn vµo/ra

© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế • General purpose microprocessors Intel 80x86 Xu hướng phát triển

• Microcontrollers Vi điều khiển của Motorola Họvi điều khiển 8051 Họvi điều khiển AVR PSOC Xu hướng phát triển

• Digital signal processors Texas Instruments Motorola Philips Xu hướng phát triển 60

© DHBK 2005

Giới thiệu chung vềPSoC • PSoC là gì? Do hãng Cypress sả n xuấ t Mộ t loạ i công nghệIC mới phát triể n trong vài năm gầ n đây. Khảnăng tích hợp độ ng các loạ i linh kiệ n sốvà tương tựđể tạ o ra các khố i sốhoặ c tương tựvới chức năng tuỳthuộ c người dùng. Kế t hợ p với mộ t vi điề u khiể n trung tâm.

61

© DHBK 2005

Cấu trúc PSoC • Lõi PSoC Vi xửlý 8bit, 24MHz, 4MIPS Flash ROM (từ16K) RAM (128b-2kb) Bộđiều khiển ngắt Bus • Các khốI số Flip-Flop, cổng logic • Các khốI tương tự Các bộkhuếch đạI thuật toán Điện trở Tụđiện điều khiển đóng ngắt • Tài nguyên hệthống • Đặc biệt: Debugger core 62

© DHBK 2005

Ứng dụng

63

Xửlý tín hiệu

Giao tiếp với cảm biến

• Phát hiện sóng Sin • Đo điện áp • Đo tần số • Điền chế/giảI điều chế • Lọc • Nhân tương tự • FSK

• Điện trởnhiệt • Cặp nhiệt • Đo tín hiệu hồng ngoạI thụđộng • Thu siêu âm • Đo áp suất

© DHBK 2005

So sánh thiết kếgiữa VXL, VĐ K, VĐK PSoC

• Ứng dụng: Mạch đo điện áp 0-5V, hiển thịgiá trịra LED Thiết kếphần cứng Thiết kếphần mềm

Nguồn điện áp

Tương tự/Số

Bộxửlý trung tâm

Nguồn nuôi

64

Hiển thị LED

© DHBK 2005

So sánh

65

Vi xửlý

Vi điều khiển

PSoC

Độphức tạp phần cứng

Cao

Trung bình

Thấp

Giá thành

Cao

Trung bình

Trung bình

Độổn đị nh

Thấp

Trung bình

Cao

Khảnăng phát triển hệ thống

Khó

Trung bình

Dễ

© DHBK 2005

Thiết kếhệthống sửdụng PSoC • Chuẩn bị IC Chương trình thiết kế: PSoC Designer Chương trình nạp và mạch nạp

• Các bước thiết kếPSoC sửdụng PSoC designer Thiết kế“cứng”

Lựa chọn “linh kiện” đểđưa vào các khốI số, tương tự Đưa các linh kiện vào các khốI và kết nốI Thiết lập các thông số

Lập trình Kích hoạt các linh kiện: Component_Start() Viết các thuật toán sửdụng linh kiện Vòng lặp vô tận

66

© DHBK 2005

Một sốlinh kiện • • • • • • • •

67

ADC (6-14 bit) DAC (6-9 bit) Khuếch đạI DTMF Bộlọc (thông thấp, thông dảI) Bộđếm, bộđị nh thờI (8-24 bit) Dồn kênh: số+tương tự Các linh kiện số: I2C, UART, giao tiếp LCD, mã CRC, mã giảngẫu nhiên, giao tiếp chuẩn thu /phát hồng ngoại

© DHBK 2005

Chọn linh kiện

Linh kiện trong hệthống Tài nguyên hệ thống Chọn linh kiện

68

Hướng dẫn sử dụng linh kiện

© DHBK 2005

Thiết kế

Tương tự

Số

IC Châ n

Thông sốlinh kiện

BU S

Thông số chung

69

© DHBK 2005

Lập trình

Quản lý theo dự án

70

© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế • General purpose microprocessors Intel 80x86 Xu hướng phát triển

• Microcontrollers Vi điều khiển của Motorola Họvi điều khiển 8051 Họvi điều khiển AVR PSOC Điều khiển trong công nghiệp PLC Xu hướng phát triển

• Digital signal processors

71

Texas Instruments Motorola Philips Xu hướng phát triển

© DHBK 2005

PLC (Programmable Logic Controller) • PLC = CPU + giao diện vào ra • Đặc điểm của PLC:

Giá thành hợp lý cho các ứng dụng điều khiển phức tạp Chị u được rung động, nhiệt, ẩm, tiếng ồn và có độbền cao Có sẵn giao diện cho các thiết bịvào và thiết bịra Lập trình dễdàng với ngôn ngữlập trình đơn giản, chủyếu giải quyết các phép toán logic và chuyển mạch

• PLC được dùng chủyếu đểđiều khiển trong công nghiệp:

72

Điều Điều Điều Điều …

khiển khiển khiển khiển

băng chuyền thang máy máy tựđộng: máy khoan, máy sấy … đèn giao thông

© DHBK 2005

Cấu trúc của hệthống PLC

Bộnhớlưu trữ chương trình

Tín hiệu

PLC

vào

Giao diện vào

73

Tín hiệu ra

Vi xử lý

Giao diện ra

© DHBK 2005

Cấu trúc bên ngoài

74

© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế • General purpose microprocessors Intel 80x86 Xu hướng phát triển

• Microcontrollers Vi điều khiển của Motorola Họvi điều khiển 8051 Họvi điều khiển AVR PSOC Xu hướng phát triển

• Digital signal processors Texas Instruments Motorola Philips Xu hướng phát triển 75

© DHBK 2005

Trends for microcontrollers • Standard CPU core surrounded by peripherals taken from a vast library • Single architecture line is whole family different memory & on-chip peripherals for embedded applications Deterministic behavior

no caches, no virtual memory, but on-chip RAM no out-of-order execution delayed branch prediction

76

© DHBK 2005

Trends for microcontrollers • Word length as small as possible 4 bit: 2% 8 bit: 36% 16 bit: 25% 32 bit: 34% 64 bit: 3%

• Not pushing the limits of performance for cost reasons

77

© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế • General purpose microprocessors Intel 80x86 Xu hướng phát triển

• Microcontrollers Vi điều khiển của Motorola Họvi điều khiển 8051 Họvi điều khiển AVR PSOC Xu hướng phát triển

• Digital signal processors Texas Instruments Motorola Philips Xu hướng phát triển 78

© DHBK 2005

Texas Instruments TMS320C20x Low end consumer Fixed Point Dual access data RAM

fixed MAC 16x16+32->32

16

PROM

Selection of peripherals: serial comm., timers,...

18

Loop controller

data address I/O 16 data 16 address

• • • 79

Series continued; typical app.: Digital camera, feature-phones, disk drives, Point-of-Sales Terminal 40 MHz, 3.3-5V, 3LM Available as core

© DHBK 2005

Texas Instruments TMS320C24x Low end consumer Fixed Point Dual access data RAM

fixed MAC 16x16+32->32

16

PROM

8 output PWM

16

data address

• •

80

Loop controller

8 channel A/D

Selection of peripherals: serial comm., timers,...

CAN bus controller watchdog

Series continued; typical app.: electrical motor control 50 MHz, 5V

© DHBK 2005

Texas Instruments TMS320C3x Floating Point XRAM

32 bit floating add

32

YRAM

32 bit floating multiply

24

PRAM Loop controller

81

address

ACU ACU Selection of peripherals: serial comm., timers, DMA, ...

• • •

data

Series discontinued; typical app.: speech, audio 60 MHz, 3.3-5V, 144 pin Super scalar

I/O 32 data 24 address

© DHBK 2005

Texas Instruments TMS320C4x Floating Point Message Passing 20 MB/s

8

4KByte XRAM

32 bit floating add

32

4KByte YRAM

32 bit floating multiply

32

PRAM

ACU

Loop controller

ACU

12 channel DMA controller

• • •

82

data address

32 data 32

Serial link, timers

Series discontinued; typical app.: prototyping, radar 60 MHz, 5V, 325 pin Super scalar; message passing multiprocessor

address

© DHBK 2005

• • • • 83

Texas Instruments TMS320C54xx High end consumer Fixed Point Dual access XRAM

Fixed ALU 32+32->40

32

YRAM

Fixed Add 32+32->40

17

PROM

Fixed multiply 17x17->34

Loop controller

Viterbi

6 channel DMA controller

ACU

Buffered serial links, timers, ...

ACU

data address I/O 16 data 16 address

Series continued; typical app.: GSM, set-top box, audio 1.8-5V, max. 160 MHz, 144 pin, .15m (1999), 0.32mW/MIPS for the core Specialized on-chip unit: will occur more often in future e.g. C5420: dual core + 2x100 MW on-chip SRAM e.g. C5402: 5$ for 100 MIPS

© DHBK 2005

• • •84

Texas Instruments TMS320C5510 High end consumer Fixed Point Dual access XRAM (256 Kbyte)

Fixed ALU 32+32->40

YRAM (64 Kbyte)

Fixed Add 32+32->40

32

PROM 32 KByte

Fixed multiply 17x17->34

24

P-cache 24 KByte

Fixed multiply 17x17->34

Power Mgment

Viterbi

6 channel DMA controller

ACU

Buffered serial links, timers, ...

ACU

data address I/O 16 data 16 address

Series continued; typical app.: UMTS handheld 1.6V, 200 MHz, .15m (2000), 400 MIPS,0.05mW/MIPS (core), power management per unit and per cycle Specialized on-chip unit: will occur more often in future

© DHBK 2005

Texas Instruments TMS320C8x Fixed Point Video 2 Kbyte RAM1

DSP processor 1 DSP processor 2

2 Kbyte RAM 16 2 Kbyte I-cache1

Xbar

DSP processor 3

32 address data 64

DSP processor 4 2 Kbyte I-cache4

• • •

85

4 Kbyte D-cache

General purpose RISC processor

4 KByte I-cache

Video controller

2 KByte RAM

Transfer controller

Series discontinued; typical app.: video phone, video conferencing, multimedia workstations Introduced: 1995, 50 MHz, 305 pin Multiprocessor-on-a-chip; sub-word SIMD for each DSP

© DHBK 2005

Texas Instruments TMS320C6201 High end Fixed Point 16KByte D-SRAM 16KByte D-SRAM 16KByte D-SRAM 16KByte D-SRAM 64KByte P-SRAM/cache JTAG / clock pump 4 channel DMA Ext. memory interface 2 Serial ports 2 Timers

• • • •86

fixed MUL 16x16->32 fixed MUL 16x16->32 fixed ALU 32+32->40 fixed ALU 32+32->40 fixed ALU/branch 32+32->40 fixed ALU/branch 32+32->40 integer ACU 32+32 integer ACU 32+32

External memory 23 address data 32

Host interface 17 address data 16

Series continued; typical app.: modems, multimedia 1997, 0.25 m, 5ML, 352 pin, 200 MHz, 2.5V, 1.9W, $85 Super scalar (8 Instr./cycle), 1600 MIPS VLIW: 256 bit instruction word

© DHBK 2005

• • • •87

Texas Instruments TMS320C6202 High end Fixed Point 2x16KByte D-RAM (Shadow load) 2x16KByte D-RAM (Shadow load) 2x16KByte D-RAM (Shadow load) 2x16KByte D-RAM (Shadow load) 2x128KB P-RAM (Shadow load) JTAG / clock pump 4 channel DMA Ext. memory interface 2 Serial ports 2 Timers

fixed MUL 16x16->32 fixed MUL 16x16->32 fixed ALU 32+32->40 fixed ALU 32+32->40 fixed ALU/branch 32+32->40 fixed ALU/branch 32+32->40 integer ACU 32+32 integer ACU 32+32

External memory 23? address data 32

Expansion bus 17? address data 32

Series continued; typical app.: modems, multimedia 1999, 0.18 m, 5ML, 352 pin, 250 MHz, 1.8V, 1.9W, $130 Super scalar (8 Instr./cycle), 2000 MIPS, scales well till 700 MHz (6000 MIPS) Optimum choice when all data fits in on-chip memory

© DHBK 2005

• • • • 88

Texas Instruments TMS320C6203 High end Fixed Point 2x64KByte D-RAM (Shadow load) 2x64KByte D-RAM (Shadow load) 2x64KByte D-RAM (Shadow load) 2x64KByte D-RAM (Shadow load) 256KByte P-RAM 128KB P-cache/RAM JTAG / clock pump 4 channel DMA Ext. memory interface 2 Serial ports 2 Timers

fixed MUL 16x16->32 fixed MUL 16x16->32 fixed ALU 32+32->40 fixed ALU 32+32->40 fixed ALU/branch 32+32->40 fixed ALU/branch 32+32->40 integer ACU 32+32 integer ACU 32+32

External memory 23? address data 32

Expansion bus 17? address data 32

Series continued; typical app.: base stations 2000, 0.15 m, 5ML, 18 mm2 package size, 300 MHz, 1.5V, 1.5W Super scalar (8 Instr./cycle), 2400 MIPS Optimum choice when all data fits in on-chip memory

© DHBK 2005

Texas Instruments TMS320C6211 High end Fixed Point 4KByte L1 Dcache (2 way set assoc.) 4KByte L1 Pcache (2 way set assoc.) 4x16KByte L2 cache (direct map)

JTAG / clock pump 16 channel DMA Ext. memory interface 2 Serial ports 2 Timers

• • • • •89

fixed MUL 16x16->32 fixed MUL 16x16->32 fixed ALU 32+32->40 fixed ALU 32+32->40 fixed ALU/branch 32+32->40 fixed ALU/branch 32+32->40 integer ACU 32+32 integer ACU 32+32

External memory 30 address data 32

Host port 17 address data 16

Series continued; typical app.: modems, multimedia 1999, 0.18 m, 5ML, 256 pin, 150 MHz, 1.8V, 1.5W, $25 VLIW, 1.2 GIPS; cheap (25$ in ‘99, 5$ in ‘01) Optimum for random access to large memory space 80% of performance of C6x with infinite on-chip memory

© DHBK 2005

Texas Instruments TMS320C6416 High end Fixed Point 16 Kbyte L1P direct mapped 16 Kbyte L1D 2way dual access 1 Mbyte RAM/L2 4way Dual EMIF & HPI & PCI & Utopia JTAG / clock pump 64 channel DMA 3 Serial ports 3 Timers Viterbi decoder accelerator Turbo decoder accelerator

• • • •90

fixed MUL 16x16->32 fixed MUL 16x16->32 fixed ALU 32+32->40 fixed ALU 32+32->40 fixed ALU/branch 32+32->40 fixed ALU/branch 32+32->40 integer ACU 32+32 integer ACU 32+32

External memory 30 address data 64 30 address data 16 HPI ? address data 32

Samples June 2001, 0.12 m, 6 LM, 532 pin, 400 MHz-600 MHz, 1.2V, starts at 95$ in volume Super scalar (8 Instr./cycle), 3200-4800 MIPS Sub-word (8bit or 16bit) parallelism Specialized instr.: Galois Field Mult, bit manipulation

© DHBK 2005

Texas Instruments TMS320C6701 High end Floating Point 16KByte D-SRAM 16KByte D-SRAM 16KByte D-SRAM 16KByte D-SRAM 64KByte P-SRAM/cache JTAG / clock pump 4 channel DMA Ext. memory interface Serial interface 2 Timers

• • • •91

Fixed/Float MUL 32x32/64x64 Fixed/Float MUL 32x32/64x64 Fixed/Float ALU 32+32/64+64 Fixed/Float ALU 32+32/64+64 Fixed ALU/Branch Float 1/x & x Fixed ALU/Branch Float 1/x & x integer ACU 32+32 integer ACU 32+32

External memory 23 address data 32

Host interface 17 address data 16

Series continued; typical app.: video compression Introduced: 1998, 0.18 m, 5ML, 352 pin, 167 MHz, 1.8V Super scalar (8 Instr./cycle); VLIW; 1 GFLOP Foreseen for ‘00: 50$ (cf. C6211) & 3 GFLOP (cf. C6202)

© DHBK 2005

Texas Instruments TMS320C6711 High end Floating Point 4KByte L1 Dcache (2 way set assoc.) 4KByte L1 Pcache (2 way set assoc.) 4x16KByte L2 cache (direct map)

JTAG / clock pump 4 channel DMA Ext. memory interface Serial interface 2 Timers

• • • • •92

Fixed/Float MUL 32x32/64x64 Fixed/Float MUL 32x32/64x64 Fixed/Float ALU 32+32/64+64 Fixed/Float ALU 32+32/64+64 Fixed ALU/Branch Float 1/x & x Fixed ALU/Branch Float 1/x & x integer ACU 32+32 integer ACU 32+32

External memory 23 address data 32

Host interface 17 address data 16

Series continued; typical app.: video compression 2000, 0.18 m, 5ML, 256 pin, 100 MHz, 1.8V, 2W, $20 VLIW, 600 MFlops Optimum for random access to large memory space 80% of performance of C6x with infinite on-chip memory

© DHBK 2005

Texas Instruments

TMS320C541 (1995)

93

© DHBK 2005

Texas Instruments

TMS320C545 (1995)

94

© DHBK 2005

Texas Instruments

TMS320C80 (1994) 95

© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế • General purpose microprocessors Intel 80x86 Xu hướng phát triển

• Microcontrollers Vi điều khiển của Motorola Họvi điều khiển 8051 Họvi điều khiển AVR PSOC Xu hướng phát triển

• Digital signal processors Texas Instruments Motorola Philips Xu hướng phát triển 96

© DHBK 2005

Motorola MC56xxx Audio Fixed Point XRAM

16 or 24 bit integer CPU

24

YRAM

ACU

18

data address



97

PRAM

ACU

Loop controller

Selection of peripherals: ADC, DAC, comm., timers, PIO, ...

24 bit for audio: 16 bit data + overflow

© DHBK 2005

Motorola MC56002

98

© DHBK 2005

Motorola MC56166

99

© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế • General purpose microprocessors Intel 80x86 Xu hướng phát triển

• Microcontrollers Vi điều khiển của Motorola Họvi điều khiển 8051 Họvi điều khiển AVR PSOC Xu hướng phát triển

• Digital signal processors Texas Instruments Motorola Philips Xu hướng phát triển 100

© DHBK 2005

Philips VSP-1 Fixed Point Video 12 512x12 bit Memory element

12 bit integer ALU

512x12 bit Memory element

12 bit integer ALU

10x18 cross-bar

12 bit integer ALU 10

• • •

101

12 bit for video: 8 bit data + overflow Clock Frequency: 27 MHz 1 instruction per sample period for HDTV, 2 instructions per sample period for TV

12

Philips VSP-1 Fixed Point Video

© DHBK 2005

Inputs

ALU

ALU

ALU

ME

ME

Outputs 102

© DHBK 2005

Output FIFOs

Philips VSP-1 Fixed Point Video

• • • • •

Memory Element 103

ALU

206K Transistors 1.1W dissipation 27 MHz clock 176 pin Introduced in 1991

© DHBK 2005

Philips VSP-2 Fixed Point Video 12 512x12 bit Memory element1

12 bit integer ALU1

512x12 bit Memory element2

12 bit integer ALU2 12

512x12 bit Memory element4 22x50 cross-bar

• • •

104

12 bit integer ALU 12 22

12 bit for video: 8 bit data + overflow Clock Frequency: 54 MHz 2 instructions per sample period for HDTV, 4 instructions per sample period for TV

© DHBK 2005

• • • • •105

Philips VSP-2 Fixed Point Video

1.15 M Transistors 5W dissipation 54 MHz clock frequency 208 pin Introduced in 1994

© DHBK 2005

Sony Graphics Engine • Playstation 3 Status: prototype in 2001 287.5 MTOR 256 Mbit on-chip embedded DRAM 2000-bit wide internal bus 462 mm2 180 nm CMOS

106

© DHBK 2005

Chương 7: Cá c bộvi xửlý trên thực tế • General purpose microprocessors Intel 80x86 Xu hướng phát triển

• Microcontrollers Vi điều khiển của Motorola Họvi điều khiển 8051 Họvi điều khiển AVR PSOC Xu hướng phát triển

• Digital signal processors Texas Instruments Motorola Philips Xu hướng phát triển 107

© DHBK 2005

Trends for DSP processors • No new generations that replace old generations, but multiple co-existing architecture lines • Word length application dependent Automotive: 16-bit fixed point (e.g. C2x) Speech: 32-bit floating point (e.g. C30) Audio: 24-bit fixed point (e.g. MC56K) Telecommunications: 16-32 bit fixed point (e.g. C5x, C6x) Video: 12-32 bit fixed point (e.g. C8x)

• Single architecture line is whole family

different memory & on-chip peripherals for embedded applications (cf. microcontrollers)

108

© DHBK 2005

Trends for DSP processors • Deterministic behavior no caches, no virtual memory, but on-chip RAM banks no out-of-order execution delayed branch prediction

• Increasing address space: 12 -> 32 • Multiple functions on single chip: CPU, FPU, multiple RAM banks, ACUs, loop controller, ADC, DAC, PWM, serial interfaces, … • Often provisions for parallel processing

109

Related Documents

Bb Xu Ly Ky Thuat
November 2019 16
Vi Xu Ly
November 2019 24
Th Vi Xu Ly
November 2019 14
Bao Cao Vi Xu Ly
November 2019 14
Ky Thuat Vi Sinh Vat
June 2020 5

More Documents from ""

Thiet_ke_kcd_ha
November 2019 24
10_truyen Thong Noi Tiep
November 2019 18
Ki Thuat Vxl
November 2019 21
Ki Thuat Vxl
November 2019 28
Ki Thuat Vxl
November 2019 20