1. Trang chủ
  2. » Luận Văn - Báo Cáo

giớt thiệu về vi điều khiển 8085

88 1K 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 88
Dung lượng 2 MB

Nội dung

Có rất nhiều cách để chỉ vị trí của số liệu như trình bày sau đây: Định địa chỉ trực tiếp bằng thanh ghi: Trong phương pháp này, toán hạng là kí hiệu của các thanh ghi và dữ liệu cần xử

Trang 1

CHƯƠNG I GIỚI THIỆU CHUNG

Trang 2

I LỊCH SỬ PHÁT TRIỂN CỦA VI XỬ LÍ

1 Tóm tắt lịch sử phát triển của vi xử lí:

Sự phát triển của Vi xử lí có thể chia ra thành 5 thế hệ sau:

Thế hệ thứ nhất (1971 - 1973):

Năm 1971, trong khi phát triển các vi mạch cho máy tính cầm tay, INTEL đã cho ra đời máy tính đầu tiên là 4004 (4 bit số liệu) và 8008 (8 bit) đặc điểm chung của Vi xử lí thế hệ này này là:

Độ dài từ thường là 4 bit (có thể dài thêm)

Công nghệ chế tạo PMOS (tốc độ thấp, giá rẻ, khả năng đưa

ra dòng tải nhỏ)

Tốc độ thực hiện lệnh là 1 –10 µs/lệnh với tần số xung đồng hồ là 0,1 – 0,8 MHz

Tập lệnh đơn giản, cần có nhiều vi mạch phụ trợ

Thế hệ thứ 2 (1974 - 1977):

Đại diện cho thế hệ này là các Vi xử lí 8080, 8085 của INTEL và 6800, 6809 của MOTOROLA và Z80 của ZILOG Ở thế hệ này, các Vi xử lí có tập lệnh phong phú hơn, có khả năng phân biệt địa chỉ bộ nhớ với dung lượng 64 Kbyte Một số Vi xử lí có khả năng phân biệt đươc 265 địa chỉ cho các thiết bị ngoại vi Tất cả các Vi xử lí thế hệ này là được sản xuất bằng công nghệ NMOS hoặc CMOS, tốc độ thực hiện lệnh là 1 – 8 µs/lệnh với tần số xung đồng hồ là 1 – 5 MHz

Thế hệ thứ 3 (1978 - 1982):

Đại diện cho thế hệ này là các bộ Vi xử lí 8086/80186/80286 của INTEL và 68000 /68010 của MOTOROLA Điểm ưu việt của các Vi xử lí thế hệ này so với các thế trước đó là chúng có tập lệnh đa dạng với các lệnh nhân, chia và lệnh thao tác với chuỗi kí tự Khả năng phân biệt địa chỉ cho bộ nhớ hoặc các thiết bị ngoại

vi từ 1 Mbyte đến 16 Mbyte Các Vi xử lí thế hệ này được sản xuất bằng công nghệ HMOS và cho phép đạt được tốc độ từ 0,1 µs/lệnh - 1µs/lệnh với tần số đồng hồ là 5 – 10 MHz

Thế hệ thứ 4 (1983 - 1989):

Các bộ Vi xử lí đại diện cho thế hệ này là các vi xử lí 32 bit 80386/80486 và 64 Bit Pentium của INTEL, các vi xử lí 32 Bit 68020/68030/68040/68060 của MOTOROLA Đặc điểm của các Vi xử

lí thế hệ này là Bus địa chỉ đều là 32 Bit và có khả năng làm việc với bộ nhớ ảo Các bộ vi xử lí này đều có bộ quản lí bộ nhớ (MMU)

Trang 3

và nhiều khi có cả các bộ đồng xử lí toán học ở bên trong Các Vi xử lí thế hện này đều được sản xuất bằng công nghệ HCMO.

Thế hệ thứ 5 (1990 - ?):

Trang 4

3 Cấu tạo cơ bản của vi xử lí:

Về cơ bản vi xử lí có thể chia làm 3 khối chính:

 Đơn vị số học – logic (arithmatic – logic unit):

Cơ sở của đơn vị số học - logic là một mạch cộng n bit, mạch cộng này còn được mở rộng thêm để thực hiện các phép xử lí khác nhau như tính số bù bậc hai, phép trừ, các hàm logic

 Các thanh ghi (Registers):

Thanh ghi giống như ô nhớù bên trong vi xử lí, điểm khác biệt

ở chỗ là thanh ghi được phân biệt bằng tên thay vì bằng địa chỉ như ô nhớù Thanh ghi dùng để chứa dữ liệu, các kết quả trung gian của phép tính, số lượng thanh ghi ảnh hưởng rất lớn đến tốc độ xử

lí vì số lần truy xuất bộ nhớ sẽ ít đi Vì vậy, các vi xử lí hiện đại thường có nhiều thanh ghi

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

Là phần quan trọng nhất trong vi xử lí, mọi hoạt động của máy tính được phối hợp một cách chặt chẽ bởi các tín hiệu được tạo ra từ đơn vị điều khiển

Máy tính thi hành tuần tự từng chỉ thị của chương trình cho đến khi có lệnh dừng hoặc thao tác vòng lặp Chương trình điều khiển được chứa trong bộ nhớ dưới dạng tổ hợp các bit gọi là mã đối tượng Nhưng để dễ viết chương trình một chỉ thị thường được viết dưới dạng gợi nhớ

Ở dạng gợi nhớ một chỉ thị được chia làm hai phần:

Mã công tác (operation code): Cho biết thao tác mà vi xử lí phải thực hiện

Toán hạng (operand): Được viết theo sau mã công tác, cho biết vị trí dữ liệu cần phải xử lí Ở dạng mã đối tượng, một chỉ thị được tạo nên từ một hoặc nhiều byte Byte đầu tiên chính là mã công tác Quá trình thi hành một chỉ thị được chia làm hai giai đoạn:

Giai đoạn 1: Nhập mã công tác vào thanh ghi chỉ thị bằng

một chu kì đọc dữ liệu của ô nhớ có nội dung của bộ đếm chương trình

Giai đoạn 2: Thi hành chỉ thị bao gồm cả việc đọc các byte

kế tiếp trong bộ nhớ (đối với các chỉ thị nhiều byte) Sau đó, các toán hạng được xử lí theo qui định của mã công tác

Trong thực tế hai giai đọan thi hành chỉ thị nêu trên lại được chia làm nhiều bước nhỏ gọi là vi chỉ thị Đơn vị điều khiển phát

Trang 5

ra tín hiệu để điều khiển các vi chỉ thị theo một chương trình gọi là chương trình vi mô.

4 Đặc điểm của vi xử lí:

Độ dài từ dữ liệu (Data word): Đây là đặc điểm quan trọng

của vi xử lí, nói lên khả năng trao đổi dữ liệu giữa vi xử lí với các thiết bị khác Hiện nay, có nhiều vi xử lí với độ dài từ dữ liệu từ: 8bit, 16 bit, 32 bit, 64 bit Bảng dưới đây liệt kê một số vi xử lí 8 bit thông dụng:

Ưu điểm của vi xử lí nhiều bit là:

Cùng thời gian truy xuất bộ nhớ thì lượng thông tin thì lượng thông tin truyền đi nhiều hơn

Độ chính xác cũng tăng mà không làm tăng thời gian tính toán

Độ dài từ dữ liệu tăng cũng làm tăng số lượng dây dẫn trong bus dữ liệu Do đó số chân vi xử lí cũng phải nhiều Điền này được giải quyết bằng cách dùng phương pháp đa lộ thời gian (Timer multiplexer), phương pháp này làm giảm vận tốc truyền dữ liệu Dưới đây là một số vi xử lí 16 bit thông dụng:

Độ dài từ địa chỉ: Độ dài từ địa chỉ cho biết số lượng ô nhớ

mà vi xử lí có thể liên hệ trực tiếp, độ dài của các thanh ghi cần thiết cho việc định địa chỉ (thanh ghi địa chỉ, bộ đếm chương trình) cũng phải có kích thước tương ứng Thông thường độ dài từ địa chỉ

ít nhất là 16 bit tương đương 64K địa chỉ

Tập lệnh và các cách đặt địa chỉ : Tập lệnh (Instruction Set)

là tập hợp tất cả các lệnh điều khiển vi xử lí Do cấu tạo phân cứng khác nhau nên mỗi vi xử lí có một tập lệnh khác nhau Số lượng các lệnh cơ sở (không kể khả năng định địa chỉ khác nhau)

Trang 6

đối với vi xử lí 8 bit khoảng từ 50 đến 80, vi xử lí 16 bit còn có thêm các lệnh phức tạp cho đơn vị số học – logic và khối xuất - nhập nên có vào khoảng 90 lệnh.

Cấu tạo một lệnh gồm hai phần: Mã công tác cho biết thao tác mà máy phảùi thực hiện, và toán hạng cho biết vị trí của lệnh cần xử lí Có rất nhiều cách để chỉ vị trí của số liệu như trình bày sau đây:

Định địa chỉ trực tiếp bằng thanh ghi: Trong phương pháp này, toán hạng là kí hiệu của các thanh ghi và dữ liệu cần xử lí là nội dung chứa trong thanh ghi đó

Định địa chỉ gián tiếp bằng thanh ghi: Trong trường hợp này

toán hạng không phải là địa chỉ của số liệu mà chỉ là dấu hiệu cho biết vị trì nơi chứa địa chỉ của số liệu

Định địa chỉ trực tiếp: Toán hạng là địa chỉ của dữ liệu cần

Công nghệ chế tạo linh kiện

Số lượng nguồn cung cấp

Tần số xung đồng hồ

Khả năng truy xuất bộ nhớ: Dung lượng bộ nhớ mà vi xử lí có

thể truy xuất là một phần trong cấu trúc của vi xử lí Các vi xử lí đầu tiên bị giới hạn về khả năng truy xuất bộ nhớ Vi xử lí 4004 có

14 đường địa chỉ nên có thể truy xuất được 214 = 16384 ô nhớ Vi xử

lí 8 bit có 16 đường địa chỉ nên có thể truy xuất được 216 = 65536 ô nhớ Vi xử lí 32 bit như 80386 hay 68020 có thể truy xuất 4G ô nhớ Vi xử lí có khả năng truy xuất bộ nhớ càng lớn nên có thể truy xuất các chương trình lớn Tùy theo ứng dụng cụ thể mà chọn

vi xử lí thích hợp

Tốc độ làm việc của vi xử lí: Tần số xung clock cung cấp cho

vi xử lí làm việc quyết định đến tốc độ làm việc của vi xử lí Vi xử

lí có tốc độ làm việc càng lớn thì khả năng xử lí lệnh càng nhanh Tần số xung clock làm việc của các vi xử lí được cho bởi các nhà chế tạo

Trang 7

Tên Tần số xung clock Chiều dài từ dữ

II CẤU TRÚC PHẦN CỨNG VI XỬ LÍ 8085A

1 GIỚI THIỆU CHUNG

a Các họ vi xử lí 8 bit:

Vi xử lí 8 bit là sự cải tiến của vi xử lí 4 bit Các vi xử lí này

ra đời vào thập niên 70, có rất nhiều hãng chế tạo ra vi xử lí 8 bit như Intel, Motorola, Zilog…

Các vi xử lí của Intel luôn bắt đầu từ các con số 80XX, được tính từ vi xử lí 8 bit trở về sau như 8085, 8086, 80186

Bảng sau đây sẽ liệt kê một số vi xử lí của hãng Intel:

Trang 8

Tên Năm Chiều dài thanh

Chú ý : K = Kilo(210) , M = Mega(220) , T = Tera(240)

b Các đặc tính cơ bản của Vi xử lí 8085A:

Vi xử lí 8085A là một vi xử lí bit kênh N có các đặc tính sau:

 Nguồn nuôi 5v ± 10% ; I max = 170 mA

 Tần số xung đồng hồ 6 Mhz

 Mạch tạo xung đồng hồ được tích hợp, có thể dùng thạch anh,

RC hoặc LC ráp thêm bên ngoài

 Chức năng điều khiển hệ thống được tích hợp trên mạch

 Có 4 vectơ ngắt: Trong đó có một yêu cầu ngắt không che được (Non-markable interrupt) và một tích hợp với 8080A

 Có cổng I/O nối tiếp

 Phần mềm tương thích 100% với 8080A

 Thực hiện được các phép tính số học: Thập phân, nhị phân và số 16 bit

 Định địa chỉ trực tiếp 64 Kbyte ô nhớ

Họ 8085 của hãng Intel là một sản phẩm mới có tập lệnh tương thích 100% với họ 8080A và được thiết kế nhằm tăng tốc độ làm việc của hệ thống dùng 8080 trước đây, nhờ mật độ tích hợp cao của vi mạch cho phép giảm tới mức tối thiểu số lượng linh kiện Trong mạch còn 3 IC cơ bản: 8085(CPU); 8155(RAM) và 8355/8755 (ROM/PROM), 8085 còn kết hợp tất cả các tính năng của vi mạch tạo xung đồng hồ 8224 và vi mạch điều khiển hệ thống 8228

Trang 9

Vi xử lí 8085 có cấu tạo Bus dữ liệu đa lộ, địa chỉ được tách

ra từ 8 bit chung địa chỉ/dữ liệu, chốt địa chỉ bên trong của vi mạch nhớ 8155/8355/8755 cho phép ghép trực tiếp với 8085

2 CẤU TRÚC PHẦN CỨNG 8085:

a Sơ đồ chân:

Hình 2 1: Sơ đồ chân của Vi xử lí 8085

b Chức năng, dạng tín hiệu, trạng thái các chân của

vi xử lí 8085 được liệt kê ở bảng sau:

3 state

Ý nghĩa

1 , 2 X1 , X2 I X1, X2: là hai ngõ vào đặt thạch anh, mạch

RC, LC để xác định tần số xung đồng hồ, có thể đưa xung dao động ngoài vào X1 thay cho thạch anh

CPU đang trong trạng thái Reset, có thể dùng để đặt lại hệ thống

điều khiển bởi lệnh SIM

5 SID I Serial input data: Ngõ vào nối tiếp được

đặt vào bit 7 của bộ tích lũy khi thi hành chỉ thị RIM

được nhận dạng cùng lúc như INTR và có mức ưu tiên cao nhất trong các yêu cầu

A9 A10 A12

A15 A14 A11

X2

SOD TRAP

AD1

X1

RESET SID

RST 7.5 RST 6.5 RST 5.5 INTR INTA\

AD0 AD2 AD3 AD4 AD5 AD6 AD7

VSS A8

A13

S0ALE WR\RD\

S1IO/M\READYRESET IN CLK OUT HLDA HOLDVcc

Trang 10

công dụng chung, ngắt chỉ được lấy mẫu trong suốt chu kì xung đồng hồ cuối cùng của chỉ thị Khi ngắt tác động đến bộ đếm chương trình sẽ không tăng nội dung và tín hiệu INTA\ sẽ được tạo ra trong suốt chu

kì lệnh Restart hoặc CALL có thể được chèn vào để nhảy đến chương trình phục vụ ngắt, INTR được cho phép và ngăn bằng phần mềm Ngắt này mất hiệu lực khi reset và được chấp nhận tức thời sau một ngắt khác

RD\ trong chu kì lệnh sau khi một INTR chấp nhận, tín hiệu này có thể được dùng để tác động vi xử lí ngắt 8259 hoặc các cổng ngắt khác

địa chỉ của bộ nhớ hoặc cổng I/O trong khoảng thời gian chu kì xung đồng hồ đầu tiên và là 8 bit dữ liệu trong khoảng chu kì đồng hồ thứ hai và thứ ba, các chân này ở trạng thái Z cao trong chế độ HOLD và HALT

21-28 A15-A8 0-3 Byte cao địa chỉ của bộ nhớ 8 bit, các chân

này ở trạng thái Z cao trong các chế độ HOLD và HALT

ở mức cao trong khoảng thời gian chu kì đồng hồ đầu tiên (lúc này các chân AD0-AD7 là byte thấp địa chỉ), cho phép địa chỉ được đưa vào chốt địa chỉ trên mạch ngoại

vi, các chân này được treo lên trạng thái Z cao trong chế độ HOLD và HALT

ghi vào bộ nhớ hoặc cổng I/O, dữ liệu được thiết lập lại tại cạnh xuống của xung WR\, chân này treo lên trạng thái Z cao ở chế độ HOLD và HALT

Trang 11

32 RD\ 0-3 Read: Dữ liệu được đọc từ bộ nhớ hoặc cổng

I/O và truyền trên bus dữ liệu, ở trạng thái

Z cao trong chế độ HOLD và HALT

IO/M\

0-3 Ba bit này cho biết trạng thái chu kì máy

kì đọc hoặc ghi có nghĩa là bộ nhớ hoặc thiết bị ngoại vi đã sẵn sàng để gởi hoặc nhận dữ liệu Khi Ready ở mức thấp CPU sẽ chờ trước khi hoàn tất chu kì đọc/ghi

không, xóa cờ cho phép ngắt và FF HOLDA, các cờ và các thanh ghi khác không ảnh hưởng (ngoại trừ thanh ghi chỉ thị), CPU sẽ duy trì trạng thái reset khi chân này ở mức thấp

tần số dao động tại X1

hiệu này để yêu cầu CPU nhường quyền sử dụng bus địa chỉ và dữ liệu , khi nhận được yêu cầu này CPU sẽ nhường bus ngay sau khi hoàn tất chu kì máy hiện hành CPU chỉ có thể chiếm lại bus khi không còn tín hiệu HOLD , khi chấp nhận lệnh HOLD của các đường địa chỉ , dữ liệu , RD\ , WR\ , IO/M\ và ALE được treo lên trạng thái Z cao

38 HLDA O Hold acknowledge : Tín hiệu ra cho biết

CPU đã chấp nhận yêu cầu HOLD và nó sẽ nhường bus trong chu kì đồng hồ kế tiếp , HOLDA về mức thấp khi không còn yêu cầu HOLD , CPU chiếm lại bus trong vòng nữa chu kì đồng hồ sau khi HOLDA ở mức thấp

c Giản đồ thời gian của chu kì bus

Trang 12

Hình 1.2 : Giản đồ của chu kì đọcMỗi chu kì bus tương đương với chu kì máy Mối liên hệ thời gian của các tín hiệu luôn khác nhau đối với mỗi loại chu kì máy

8085 có 4 loại chu kì máy: chu kì READ, chu kì WRITE, chu kì INTERRUPT ACKNOWLEDGE và chu kì DMA

Đối với chu kì đọc, có 3 sự thay đổi: đọc bộ nhớ, đọc IO và đón giải mã lệnh Sơ đồ thời gian đọc bộ nhớ hoặc đọc IO không có trạng thái chờ

Ở chu kì T1 , bus AD7-AD0 đóng vai trò là bus địa chỉ A7-A0, tín hiệu ALE lên mức logic 1 ở chu kì T1 nên tín hiệu ALE dùng để chốt 8 bit địa chỉ thấp A7-A0 vào một IC chốt Tín hiệu RD\ vẫn ở mức logic 1 nên quá trình giao tiếp dữ liệu chưa xảy ra

Ở chu kì T2 và T3 , bus AD7-AD0 đóng vai trò là bus dữ liệu

D7-D0 Tín hiệu ALE lên mức logic 0 nên địa chỉ trong IC vẫn không thay đổi Tín hiệu RD\ xuống mức logic 0 nên bus dữ liệu

D7-D0 chưa đóng vai trò là bus nhận dữ liệu

Trong cả 3 chu kì T1, T2 , T3 các đường địa chỉ A15- A8, IO/M\ , S1 , S2, vẫn ở ổn định trạng thái Trong chu kì bus D7-D0

nhận dữ liệu các bit địa chỉ A7-A0 được chốt trong IC chốt và các bit địa chỉ cao A15-A8 vẫn không thay đổi nên vi xử lí sẽ nhận đúng dữ liệu của ô nhớ cần truy xuất

Vi xử lí đang đọc bộ nhớ I/O chỉ được phân biệt bằng tín hiệu IO/M\ Chu kì máy thực hiện một lệnh gồm 4 đến 6 chu kì xung clock Chu kì thực hiện được chia làm hai quá trình đón lệnh và

Trang 13

thực hiện lệnh Quá trình đón lệnh giống như quá trình đọc bộ nhớ tốn khoảng 3 chu kì xung clock từ T1 đến T3 Quá trình giải mã và thực hiện lệnh tốn thêm 1 đến 3 chu kì xung clock từ T4 đến T6 tùy theo độ phức tạp của lệnh.

Trong trường hợp vi xử lí có tốc độ làm việc cao hơn bộ nhớ khi có dữ liệu truy xuất sẽ bị sai Ở chu kì đọc từ bộ nhớ hay ghi dữ liệu lên bộ nhớ luôn xảy ra ở chu kì T2 và T3 Nếu bộ nhớ có tốc độ làm việc chậm hơn không kịp gởi dữ liệu ra ở 2 chu kì này thì

vi xử lí sẽ nhận một dữ liệu không xác định hay dữ liệu gởi đến bộ nhớ sẽ bị mất Trường hợp này được xử lí bằng cách xen thêm một vài chu kì xung clock vào giữa chu kì T2 và T3 bằng cách dùng chân tín hiệu vào READY Các chu kì xung clock thêm vào gọi là các chu

kì đợi TW

Hình 1.3Giản đồ thời gian của các tín hiệu khi vi xử lí bị tác động bởi các tín hiệu ngắt khác nhau Trong một quá trình ngắt, vi xử lí sẽ mất một vài chu kì để thực hiện yêu cầu ngắt đó tùy thuộc vào lệnh được cung cấp bởi thiết bị ngắt đó

Khi tác động đến INTR , chu kì máy đầu tiên dùng đều nhập lệnh cần thực hiện Do đó, ngắt INTR có cùng giản đồ thời gian ở chu kì T1 và tín hiệu INTA\ được gởi đi thay thế cho tín hiệu RD\ và trạng thái của nó dùng để báo cho thiết bị yêu cầu ngắt biết vi xử lí chấp nhận yêu cầu ngắt này nếu ở mức logic 0

Nếu lệnh ngắt là lệnh Restart thì vi xử lí cần thêm hai chu

kì máy ghi dữ liệu vào bộ nhớ để cất địa chỉ trở về sau khi thực hiện xong chương trình

Khi Vi xử lí làm việc thì cả 3 Bus ddữ liệu, điều khiển, địa chỉ do vi xử lí sử dụng và DMA ở trạng thái ngừng làm việc, khi muốn chuyển dữ liệu DMA sẽ tác động đến ngõ vào HOLD của Vi

Trang 14

xử lí Nếu Vi xử lí chấp nhận thì nó sẽ trả lời bằng cách tác động đến ngõ HLDA ở mức logic 1 và các ngõ ra dữ liệu, địa chỉ và điều khiển ở trạng thái tổng trở cao để không ảnh hưởng đến dữ liệu.

Vi xử lí luôn kiểm tra ngõ vào HOLD, nếu tín hiệu này xuống mức logic 0 thì Vi xử lí sẽ trở lại thực hiện đúng công việc đang xử lí

Hình 1.4

d Sơ đồ khối của vi xử lí:

Cấu trúc của tất cả các vi xử lí đều có các khối cơ bản như ALU, các thanh ghi, khối điều khiển là các mạch logic Để nắm rõ nguyên lí làm việc của vi xử lí cần phải khảo sát nguyên lí kết hợp các khối với nhau để xử lí một chương trình

Sơ đồ khối của vi xử lí sẽ trình bày cấu trúc của một vi xử

lí Mỗi vi xử lí khác nhau đều có cấu trúc khác nhau Ví dụ vi xử

lí 8 bit sẽ khác với vi xử lí 16 bit

Với mỗi vi xử lí đều có một sơ đồ cấu trúc bên trong và được cho trong các sổ tay của nhà chế tạo Sơ đồ cấu trúc ở dạng khối rất tiện lợi và dễ trình bày nguyên lí hoạt động của vi xử lí :

Trang 15

Hình 1.5 :Sơ đồ cấu trúc của Vi xử líTrong sơ đồ khôái của vi xử lí bao gồm các khối chính như sau: Khối ALU, các thanh ghi, khối Control logic Ngoài ra sơ đồ khối còn trình bày các đường truyền tải tín hiệu từ nơi này đến nơi khác và ngoài hệ thống:

e Chức năng từng khối

α .Chức năng của khối ALU :

ALU là khối quan trọng nhất của vi xử lí, khối ALU chứa các mạch điện logic chuyên về xử lí dữ liệu Khối ALU có hai ngõ vào có tên là “IN” chính là các ngõ vào dữ liệu cho ALU xử lí và một ngõ ra có tên là “OUT” chính là ngõ ra kết quả dữ liệu sau khi ALU xử lí dữ liệu xong Dữ liệu trước khi vào ALU được chứa ở trong thanh ghi đệm (Temporarily register) có tên là Temp 1 và Temp 2 Bus dữ liệu bên trong vi xử lí được kết nối với hai ngõ vào

“IN” của ALU thông qua hai thanh ghi đệm Sự kết nối cho phép ALU có thể lấy bất kì dữ liệu nào trên Bus dữ liệu bên trong vi xử

lí Thường thì ALU luôn lấy dữ liệu từ một thanh ghi đặc biệt có

CK READY RD\ WR\ ALE S0 S1 IO/M\ HOLD HLDA RE.IN RE.OUT A8 A15 AD0 AD7

INTR INTA\ RST 5.5 RST 6.5 RST 7.5 TRAP

Trang 16

tên là Accumulator Ngõ ra “OUT” của ALU cho phép ALU có thể gởi kết quả dữ liệu sau khi xử lí xong trên Bus dữ liệu bên trong vi xử lí, do đó thiết bị kết nối với Bus bên trong đều có thể nhận dữ liệu này Thường thì ALU gởi dữ liệu sau khi đã xử lí xong tới thanh ghi Accumulator

Ví dụ khi ALU cộng hai dữ liệu thì một trong hai dữ liệu được chứa trong thanh ghi Accumulator, sau khi phép cộng được thực hiện bởi ALU thì kết quả sẽ gởi trở lại thanh ghi Accumulator và lưu trữ ở thanh ghi này ALU xử lí một dữ liệu hay hai dữ liệu tùy thuộc vào lệnh hay yêu cầu điều khiển, ví dụ khi cộng hai dữ liệu thì ALU sẽ xử lí hai dữ liệu và dùng hai ngõ vào “IN” để nhập dữ liệu , khi tăng một dữ liệu nào đó lên một đơn vị hay lấy bù một dữ liệu, khi đó ALU chỉ xử lí một dữ liệu và chỉ cần một ngõ vào “IN”

Khối ALU có thể thực hiện các phép toán xử lí sau

Subtract Shift right Increment

Như vậy, chức năng chính của khối ALU là làm thay đổi dữ liệu hay chuyên về xử lí dữ liệu nhưng không lưu trữ dữ liệu Để hiểu rõ thêm chức năng đặc biệt của khối ALU cần khảo sát một vi xử lí cụ thể

β Các thanh ghi bên trong của vi xử lí:

Các thanh ghi bên trong có chức năng lưu trữ tạm thời các dữ liệu khi xử lí Trong số các thanh ghi có một vài thanh ghi đặc biệt khi thực hiện các lệnh đặc biệt, các thanh ghi còn lại gọi là các thanh ghi thông dụng Với sơ đồ minh họa ở trên, các thanh ghi thông dụng có tên Reg B, Reg C, Reg D, Reg E Các thanh ghi thông dụng rất hữu dụng cho người lập trình điều này sẽ thấy rõ qua các chương trình Số lượng các thanh ghi thông dụng thay đổi tùy thuộc vào vi xử lí

Số lượng và cách sử dụng các thanh ghi thông dụng tùy thuộc vào cấu trúc của từng vi xử lí, nhưng chúng có một vài điểm cơ bản giống nhau Càng nhiều thanh ghi thông dụng thì vấn đề lập trình đơn giản hơn

Các thanh ghi cơ bản luôn có trong một vi xử lí và Accumulator register(A), Program counter register (PC), Stack pointer(SP), Status register (F), các thanh ghi thông dụng, thanh

Trang 17

ghi lệnh (Instruction register), thanh ghi địa chỉ.

Thanh ghi Accumulator:

Thanh ghi Accumulator là một thanh ghi quan trọng của vi xử lí có chức năng lưu trữ dữ liệu khi tính toán Hầu hết các phép toán số học và các phép toán logic đều xảy ra giữa ALU và Accumulator

Ví dụ khi thực hiện một lệnh cộng một dữ liệu A với một dữ liệu B thì một dữ liệu phải chứa trong thanh ghi Accumulator giả sử là Thanh ghi, sau đó sẽ thực hiện lệnh cộng dữ liệu A (chứa trong Accumulator) với dữ liệu B (có thể chứa trong ô nhớ hoặc trong thanh ghi thông dụng), kết quả của lệnh cộng là dữ liệu C sẽ được đặt trong thanh ghi A thay thế cho dữ liệu A trước đó

Chú ý:

Kết quả sau khi thực hiện ALU thường gởi vào thanh ghi Accumulator làm cho dữ liệu trước đó chứa trong Accumulator sẽ bị mất

Một chức năng quan trọng của thanh ghi Accumulator là truyền dữ liệu từ bộ nhớ hoặc từ các thanh ghi bên trong vi xử lí ra các thiết bị điều khiển bên ngoài thì dữ liệu đó phải chứa trong thanh ghi Accumulator

Thanh ghi Accumulator còn nhiều chức năng quan trọng khác sẽ được thấy rõ qua tập lệnh của một vi xử lí cụ thể, số bit của thanh ghi Accumulator chính là đơn vị đo của vi xử lí, vi xử lí 8 bit thì thanh ghi Accumulator có độ dài 8 bit

Thanh ghi PC trong vi xử lí có chiều dài từ dữ liệu lớn hơn chiều dài từ dữ liệu của vi xử lí Ví dụ đối với các vi xử lí 8 bit có 65.536 ô nhớ thì thanh ghi PC phải có chiều dài là 16 bit để có thể truy xuất từng ô nhớ bắt đầu từ ô nhớ 0 đến ô nhớ thứ 65.535

Nội dung chứa trong thanh ghi PC cũng chính là nội dung chứa trong thanh ghi địa chỉ Trước khi vi xử lí thực hiện một

Trang 18

chương trình thì thanh ghi PC phải được nạp một con số: “Đó chính là địa chỉ của ô nhớ chứa lệnh đầu tiên của chương trình”.

Địa chỉ của lệnh đầu tiên được gởi đến IC nhớ thông qua Bus địa chỉ 16 bit Sau đó bộ nhớ sẽ đặt nội dung của ô nhớ lên Bus dữ liệu Các nội dung này chính là lệnh, quá trình này gọi là đón lệnh từ bộ nhớ Tiếp theo vi xử lí sẽ tự động tăng nội dung của PC để chuẩn bị đón lệnh kế PC chỉ được tăng khi vi xử lí bắt đầu thực hiện lệnh được đón trước đó Một trong những chương trình có thể nạp vào PC một giá trị mới, khi lệnh làm thay đổi PC giá trị mới được thực hiện thì lệnh kế tiếp có thể xảy ra ở một địa chỉ mới

Thanh ghi trạng thái (Status register):

Thanh ghi trạng thái còn được gọi là thanh ghi cờ (Flag register) dùng để lưu trữ kết quả của một số lệnh cần kiểm tra Việc lưu trữ các kết quả kiểm tra cho phép người lập trình thực hiện việc rẽ nhánh trong chương trình Khi chương trình rẽ nhánh, chương trình sẽ bắt đầu tại một vị trí mới Trong nhánh rẽ có điều kiện, chương trình rẽ nhánh chỉ được thực hiện khi kết quả kiểm tra thỏa mãn điều kiện Thanh ghi trạng thái sẽ lưu trữ kết quả kiểm tra này

Các bit thường có một thanh ghi trạng thái được trình bày ở hình vẽ sau:

Chức năng các Bit :

Bit S :(Bit Signal): Bit dấu S = 1 Khi kết quả là số âm

S = 0 Khi kết quả là số dương

Z = 0 Khi kết quả khác khôngBit AC (Bit tràn) AC = 0 Khi phép tính không tràn

AC = 1 Khi phép tính bị tràn lên

Bit P (Parity) :Bit chẳn lẽ P = 0 Khi kết quả là số chẳn

P = 1 Khi kết quả là số lẽBit C (Carry) :Bit nhớ C = 0 Khi kết quả không có số nhớ

C = 1 Khi kết quả có số nhớBit x : Không có ý nghĩa

Các lệnh xảy ra trong thanh ghi thường ảnh hưởng đến thanh ghi trạng thái, ví dụ khi thực hiện một lệnh cộng hai dữ liệu 8 bit, nếu kết quả lớn hơn 111111112 thì bit carry có giá trị là

Trang 19

1, bit carry chứa trong thanh ghi trạng thái Vậy phép cộng làm cho bit carry có giá trị là 1 Ngược lại nếu kết quả của phép cộng có giá trị nhỏ hơn 111111112 thì bit carry có giá trị là 0 Ví dụ lệnh tăng hay giảm giá trị của một thanh ghi, nếu kết quả trong thanh ghi khác 0 thì bit Z bằng 1.

Ý nghiã của các bit trong thanh ghi trạng thái:

1 Carry/ borrow: Là bit carry khi thực hiện một phép cộng có giá trị tùy thuộc vào kết quả của phép cộng Kết quả tràn thì bit carry =1, ngược lại thì carry=0 Là bit borrow khi thực hiện một phép tính trừ: Nếu số bị trừ lớn hơn số trị thì bit borrow = 0, ngược lại thì bit borrow = 1 Bit carry hay bit borrow là 1 bit chỉ được phân biệt khi thực hiện lệnh cụ thể

2 Zero: Bit Z = 1 khi kết quả của phép toán bằng 0, ngược lại bit Z= 0

3 Negative: Bit N = 1 khi bit MSB của thanh ghi có giá trị là 1, ngược lại bit N = 0

4 Intermadiate carry: Giống như bit carry nhưng chỉ có tác dụng đối với phép cộng hay trừ 4 bit thấp

5 Interrupt Flag: Bit IF có giá trị là 1 khi người lập trình muốn cho phép ngắt, ngược lại thì không cho phép ngắt

6 Overflow: Bit này bằng 1 khi bit carry của phép toán cộng với bit dấu của dữ liệu

Parity: Bit này có giá trị là 1 khi kết quả của phép toán là số chẵn, ngược lại thì bit P = 0

Số lượng các bit có trong thanh ghi trạng thái tùy thuộc vào từng vi xử lí Trong một số vi xử lí có thể xóa hoặc đặt các bit trạng thái của thanh ghi trạng thái

Thanh ghi con trỏ ngăn xếp (Stack pointer):

Thanh ghi con trỏ ngăn xếp là một thanh ghi quan trọng của

vi xử lí, độ dài từ dữ liệu thanh ghi SP bằng thanh ghi PC, chức năng của thanh ghi SP gần giống như thanh ghi PC dùng để quản

lí bộ nhớ ngăn xếp khi muốn lưu trữ tạm thời dữ liệu vào ngăn xếp Trong hầu hết các vi xử lí, SP giảm (để chỉ đến ô nhớ tiếp theo trong ngăn xếp) sau khi thực hiện xong lệnh cất dữ liệu vào ngăn xếp Do đó khi được thiết lập giá trị cho thanh ghi SP là địa chỉ cuối cùng của ô nhớ

Stack pointer phải chỉ đến một ô nhớ nào đó do người lập

Trang 20

trình thiết lập, quá trình này gọi là khởi tạo con trỏ ngăn xếp Nếu không khởi tạo, con trỏ ngăn xếp sẽ chỉ đến một ô nhớ ngẫu nhiên nào đó Khi đó lệnh cất dữ liệu vào ngăn xếp có thể ghi đè lên dữ liệu quan trọng khác làm chương trình xử lí sai hoặc SP chỉ đến vùng nhớ không phải vùng nhớ của RAM làm chương trình thực hiện không đúng Tổ chức của ngăn xếp là vào sau ra trước (Last in, first out).

Thanh ghi địa chỉ bộ nhớ:

Mỗi khi vi xử lí truy xuất bộ nhớ thì thanh ghi địa chỉ phải tạo ra đúng địa chỉ mà vi xử lí muốn Ngõ ra của thanh ghi địa chỉ phải được đặt lên Bus địa chỉ 16 bit Bus địa chỉ dùng để lựa chọn

ô nhớ hay lựa chọn một port In/Out

Nội dung của thanh ghi địa chỉ ô nhớ và nội dung của thanh ghi PC là giống nhau khi vi xử lí truy xuất bộ nhớ để đón lệnh, khi lệnh đang được giải mã thì PC tăng để đón lệnh tiếp theo, trong khi đó nội dung của thanh ghi địa chỉ bộ nhớ không tăng trong suốt chu kì thực hiện lệnh, nội dung của thanh ghi địa chỉ phụ thuộc vào lệnh đang thực hiện Nếu lệnh yêu cầu vi xử lí truy xuất bộ nhớ thì thanh ghi địa chỉ bộ nhớ được dùng lần thứ hai trong khi thực hiện lệnh

Trong tất cả các vi xử lí, thanh ghi địa chỉ bộ nhớ bằng thanh ghi PC

Thanh ghi lệnh (Instruction Register):

Thanh ghi lệnh dùng để chứa lệnh vi xử lí đang thực hiện Một chu kì lệnh bao gồm đón lệnh từ bộ nhớ và thực hiện lệnh Đầu tiên là lệnh được đón từ bộ nhớ, sau đóù PC chỉ đến lệnh kế trong bộ nhớ Khi một lệnh được đón có nghĩa là dữ liệu trong ô nhớ đó được chép vào vi xử lí thông qua Bus dữ liệu đến thanh ghi lệnh Tiếp theo lệnh sẽ đượïc thực hiện, trong khi thực hiện lệnh, bộ giải mã lệnh đọc nội dung của thanh ghi lệnh Bộ giải mã sẽ giải mã lệnh để báo cho vi xử lí thực hiện chính xác công việc mà lệnh yêu cầu Chiều dài từ dữ liệu của thanh ghi lệnh tùy thuộc vào từng vi xử lí

Thanh ghi lệnh do vi xử lí sử dụng, người lập trình không sử dụng thanh ghi này

Thanh ghi chứa dữ liệu tạm thời (Temporary data Register):

Thanh ghi lưu trữ dữ liệu tạm thời dùng để ALU thực hiện

Trang 21

các phép toán xử lí dữ liệu Do ALU không có chức năng xử lí dữ liệu nên bất kì dữ liệu nào đến ngõ vào của ALU đều sẽ xuất hiện

ở ngõ ra

Dữ liệu xuất hiện tại ngõ ra của ALU được quyết định bởi lệnh trong chương trình yêu cầu ALU thực hiện ALU sẽ lấy dữ liệu từ Bus dữ liệu bên trong vi xử lí để xử lí dữ liệu, sau đó đặt dữ liệu vừa xử lí xong trở lại Thanh ghi Accumulator, do đó cần phải có thanh ghi lưu trữ dữ liệu tạm thời để ALU thực hiện Người lập trình không được phép sử dụng thanh ghi này Số lượng thanh ghi tùy thuộc vào từng vi xử lí

χ Khối điều khiển logic (Control logic) và khối giải mã (Instruction decode):

Chức năng của khối giải mã lệnh là nhận lệnh từ thanh ghi lệnh sau đó giải mã để gởi tín hiệu điều khiển đến cho khối điều khiển logic

Chức năng của khối điều khiển logic là nhận lệnh hay tín hiệu điều khiển từ bộ giải mã lệnh, sau đó thực hiện đúng yêu cầu của lệnh Khối điều khiển logic được xem là một vi xử lí nhỏ trong

vi xử lí

Các tín hiệu điều khiển của khối điều khiển logic là các tín hiệu điều khiển bộ nhớ, điều khiển các thiết bị ngoại vi, các đường tín hiệu đọc ghi và các tín hiệu điều khiển vi xử lí từ các thiết bị ngoài Các đường tín hiệu này sẽ được trình bày cụ thể trong sơ đồ của từng vi xử lí cụ thể

Ngõ tín hiệu vào quan trọng nhất của khối điều khiển logic là tín hiệu clock cần thiết cho khối điều khiển logic hoạt động Nếu không có tín hiệu clock thì vi xử lí không làm việc Mạch tạo xung clock là các mạch dao động, tín hiệu được đưa đến ngõ vào clock của vi xử lí Có nhiều vi xử lí tích hợp mạch tạo dao động ở bên trong, khi đó chỉ cần thêm thạch anh bên ngoài

δ Bus dữ liệu bên trong vi xử lí (Internal data bus):

Bus dữ liệu dùng để kết nối các thanh ghi bên trong và ALU với nhau, tất cả các dữ liệu điều khiển chuyển trong vi xử lí đều thông qua Bus dữ liệu này Các thanh ghi bên trong có thể nhận dữ liệu từ Bus hay có thể đặt dữ liệu lên Bus nên Bus này là Bus hai chiều Bus dữ liệu bên trong có thể kết nối ra Bus bên ngoài khi vi xử lí cần truy xuất dữ liệu từ bộ nhớ bên ngoài hay các thiết

bị vào/ra Bus dữ liệu bên ngoài cũng là Bus dữ liệu hai chiều vì vi

Trang 22

xử lí có thể nhận dữ liệu từ bên ngoài hay gởi dữ liệu ra.

Để biết trình tự làm việc của Bus dữ liệu bên trong vi xử lí hoạt động như thế nào, hãy cho vi xử lí thực hiện một lệnh cộng hai số nhị phân chứa trong hai thanh ghi: Thanh ghi Accumulator (gọi tắt là A) = 1101 11102 và thanh ghi D = 1101 10102

Trình tự cộng như sau:

Trước khi thực hiện lệnh cộng, nội dung của hai thanh ghi phải chứa hai dữ liệu và hai thanh ghi này có thể đang kết nối với các thiết bị khác Để thực hiện lệnh cộng nội dung hai thanh ghi A và D thì thanh ghi lệnh phải mang đúng mã lệnh của phép cộng này và giả sử lệnh đó là ADD

Dữ liệu của thanh ghi A được đặt lên Bus dữ liệu bên trong vi xử lí, một trong hai thanh ghi lưu trữ dữ liệu tạm thời được kết nối với bus dữ liệu Thanh ghi tạm thời sẽ chép dữ liệu chứa trong thanh ghi A và thanh ghi tạm thời được kết nối với Bus tại thời điểm này

Dữ liệu trong thanh ghi D được kết nối với Bus dữ liệu và thanh ghi tạm thời còn lại cũng được phép kết nối với Bus dữ liệu Thanh ghi tạm thời sẽ chép nội dung thanh ghi D Chỉ có thanh ghi D và thanh ghi tạm thời được kết nối với Bus tại thời điểm này

ALU sẽ cộng trực tiếp hai dữ liệu tại hai ngõ vào Ngõ ra của ALU được kết nối với thanh ghi A, kết quả của phép cộng sẽ được chứa trong thanh ghi A

Sau khi đặt kết quả thanh ghi A và cập nhật sự thay đổi các bit trong thanh ghi trạng thái thì sự kết nối giữa A và ALU chấm dứt Các thanh ghi tạm thời trở lại trạng thái sẵn sàng chờ lệnh tiếp theo

Trang 23

CHƯƠNG II THIẾT KẾ PHẦN CỨNG

Trang 24

I THIẾT KẾ MAINBOARD

1 Thiết kế bộ nhớ

Bộ nhớ là nơi lưu trữ các chương trình do người thiết kế muốn yêu cầu vi xử lí làm việc, bao gồm các chương trình hệ thống, chương trình phụ Các chương trình này được nạp vào ROM nhằm mục đích tránh mất dữ liệu khi mất điện

a.Đặt vấn đề :

Bộ nhớ phải đủ dung lượng để chứa tất cả các chương trình và dữ liệu cần xử lí Bộ nhớ trong máy tính bao gồm 3 IC nhớ là: 2 EPROM và 1 RAM dung lượng của mỗi linh kiện là 8 Kbyte Mỗi

IC chiếm 13 đường địa chỉ từ A0 - A12 Chương trình hệ thống và các chương trình phụ được nạp lần lượt bắt đầu tại địa chỉ 0000H

đến địa chỉ cuối cùng của ROM là 3FFFH Ngoài ra còn có 1 RAM dùng để chuyển dữ liệu từ ROM ra mạch quang báo Do dung lượng của RAM còn hạn chế nên các câu thông báo cần xuất ra Quang báo tương đối không dài

b Thiết kế chi tiết

Kết nối tổng quát Vi xử lí với bộ nhớ :

Vi xử lí và bộ nhớ giao tiếp qua 3 Bus chính là Bus địa chỉ, Bus dữ liệu và Bus điều khiển Sơ đồ kết nối được minh họa bằng hình ảnh dưới đây:

Hình 2 1Hoạt động :

Trang 25

Hoạt động giao tiếp chủ yếu của vi xử lí và bộ nhớ là việc ghi và đọc dữ liệu từ bộ nhớ của vi xử lí Hai hoạt động trên tiến hành theo tuần tự các bước sau :

♦ Hoạt động ghi dữ liệu:

Vi xử lí tạo ra một địa chỉ của ô nhớ cần lưu trữ dữ liệu, sau đó đặt địa chỉ này lên Bus dữ liệu IC giải mã địa chỉ sẽ giúp Vi xử

lí xác định địa chỉ của ô nhớ nào cần lưu trữ dữ liệu

Vi xử lí đặt dữ liệu cần lưu trữ lên bus dữ liệu

Vi xử lí tác động tín hiệu điều khiển lên bus điều khiển, cụ thể là tín hiệu WR\

♦ Hoạt động đọc dữ liệu

Vi xử lí tạo ra một địa chỉ của ô nhớ cần đọc dữ liệu, sau đó đặt địa chỉ lên bus địa chỉ IC giải mã sẽ giúp cho Vi xử lí chọn địa chỉ chính xác

Vi xử lí tác động tín hiệu điều khiển đọc ở bus điều khiển, cụ thể là lệnh RD\

IC nhớ đặt dữ liệu từ ô nhớ đã được chọn lên bus dữ liệu để truyền vào Vi xử lí

Kết nối chi tiết Vi xử lí với bộ nhớ :

Việc kết nối giữa Vi xử lí và bộ nhớ phải nắm rõ các yêu cầu sau:

Vi xử lí 8085 có dung lượng bộ nhớ là 64 Kbyte có địa chỉ từ

0000H - FFFFH (quản lí tất cả 65536 ô nhớ ) Do đó , khi thiết kế thì dung lượng bộ nhớ không quá 64 Kbyte Vì đây là mạch kit điều khiển quang báo nên không cần dung lượng bộ nhớ cao , nên mạch chỉ thiết kế với bộ nhớ có dung lượng là 24 Kbyte bao gồm :

2 EPROM có dung lượng 8 Kbyte/1 IC và một SRAM có dung lượng là 8 Kbyte

Như vậy vùng nhớ 64 kbyte chỉ sử dụng 24 Kbyte đầu tiên có địa chỉ từ 0000H - 5FFFH Trong đó, vùng nhớ của 2 EPROM từ

0000H - 3FFFH, vùng còn lại của SRAM

Sơ đồ kết nối chi tiết: Trang sau

Trang 27

Các chân A12 - A0 của các IC nhớ được đưa lên bus địa chỉ và nối vào chân A12 - A0 của vi xử lí Tuy nhiên Vi xử lí 8085 có chân

AD0 - AD7 được tích hợp giữa các đường địa chỉ từ A7 - A0 và đường dữ liệu D7 - D0 Do đó, để tách các chân này ra thì ta phải dùng đến một IC chốt địa chỉ 74373 Hoạt động chốt địa chỉ này được điều khiển bởi Vi xử lí thông qua các chân ALE và HLDA Ngõ ra của IC 74373 được đưa lên bus địa chỉ để nối vào các đường địa chỉ từ A0 - A7

Bus dữ liệu D7 - D0 của các IC nhớ được nối thẳng đến các chân AD7 - AD0 của Vi xử lí Bus dữ liệu là đường trao đổi dữ liệu giữa Vi xử lí với bộ nhớ và các thiết bị ngoại vi nên có thể xuất nhập tùy vào lệnh điều khiển, do đó Bus dữ liệu thường được gọi là Bus 2 chiều (Bi-directional Bus)

Trong mạch quang báo này, cả hai EPROM đều được dùng để chứa chương trình hệ thống và các chương trình con nên Bus dữ liệu giữa ROM với Vi xử lí là Bus một chiều Bus dữ liệu giữa RAM với Vi xử lí là Bus hai chiều

c Thiết kế mạch giải mã địa chỉ :

Bộ nhớ và Vi xử lí giao tiếp qua 13 đường địa chỉ Để việc truy xuất địa chỉ được chính xác tránh nhầm lẫn thì ta phải thiết kế mạch giải mã địa chỉ

Việc thực hiện giải mã địa chỉ theo tuần tự các bước sau:

♦ Lập bảng đồ địa chỉ

♦ Sơ đồ khối

♦ Sơ đồ mạch

♦ Giải thích

Bản đồ giải mã địa chỉ của bộ nhớ:Trang sau

Trang 28

Như vậy ta thấy rằng các chân A15 - A13 thay đổi ứng với 8 trạng thái ngõ ra Ở đây ta chỉ chọn 3 ngõ ra là 74LS138 là O0, O1

và O2, các ngõ ra còn lại không dùng đến đều được bỏ trống Các ngõ ra này đều được lần lượt nối đền CS\ của EPROM1, EPROM2

và RAM

Tuy nhiên, để 74138 làm việc theo đúng yêu cầu thì ta phải nối chân G1 lên Vcc, còn chân G2\, G3\ xuống mức thấp Để phân biệt được việc giải mã bộ nhớ hay IO thì vi xử lí còn có thêm chân IO/M\ Chân này có hai trạng thái làm việc, khi ở mức logic thấp nghĩa là Vi xử lí yêu cầu việc giải mã kiểu bộ nhớ, còn khi ở mức logic cao nghĩa là Vi xử lí yêu cầu giải mã kiểu IO

Sơ đồ mạch giải mã kiểu bộ nhớ:

Hình 2 3

2 THIẾT KẾ KHỐI GIAO TIẾP XUẤT NHẬP :

Khối IO là bộ phận giao tiếp giữa Vi xử lí với các thiết bị bên ngoài, cụ thể là bàn phím và màn hình quang báo Khối này thực hiện việc xuất hay nhập tùy thuộc vào từ điều khiển do Vi xử lí gởi ra

a Đặt vấn đề:

Mạch quang báo giao tiếp bên ngoài gồm bàn phím và màn hình quang báo (Matrận led), do đó ta dùng hai vi mạch giao tiếp là 8255A với hai chức năng khác nhau:

IC 8255-I dùng để quét phím và IC còn lại dùng để xuất dữ liệu ra Ma trận Led

IC 8255A giao tiếp với Vi xử lí bằng 8 byte cao có địa chỉ từ A8 - A15 Khi được thiết kế làm thiết bị I/O, do đó việc giải mã cũng phức tạp hơn giải mã kiểu bộ nhớ Tương tự như bộ nhớ, IC 8255A cũng có địa chỉ rõ ràng khi vi xử lí cần truy xuất tới

b Thiết kế chi tiết :

Lý thuyết :

Trang 29

IC 8255A thứ nhất được thiết kế kiểu I/O nên IC này giao tiếp với Vi xử lí thông qua 3 bus chính là Bus dữ liệu, Bus điều khiển, Bus địa chỉ Trong đó, Bus địa chỉ dùng từ A15 - A8 của Vi xử

lí, trong đó hai chân A0 , A1 của IC 8255A được nối vào A8 , A9 của

Vi xử lí , các chân còn lại từ A10 - A15 được đưa qua mạch giải mã địa chỉ để chọn đúng IC cần truy xuất

Các đường dữ liệu D7 - D0 cũng được nối trực tiếp AD7 - AD0

của Vi xử lí , đồng thời nối song song với tất cả các bus dữ liệu của bộ nhớ

Vì được thiết kế kiểu I/O nên Bus dữ liệu của IC 8255A là Bus hai chiều , đọc ra hay viết vào đều phụ thuộc vào hai chân RD\ , WR\ giữa Vi xử lí vớ 8255A

IC 8255A giao tiếp với Vi xử lí bằng hai chân A0 , A1 và khi truy xuất I/O thì Vi xử lí sử dụng các đường từ A8 - A15 Như vậy , ngoài hai chân A8 , A9 đã nối vào A0 , A1 thì các chân còn lại từ A10

- A15 sẽ được đưa vào mạch giải mã địa chỉ

Vì chỉ có hai đường địa chỉ nên IC 8255A chỉ sử dụng 4 đường địa chỉ, do đó nhóm thiết kế như sau :

♦ IC 8255A thứ nhất dùng để quét phím có địa chỉ từ 00H - 03H

Trong đó :

Port A có địa chỉ là 00H

Port B có địa chỉ là 01H

Port C có địa chỉ là 02H

Thanh ghi điều khiển có địa chỉ là 03H

Từ điều khiển gởi ra thanh ghi điều khiền của IC này là ;

CW = 92H

♦ IC 8255A thứ hai dùng để quét Ma trận có địa chỉ từ 10H đến

13H

Trong đó :

Port A có địa chỉ là 10H

Port B có địa chỉ là 11H

Port C có địa chỉ là 12H

Thanh ghi điều khiển có địa chỉ là 13H

Từ điều khiển gởi ra thanh ghi điều khiển của IC này là :

CW = 80H

Từ các yêu cầu trên , ta xây dựng bảng đồ địa chỉ như sau :

A15 A14 A13 A12 A11 A10 A9 A8

Trang 30

03 0 0 0 0 0 0 1 18255I

Ba chân A12 - A10 lần lượt nối vào ngõ A , B , C của IC 74LS138

Chân A13 nối vào G2\ của IC 74LS138

Chân A14 và A15 được đưa qua cổng OR , sau đó đầu ra của cổng OR được nối vào chân G2\ của IC 74LS138

Ngõ ra O0 và O1 được nối lần lượt vào CS\ của 8255A thứ nhất và 8255A thứ hai

Sơ đồ mạch cụ thể :

Hình 2.4Hoạt động của mạch như sau :

Khi A12 A11 A10 = 000 thì mạch sẽ chọn IC 8255A thứ nhất , khi đó tùy thuộc vào A9 A8 (nối vào A1A0) mà Vi xử lí sẽ chọn Port nào Để 74LS138 hoạt động giải mã theo đúng yêu cầu thì cả

A13A14A15 = 000H

Khi A10 A11 A12 = 001H thì Vi xử lí sẽ chọn IC 8255A thứ hai

II THIẾT KẾ BÀN PHÍM :

Bàn phím dùng để nhập dữ liệu từ bên ngoài , tùy thuộc vào người sư dụng muốn hiển thị nội dung như thế nào điểm khác biệt giữa mạch quang báo chỉ dùng EPROM và mạch quang báo

Trang 31

điều khiển bằng Kit Vi xử lí là ở bàn phím vì Kit vi xử lí có thể cho phép người sử dụng thay đổi nội dung cần hiển thị dễ dàng bằng cách nhập trực tiếp từ bàn phím Chương trình nhận dạng phím do người lập trình tạo ra và được lưu trữ trong ROM

1 Yêu cầu :

Khi thiết kế bàn phím phải quan tâm tới các yêu cầu sau :

♦ Có kết cấu cơ khí chắc chắn

♦ Các tiếp điểm phải tiếp xúc tốt , nhạy

♦ Phải có khả năng chống dội

♦ Phím nhấn phải rõ ràng , gọn nhẹ

2 Thiết kế cụ thể :

Từ các yêu cầu trên ta thiết kế bàn phím như sau :

Bàn phím được xây dựng dựa trên cơ sở quét hàng và cột , sử dụng IC 8255A thứ nhất (đã trình bày ở phần trước) để giao tiếp với Vi xử lí

Port A của IC 8255A thứ nhất sẽ được dùng làm Port quét hàng (nhập dữ liệu), Port C sẽ được thiết kế quét cột (xuất dữ liệu) Do yêu cầu của mạch nên nhóm thiết kế mạch bao gồm 8 hàng và 7 cột (56 phím)

Sữ dụng phần mềm để chống dội cho các phím

Bàn phím được xây dựng cho bảng chữ cái tiếng Việt và tiếng Anh , sơ đồ phân bố phím như sau :

Hình 4.4Chức năng của các phím đặc biệt :

Trang 32

Phím ENTER (RUN): Cho phép chạy dòng thông báo

Phím LEFT : Xóa một kí tự bên trái dấu nhắc.Backspace : Chèn một kí tự trắng

Phím PRO : Cho phép nhập dữ liệu

3 Sơ đồ mạch nguyên lý bàn phím :Trang sau

Trang 33

Hình 2.5 : Sơ đồ nguyên lý mạch bàn phím của quang báo

Trang 34

Hoạt động của bàn phím :

Trạng thái bình thường của Port A (từ PA0 - PA7) là

111111112 nếu Port C xuất ra một giá trị là 00H , lúc này có một phím được nhấn thì một trong 8 đường của Port A xuống mức logic

0 Hoạt động quét như sau : Đầu tiên Port C sẽ xuất ra giá trị là

00H để quét cột, sau đó đọc vào Port A nhằm kiểm tra xem có phím nào được ấn hay không, nếu một phím được nhấn thì một trong 7 đường của Port A sẽ xuống mức 0 lúc này ta chỉ biết được hàng nào có phím ấn mà thôi

Để xác định chính xác vị trí của phím được ấn thì Port C sẽ xuất dữ liệu để quét cột Tùy vào giá trị cột nào xuống mức thấp mà ta định được vị trí của phím được ấn

III THIẾT KẾ MÀN HÌNH QUANG BÁO

1 Yêu cầu:

Mạch phải hiển thị rõ ràng, các kí tự dịch từng cột

Có khả năng hiển thị chữ tiếng Việt và tiếng Anh

Phải hiển thị đủ 6 kí tự tiếng Việt

2 Thiết kế :

a Đặt vấn đề :

Các LED trong Matrận led có thể sáng riêng lẽ nhau nếu ta đưa tín hiệu điều khiển hàng và cột riêng biệt Mỗi Led có thể sáng nếu ta cấp cho nó một điện áp là 1,7V ÷ 2V với dòng tối đa là

30 mA Vì Ma trận Led có cột hiển thị ở mức cao, hàng mức thấp nên ta cấp điện áp cho cột và hàng dùng để xuất dữ liệu Vì tất cả các cột đều được điều khiển bởi ngõ ra của 74ls164, có dòng ra rất thấp Do đó, để đủ dòng cấp cho các LED sáng bình thường thì ta phải thiết kế thêm mạch khuếch đại công suất cho LED

Sơ đồ mạch cụ thể:

Trang 36

b Hoạt động :

Khi tín hiệu quét cột nhận điện áp 5V làm cho Q1 dẫn bão hòa, lúc đó điện áp 5V qua điện trở RC1 (hạn dòng) sẽ chạy qua LED Nhưng để cho led sáng thì tín hiệu hàng phải xuất ra mức cao khi qua cổng NOT (74LS05) thì sẽ xuống mức logic 0, lúc đó cathode của led được nối xuống mức thấp nên led sẽ sáng

3 Tính toán giá trị :

♦ Xét luới 1:

5v = RB IB + VBE + VLED

Để led sáng tối đa : VLED =1.8V

Chọn Q1 là transitor loại silic nên : VBE = 0.6V

IC = β.IB = I LED = β 2.6mA

Để 1 led sáng tối đa là 30mA Trong khi đó với ma trận led 5×8 thì một cột gồm 8 led nên để led sáng bình thường thì IC

= 8 × ILED

Vậy : β 2.6 mA = 240 mA

⇒ β = 2402 6, = 104 Chọn β = 150

Tra bảng ta chọn Transitor SC828, có các tiêu chuẩn sau (Tra từ sổ tay các linh kiện điện tử): P = 400mW, β = 130 ÷ 520 , VCBO = 30V , VEBO = 7V

Ghi chú : Để tín hiệu trên led dịch từng cột thì ta có thể

dùng tín hiệu quét cột qua vào IC 74LS164 mỗi IC này có 8 ngõ

ra với điện áp 5V Vì mạch quang báo có 7 led (35 cột), nên ta dùng 5 IC 74LS164 để quét

Tín hiệu quét cột lấy ra từ port C của 8255thứ hai còn tín hiệu quét hàng lấy ra từ port A của 8255thứ hai

Tín hiệu quét cột sẽ dịch theo từng nhịp xung clock do người lập trình tạo ra Cứ mỗi nhịp xung thì dịch một cột Khi đó tín hiệu quét hàng cũng gởi dữ liệu theo từng thời điểm mà cột quét Như vậy tín hiệu quét hàng và cột đòi hỏi phải luôn đồng bộ với nhau

Trang 37

Để hiển thị các chữ cái tiếng Việt lẫn tiếng Anh thì ta cần xuất dữ liệu chính xác từng điểm trên ma trận led Các điểm sáng sẽ tạo nên dạng chữ cần hiển thị Dữ liệu gởi ra hàng được chứa trong vùng nhớ của ROM, bắt đầu từ địa chỉ 2000H - 20F0H Sau đây là kiểu kí tự hiển thị trên Matrận Led.

Trang 38

1C 22 22 26 14 3E 08 08 08 3E 22 22 3E 22 22

Trang 39

24 22 3C 20 20 3E 08 14 22 22 3E 02 02 02 02

3E 10 08 10 3E 3E 10 08 04 3E 1C 22 22 22 1C

3E 28 28 28 10

Trang 40

1C 22 22 26 1E 3E 28 2C 2A 12 12 2A 2A 2A 24

20 20 3E 20 20 3C 02 02 02 3C 02 02 02 02 02

38 04 02 04 38 3E 04 08 04 3E 22 14 08 14 22

Ngày đăng: 20/05/2014, 10:27

HÌNH ẢNH LIÊN QUAN

Bảng sau đây sẽ liệt kê một số vi xử lí của hãng Intel: - giớt thiệu về vi điều khiển 8085
Bảng sau đây sẽ liệt kê một số vi xử lí của hãng Intel: (Trang 7)
Hình 2 .1: Sơ đồ chân của Vi xử lí 8085 - giớt thiệu về vi điều khiển 8085
Hình 2 1: Sơ đồ chân của Vi xử lí 8085 (Trang 9)
Hình 1.2 : Giản đồ của chu kì đọc - giớt thiệu về vi điều khiển 8085
Hình 1.2 Giản đồ của chu kì đọc (Trang 12)
Hình 1.5 :Sơ đồ cấu trúc của Vi xử lí - giớt thiệu về vi điều khiển 8085
Hình 1.5 Sơ đồ cấu trúc của Vi xử lí (Trang 15)
Hình 2 .1 Hoạt động : - giớt thiệu về vi điều khiển 8085
Hình 2 1 Hoạt động : (Trang 24)
Sơ đồ mạch cụ thể : - giớt thiệu về vi điều khiển 8085
Sơ đồ m ạch cụ thể : (Trang 30)
Hình 2.4 Hoạt động của mạch như sau : - giớt thiệu về vi điều khiển 8085
Hình 2.4 Hoạt động của mạch như sau : (Trang 30)
Hình 4.4 Chức năng của các phím đặc biệt : - giớt thiệu về vi điều khiển 8085
Hình 4.4 Chức năng của các phím đặc biệt : (Trang 31)
Hình 2.5 : Sơ đồ nguyên lý mạch bàn phím của quang báo - giớt thiệu về vi điều khiển 8085
Hình 2.5 Sơ đồ nguyên lý mạch bàn phím của quang báo (Trang 33)
Sơ đồ nguyên lý mạch màn hình quang báo : - giớt thiệu về vi điều khiển 8085
Sơ đồ nguy ên lý mạch màn hình quang báo : (Trang 43)
6. Sơ đồ mạch in của board KIT Vi xử lí - giớt thiệu về vi điều khiển 8085
6. Sơ đồ mạch in của board KIT Vi xử lí (Trang 48)
2. Sơ đồ mạch in của bàn phím : - giớt thiệu về vi điều khiển 8085
2. Sơ đồ mạch in của bàn phím : (Trang 56)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w