1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

VI XỬ LÝ Vxl ch02 kien truc cpu va tap lenh

15 0 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 1,21 MB

Nội dung

02-Mar-11 ĐHBK Tp HCM-Khoa Đ-ĐT BMĐT GVPT: Hồ Trung Mỹ Môn học: Vi Xử Lý Nội dung 2.1 SƠ ĐỒ KHỐI CPU BIT CƠ BẢN Chương 2.2 TỔ CHỨC CÁC THANH GHI 2.3 TỔ CHỨC BỘ NHỚ 2.4 GHÉP NỐI BUS HỆ THỐNG KIẾN TRÚC CPU VÀ TẬP LỆNH 2.5 CHU KỲ BUS, CHU KỲ MÁY 2.6 CÁC PHƯƠNG PHÁP ĐỊNH ĐỊA CHỈ 2.7 TẬP LỆNH Vi xử lý • Có nhiều lọai vi xử lý (VXL) từ đơn giản đến phức tạp • Phụ thuộc vào độ rộng bus liệu ghi ALU, có VXL bit , bit , 16bit, 32 bit , 64 bit … • Thí dụ – Z80 VXL bit – 8086/88 VXL 16 bit • Tất VXL có – Bus địa – Bus liệu – Các tín hiệu điều khiển: RD, WR, CLK , RST, INT, Bus nội ngoại • Bus nội (Internal bus) đường dẫn để truyền liệu ghi ALU VXL • Bus ngoại (External bus) dùng cho bên nối đến RAM, ROM I/O • Độ rộng bus nội ngoại khác • Thí dụ – 8088: bus nội 16 bit, bus ngoại bit – 8086: bus nội 16 bit, bus ngoại 16 bit 2.1 SƠ ĐỒ KHỐI CPU BIT CƠ BẢN 02-Mar-11 Các đường tín hiệu Sơ đồ chức gán chân chip Z80 • Có nhóm tín hiệu: – Bus địa 16 đường (A0 đến A15) – Bus liệu đường (D0 đến D7) – đường điều khiển hệ thống – đường điều khiển CPU – đường điều khiển bus CPU ( ) – đường dành cho nguồn cấp điện xung nhịp (+5V, GND, CLK) A15-A0 : Mô tả chân Z80 Mô tả chân Z80 MREQ Bus địa (xuất, tích cực cao, 3-state) Dùng để truy cập nhớ va cổng I/O Trong chu kỳ làm tươi I đặt bus Memory Request (output, active Low, 3-state) Indicates memory read/write operation See M1 D7-D0 : Input/Output Request(output,active Low,3-state) Indicates I/O read/write operation See M1 Bus liệu (nhập/xuất, tích cực cao, 3-state) Dùng để trao đổi liệu với nhớ , I/O ngắt RD: IORQ M1 Đọc (xuất, tích cực thấp, 3-state) cho biết CPU muốn đọc liệu từ nhớ hay I/O Machine Cycle One (output, active Low) Together with MREQ indicates opcode fetch cycle Together with IORQ indicates an Int Ack cycle WR: RFSH Ghi (xuất, tích cực thấp, 3-state) cho biết bus liệu CPU giữ liệu hợp lệ cất vào nhớ hay thiết bị I/O Refresh (output, active Low) Together with MREQ indicates refresh cycle Lower 7-bits address is refresh address to DRAM Mô tả chân Z80 INT Interrupt Request (input, active Low) Interrupt Request is generated by I/O devices Checked at the end of the current instruction If flip-flop (IFF) is enabled NMI Non-Maskable Interrupt (Input, negative edge-triggered) Higher priority than INT Recognized at the end of the current Instruction Independent of the status of IFF Forces the CPU to restart at location 0066H Mô tả chân Z80 BUSREQ Bus Request (input, active Low) higher priority than NMI recognized at the end of the current machine cycle forces the CPU address bus, data bus, and MREQ, IORQ, RD, and WR to high-imp BUSACK Bus Acknowledge (output, active,Low) indicates to the requesting device that address, data, and control signals MREQ, IORQ, RD, and WR have entered their high-impedance states 02-Mar-11 Kiến trúc hệ thống Mô tả chân Z80 RESET Reset (input, active Low) RESET initializes the CPU as follows: Resets the IFF Clears the PC and registers I and R Sets the interrupt status to Mode During reset time, the address and data bus go to a high-impedance state And all control output signals go to the inactive state must be active for a minimum of three full clock cycles before the reset operation is complete Z80 CPU B U F F E R INTERNAL DATA BUS (8 BIT) MUX 2.2 TỔ CHỨC CÁC THANH GHI INSTRUCTION REGISTER I R MUX W' Z' W Z B' C' B C D' E' D E H' L' H L DECODER A F A' F' DATA BUS TMP ACT IX IY SP CONTROLLER SEQUENCER ALU PC CONTROL SECTION ±k ±k B U F F E R ADDRESS BUS INTERNAL ADDRESS BUS (16 BIT) B U F F E R CONTROL BUS INTERNAL CONTROL BUS 16 13 Mơ hình lập trình Z80 Tập ghi • A : Accumulator Register • F : Flag register • Two sets of six general-purpose registers – may be used individually as 8-bit A F B C D E H L (A’ F’ B’ C’ D’ E’ H’ L’) – or in pairs as 16-bit registers AF BC DE HL (AF’ BC’ DE’ HL’) • The Alternative registers (A’ F’ B’ C’ D’ E’ H’ L’) not visible to the programmer but can access via: – EXX (BC)(BC') , (DE)(DE') , (HL)(HL') – EX AF, AF ’ (AF)(AF') what is this instruction useful for? 02-Mar-11 Tập ghi (tt) Thanh ghi cờ (Flag Register) • 16-bit registers hold memory address (pointers) – index registers (IX) and (IY) are 16-bit memory pointers – 16 bit stack pointer (SP) – Program counter (PC) • Program counter (PC) – PC points to the next opcode to be fetched from ROM – when the µP places an address on the address bus to fetch the byte from memory, it then increments the program counter by one to the next location • Special purpose registers – I : Interrupt vector register – R : memory Refresh register ADD ADC SUB SBC NEG Bits 4-7 0-9 0-8 0-9 A-F 9-F A-F 0-2 0-2 0-3 0-9 0-8 7-F 6-F S Z X H X S Z H P V N C P V N C Sign Flag (1:negativ)* Zero Flag (1:Zero) Half Carry Flag (1: Carry from Bit to Bit 4)** Parity Flag (1: Even) Overflow Flag (1:Overflow)* Operation Flag (1:previous Operation was subtraction)** Carry Flag (1: Carry from Bit n-1 to Bit n, with n length of operand) after DAA H 0 0 0 1 Bits 0-3 0-9 A-F 0-3 0-9 A-F 0-3 0-9 A-F 0-3 0-9 6-F 0-9 6-F A=A+ 00 06 06 60 66 66 60 66 66 00 FA A0 9A C 0 1 1 1 0 1 Stack Pointer (SP) • Dùng làm trỏ đến stack nhớ ngồi • Khi đưa liệu vào stack (PUSH), SP giảm (tốn hạng byte) • Khi lấy liệu khỏi stack (POP), SP tăng thêm (tốn hạng byte) • Vì Z80 theo little endian nên byte thấp liệu địa thấp 15 Data Chiều tăng địa nhớ before DAA C 0 0 0 1 0 1 Chiều tăng stack Adjusts the content of the Accumulator A for BCD addition and subtraction operations such as ADD, ADC, SUB, SBC, and NEG according to the table: N 0 0 0 0 1 1 *: 2-complement number representation **: used in DAA-operation for BCD-arithmetic DAA - Decimal Adjust Accumulator Op Tổ chức nhớ 2.3 TỔ CHỨC BỘ NHỚ • Tổ chức nhớ tùy theo ứng dụng khác ta có tổ chức khác tùy theo ROM, SRAM, DRAM mà ta có kết nối tín hiệu điều khiển khác • Với địa 16 đường (A0 đến A15), Z80 làm việc đến tối đa 64KB nhớ • Tám đường địa thấp (A0 đến A7) dùng để truy cập tới 256 cổng I/O • Để minh hoạ phần ta khảo sát số thí dụ 02-Mar-11 Giao tiếp ROM 1KB RAM 256 x A9 A0 A7 A0 Giao tiếp với RAM A7 A0 Ta muốn Z80 kết nối với nhớ (với chip ROM 1K x RAM 256 x 4) theo bảng nhớ sau ROM KB : 0000H–03FFH RAM 256 bytes : 0400H–04FFH Giao tiếp với SRAM 1KB Thí dụ giao tiếp DRAM KB xây dựng từ DRAM 4KB Hệ máy tính Z80 tối thiểu 2.4 GHÉP NỐI BUS HỆ THỐNG 02-Mar-11 Mở rộng giao tiếp cho Z80 Thí dụ sơ đồ phần cứng kit dựa Z80 • Để mở rộng giao tiếp cho Z80, hãng Zilog phát triển chip hỗ trợ sau: – Z80 PIO điều khiển I/O song song, làm cho Z80 mở rộng thêm thành cổng I/O song song bit Chip cịn có thêm đường tạo ngắt cho Z80 cho phép nối logic OR chân lại – Z80 CTC mạch đếm-định (counter-timer circuit) người thiết kế hệ thống Z80 sử dụng thực chức đếm định – Z80 SIO mạch nhập/xuất nối tiếp (Serial Input/Output Circuit), chip cung cấp cho hệ Z80 với cổng nối tiếp mà sử dụng để liên lạc với thiết bị ngoại vi nối tiếp khác – Z80 DMA thực việc truy cập nhớ trực tiếp với thiết bị Chu kỳ lệnh, chu kỳ máy trạng thái T 2.5 CHU KỲ BUS, CHU KỲ MÁY • Chu kỳ lệnh thời gian cần để hồn tất việc thực thi lệnh • Chu kỳ máy định nghĩa thời gian cần hoàn tất tác vụ truy cập nhớ, truy cập I/O,… (Với Z80, chu kỳ máy kéo dài từ đến chu kỳ xung nhịp ) • T-state = 1/f (f: tần số Clock Z80) – f= 4MHZ  T-state=0.25 uS Thí dụ định CPU Z80 chu kỳ máy Có chu kỳ máy với Z80: Chú ý; • chu kỳ lệnh (Instruction Cycle) =  chu kỳ máy (Machine Cycle) • chu kỳ máy (Machine Cycle) =  chu kỳ T (T Cycle) • chu kỳ T = 1/fCLK (fCLK ; tần số thạch anh gắn vào Z80) Nhận mã lệnh (chu kỳ M1) Đọc ghi liệu nhớ Đọc ghi I/O Yêu cầu/ghi nhận bus (Bus Request/Acknowledge) Yêu cầu/ghi nhận INT Yêu cầu/ghi nhận NMI Thoát khỏi lệnh HALT 02-Mar-11 Chu kỳ nhận lệnh (chu kỳ M1) Thanh ghi R (Refresh) • Được tăng chu kỳ M1 • Bit khơng bị thay đổi M!; có bit thấp tham gia phép cộng Vì bit giữ ngun trị cũ • Ta thay đổi bit lệnh LD R,A • LD A,R LD R,A truy cập ghi R sau tăng • R thường dùng làm giá trị ngẫu nhiên chương trình dĩ nhiên thật khơng ngẫu nhiên Thêm trạng thái đợi vào chu kỳ T1 Thêm trạng thái đợi vào chu kỳ nhớ Chu kỳ đọc ghi nhớ Chu kỳ nhập xuất (Input or Ouput Cycle) During I/O operations a single wait state is automatically inserted 02-Mar-11 Chu kỳ yêu cầu bus/ ghi nhận Chu kỳ yêu cầu/ghi nhận ngắt Two wait states are automatically added to this cycle Chu kỳ yêu cầu/ghi nhận bus với NMI Chu kỳ làm tươi M1 • Takes 4T to 6Ts • Z80 includes built in circuitry for refreshing DRAM • This simplifies the external interfacing hardware • DRAM consists of MOS transistors, which store Information as capacitive charges; each cell needs to be periodically refreshed • During T3 and T4 (when Z80 is performing internal ops), the low order address is used to supply a 7-bit address for refresh Tín hiệu Wait • the Z80 samples the wait signal during T2 if low then Z80 adds wait • states to extend the machine cycle • used to interface memories with slow response time • Slow memory is low cost Ngắt (Interrupt) There are two types of interrupts: • non mask-able (NMI) – Could not be masked – Jump to 0066H of memory • mask-able(INT) – Has mode – Can be set with the IM x Instruction – IM sets Interrupt mode – IM sets Interrupt mode – IM sets Interrupt mode 02-Mar-11 Các chế độ ngắt • Mode 0: – An bit opcode is Fetched from Data BUS and executed – The source interrupt device must put bit opcode at data bus – bit opcode usually is RST p instructions • Mode 1: – A jump is made to address 0038h – No value is required at data bus • Mode 2: – A jump is made to address (register I × 256 + value from interrupting device that puts at bus) – I is high bit of interrupt vector – Value is low bit of interrupt vector Chu kỳ thoát khỏi HALT Định RESET Điều kiện thốt: INT, NMI, RESET CPU Reset 2.6 CÁC PHƯƠNG PHÁP ĐỊNH ĐỊA CHỈ 02-Mar-11 Định địa Z80 • Phần lớn lệnh Z80 làm việc với liệu lưu trữ ghi CPU, nhớ ngoài, cổng I/O Z80 có cách định địa sau: – Định địa tức thời (hằng số bit) – Định địa tức thời mở rộng (hằng số 16 bit) – Định địa trực tiếp (địa bit) – Định địa trực tiếp mở rộng (địa 16 bit) – Định địa trang (có sửa đổi) – Định địa tương đối – Định địa theo số – Định địa ghi – Định địa hiểu ngầm – Định địa gián tiếp qua ghi – Định địa cho bit Định địa tức thời mở rộng • Hai byte theo sau mã lệnh tốn hạng thật Định địa tức thời • Byte theo sau mã lệnh tốn hạng thật • Thí dụ loại lệnh nạp số vào ghi tích lũy Thí dụ: LD A, 10H Định địa trực tiếp • Cung cấp địa bit tốn hạng sau mã lệnh • TD: IN A, (20H) • Thí dụ loại lệnh nạp liệu 16 bit vào cặp ghi (thí dụ HL) Thí dụ: LD HL, 8010H Định địa [trực tiếp] mở rộng Định địa trang (có sửa đổi) • Cung cấp địa 16 bit tốn hạng sau mã lệnh • Z80 có lệnh CALL đặc biệt byte để nhảy đến vị trí (chỉ nhóm bit b5b4b3) trang nhớ Lệnh thực thi khởi động lại, đặt PC có giá trị địa thật trang Giá trị lệnh cho phép dùng byte để địa 16 bit • Thí dụ: RST p với giá trị p 00H, 08H, 10H, 18H, 20H, 28H, 30H, 38H 10 02-Mar-11 Định địa tương đối • Sử dụng byte liệu theo sau mã lệnh để độ dời so với địa lệnh kế lệnh định nhảy đến Độ dời D số có dấu biểu diễn theo số bù địa thật tính sau (theo độ dời D địa lệnh A): EA = D + A + Độ dời D có giá trị từ -128 đến +127 • Thí dụ: JR Định địa theo số • Byte liệu theo mã lệnh độ dời D (số có dấu bù 2) cộng vào với ghi số (IX IY) để đến ô nhớ liệu, nghĩa EA = IX (hoặc IY) + D Loại lệnh có mã lệnh dài byte mã lệnh có bit ghi số chọn IX IY • Thí dụ: LD A, (IX + 10H) LD B, (IY + 20H) 10H Định địa ghi • Nhiều mã lệnh Z80 chứa bit thông tin cho biết ghi CPU sử dụng lệnh • Thí dụ: LD A, B Định địa gián tiếp qua ghi • Loại định địa cho biết cặp ghi 16 bit (như HL) dùng làm trỏ tới vị trí nhớ • Thí dụ: LD A, (HL) LD (HL), 10H Định địa hiểu ngầm • Mã lệnh cho biết hay nhiều ghi CPU chứa tốn hạng Thí dụ có số lệnh hiểu tốn hạng để ghi tích lũy Định địa cho bit • Z80 có nhiều lệnh đặt bit, xóa bit kiểm tra bit Các lệnh cho phép vị trí nhớ ghi CPU sử dụng cho phép toán bit qua cách định địa trước (thanh ghi, gián tiếp qua ghi theo số) bit mã lệnh cho biết bit bit xử lý Thí dụ: BIT 3, A SET 0, (HL) RES 7, (IX + 10H) Chú ý có lệnh kết hợp số cách địa chung lệnh 11 02-Mar-11 2.7 TẬP LỆNH • Tập lệnh Z80 gồm có 158 lệnh, bao gồm 78 lệnh 8080 Các lệnh chia làm nhóm sau: – Nạp bit nạp 16 bit – Hốn đổi, chuyển khối tìm kiếm – Số học logic bit – Số học 16 bit – Số học đa dụng điều khiển CPU – Xoay dịch bit – Xử lý bit (Các phép toán bit) – Nhập xuất – Nhảy, rẽ nhánh chương trình – Gọi chương trình quay chương trình gọi Pseudo Codes • Khi viết chương trình để thuận tiện thường ta dùng hợp ngữ mà lệnh có dạng thí dụ sau: Để viết chương trình dễ dàng trình hợp ngữ thường cho thêm tác vụ giả (pseudo operation) hay gọi lệnh giả như: EQU, DEFB, DEFW, DEFS, ORG, END, MACRO EQU (nghĩa equate=bằng; dùng để gán trị) • – Thí dụ: Nội dung nhớ SUM = A + 10H SUM: COUNT: DEFB (Define Byte = Định nghĩa Byte) DEFW (Define Word = Địnhnghĩa Word) Thí dụ: CONST: ADRS: TABLE: EQU EQU DEFW 52H 1900H ADRS DEFB CONST Khi vùng nhớ (giả sử địa TABLE 1951H) sau EQU 1900H EQU 10H ADD A, COUNT LD (SUM), A ; SUM = 1900H ; ADD A, 10H DEFS (Define Storage = Định nghĩa vùng lưu trữ) Thí dụ: (Giả sử lệnh DEFS 10H địa 1800H) 1800H 1810H 1811H DEFS 10H ; dành 16 byte lưu trữ LD HL, 10H LD DE, 20H 12 02-Mar-11 ORG (Origin = bắt đầu; định nghĩa địa bắt đầu) END (kết thúc chương trình) Thí dụ: ORG START: LD INC OUT END 100H ; Chương trình 100H A, 1FH ; bắt đầu chương trình A (11H), A ; kết thúc chương trình • Thí dụ: Điền số vào nhớ có địa từ 8100H đến 817FH LOOP: ORG 8000H LD HL, 8100H LD A, 00H LD C, 80H LD (HL), A INC HL DEC C JP NZ, LOOP HALT END MACRO (Định nghĩa đoạn chương trình mà trình hợp ngữ tự động chèn vào toàn đoạn chương trình có tham chiếu tên macro bắt đầu đoạn macro MACRO kết thúc ENDM) Thí dụ: REF: MACRO LD H, (IX+1) LD L, (IY+1) INC IX INC IY ENDM • Thí dụ: Nhân 10 lần giá trị cất cặp ghi HL MULT10: ADD LD LD ADD ADD ADD RET HL, HL D, H E, L HL, HL HL, HL HL, DE ; 2X HL ; (HL)=>(DE) ; x HL ; x HL ; (8+2) x HL • Thí dụ: Chuyển chuỗi liệu 737 byte vị trí nhớ DATA đến vị trí nhớ BUFFER, tác vụ lập trình sau LD HL, DATA ; Lấy địa bắt đầu DATA LD DE, BUFFER LD BC, 737 LDIR ; Lấy địa bắt đầu BUFFER ; Chiều dài chuỗi ký tự ; Chuyển chuỗi–Chuyển nhớ ; HL vào ô nhớ DE ; tăng HL DE lên ;Giảm bớt BC 1, BC= 13 02-Mar-11 14 02-Mar-11 15

Ngày đăng: 13/04/2023, 08:09

w