Lời nói đầu
Trong thời đại hiện nay kỷ thuật số phát triển như bảo lũ và đang thâm nhập vào hầu hết các lĩnh vực khoa học kỹ thuật cũng như trong đời sống. Phạm vi của kỹ thuật số về mặt hình thức có thể chia làm 3 vùng: Các mạch số cổ điển , hệ vi xử lý chuyên dụng và hệ thống máy tính số. Trong đó các hệ vi xử lý của hãng Intel là một trong những lĩnh vực mà ta cần quan tâm.
Đề án bao gồm các chương sau:
Mở Đầu : Giới thiệu về bộ vi xử lý
Chương I: Bộ Vi xử lý của hãng INTEL
ChươngII: Ph
38 trang |
Chia sẻ: huyen82 | Lượt xem: 1711 | Lượt tải: 0
Tóm tắt tài liệu Nghiên cứu về các loại vi xử lý của hãng INTEL, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ối ghép trong hệ vi xử lý (INTEL)
ChươngII: Các bộ vi xử lý của hãng INTEL
Kết Luận : Sự phát triển Vi xử lý đã tác động đến công ngệ thông tin ngày càng phát triển
Chương I : Bộ vi xử lý của hãng Intel
I- Định nghĩa hệ vi xử lý (VXL)
1- Định nghĩa:
Hệ vi xử lý là một hệ thống số được xây dựng trên cơ sở của bộ VXL. Như vậy định nghĩa gồm 2 phần rõ rệt .
Là một hệ thống số cho nên tín hiệu làm việc là do tín hiệu số (nhận hai giá trị 0 và 1) và hoạt động trên cơ sở của một hệ thống số.
Bộ VXL được cấu tạo là một vi mạch số mật độ cực lớn làm việc theo chương trình, tức là theo nguyên tắc nhận lệnh từ bên ngoàI và thực hiện lệnh.
2- Sự phát triển của kỹ thuật VXL:
Có thể nói sự phát triển của kỹ thuật VXL gắn liền với sự phát triển của bộ VXL. ở đây chúng ta nghiên cứu chủ yếu là các bộ VXL của hãng Intel, là hãng sản xuất bộ VXL đầu tiên và cũng là hãng có họ VXL khá phong phú. Ngoài ra cũng còn kể các hãng khác mà họ MP cũng rất thông dụng trên thị trường của ta là các hãng Motorola hay Zilog.
Sự phát triển của bộ VXL từ các bộ VXL sơ khai 8bit sử dụng dể thiết kế trên các máy tính ( quả táo 2 ) với tập lệnh và chức năng đơn giản. Đến nay đã tạo nên những bộ VXL có chức năng cực kỳ mạnh có các tệp lệnh Ris và Cis đan xen. Có các chức năng bộ nhớ hiệu quả và tốc độ thực hiện rất lớn.
Sự phát triển của bộ VXL đã dần dần đẩy gần ranh giới của các hệ máy tính mini, vừa và nhỏ.
II- Cấu trúc bộ VXL 8086/8088:
Các thông số đặc trưng.
Là bộ VXL thuộc thế hệ thứ 3. Bộ VXL 8086 và 8088 thực chất là giống nhau, điều là bộ VXL 16 bit của Intel. Sự khác nhau cơ bản giữa bộ VXL 8086 và 8088 là các phân số liệu đưa ra ngoài. MP 8088 truyền số liệu từ Bus trong ra ngoài hay ngược lại thông qua Bus số liệu 8 bit, trong khi đó 8086 có thể truyền 8bit hay 16bit. Cả hai co bộ VXL có các tính chất đặc trưng:
Được đóng trong vỏ 40 chân
Nguồn nuôi : 5;8 hay 10 Mhz
Có khả năng xử lý dữ liệu 8 bit hay 16 bit
Bus dữ liệu bên trong là 16bit.
Bus dữ liệu ngoài là 8bit của 8088 và 16bit của 8068. Đây là điểm khác nhau cơ bản nhất của hai be vi xử lý này .
Bus địa chỉ, chỉ có Bus ngoài , là 20bit. Bộ VXL sử dụng cả 20bit để địa chỉ hoá bộ nhớ, do đó có khả năng địa chỉ hoá tối đa là 1Mb nhớ. Với cổng vào/ra, bộ VXL sử dụng 8bit địa chỉ trong chế độ trực tiếp và 16bit trong chế độ gián tiếp.
Có lệnh nhân chia và xử lý chuỗi
Có khả năng làm việc song song giữa các đơn vị điều khiển Bus và đơn vị xử lý.
Có cả hai bộ VXL có thể làm việc ở hao chế độ, có thể chọn bằng giắc cắm.
ở chế độ tối thiểu (Mini) các tín hiệu điều khiển được tạo trực tiếp từ CPU và được đưa ra từ Bus hệ thống. Còn ở chế độ mở rộng , CPU giửi tín hiệu đến bộ điều khiển Bus – 8228. Bộ điều khiển Bus tạo ra tín hiệu điều khiển ra Bus hệ thống .
Cấu trúc bên trong(hình vẽ 32)
Sơ đồ khối của bộ VXL 8086 . Nó được tạo thành từ 2 đơn vị chính: Đơn vị sao chép nối Bus Biu (Bus interface Unit), và đơn vị thực when EU. Cả hai đơn vị này có khả năng làm việc song song đồng thời, do đó tốc độ làm việc của hệ tăng lên rất nhiều.
Đơn vị thực hiện EU của 8086 và 8088 giống nhau bao gồm các phần: Khối ALU và thanh cờ ghi chung. Nhiệm vụ của EU là nhận lệnh từ hàng đợi lệnh trong BIU, giải mã và điều khiển thực hiện lệnh. Tất cả các đường dữ liệu bên trong là 16 bit.
Đơn vị EU không nối trực tiếp với thế giới bên ngoài. Nó nhận lệnh và thâm nhập bộ nhớ hay thiêts bị ngoại vi thông qua BIU. BIU có nhiệm vụ: nhận lệnh từ bộ nhớ để xếp vào hàng đợi lệnh; thực hiện tất cả các thao tác với Bus; và tạo địa chỉ vật lý từ địa chỉ logic. Khoảng thời gian BIU thâm nhập ra ngoài để thực hiện đọc bộ nhớ(MEMR) hay ghi bộ nhớ (MEMW) hoặc đọc vao/ra (IORD) hay ghi vao/ra (IOWR) được gọi là một chu kỳ thâm nhập Bus (gọi tắt là một chu kỳ Bus).
Việc nhận lệnh trong BIU và việc thực hiện trong EU có thể được tiến hành song song làm tăng đáng kể tốc độ làm việc trong hệ 16bit.
Tổ chức bên trong của EU:
Các thanh ghi chung(hay còn gọi là các thanh ghi dữ liệu) bao gồm các thanh ghi đa năng, các thanh ghi chỉ số và cơ sở.
Các thanh ghi đa năng được dùng trong toán hạng trong hầu hết các lệnh và dùng lưu trữ tạm các kết quả.
Tổ chức bên trong của BIU:
- Dẫy chứa lệnh hay là hàng đợi lệnh , là nơi lưu trữ tạm thời cá byte lệnh sẽ được đưa vào thực hiện trong lệnh EU. Dãy chứa lệnh là một bộ nhớ FIFO. bộ VXL 8088 có dãy chứa lệnh rộng 4 byte và 8086 có dãy chứa lệnh là 6 byte.
- Các thanh ghi đoạn và con trỏ lệnh
Bộ VXL 8086/8088 có 4 thanh ghi đoặn là 16bit là: Thanh ghi đoặn mã lệnh CSR, thanh ghi đoặn dữ liệu DSR, thanh ghi đoặn ngăn xếp SSR và thanh ghi đoặn phụ ESR. Các thanh ghi đoặn được dùng để chứa địa chỉ segment (còn gọi là địa chỉ cơ sở hay địa chỉ nền ) của đoặn hay trong chương trình đang thực hiện. Một chương trình có thể làm việc tối đa là 4 đoặn bộ nhớ tương ứng với 4 thanh ghi đoặn. Các thanh ghi đoặn được địa chỉ hoá bằng 2 bit địa chỉ.
- Khối điều khiển Bus:
Đơn vị điều khiển Bus thực hiện các thao tác ghép nối CPU với Bus chung như: Nối ghép và nối phối hợp Bus dữ liệu ngoài với Bus nội bộ của CPU . Tiếp nhận các tín hiệu điều khiển từ khối EU để tạo ra các tín hiệu trên Bus ngoài thực hiện lệnh. Ngoài ra còn điều khiển tạo ra địa chỉ thực 20 bit thâm nhập bộ nhớ.
Chức năng chân tín hiệu:
Điểm khác nhau của 8088 là có 8 bit dữ liệu và các bit BHE/S7 được thay bằng SS0, còn M/IO được thay bằng IO/M
Các chân CPU có thể gộp lại theo chức năng của tín hiệu.
Các chế đọ dùng chung cho cả chế đọ Min và Max
- Các đường nguồn nuôi . Các chân 1 và 20 nối đất. Chân 40 nối +5V.
- Các đường địa chỉ dữ liệu. Là các đường tín hiệu 3 trạng thái, mức tích cực dương, gồm các chân:
III- Quản lý bộ nhớ vào/ra:
1- Tổ chức và phân chia bộ nhớ :
Bộ VXL 8086/8088 sử dụng 20 bit địa chỉ bộ nhớ và có thể địa chỉ hoá bộ được không gian nhớ là 1Mb. Không gian nhớ được chia thành các đoặn, mỗi đoặn là một đơn vị luân lý gồm các ô nhứ liên tiếp, độc lập có thể định vị tách rời và có thể dài tố đa đến 64 Kbytes.
Thường người ta tổ chức bộ nhớ cho các hệ vi xử lý đến các đơn vị nhỏ nhất là byte. Với hệ vi xử lý 8086/8088, bộ nhớ được tổ chức để có khả năng thâm nhập đến từng byte(8 bit) hay word (16bit) trong không gian nhớ.
2- Phương pháp quản lý bộ nhớ:
Bộ VXL 8086/8088 phân chia và quản lý vùng nhớ theo từng đoặn và ở chế độ địa chỉ thực. Một chương trình có thể chiếm tối đa đến 4 đoặn bộ nhớ
Đoạn lệnh và mã vùng bộ nhớ để chứa các lệnh của chương trình
Đoặn dữ liệu và vùng bộ nhớ để chứa dữ liệu
Đoặn ngăn xếp là vùng bộ nhớ để chứa thông tin của dữ liệu hay trạng thái
Đoạn dữ liệu phụ là vùng bộ nhớ để chứa dữ liệu khi chương trình cần 2 đoạn dữ liệu
Để quản lý mỗi đoặn bộ VXL sử dụng 2 giá trị 16bit là segment: offset, còn được gọi là địa chỉ luân lý. Trong đó segment là giá trị của thanh ghi đoặn, còn offset được xác định từng trường hợp cụ thể. Bộ tạo địa chỉ thực tạo ra địa chỉ vật lý từ địa chỉ luân lý này.
Để tính địa chỉ vật lý, bộ tạo địa chỉ thực hiện:
Địa chỉ vật lý = segment x16 + offset
3- Quản lý vào/ra:
8086 và 8088 quản lý vào/ra địa chỉ tách biệt (dùng các lệnh IN và OUT) là giống nhau trong trường hợp:
- Nếu là địa chỉ trực tiếp, nó sử dụng 8bit địa chỉ thấp A0 – A7 để địa chỉ vào/ra. Không gian vào ra trong trường hợp này là 256 cổng vào ra
- Nếu là địa chỉ gián tiếp, nó sử dụng 16bit địa chỉ thấp A0 – A15 để địa chỉ vào/ra. Không gian vào ra là 64k cổng vào/ra
IV- Tập lệnh:
1- Các chế độ địa chỉ:
Một bộ VXL có thể có nhiều chế độ địa chỉ, nó được xác định khi chế tạo. Bộ VXL 8086/8088 có các chế độ địa chỉ cơ bản sau:
1.1- Chế độ địa chỉ thanh ghi:
Toán hạng là địa chỉ ghi trong CPU và thao tác được thực hiện ngay trong CPUvới các thanh ghi chỉ trong lệnh, do đó tốc độ thực hiện cao
Ví dụ: MOV AX, BX; BX --> AX
Hay ADD CL, BL; CL + BL --> CL
1.2- Chế độ địa chỉ tức thì:
Toán hạng là một hằng số được cho trong lệnh, còn toán hạng kia là thanh ghi hay ô nhớ. Thao tác của lệnh là trực tiếp của thanh ghi hay ô nhớ đó với hằng số đó
Ví dụ MOV AX, 0001h; 0001h --> AX
Hay ADD CL, 0Ah ; CL + 0Ah --> CL
1.3- Chế độ địa chỉ bộ nhớ:
Toán hạng là một ô nhớ (byte hay word). Thao tác của lệnh là thực hiện với ô nhớ đó. Tuy nhiên tuỳ theo phương pháp xác định địa chỉ ô nhớ, chế độ địa chỉ bộ nhớ có thể được chia thành các loại là:
Chế độ địa chỉ trực tiếp:
Trong chế độ này toán hạng là ô nhớ mà địa chỉ offset của nó là một hằng địa chỉ 16bit hay một nhãn cho trực tiếp trong lệnh
Ví dụ MOV AL, {1234}
Hay MOV B, CX ;B là biến bộ nhớ đã được khai báo
b- Chế độ địa chỉ gián tiếp qua thanh ghi:
Trong chế độ này, địa chỉ offset của ô nhớ được chứa trong thanh ghi được cho trong lệnh.
Ví dụ MOV AX, {BX}
Hay ADD AL, {SI}
c- Chế độ địa chỉ cơ sở:
Trong chế độ này, địa chỉ offset của ô nhớ được xác định bằng cách cộng nội dung bằng thanh ghi cơ sở (BX hoặc BP) cho trong lệnh vớ giá trị dịch chuyển
Giá trị dịch chuyển có thể là một hằng, một biến hay tổng của hằng với biến
Ví dụ MOV CX, {BX} + 10
Hay MOV CX, {BX + 10}
d- Chế độ địa chỉ tương đối chỉ số:
Trong chế độ địa chỉ này, địa chi offset được xác định bằng cách cộng nội dung thanh ghi chỉ số (SI hoặc DI) cho trong lệnh với giá trị dịch chuyển
Ví dụ MOV AX, {SI} + 10
Hay MOV AX, {SI + 10}
e- Chế độ địa chỉ tương đối chỉ số cơ sở:
Là sự kết hợp hai địa chỉ trên. Khi đó offset của ô nhớ được xác định bằng phép cộng của cả nội dung thanh ghi cơ sở với cả thanh ghi chỉ số. Nếu có thêm giá trị dịch chuyển, thì đó là chế độ địa chỉ tương đối chỉ số cơ sở
Ví dụ MOV AX,{BX}{SI} + 8
Hay MOV CL, {PD +DI +5}
Phương pháp ngầm định thanh ghi đoặn
Đó là những thanh ghi đoặn đã được ngầm định đối với những offset được cho trong lệnh khi xác định địa chỉ ô nhớ
Ngoài ra còn có các cặp tương ứng luôn đi với nhau:
- Để xác định địa chỉ byte lệnh ta dùng CS:IP
- Để xác định địa chỉ ngăn xếp ta dung SS:PP khi thao tác ngăn xếp
- Thanh ghi đoặn ES ngầm định cho ID khi dùng các lệnh thao tác chuổi
Muốn loại bỏ các tổ hợp ngầm định nói trên khi viết lệnh ta phải ghi rõ trên thanh ghi đoặn sẽ dùng để tính địa chỉ theo quy cách:
Ví dụ: MOV AL, ES:{BX}
Khi thực hiện lệnh này, nội dung của ô nhớ trong đoặn ES và có địa chỉ offset trong BX được đưa vào thanh ghi AL
Ta có bảng sau:
Chế độ địa chỉ
Toán hạng
T/G đoặn ngầm định
Trực tiếp
[offset]
DS
Gián tiếp thanh ghi
[BX]
{SI}
{DI}
DS
DS
DS
Tương đối cỏ sở
{BX} + Disp
{BP} + Disp
DS
SS
Tương đối chỉ số
{SI} + Disp
{DI} + Disp
DS
DS
Tương đối chỉ số cỏ sở
{BX}+{DI}+ Disp
{BX}+{SI}+ Disp
{BP}+{DI}+ Disp
{BP}+{SI}+ Disp
DS
DS
SS
SS
Bảng các thanh ghi đoặn ngầm định trong các chế độ địa chỉ
2- Phương pháp mã hoá lệnh:
Một lệnh của bộ VXL 8086/8088 có độ dài từ 1 đến 5byte tuỳ theo mỗi lệnh, nhưng được đánh số thứ tự từ 1 đến 6. ý nghĩa của byte lệnh trên như sau:
Byte1 byte2 byte3 byte4 byte5 byte6
Mã lệnh
Trợ giúp
Dữ liệu
Dữ liệu
Dữ liệu
Dữ liệu
Dạng hình tổng quát của lệnh 8086/8088
- Byte đầu tiên chứa mã lệnh, xác định thao tác của lệnh. Với bất kỳ lệnh nào, byte mã lệnh đều có mặt.
- Nếu lệnh cần phải xác định toán hạng thì có mặt byte2. Byte thêm vào để giúp byte1 xác định toán hạng cho lệnh.
- Các byte còn lại là các byte thứ 3, 4, 5, 6 để chứa dữ liệu cho lệnh. Tuỳ theo dữ liệu cho trong lệnh mà sẽ xuất hiện các byte này khi dịch. Nếu lệnh cần dữ liệu là byte thì có mặt byte3. Nếu là word hay hằng địa chỉ thì sẽ thêm byte3 và byte4. Còn nếu cần thay đổi hằng địa chỉ cả offset va cả segment thì các byte 3, 4, 5 đều có mặt.
3- Giới thiệu tệp lệnh của 8086/8088:
Khái niệm tệp lệnh của 8086/8088
Tệp lệnh của 8086 và 8088 hoàn toàn giống hệt nhau và bao trùm khả năng của họ 808/8085 ngoài ra còn có khả năng cho phép như sau
Nhân chia nhị phân có dấu và không dấu
- Di chuyển quét và so sánh chuổi
- Kiểm tra bit
- Phát ra ngắt quảng bằng phần mềm
3.1- Nhóm trao đổi dữ liệu:
a- Trao đổi dữ liệu trong CPUvà CPU với M
+ Lệnh MOV - move
Cú pháp: MOV dest, source ; source --> dest
Khi lệnh này thực hiện thì toán hạng nguồn được chuyển vào đích
Không thể chuyển thông tin trực tếp giữa 2 ô nhớ
Ví dụ: khi chuyển số liệu từ MEM1 sang MEM2 ta phải thực hiện
MOV SI, MEM1
MOV MEM2, AL
+ Lệnh LEA – load affective address
Cú pháp: LEA dest, source ; source --> dest
Khi lệnh này thực hiện thì địa chỉ offset của ô nhớ được đưa vào thanh ghi
Ví dụ: Nếu B là biến bộ nhớ đã được khai báo thì lệnh LEA BX, B sẽ nạp địa chỉ offset B vào thanh ghi BX hay LEA CX, [BX] [DI]; địa chỉ hiệu dụng EA= BX+DI-->CX
+ Lệnh LDS – Load regeste and DS with words from memore
Cú pháp LDS dest, source ; (source) --> dest, (source + 2) -->DS
Lệnh thực hiện nạp words thấp của ô nhớ vào thanh ghi đích và word cao và DS.
Ví dụ: Giả sử HERE là một biến word, khi đó ta dùng
LDS BX, HERE-FAR = MOV BX, HERE
MOV AX, HERE + 2
MOV DX, AX
+ Lệnh LES - Load regeste and ES with words from memore
Cú pháp: LES dest, source ; (source) --> dest, (source + 2) -->ES
Lệnh thực hiện nạp word thấp ô nhớ vào thanh ghi đích và word cao vào ES
+ lệnh XCHG – exchange 2 operands
Cú pháp: XCHG dest, source; dest source
Lệnh thưc hiện trao đổi giá trị cuả đích với nguồn và ngược lại
+ Lệnh XLAT
Cú pháp: XLAT; (AL + BX) -->AL lệnh không có toán hạng
b- Các lệnh thao tác ngăn xếp:
+ Lệnh PUSH – push word on the stack
Cú pháp: PUSH source ;SP-2-->SP, source-->(SP)
Trong đó, nguồn là thanh ghi dữ liệu, thanh ghi đoặn (trừ CS) hay ô nhớ 16bit tìm theo các chế độ địa chỉ khác nhau
+ Lệnh PUSHF – push flag register on the stack
Cú pháp: PUSHF SP-2-->SP, FP-->(SP)
+ Lệnh POP – pop word form top of stack
Cú pháp: POP dest; (SP) -->dest, SP + 2-->SP
c- Các lệnh thao tác với cổng vào/ra:
+ Lệnh In – input data from port
Cú pháp có 2 dạng: In Acc, port; Acc <--(port)
Hay In Acc, DX; Acc <--(DX)
3.2 - Nhóm lệnh số học, logic, và dịch, vòng quay:
Các lệnh số học
Dạng dữ liệu
- Là các số nhị phân 8/16bit, có dấu hay không có dấu
- Không dấu: 0 - 255 (8bit), 0 – 65545 (16bit)
Có dấu: -128 --> 127 (8bit), -32768 -- >32767 (16bit)
- Số thập phân BCD: nén/không
Các lệnh công
+ Lệnh công: ADD
Không nhớ ADD dest, source; dest + source -- > dest
Cộng có nhớ ADC dest, source; dest + source + CY -- > dest
Các lệnh trừ
- Lệnh SUB
Không mhớ SUB dest, sourcce; dest – source -- > dest
Cộng có nhớ SBB dest, source; dest – source – CY -- > dest
Các lệnh tăng hay giảm và so sánh
- Các lệnh tăng giảm: INC dest; dest + 1 -- > dest
DEC dest; dest + 1-- > dest
- Lệnh lấy bù hai NEG dest; - dest -- > dest
- Lệnh so sánh CMP dest, source; dest – source
Các lệnh nhân
MUL source; nhân không dấu
IMUL source; nhân có dấu
- Nhân byte :AL * source = kết quả 16bit
- Nhân word: AX * source = kết quả 32bit
Các lệnh chia
DIR source; Chia không dấu
Và IDIV source; Chia có dấu
- Chia byte: AX/source. Kết quả phép chia là 1byte
- Chia word: DX/source. Kết quả phép chia là 1word
b- Lệnh luân lý:
Là các lệnh thực hiện thao tác bit gồm các lệnh thực hiện các phép logic
- Lệnh và: AND dest, source; dest source -- > dest
- Lệnh hoặc: OR dest, source; dest source -- > dest
- Lệnh cộng mdul2: XOR dest, source; dest ' source -- > dest
- Lệnh bù NOT dest; dest -- >dest
- Lệnh kiểm tra TEST dest, source; dest – source
c. Lệnh dịch và vòng quay
Các lệnh dịch
- Dịch trái: SAL/SHL dest
SAL/SHL dest, CL
- Dịch phải: SAR/SHR dest
SAR/SHR dest
Dest CF dest CF
Lệnh SHR Lệnh SAR
Tương tự lệnh SAR là phải dịch số học, SHR là dịch phải logic
Các lệnh quay vòng
- Các lệnh quay không qua CF
ROL/ROR dest
ROL/ROR dest, CL
CF dest
- Các lệnh vòng quay trái hoặc phải qua cờ CF
RCL/RCR dest
RCL/RCR dest, CL
Quay nhiều bit cũnglà quay 1 bit nhiều lần
Dest CF
V- Nguyên Lý Hoạt Động
1- Các chu kỳ Bus của 8086/8088
Do sự làm việc của 2 khối BIU và EU trong bộ VXL được tiến hành song song, cho nên thời gian thâm nhập cho một chu kỳ Bus của bộ VXL 8086/8088 đều giống nhau và đều tốn 4 chu kỳ xung nhịp. Trương hợp khi sử dụng bộ nhớ hay vào ra có tốc độ chậm, việc xen vào 1 hay nhiều chu kỳ đợi là tuỳ từng trường hợp cụ thể
Các chu kỳ đọc và viết của bộ nhớ và IO được phân biệt nhờ tín hiệu IO/M.
Trong các chu kỳ đọc và viết ở chu kỳ xung nhịp đầu tiên T1, bộ VXL đưa ra xung chốt ALE, các tín hiệu địa chỉ, trạng thái được chốt vào mạch chốt ngoài tại sườn xuống của xung. Tín hiệu IO/M cũng được đưa ra đầu ra trong chu kỳ xung nhịp này.
Tín hiệu RD hay WR xuất hiện khi ở chu kỳ xung nhịp T3 và sườn lên của xung sẽ ghi nhận thao tác ghi dữ liệu vào CPU
T1 T2 T3 Tw T4 T1 T2 T3 Tw T4 T1
CK
ALE
A16/s3-A19/s6
IO/M
Hoạt động trong trạng thái chạy chương trình:
2.1. Các quá trìh nhận lệnh, giải mã và thực hiện lệnh:
Có thể xác định llà một chu kỳ lệnh bao gồm: Nhận lệnh, giải mã lệnh và thực hiện lệnh. Trong bộ VXL 8086/8088 thì quá trình nhận lệnh được thực hiện qua BIU và được tiến hành song song với các quá trình giải mã và thực hiện lệnh trong EU.
a- Quá trình nhận lệnh được BIU tiến hành như sau: trong quá trình làm việc, BIU sẽ kiểm tra Bus rỗi và hàng đợi lệnh còn trống thì nó sẽ thực hiện một chu kỳ Bus để đọc bộ nhớ.
b- Giãi mã lệnh: Byte mã lệnh được đưa ra từ hàng đợi lệnh tới điều khiển EU và được giãi mã. Nếu là lệnh nhiều byte thì các byte dữ liệu cũng được đưa vào EU
c- Thực hiện lệnh:
Nếu lệnh được thực hiện bên trong thì EU tổ chức thựcc hiện.
Nếu lệnh cần thâm nhập bên ngoài thì EU gửi các thông tin đến BIU và Bus thực hiện chu kỳ Bus để thực hiện lệnh.
2.2- Hoạt động:
Hoạt động của bộ VXL để thực hiện chương trình là quá trình để thực hiện liên tiếp các chu kỳ lệnh. Đây là hoạt động chủ yếu của bộ VXL trong toàn bộ thời gian làm việc ngoại trừ một số khoảng thời gian rất ngắn khi bộ VXL chuyển trạng thái do ngắt, hay tạm thời dừng hoạt động chờ tín hiệu bên ngoài.
Khi RESET hay bắt đầu được cấp nguồn 8086/8088 sẽ nạp cho CS và IP một giá trị cố định (CS:IP=FFFFh0) chạy chương trình được thực hiện từ vị trí này và bắt đầu bằng 1 lệnh nhảy về chương trình khởi động. Chương trình khởi động của bộ VXL 8086/8088 theo lưu đồ sau:
Nạp thanh ghi và con trỏ ngăn xếp
Nạp chương trình và số liệu vào bộ nhớ
Khởi động các mạch ngoại vi
Cho phép ngắt
Nạp thanh ghi cờ F
Nhảy đến chương trình chính
3- Hoạt động trong trạng thái ngắt:
3.1- Cấu trúc của 8086/8088
Ngắt là việc CPU dừng phục vụ chạy chương trình chính để chuyển sang phục vụ một chương trình con để thực hiện mọtt chức năng nào đó khi một yêu cầu ngắt. Và sau khi thực hiện xong chương trình con xử lý ngắt đó thì CPU quay về phục vụ tiếp cho chương trình chính quay tại điểm bị ngắt.
Cấu trúc của 8086/8088 đều giống ngắt của các bộ VXL 286, 386,… của INTEL, bao gồm:
Nhóm các ngắt cứng:
+ Ngắt không che được NMI (non mask interrutpt) là ngắt mà CPU phục vụ khi có yêu cầu ngắt, không phục vụ vào cờ IF.
+ Ngắt che được INTR là ngắt mà khi có yêu cầu ngắt CPU chỉ phục vụ khi cờ IF=1
- Nhóm các ngắt mềm:
Là ngắt khi CPU thực hiện lệnh ngắt INT n. trong đó n là số hiệu ngắt nằm trong khoảng thừ 00-FFh
- Nhóm ngoại lệ:
Là các ngắt do lỗi nảy sinh trong quá trình hoạt động của CPU như lỗi do phép chia 0, tràn do tính toán.
3.2- Hoạt động của CPU khi có yêu cầu ngắt INTR
Khi có yêu cầu ngắt đưa đến, nếu được phép bộ VXL sẽ dừng chương trình đang thực hiện để chuyển sang thực hiện chương trình con xử lý ngắt
Đối với ngắt mềm, quảtình ngắt được thực hiện sau khi giải mã lệnh
Đối với ngắt cứng BIU của 8086/8088 kiểm tra yêu cầu ngắt tại chu kỳ xung nhịp thứ hai trong một chu kỳ Bus . Nếu là nắt NMI, CPU sẽ thực hiện quá trình ngắt, còn nếu là ngắt INTR, CPU sẽ thực hiện công việc sau: Kiểm tra cờ IF, nếu IF =1 sẽ gửi INTA thứ nhất thông báo cho ngoại vi, đồng thời thực hiện xong lệnh đang thực hiện rồi mới chuyển sang chu kỳ ngắt.
Chương II
Phối ghép trong hệ vi xử lý (intel)
Phối ghép trong chương này ta nghiên cứu sự phối gép nối bộ VXL, bộ nhớ, các cổng vào/ra thông qua các Bus trong hệ VXL 8086/8088. Khi gép nối phải tuân theo các nguyên tắc sau:
- Các chân điều khiển đầu vào của IC nào không được sử dụng phải được đặt ở mức cao hay mức thấp tuỳ vào từng trường hợp cụ thể.
- Các chân tín hiệu không phải là 3 trạng thái thì không được nối chung đầu ra với nhau
- Việc trao đổi tín hiệu là theo phương thức song song, tức là truyền bao nhiêu bit thì phải có bấy nhiêu đường dây.
- Tại một thời điểm việc truyền tín hiệu trên các Bus chỉ được thực hiện bởi một đơn vị phát, và thường với một đơn vị thu.
I- Tổ chức bộ vi xử lý:
Việc ghép nối bộ VXL 8086/8088 với Bus đều thực hiện cơ bản giống nhau, chỉ khác nhau là 8086 số IC sử dụng làn đệm Bus dữ liệu và làm mạch tách kênh địa chỉ. ở đây chỉ giới thiệu cho 8086, 8088 cũng tương tự
- 8086 cũng như 8088 đều sử dụng phương pháp dòn kênh tín hiệu. Do đó để tách các tín hiệu địa chỉ , người ta dùng các mạch chốt ngoài, thường là thanh ghi chốt.
Để nâng cao khả năng tải của Bus, và cách ly bộ VXL của Bus,. Ta sử dụng các bộ đệm có đầu ra 3 trạng thái
Các bộ VXL 8086 cũng như 8088 đều sử dụng mạch giao động ngoài đùng IC giao động 8284.
- Cả 8086 cũng như 8088 đều làm việc trong chế độ Min hay Max
1- Chế độ Min:
Chế độ Min được sử dụng khi ta nối chân MN/ trực tiếp với nguồn 5v. Khi đó chế độ diều khiển trong chế độ Min được bộ VXL trực tiếp tạo ra và đưa ra Bus tương tự như đối với hệ 8bit
2- Chế độ Max:
Chế độ Max được thực hiện khi chân MN/ được nối đất
Trong chế độ Max, 3 tín hiệu trạng thái S,S,Sđược đưa tới bộ điều khiển Bus 8288 để tạo ra các tín hiệu điều khiển tương ứng với các chế độ cho trong bảng:
S
S
S
Chức năng chu kỳ Bus
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
INTA, báo nhận lệnh ngắt
IORD, đọc cổng IO
IOWR, ghi cổng IO
HALT, dừng
FETCH, nhận lệnh
MEMRD, đọc bộ nhớ
MEMWR, ghi bộ nhớ
PASSIV, thụ động
Các tín hiệu này được đưa đến các mạch điều khiển các khối khác trong hệ 8087, DMAC và các hệ VXL khác gép nối có khả năng chiếm dụng Bus
Các IC phụ trợ:
3.1- IC giao động 8384
Chức năng: Mạch tạo tín hiệu xung nhịp 8284 được dùng để cung cấp xung nhịp với tần số thích hợp cho toàn hệ mà nó còn ảnh hưởng tới việc đồng bộ RESET và tín hiệu READY của CPU.
3.2- Mạch điều khiển Bus 8288
Như đã giươí thiệu ở phần trước vi mạch 8288 là mạch điều khiển Bus. Nó lấy một số tín hiệu điều khiển của CPU và cung cấp tất cả các tín hiệu điều khiển cần tiết cho hệ VXL khi CPU 8088 làm việc ở chế độ Max
II- Tổ chức bộ nhớ:
1- Nguyên lý tổ chức bộ nhớ:
1.1- Nguyên tắc:
Khi tổ chức bộ nhớ cho hệ VXL, cần tuân theo các nguyên tắc sau
- Bộ nhớ bao gồm ROM và RAM. Trong đó miền địa chỉ của ROM phải chứa địa chỉ khởi động, còn RAM thì tuỳ theo từng hệ .
- Bộ nhớ được tổ chức cho phép thâm nhập đến từng byte
- Để thuận tiện cho chương trình, trong cho ROM hay RAM, bộ nhớ phải được thiết kế liên tục. Tính liên tục được thể hiện là 2 byte nhớ cạnh nhau, thì có địa chỉ khác nhau ở một đơn vị
- Bộ nhớ được tổ chức có sự tương ứng 1-1 khi thâm nhập. Tức là khi CPU thâm nhập vào bộ nhớ, thì cứ ứng mỗi địa chỉ có duy nhát 1 byte nhớ được xác định và ngược lại.
- Với 8086 và 8088 thì ROM nằm ở vùng điạ chỉ chứa cao chứa địa chỉ khởi động FFFF0h, còn RAM nằm ở vùng địa chỉ thấp. Nếu có sử dụng ngắt, thì Ram phải bắt đầu từ địa chỉ 00000h để chứa bảng vecto ngắt, còn nếu không sử dụng ngắt thì RAM có thể phân bố tuỳ ý trong vùng chứa địa chỉ thấp .
- Với 80286 trở lên, thì ROM cũng nằm ở vùng địa chỉ cao của một Mbyte nhớ đầu tiên, còn RAM phân bố cả miền địa chỉ thấp và miền địa chỉ cao trên của ROM. Phần RAM trong địa chỉ thập gọi là bộ nhớ cơ sở, còn RAM ở bộ nhớ cao lf phần mở rộng
1.2- Các tín hiệu thâm nhập bộ nhớ:
a- Chế độ Min:
Trong chế độ Min bộ VXL 8086/8088sử dụng các tín hiệu ra thâm nhập bộ nhớ là 20bit tín hiệu địa chỉ A0-A19 xung chốt địa chỉ ALE, các tín hiẹu điều nhớ IO/M, RD, WR. Ngoài ra khi làm việc với bộ nhớ tốc độ thấp còn có tín hiệu vào READY để báo hiệu cho bộ vi xử lý trạng thái sẵn sàng làm việc với bộ nhớ.
b- Chế độ Max:
Trong chế độ Max bộ VXL 8086/8088 sử dụng các tín hiệu ra thâm nhập bộ nhớ là: 20 bit tín hiệu địa chỉ A0-A19 xung chốt địa chỉ ALE, các tín hiệu điều khiển MEMR, MEMW
Ngoài thiết kế phần cứng sử dụng các điều khiển này để tổ chức bộ nhớ cho hệ đảm boả quá trình thâm nhập bộ nhớ theo nguyên tắc trên
2- Tổ chức cho hệ 8088:
Bộ VXL 8086 là bộ VXL 16bit cho nên quá trình thâm nhập bộ nhớ có thể có byte hay word.
Khi thâm nhập byte, ví dụ để thực hiện lệnh MOV AL, [BX], CPU thực hiện chu kỳ Bus đọc 2 byte nhớ. Chu kỳ Bus thứ 1, CPU đưa nội dung BX làm địa chỉ offset để thâm nhập bộ nhớ đọc byte dữ liệu thấp về thanh ghi AL, trong chu kỳ Bus thứ 2 CPU tăng địa chỉ offset trong BX lên 1 để thâm nhập và đọc byte dữ liệu cao về thanh ghi AH
Sau đây là bản đồ bộ nhớ, bao gồm bộ nhớ RAM và bộ nhớ ROM
Bộ nhớ RAM:
A0-A19
A15-12
A11-A8
A7-A14
A3-A0
Số HEX
RAM
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 1
0 0 0 1
0 0 0 1
0 0 0 1
0 0 0 0
0 1 1 1
1 0 0 0
1 1 1 1
0 0 0 0
0 1 1 1
1 0 0 0
11 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
00000h
007FFh
00800h
00FFh
01000h
017FFh
01800h
01FFFh
RAM 1
RAM 2
RAM 3
RAM 4
Bộ nhớ ROM:
A0-A19
A15-12
A11-A8
A7-A14
A3-A0
Số HEX
ROM
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 0
1 1 1 0
1 1 1 0
1 1 1 0
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
0 0 0 0
0 1 1 1
1 0 0 0
1 1 1 1
0 0 0 0
0 1 1 1
1 0 0 0
11 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
FE000h
FE7Fh
FE800h
FEFFFh
FF000h
FF7FFh
FF800h
FFFFFh
RAM 1
ROM 2
ROM 3
ROM 4
3- Tổ chức cho hệ 8086:
Logic nhớ:
Với bộ VXL 8086, Bus dữ liệu ngaòi là 16 bit. Do đó bộ nhớ phải được tổ chức để thâm thập cả 8 bit và cả 16 bit trên Bus dữ liệu.
INTEL đã chế tạo bộ VXL 16 bit loại này là 8086 hay 80286 có khả năng thâm nhập bộ nhớ để trao đổi dữ liệu 8 bit hay 16 bit với địa chỉ bất kỳ các bộ VXL sử dụng tín hiệu A0 và để điều khiểnviệc thâm nhập bộ nhớ. ý nghĩa các bit A0 và khi CPU cần thâm nhập bộ nhớ (hay vào/ra) trong các trường hợp khác nhau được cho trên bảng sau:
A
BHE
ý nghĩa
0
0
1
1
0
1
0
1
Cả hai băng chẵn và lẽ
Băng chẵn
Băng lẽ
Không dùng
ý nghĩa sử dụng cho các bit A0 và BHE
4- Một số mạch phụ trợ:
Các mạch phụ trợ là những mạch không bắt buộc phải có trong thành phần của hệ VXL mà nó chỉ xuất hiện do ý đồ của người thiết kế trong quá trình thiết kế hay trong quá trình sử dụng các loại linh kiện khác nhau như mạch tín hiệu READY, mạch kiểm tra PARITY, mạch các điều khiển CACHE,... Ta chỉ xét một số mạch đơn giản.
4.1- Mạch tạo tín hiệu READY:
Mạch được sử dụng khi hệ thiết kế các IC nhớ có tốc độ chậm. Ví dụ như CPU 8088 – 5 Mc, thì các mạch nhớ phải có thời gian nhập tối đa là 450ns. Nếu muốn ghép EPROM 7232 tốc độ 450ns phải có mạch báo cho CPU xen thêm chu kỳ đợi.
4.2- Mạch kiểm tra Party:
Việc kiểm tra trong bộ nhớ RAM dùng cho máy vi tính và các hệ VXL rất quan trọng, nó đảm bảo tránh sai sót khi thực hiện chương trình.
Có thể có nhiều phương pháp phát hiện lỗi, tuy nhiên người ta thường dùng kiểm tra bit Party. Nội dung của phương pháp này như sau: Khi gửi 1 byte vào bộ nhớ, người ta sẽ chứa 1 bộ phụ để chứa bit party – là bit thứ 9. Khi đọc byte nhớ ra, ta sẽ kiểm tra lại nội dung với bit party đã được ghi trước kia, nếu sai thì có tín hiệu báo lỗi.
- Nếu dùng party chẵn, thì khi tổng số bit 1 trong byte dữ liệulà chẵn ta ghi bit thứ 9 là số 0, trường hợp ngược lại ta ghi 1.
- Nếu dùng party lẽ, thì tổng số 1 bit trong byte dữ liệu là chẵn, ta ghi bit thứ 9 là số 1, trường hợp ngược lại ta ghi 0.
4.3- Bộ điều khiển DRAM:
Khi sử dụng bộ nhớ DRAM cần phải thiết kế mạch làm tươi và dồn kênh địa chỉ. Các mạch nhớ DRAM thương có 2 chế độ làm tươi.
- Làm tươi cả mảng. Khi có mảng được làm tươi gồm 128, 256 hay 512 hàng với chu kỳ làm tươi tương ứng là 2, 4 hay 8ns.
- Làm tươi từng hàng với tốc độ sao cho đảm bảo mỗi phần tử đều được làm tươi trong giưới hạn 15,6 s
Việc làm tươi mỗi phần tử nhớ được thực hiện bằng cách thực hiện thâm nhập vào phần tử nhớ đó. Số lượng bit được làm tươi tuỳ thuộc vào tổ chức bên trong của mỗi bộ nhớ. Thường người ta thiết kế tổ chức làm tươi theo từng hàng là byte (8bit) trong mảng, do đó việc làm tươi được thực hiện nhờ việc đưa ra tín hiệu địa chỉ hàng và xung RAS để chọn ra 1 hàng. Các phần tử trong hàng được chọn, khi đó hàng được làm tươi. Địa chỉ các hàng cần được làm tươi trong 1 mảng nhớ được lấy từ bộ đếm 7, 8 hay 9 bit tuỳ theo kích thước của mảng đó. Nội dung của bộ đếm này được tăng lên sau mỗi chu kỳ làm tươi trong thời gian đã định ta có hình sau:
A0-A7 đ/c hàng đ/c hàng đ/c hàng
Chu kỳ làm tươi dùng tín hiệu RAS
Có một số phương pháp làm tươi. Phương pháp đơn giản nhất là chỉ dùng tín hiệu (RAS – only - Refesh). Trong chu trình này, tín hiệu RAS được đặt ở mức tích cực và địa chỉ hàng đợi được đưa đến, còn RAS bị cấm. Như vậy DRAM được làm tươi lại hàng tương ứng nhưng dữ liệu không được thông và không thể đọc hay ghi vào bộ nhớ. Nhược điểm của phương pháp này là phải có mạch logic điều khiển ngoài hay là chương trình điều khiển cho việc làm tươi. Các phương pháp làm tươi sử dụng tín hiệu là làm tươi RAS sau khi có tín hiệu hay làm tươi ẩn. Các nhịp DRAM được sử dụng là loại hiện đại có sẵn bên trong bộ đệm và logic điều khiển. Khi đó việc làm tươi là công việc nội bộ của DRAM và được hoàn tất trong khi các bộ phận khác của bộ nhớ đang làm việc. kiểu làm tươi này còn được gọi là làm tươi ẩn vì trong lúc làm tươi một vùng nào đó của bộ nhớ, thì bộ VXL có thể ghi/đọc ở vùng nhớ khác.
Với DRA._.
Các file đính kèm theo tài liệu này:
- LVV472.doc