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.1Line
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, .15m (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, .15m (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