intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

BÀI 1 TỔNG QUAN VỀ VI XỬ LÝ

Chia sẻ: Phan Duc Nhuan Nhuan | Ngày: | Loại File: DOC | Số trang:20

307
lượt xem
69
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Vi xử lý gồm các cổng logic giống như các cổng logic được sử dụng trong đơn vị xử lý trung tâm (Central Procecessing Unit) của máy tính số. Do cấu trúc giống như CPU và được xây dựng từ các mạch vi điện tử nên có tên là vi xử lý: microprocessor. Giống như CPU, microprocessor có các mạch điện tử cho việc điều khiển dữ liệu (data) và tính toán dữ liệu dưới sự điều khiển của chương trình. Ngoài ra microprocessor là một đơn vị xử lý dữ liệu....

Chủ đề:
Lưu

Nội dung Text: BÀI 1 TỔNG QUAN VỀ VI XỬ LÝ

  1. BÀI GIẢNG MÔN HỌC: VI ĐIỀU KHIỂN 1
  2. BÀI 1. TỔNG QUAN VỀ VI XỬ LÝ 1.1. GIỚI THIỆU CHUNG VỀ VI XỬ LÝ TỔNG QUAN 1.1.1. Khái niệm 1.1.1.1. Vi xử lý gồm các cổng logic giống như các cổng logic đ ược sử d ụng trong đ ơn v ị xử lý trung tâm (Central Procecessing Unit) của máy tính số. Do c ấu trúc gi ống nh ư CPU và được xây dựng từ các mạch vi điện tử nên có tên là vi xử lý: microprocessor. Gi ống như CPU, microprocessor có các mạch điện tử cho việc điều khiển dữ liệu (data) và tính toán dữ liệu dưới sự điều khiển của chương trình. Ngoài ra microprocessor là m ột đ ơn v ị xử lý dữ liệu. Để xử lý dữ liệu, vi xử lý phải điều khiển các mạch logic, để vi xử lý đi ều khi ển các mạch logic thì cần phải có chương trình. Chương trình là tập h ợp các l ệnh đ ể x ử lý dữ liệu, các lệnh đã được lưu trữ trong bộ nhớ. Công việc th ực hi ện l ệnh bao g ồm các bước như sau: đón lệnh từ bộ nhớ, sau đó các mạch logic điều khiển sẽ giải mã lệnh và sau cùng thì các mạch logic điều khiển sẽ thực hiện lệnh sau khi giải mã. Do các lệnh lưu trữ trong bộ nhớ nên có thể thay đổi các lệnh n ếu c ần. Khi thay đổi các lệnh của vi xử lý tức là thay đổi cách thức xử lý d ữ li ệu. Các l ệnh l ưu tr ữ trong bộ nhớ sẽ quyết định công việc mà vi xử lý sẽ làm. Như vậy: Vi xử lý là một vi mạch cỡ lớn hoặc cực lớn với chức năng chính là: là xử lý dữ liệu. Để làm được điều này vi xử lý phải có các mạch logic cho vi ệc x ử lý và điều khiển dữ liệu. Các mạch logic xử lý sẽ di chuyển dữ liệu từ nơi này sang n ơi khác và thực hiện các phép toán trên dữ liệu, mạch logic điều khiển sẽ quyết định m ạch đi ện nào cho việc xử lý dữ liệu. vi xử lý thực hiện một lệnh với trình t ự như sau: đón l ệnh t ừ bộ nhớ, tiếp theo mạch logic điều khiển sẽ giải mã lệnh để xem lệnh đó yêu c ầu vi x ử lý thực hiện công việc gì, sau đó vi xử lý sẽ thực hiện đúng công vi ệc của l ệnh đã yêu cầu, quá trình này được gọi là chu kỳ đón - và - thực hiện. Ngoài chức năng đón và thực hiện lệnh, các mạch logic điều khi ển còn điều khiển các mạch điện giao tiếp bên ngoài kết nối với vi xử lý. vi xử lý cần ph ải có s ự tr ợ giúp của các mạch điện bên ngoài. Các mạch điện dùng để lưu trữ lệnh để vi xử lý xử lý được gọi là bộ nhớ, các mạch điện giao tiếp để di chuyển dữ li ệu từ bên ngoài vào bên trong vi xử lý và xuất dữ liệu từ bên trong vi xử lý ra ngoài được gọi là các thi ết b ị ghép nối vào ra I/O. Lịch sử phát triển của các bộ vi xử lý 1.1.1.2. Vi xử lý là sự kết hợp của 2 kỹ thuật công nghệ quan trọng nhất: đó là máy tính dùng kỹ thuật số (Digital Computer) và các mạch vi điện tử. Hai công ngh ệ này k ết h ợp lại với nhau vào năm 1970, sau đó các nhà nghiên cứu đã chế tạo ra vi xử lý (Microprocessor). Dựa vào lịch sử phát triển của các bộ vi xử lý ta có thể chia ra làm 4 thế hệ như sau: • Thế hệ thứ nhất (1971 – 1973) 2
  3. Năm 1971 Intel cho ra đời bộ vi xử lý đầu tiên là 4004 (4 bit số li ệu, 12 bit đ ịa ch ỉ) sau đó Intel và các nhà sản xuất khác cũng lần lượt cho ra đời các bộ vi xử lý khác: 4040 (4 bit) và 8008 (8 bit) của Intel. PPS – 4 (4 bit) c ủa Rockwell International, IPM – 16 (bit) của National Semiconductor. Đặc điểm chung của các bộ vi xử lý thế hệ này là: Thông thường là 4 bit dữ liệu (cũng có thể dài hơn). - Công nghệ chế tạo PMOS với đặc điểm mật độ phần tử nhỏ, tốc đ ộ ch ậm, giá - rẻ và chỉ có khả năng đưa ra dòng tải nhỏ. Tốc độ thực hiện lệnh: 10 – 60 µs/ lệnh. Với tần số đồng hồ f clk = 0, 1 – 0, 8 - MHz. Tập lệnh đơn giản và phải cần nhiều mạch phụ trợ m ới tạo nên m ột vi xử lý - hoàn chỉnh. • Thế hệ thứ hai (1974 – 1977) Các bộ vi xử lý đại diện cho thế hệ này là vi xử lý 8 bít 6502 c ủa MOS Technology, 6800 và 6809 của Motorola, 8080 của Intel và đặc biệt là bộ vi xử lý Z80 của Zilog. Các bộ vi xử lý này có tập lệnh phong phú h ơn và th ường có kh ả năng phân bi ệt địa chỉ bộ nhớ với dung lượng đến 64KB. Có m ột số b ộ vi xử lý còn có kh ả năng phân biệt được 256 địa chỉ cho các thiết bị ngoại vi (họ Intel và Zilog). Chúng đã được sử dụng rộng rãi trong công nghiệp và nhất là để tạo ra các máy tính 8 bit n ổi ti ếng m ột th ời nh ư Apple II Commodore 64. Tất cả các vi xử lý thời kỳ này đều đ ược chế t ạo b ằng công nghệ NMOS (mật độ phân tử trên một đơn vị diện tích cao hơn so v ới công ngh ệ PMOS) hoặc CMOS (tiết kiệm điện năng tiêu thụ) và cho phép đạt được tốc độ từ 1 – 8 µs/ lệnh với tần ố động hồ 1 – 5 MHz. • Thế hệ thứ ba (1978 – 1982) Đại diện là các bộ vi xử lý 16 bit 8086/80186/0286 c ủa Intel ho ặc 68000/68010 của Motorola. Các bộ vi xử lý này có độ dài 16 bit và tập lệnh phong phú v ới l ệnh nhân, chia và các thao tác với chuỗi ký tự. Khả năng phân bi ệt đ ịa ch ỉ cho b ộ nh ớ ho ặc cho thiết bị ngoại vi của các vi xử lý thế hệ này cũng lớn hơn (t ừ 1 – 16 MB cho b ộ nh ớ và tới 64KB cho địa chỉ thiết bị ngoại vi đối với họ Intel). Phần l ớn các b ộ vi x ử lý th ế h ệ này đều đạt tốc độ từ 0, 1 – 1µs/ lệnh với tần ố động hồ fclk = 5 – 10 MHz. • Thế hệ thứ tư (1983 - ?) 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 của Pentium của Intel, các vi xử lý 32 bit 68020/68040/68060 của Motorola. Đ ặc đi ểm của vi xử lý thế hệ này là bus địa chỉ đều là 32 bit (phân bi ệt 4GB b ộ nh ớ) và có kh ả năng làm việc với bộ nhớ ảo. Sau đây là bảng thông số của các bộ vi xử lý của Intel Thông số 8086 8088 80286 Năm sản xuất 6/1978 1979 2/1982 fclkmax (xung nhịp đồng hồ) 10 MHz 10 MHz 20 MHz MIPS (triệu lệnh/s) 0, 33 0, 33 1, 2 Số tranzitor 29.000 29.000 134.000 3
  4. Bus số liệu 16 bit 8 bit 16 bit Bus địa chỉ 20 bit 20 bit 24 bit Khả năng địa chỉ 1 MB 1 MB 16 MB Số chân 40 40 68 Chế độ bộ nhớ ảo Không Không Có Có bộ quản lý bộ nhớ bên trong Không Không Có ĐẶC ĐIỂM CHUNG CỦA BỘ VI XỬ LÝ 1.1.2. Mỗi bộ vi xử lý đều có những đặc điểm và chức năng riêng tuy nhiên chúng đ ều có những đăc điểm chung sau: Chiều dài bus dữ liệu (độ lớn của mạch vi xử lý) : Được đánh giá bằng số bit lớn nhất mà vi xử lý có thể xử lý song song đồng thời trong một l ần thao tác. Ví d ụ: M ạch vi x ử lý 16 bit thì có nghĩa vi xử lý có thể xử lý song song m ột lần 16 bit. M ỗi vi xử lý có chi ều dài bus dữ liệu khác nhau sẽ có một khả năng ứng dụng khác nhau, các vi xử lý có chi ều dài bus dữ liệu lớn, tốc độ làm việc nhanh, khả năng truy xuất bộ nhớ lớn được dùng trong các công việc xử lý dữ liệu, điều khiển phức tạp. Các vi xử lý 32 bit có kh ả năng làm vi ệc nhanh h ơn vì mỗi lần lấy dữ liệu từ bộ nhớ vi xử lý có thể lấy một lần 4 byte, trong khi đó các vi x ử lý 8 bit thì phải làm 4 lần, với vi xử lý 16 bit phải thực hiện 2 lần. Vậy n ếu so với vi xử lý 8 bit thì vi xử lý 32 bit có tốc độ tăng gấp 4, với vi xử lý 16 bit thì t ốc đ ộ vi xử lý 32 bit tăng g ấp đôi. Để tăng tốc độ làm việc của vi xử lý là mục tiêu hàng đầu của các nhà chế tạo vi xử lý. Chiều dài bus địa chỉ (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ử 4004 có 14 đường địa chỉ nên có th ể truy xu ất đ ược 2 14 = 16.384 ô nhớ, vi xử lý 8 bit có 16 đường địa chỉ nên có thể truy xuất được 2 16 = 65.536 ô nhớ, vi xử lý 16 bit có 20 đường địa chỉ nên có thể truy xuất 2 20 = 1.048.576 = 1MB ô nhớ, vi xử lý 32 bit như 386 hay 68020 có thể truy xuất 4GB ô nhớ. Vi xử lý có kh ả năng truy xu ất b ộ nh ớ càng lớn nên có thể xử lý các chương trình lớn. Tùy theo ứng d ụng c ụ th ể mà ch ọn m ột vi xử lý thích hợp. Số chân và các hình dạng ngoài của vi xử lý : Các bộ vi xử lý 8088/8086 được đóng trong vỏ 2 hàng chân. Đó là loại vỏ bằng Plastic có các chân h ướng xu ống d ưới theo hai hàng song song hai bên. Các bộ vi xử lý lớn hơn có 64 chân hay nhiều h ơn n ữa có v ỏ b ọc v ới các chân ra tạo thành mảng xắp xếp trên cả 4 phía. Thông th ường các vi x ử lý có s ố chân càng nhiều thì càng hoàn hảo. Tuy vậy trong thực tế người ta có th ể dùng ph ương pháp d ồn chân, nghĩa là một chân tín hiệu có thể làm hai chức năng và để phân biệt hai chức năng ấy người sử dụng phải lập chương trình. Xung nhịp hệ thống (System clock): Dùng để đồng bộ các thao tác bên trong và bên ngoài của vi xử lý bằng cách phát ra các xung nhịp thời gian theo các kho ảng cách c ố đ ịnh, xu hướng ngày nay là dùng mạch một xung nhịp và khoảng cách gi ữa hai xung đ ồng h ồ h ệ thống được gọi là chu kỳ xung nhịp. 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. Tuy nhiên tần số xung nhịp không phải là yếu tố duy nhất. Tốc độ vi xử lý còn ph ụ thu ộc vào 4
  5. cách thức xử lý thông tin trong cấu trúc của vi xử lý. 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. Vi xử lý Tần số xung clock Chiều dài từ dữ liệu 8051 12MHz 8-bit Z80A 4MHz 8-bit Z80B 6MHz 8-bit 286 16MHz 16-bit 486DX2-66 66Mhz 32-bit Pentium 66MHz 32-bit Điện áp hoạt động (nguồn nuôi) : Với công nghệ PMOS các bộ vi xử lý cần nguồn nuôi với nhiều điện áp hoạt động khác nhau, ví dụ: ±5V, ±10V. Còn v ới công ngh ệ NMOS thì chỉ cần nguồn nuôi duy nhất +5V. Đây là mức đi ện áp đủ cao đ ể bù l ại các s ụt áp trong các mạch số, đồng thời cũng đủ nhỏ để tránh gây tạp âm. Các b ộ vi xử lý ngày nay v ới công nghệ CMOS đã cho ra đời các loại vi xử lý 3, 3V, đòi hỏi dòng tiêu th ụ ch ỉ b ằng 60% so v ới chip 5V Các mạch phụ cận: Là các mạch làm chức năng giải mã chuyển đổi số li ệu, m ạch ghép nối logic, mạch đếm và định thời gian, mạch điều khiển bàn phím, hi ển thị… Loại mạch này cũng được chế tạo theo hãng và thường tương ứng với mạch vi xử lý của hãng ấy. Mạch phối ghép vào ra: Làm nhiệm vụ trao đổi số liệu vào và ra cho CPU. Mỗi hãng sẽ chế tạo mạch phối ghép đi kèm. Loại vi xử lý nào càng nhi ều mạch phối ghép thì càng dễ sử dụng. Phần mềm (chương trình): Mỗi một vi xử lý có một phần mềm được hãng trang bị hay còn gọi là tập lệnh. Người sử dụng căn cứ vào tập lệnh này để khai thác s ử d ụng và t ạo thành các chương trình phục vụ cho các mục đích cụ thể. Tập lệnh c ủa vi x ử lý là m ột trong những yếu tố cơ bản để đánh giá chức năng làm việc của vi xử lý. Nếu vi xử lý có nhi ều mạch điện logic bên trong để thực hiện thì số lệnh điều khiển c ủa vi xử lý càng nhi ều, khi đó vi xử lý càng lớn và độ phức tạp càng lớn. Ví d ụ so sánh 2 t ập l ệnh c ủa 2 vi x ử lý 8 bit là 80C51 và Z80 thì 80C51 có 111 lệnh khác nhau còn Z80 có 178 lệnh. Tập l ệnh c ủa m ột vi x ử lý càng nhiều rất có ích khi lập trình hay viết chương trình cho vi xử lý. 1.2. CẤU TRÚC HỆ VI XỬ LÝ VÀ TỔ CHỨC BÊN TRONG CPU CẤU TRÚC CHUNG CỦA MỘT HỆ VI XỬ LÝ 1.2.1. Trên đây ta đã thấy bộ vi xử lý là một thành phần rất c ơ b ản không th ể thi ếu đ ược để tạo nên một máy vi tính. Trong thực tế bộ vi xử lý còn phải k ết h ợp thêm các b ộ ph ận điện tử khác ví dụ như: bộ nhớ, các bộ phối ghép vào/ra để tạo nên m ột hệ vi xử lý hoàn chỉnh. Hình 1.2.1 giới thiệu sơ đồ khối tổng quát của của một hệ vi xử lý. Trong sơ đồ này ta thấy rõ các khối chức năng chính của một hệ vi xử lý bao gồm: Khối xử lý trung tâm (Central Processing Unit, CPU). - Bộ nhớ bán dẫn (Memory, M). - Khối phối ghép với các thiết bị ngoại vi (Input/Output, I/O). - Các bus truyền thông tin. - 5
  6. Khối xử lý trung tâm, CPU 1.2.1.1. Đóng vai trò chủ đạo trong hệ thống vi xử lý, đây là m ột m ạch vi đi ện t ử có đ ộ tích hợp rất cao. Khi hoạt động nó đọc ghi mã lệnh d ưới d ạng các bit 0 và 1 t ừ b ộ nh ớ. Sau đó sẽ giải mã các lệnh này thành dãy các xung điều khiển ứng với các thao tác trong lệnh để điều khiển các khối khác thực hiện từng bước các thao tác đó. Để làm được điều này bên trong CPU có các thanh ghi dùng để chứa địa chỉ các lệnh sắp th ực hi ện gọi là thanh ghi con trỏ lệnh (Instruction Pointer, IP) hoặc bộ đếm ch ương trình (Program Counter, PC), một số thanh ghi đa năng khác cùng bộ tính toán số h ọc và logic (ALU) đ ể thao tác với dữ liệu. Ngoài ra ở đây còn có hệ thống m ạch đi ện t ử r ất ph ức t ạp đ ể gi ải mã lệnh và từ đó tạo ra các xung điều khiển cho toàn hệ. Bus d÷ liÖu Bus ® u khiÓ iÒ n Bé nhí Bé xö lý Phèi ghÐ p ThiÕ bÞvµo t (Memory) trung t©m vµo/ra (I/O) Thanh ghi Thanh ghi ROM-RAM CPU trong ngoµi ThiÕ bÞra t Bus ® a chØ Þ Hình 1.2.1 Sơ sồ khối tổng quát hệ vi xử lý Bộ nhớ bán dẫn (Memory) 1.2.1.2. Hay còn gọi là bộ nhớ trong là một bộ phận rất quan trọng c ủa h ệ vi xử lý. T ại đây (trong ROM) chứa chương trình điều khiển hoạt động của toàn h ệ đ ể khi bật đi ện lên thì CPU có thể lấy lệnh từ đây mà khởi động hệ th ống. M ột ph ần c ủa ch ương trình điều khiển hệ thống, các chương trình ứng dụng, dữ li ệu cùng các kết qu ả c ủa ch ương trình được để trong RAM. Các dữ liệu và chương trình muốn lưu trữ lâu dài sẽ được để ở bộ nhớ ngoài. Khối phối ghép vào/ra (I/O) 1.2.1.3. Tạo ra khả năng giao tiếp giữa hệ vi xử lý với thế gi ới bên ngoài. Các thi ết b ị ngoại vi như bàn phím, chuột, màn hình, máy in, chuyển đ ổi số t ương t ự (D/A), chuy ển đổi tương tự số (A/D) đều được liên hệ với vi xử lí thông qua b ộ phận này. B ộ phận phối ghép cụ thể giữa bus hệ thống với thế giới bên ngoài thường được gọi là cổng. Như vậy ta sẽ có cổng vào để lấy thông tin từ ngoài vào và cổng ra để đ ưa thông tin t ừ trong hệ ra ngoài. Tuỳ theo yêu cầu cụ thể mà các mạch c ổng này có th ể đ ược xây d ựng t ừ các mạch logic đơn giản hoặc từ các vi mạch chuyên dụng lập trình được. Hệ thống Bus 1.2.1.4. Trên sơ đồ khối hệ vi xử lý ta thấy 3 khối chức năng đầu liên hệ với nhau thông qua tập các đường dây để truyền tín hiệu gọi chung là bus hệ thống. Bus h ệ th ống bao gồm 3 bus thành phần. ứng với các tín hiệu địa chỉ, d ữ li ệu và đi ều khi ển ta có bus đ ịa chỉ, bus dữ liệu, bus điều khiển. 6
  7. Bus địa chỉ: Thường có từ 16, 20, 24, 32 đường dây song song truyền tải thông tin của các bit địa chỉ. Khi đọc/ghi bộ nhớ CPU sẽ đưa ra trên bus này địa ch ỉ c ủa ô nh ớ liên quan. Khả năng phân biệt địa chỉ (số lượng địa chỉ cho ô nhớ mà CPU có khả năng phân biệt được) phụ thuộc vào số bit của bus địa chỉ. Ví dụ m ột CPU có số đ ường dây đ ịa ch ỉ là N = 16 thì nó có khả năng địa chỉ hoá được 2 N = 216 = 65536 = 64KB ô nhớ khác nhau (1K = 210 = 1024). Khi đọc/ghi cổng vào/ra CPU cũng đưa ra trên bus địa chỉ các bit đ ịa ch ỉ tương ứng của cổng. Trên sơ đồ khối ta dễ nhận ra tính m ột chi ều của bus đ ịa ch ỉ qua chiều của mũi tên. Chỉ có CPU mới có khả năng đưa ra địa chỉ trên bus địa chỉ. Bus dữ liệu: Thường có từ 8, 16, 20, 24, 32 đến 64 đường dây tuỳ theo các bộ vi xử lý cụ thể. Số lượng đường dây này quyết định số bit d ữ mà CPU có kh ả năng x ử lý một lúc. Chiều mũi tên trên bus chỉ ra rằng đây là bus 2 chiều. Bus điều khiển: Thường gồm hàng chục đường dây tín hiệu khác nhau. M ỗi tín hiệu điều khiển có một chiều nhất định. Vì khi hoạt động CPU đưa tín hi ệu đi ều khi ển tới các khối khác trong hệ, đồng thời nó cũng nhận tín hi ệu đi ều khi ển t ừ các kh ối đó đ ể phối hợp hoạt động toàn hệ, nên các tín hiệu này trên hình v ẽ đ ược th ể hi ện bằng mũi tên 2 chiều. Hoạt động của hệ vi xử lý trên cũng có thể được nhìn nhận theo m ột cách khác. Trong khi hoạt động và tại một thời điểm nhất định, về m ặt chức năng m ỗi kh ối trong hệ trên tương đương các thanh ghi trong (trong CPU) hoặc các thanh ghi ngoài (nằm trong bộ nhớ ROM, RAM và trong khối ghép nối I/O). Hoạt động của toàn h ệ th ực ch ất là s ự phối hợp hoạt động của các thanh ghi trong và ngoài nói trên để thực hiện sự bi ến đổi d ữ liệu hoặc sự trao đổi dữ liệu theo các yêu cầu đã định trước. CẤU TRÚC CHUNG CỦA CPU 1.2.2. 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ý. Cấu trúc của tất cả các vi xử lý đều có các khối cơ bản gi ống nhau 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. Hình 1.2.2a trình bày sơ đồ khối của vi xử lý 8 bit Nhìn vào sơ đồ khối trên ta có thể chia cấu trúc chung của một CPU ra làm 3 ph ần chính: Khối ALU (Arithmetic Logic Unit), Khối đi ều khi ển (Control Logic), các thanh ghi (Register) và BUS dữ liệu. Khối ALU 1.2.2.1. 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ó 2 ngõ vào có tên là “IN” chính là các ngõ vào d ữ liệu cho ALU xử lý và 1 ngõ ra có tên là “OUT” chính là ngõ ra k ết qu ả d ữ li ệu sau khi ALU xử lý xong. Dữ liệu trước khi vào ALU được chứa ở thanh ghi tạm thời (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 2 ngõ vào “IN” của ALU thông qua 2 thanh ghi tạm thời. Sự kết n ối này 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ý. Ngõ ra OUT c ủa ALU cho 7
  8. phép ALU có thể gửi kết dữ liệu sau khi xử lý xong lên bus d ữ li ệu bên trong vi x ử lý, do đó thiết bị nào kết nối với bus bên trong đều có thể nhận dữ liệu này. Ví dụ khi ALU cộng 2 dữ liệu thì một trong 2 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 2 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 2 dữ liệu thì ALU sẽ xử lý 2 dữ liệu và dùng 2 ngõ vào “IN” đ ể nhập d ữ liệu, khi tăng một dữ liệu nào đó lên 1 đơn vị hay lấy bù m ột m ột d ữ li ệu, khi đó ALU chỉ xử lý 1 dữ liệu và chỉ cần một ngõ vào “IN”. 8
  9. 16 bit address bus Memory Address Register Accumulator Status REG A Hi | Lo SP PC 8 bit internal data bus External input 8 Bit and DATA CONTROL output BUS LOGIC control Instruction TEMP 1 TEMP 2 lines Register IN IN ALU instruction Decoder OUT Hình 1.2.2a. Sơ đồ khối của vi xử lý 8 bit Khối ALU có thể thực hiện các phép toán xử lý như sau: Add (cộng) Complement (lấy bù) OR (Phép OR) Subtract (trừ) Shift right (dịch phải) Increment (tăng) Shift left (dịch trái) Decrement (giảm) AND (phép AND) Exclusive OR (phép XOR – hoặc có loại trừ) 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. Các thanh ghi bên trong vi xử lý 1.2.2.2. 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. Các thanh ghi thông dụng rất hữu dụng cho người lập trình dùng đ ể lưu tr ữ d ữ liệu phục vụ cho công việc xử lý dữ liệu và đi ều khi ển, khi vi ết ch ương trình chúng ta luôn sử dụng các thanh ghi này. Số lượng các thanh ghi thông dụng thay đổi tùy thuộc vào từng vi xử lý. 9
  10. Các thanh ghi cơ bản luôn có trong một vi xử lý là thanh ghi tích lu ỹ A (Accumulator register), thanh ghi bộ đếm chương trình PC (Program Counter register), thanh ghi con trỏ ngăn xếp SP (Stack pointer register), thanh ghi tr ạng thái SF (Status register –Flag register), các thanh ghi thông dụng, thanh ghi l ệnh IR (Instruction register), thanh ghi địa chỉ AR (address register). Khối điều khiển logic và khối giải mã lệnh 1.2.2.3. - Chức năng của khối giải mã lệnh (Instruction decoder) 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 (control logic) là nhận lệnh hay tín hi ệu đi ều - khiển từ bộ giải mã lệnh, sau đó sẽ thực hiện đúng các yêu cầu c ủa lệnh. Kh ối đi ều khiển logic được xem là một vi xử lý nhỏ nằm trong một 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ị bên 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ý có tích hợp mạch tạo dao đ ộng ở bên trong, khi đó chỉ cần thêm tụ thạch anh ở bên ngoài. Bus dữ liệu bên trong vi xử lý (Internal data bus) 1.2.2.4. 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 di 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 d ữ li ệu này là bus d ữ liệu 2 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ị I/O. 1.3. CẤU TRÚC DỮ LIỆU TRONG HỆ VI XỬ LÝ Một vấn đề quan trọng trong hệ vi xử lý là việc lưu trữ và xử lý các d ữ li ệu s ố. Thông thường chúng ta đã quen thuộc với các số trong hệ đếm cơ số 10, nhưng trong th ực t ế còn có nhiều hệ đếm với các cơ số khác nhau. Trong phần này chúng ta sẽ làm quen v ới cách bi ểu di ễn số nhị phân, số Hex, các khái niệm bit, byte, word, sau đó là các phép toán cơ bản với mã hệ hai. CÁC HỆ ĐẾM DÙNG TRONG HỆ VI XỬ LÝ 1.3.1. Hệ cơ số mười (Decimal – thập phân) 1.3.1.1. Trong cuộc sống hàng ngày chúng ta dùng hệ c ơ số mười nói gọn là h ệ m ười (Decimal number system, viết tắt là hệ D) để biểu diễn các giá tr ị số. Chúng ta dùng t ổ hợp các chữ số từ 0 đến 9 để biểu diễn các giá trị số. Đi kèm theo t ập h ợp đó có th ể dùng thêm hậu tố D ở cuối để chỉ ra rằng đó là số hệ mười. Hệ cơ số hai (Binary – nhị phân) 1.3.1.2. Trong thế giới máy tính lại khác, để biểu diễn m ột giá tr ị số chúng ta dùng h ệ c ơ số hai hoặc nói gọn là hệ hai (Binary number system, vi ết tắt là h ệ B). Trong đó ch ỉ t ồn tại hai chữ số là 0 và 1 để biểu diễn các giá tr ị số ( ứng v ới hai tr ạng thái có đi ện và 10
  11. không có điện của các mạch điện tử cấu tạo nên máy). Đặc điểm c ủa hệ đếm c ơ số hai là trong cùng một số có hai chữ số giống nhau thì chữ số bên trái có giá tr ị gấp 2 l ần ch ữ số bên phải. Từ hệ đếm cớ số hai ta có các khái niệm sau: Bit: Mỗi chữ số trong hệ hai là một bit. Chữ số đầu tiên bên trái trong dãy các số - hệ hai gọi là bit có nghĩa lớn nhất hay bit có trọng số l ớn nhất (Most Significant Bit – MSB), còn bit cuối cùng bên phải trong dãy gọi là bit có nghĩa bé nhất hay bit có trọng số nhỏ nhất (Least Significant Bit – LSB). - Byte: 1Byte = 8 Bit. - Word: 1 Word = 2 Byte = 16 Bit. Double Word (từ kép): 1 Double Work = 32 Bit. - Ví dụ: 15D=1111B Hệ cơ số 16 (Hexa decimal – thập lục phân) 1.3.1.3. Nếu ta dùng hệ hai để biểu diễn các số có giá trị lớn ta sẽ gặp điều bất tiện là số hệ hai thu được quá dài. Ví dụ để biểu diễn số 255 ta c ần đến 8bit vi ết nh ư sau: 255 = 11111111B Trong thực tế để viết kết quả biểu diễn của các số cho gọn người ta tìm cách nhóm 4 số hệ hai thành một số hệ 16 và sử dụng 16 ch ữ số c ơ b ản: 0 ÷ 9, A, B, C, D, E, F để biểu diễn. Đặc điểm của hệ cơ số 16 là một chữ số ở cơ số 16 có hai chữ số gi ống nhau thì chữ số bên trái có giá trị gấp 16 lần chữ số bên phải. Ví dụ: (11001010)2 = 27 + 26 + 23 + 2 = 128 + 64 + 8 + 2 = 202 (11001010)2 = (CA)16 = 12.16 + 10 = 202 Như vậy: Hệ cơ số 16 thực tế cũng là hệ hai nhưng được vi ết gọn hơn và đi ều quan trọng nhất là giúp cho người sử dụng ít bị nhầm. Hệ mười mã hoá bằng hệ hai (Hệ BCD) 1.3.1.4. Giữa hệ mười và hệ hai tồn tại một hệ lai: Hệ BCD cho các số hệ mười mã hoá bằng hệ hai, rất thích hợp cho thiết bị đo có thêm phần hiển thị số ở đầu ra dùng các lo ại đèn hiện số khác nhau. ở đây ta dùng 4 số hệ hai để mã hoá m ột số hệ m ười có giá tr ị nằm trong khoảng từ 0, 1, …, 9. Ví dụ: số 520 nếu biểu diễn theo kiểu số BCD thì được (0101 0010 0000)BCD Chú ý: Khi hiển thị phép cộng nếu kết quả của các chữ số lớn hớn 9 thì phải cộng thêm 6, còn khi thực hiện các phép trừ (trừ theo ki ểu c ộng số bù 2) n ếu k ết q ủa l ớn hơn 9 thì phải trừ đi 6. Ví dụ: 19 + 7 = 26 00011001 00000111 00100000 11
  12. Ta thấy sau khi thực hiện cộng với 2 số BCD thì kết quả là 32 > 9 nên ti ếp t ục lấy kết quả đó cộng thêm 6. 00100000 00000110 00100110 Kết quả đúng bằng 26. BIỂU DIỄN CÁC SỐ VÀ KÝ TỰ THEO MÃ HỆ HAI 1.3.2. Biểu diễn số nguyên 1.3.2.1. Biểu diễn số nguyên không dấu Nếu chúng ta chỉ dùng số nguyên dương thì cách biểu diễn là đơn giản. Một số 8 bit có thể được sử dụng để biểu diễn các số từ 0 đến 255. Thật vậy: 00000000 =0 00000001 =1 00101001 = 41 10000000 = 128 11111111 = 255 Thông thường, nếu một chuỗi n bit của các số nhị phân a n-1an-2 ... a1a0 sẽ được tính như một số nguyên A không dấu, mà giá trị của nó là: n −1 A = ∑ 2i ai i=0 Biểu diễn dấu – độ lớn (hay độ lớn có dấu) Việc sử dụng các số nguyên không dấu là không đủ vì chúng ta c ần bi ểu di ễn c ả số âm cũng như các số nguyên dương. Vì vậy để biểu diễn các số có dấu, bit MSB trong từ được dùng làm bit dấu. Nếu bit MSB là 0 thì số bi ểu diễn là số dương và n ếu bằng 1 thì là số âm. Trong một từ n bit thì n – 1 bit cuối cùng giữ giá trị số nguyên. Ví dụ: +20 = 00010100 -20 = 10010100 Công thức tổng quát có thể được biểu diễn như sau: n−2 A = ∑ 2 ai i Nếu an-1 = 0 i =0 n−2 A = − ∑ 2 ai i Nếu an-1 = 1 i =0 Biểu diễn số bù hai Giống như cách biểu diễn dấu - độ lớn, cách biểu diễn số bù hai cũng sử dụng bit cao nhất (MSB) như là một bit dấu, khi ến cho việc ki ểm tra m ột s ố nguyên là d ương hay âm được thực hiện dễ dàng. Nhưng nó khác với cách biểu diễn dấu – độ lớn các bit còn lại sẽ có ý nghĩa khác đi. 12
  13. Công thức tổng quát để biểu diễn một số bù hai như sau: n−2 n −1 a n−1 + ∑ 2 ai i A = −2 i =0 Trong trường hợp các số nguyên dương thì an-1 = 0 cho nên biểu thức n −1 −2 a n −1 = 0 . Do vậy biểu thức trên được biểu diễn số bù hai cho cả số dương và số âm. Bảng sau so sánh cách biểu diễn số bù hai và biểu diễn dấu – độ lớn đối với các số nguyên 4 bit. Biểu diễn số thập phân Biểu diễn dấu – độ lớn Biểu diễn số bù hai +7 0111 0111 +6 0110 0110 +5 0101 0101 +4 0100 0100 +3 0011 0011 +2 0010 0010 +1 0001 0001 +0 0000 0000 -0 1000 - -1 1001 1111 -2 1010 1110 -3 1011 1101 -4 1100 1100 -5 1101 1011 -6 1110 1010 -7 1111 1001 -8 - 1000 Quan sát bảng trên ta thấy: Nếu ta dùng 4 bit để biểu diễn số thì thì ta thu được 16 tổ hợp có giá trị từ 0 đ ến - 15 tức là chỉ biểu diễn được số dương. Với cách biểu diễn theo dấu độ lớn ta có thể biểu diễn được cả số dương và âm - nằm trong khoảng -7…-0 +0…+7. Với cách biểu diễn theo mã bù hai ta cũng biểu di ễn được c ả số d ương và âm - nằm trong khoảng -8…0…+7. Biến đổi bit Có trường hợp người ta lấy số nguyên n bit nhưng lại l ưu nó vao trong m bit mà m>n. Trong trường hợp biểu diễn dấu độ lớn có thể thực hi ện m ột cách d ễ dàng b ằng cách di chuyển bit dấu đến vị trí mới ở bên trái nhất và điền thêm 0 vào đó. Ví dụ (dấu – độ lớn, 8-bit) +18 = 00010010 (dấu – độ lớn, 16-bit) +18 = 00000000 00010010 (dấu – độ lớn, 8-bit) -18 = 10010010 (dấu – độ lớn, 16-bit) -18 = 10000000 00010010 Điều này không còn đúng nữa với số nguyên âm bù hai, ví dụ: 13
  14. (số bù hai, 8-bit) +18 = 00010010 +18 = 00000000 00010010 (số bù hai, 16-bit) (số bù hai, 8-bit) -18 = 11101110 (số bù hai, 16-bit) -32658 = 10000000 01101110 Quy tắc để biến đổi bit số bù hai là di chuyển bit dấu đến vị trí m ới phía bên trái nhất và điền thêm các bit có giá trị bằng bit dấu (cả vào vị trí cũ của bit dấu). Đ ối v ới các số dương thì điền thêm 0 với các số âm thì điền thêm 1. Như vậy cách biểu di ễn 18 theo mã bù hai như sau: (số bù hai, 8-bit) +18 = 00010010 (số bù hai, 16-bit) +18 = 00000000 00010010 (số bù hai, 8-bit) -18 = 11101110 (số bù hai, 16-bit) -18 = 11111111 11101110 Biểu diễn số thực 1.3.2.2. Số thực A trong hệ nhị phân được biểu diễn như sau: A = D1D2D3…Dn, d1d2d3…dn = D, d Trong đó: Là phần nguyên D = D1D2D3…Dn Là phần thập phân d = d1d2d3…dn Việc biểu diễn A dưới dạng nhị phân được thực hiện làm 2 bước. Đ ầu tiên đ ổi phần nguyên ra dạng nhị phân theo kiểu thông thường, sau đó đổi tiếp phần thập phân. Giả sử phần thập phân 0.d1d2d3…dn có dạng biểu diễn nhị phân là b1b2b3…bm Khi đó giá trị của nó trong hệ cơ số 10 được tính như sau: d = d1d2d3…dn =(b1b2b3…bm)2 = (b12-1 + b22-2 + b32-3 +…+ bm2-m)10 Biểu diễn ký tự theo mã ASCII 1.3.2.3. Trong phần trên ta đã nói đến cách biểu di ễn số trong h ệ đ ếm. Bây gi ờ ta xem xét việc biểu diễn thông tin nói chung trong máy tính. Trong thực tế xử lý của máy tính ngoài các ký tự chữ cái còn có các ký tự đặc biệt và các ký tự số. Ký hi ệu ph ổ bi ến nh ất ngày nay là dùng mã ASCII (American Standard Code for Information Interchange) mã chu ẩn của Mỹ dùng trong trao đổi thông tin. Việc dùng các ký tự để mã hoá thông tin theo b ảng mã chuẩn sẽ cho chúng ta khả năng trao đổi thông tin v ới hầu h ết các h ệ vi x ử lý khác, kể cả đối với các hệ vi xử lý tiên tiến (Hình 1.3.2c). 14
  15. Hexa 0 1 2 3 4 7 6 5 decimal 0 @ P ` p 0 0 32 48 80 112 16 64 96 1 ! 1 A Q a q 1 17 33 49 81 97 113 65 2 " B R r 2 b 2 18 34 82 98 114 50 66 3 # 3 C S c s 3 19 83 99 35 51 67 115 4 4 D T t d $ 4 20 84 100 36 52 68 116 % E U e u 5 5 21 37 101 117 5 53 69 85 F V v 6 & 6 f < N> SY 22 38 70 102 118 6 86 54 7 ' 7 G W g w 7 23 39 71 87 103 119 55 8 H X x ( 8 h 8 24 40 72 88 104 120 56 9 I Y y ) 9 i 9 41 73 89 121 25 57 105 A * : J Z z j 10 26 42 74 90 106 122 58 B + ; K [ k { 11 27 43 91 107 123 59 75 C , < L \ l 12 28 44 60 76 92 108 124 D - = M ] m } 13 29 77 93 109 45 61 125 E . > N ^ n ~ 14 30 46 62 78 94 110 126 F _ o / ? O 31 47 79 111 127 15 63 95 Hình 1.3.2c .Bảng mã ASCII tiêu chuẩn Trong bảng mã ASCII tiêu chuẩn người ta dùng 7 bit đ ể mã hoá các ký t ự thông dụng, như vậy bảng mã này sẽ có 128 ký tự ứng với các mã số từ 0…127. Bên c ạnh mã ASCII tiêu chuẩn người ta còn sử dụng mã ASCII m ở r ộng v ới các ký t ự đ ặc bi ệt (khác các ký tự tiêu chuẩn) với mã từ 128 đến 255. Khi tra các bảng này ta đọc mã của ký tự theo thứ tự cột – hàng. Ví dụ: mã ASCII của một số ký tự thường dùng trong khi lập trình. (Bell, chuông): 07H (Back space, xoá lùi): 08H (Line Feed, thêm dòng mới): 0AH Khi xem xét bảng mã ta có thể rút ra mấy nhận xét sơ bộ sau: 2 cột đầu tiên của bảng mã được dùng cho các ký tự điều khiển. - Cột 2 dành riêng cho các ký tự ngăn cách. - Các ký tự số nằm ở cột 3. - Các chữ cái hoa nằm ở cột 4, 5. Các chữ cái thường ở cột 6, 7. Kho ảng cách gi ữa - chữ thường và chữ hoa cùng tên là 20H. 15
  16. Quan hệ giữa mã ASCII với số BCD Trong khi làm toán với các số BCD ta thường kết hợp hai số BCD thành m ột Byte, dạng số BCD viết theo kiểu này được gọi là dạng BCD chuẩn hay còn gọi là dạng BCD gói. Khi lưu trữ , khi hiển thị hoặc khi truyền giữa các thiết bị các giá trị số 0…9 th ực chất ta làm việc với mã ASCII của các số đó tức là các số 30H…39H. Nh ư v ậy ta th ấy trong 1 byte mã ASCII biểu diễn các số 0…9 có 4 bit thấp ứng với mã BCD c ủa chính các số đó, 4 bit cao bao giờ cũng ứng với mã BCD c ủa số 3. N ếu trong byte mã ASCII này ta thay 4 bit cao bằng 0H thì ta thu được số BCD không gói. Nói cách khác s ố BCD không gói là số dài 1 byte, trong đó có 4 bit cao b ằng 0, 4 bit th ấp là s ố BCD chu ẩn mã hoá s ố cần biểu diễn. Ví dụ: của Mã ASCII 5 là 0011 0101 = 35H của Mã ASCII 9 là 0011 1001 = 39H của Mã BCD không gói 5 là 0000 0101 = 05H của Mã BCD không gói 9 là 0000 1001 = 09H Mã BCD gói chuẩn của 59 là 0101 1001 = 59H của Mã BCD không gói 59 là = 0509H CÁC PHÉP TOÁN SỐ HỌC VỚI MÃ HỆ HAI 1.3.3. Phép cộng 1.3.3.1. Phép cộng các số hệ hai được thực hiện giống như khi ta làm với các số h ệ 10. Quy tắc phép cộng với số hệ hai được cho trong bảng sau A B Y C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Y: kết qủa C: nhớ (Carry) Ví dụ: 99 + 95 = 194 Cộng hệ mười Cộng hệ hai Nhớ 1111 1110 Số hạng 1 99 0110 0011 Số hạng 2 95 0101 1111 Tổng 194 1100 0010 Các bộ cộng trong các khối tính toán số học của máy tính s ẽ th ực hi ện các phép cộng theo cách đã nói ở trên. Phép trừ 1.3.3.2. Phép trừ các số hệ hai được thực hiện giống như khi ta làm với các số hệ 10. Quy tắc phép trừ với số hệ hai được cho trong bảng sau 16
  17. a b Y B 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 Ví dụ 194 - 95 = 99 Trừ hệ mười Trừ hệ hai Mượn 1111 1110 Số bị trừ 194 1100 0010 Số trừ 95 0101 1111 Hiệu 99 0110 0011 Trong khi làm phép trừ ta nhận thấy có thể thực hiện phép trừ bằng phép c ộng. Cộng số bị trừ với số đối của số bị trừ (số bù hai), ví dụ 15 – 13 = 2 Ta đã biết -13 biểu diễn theo số bù hai như sau: 1111 0011 15 = (0000 1111)2 -13 = (1111 0011)bù 2 Tổng = (0000 0010)2 = 2 1.3.3.3. Phép nhân Phép nhân các số hệ hai được thực hiện giống như khi ta làm với các số hệ 10. Quy tắc phép nhân với số hệ hai được cho trong bảng sau: a b Y 0 0 0 0 1 0 1 0 0 1 1 1 Trên cơ sở quy tắc vừa nêu và để cho đơn gi ản ta thực hiện m ột phép nhân 2 s ố hệ hai 4 bit để làm sáng tỏ thuật toán nhân: 1001 Sè bÞnh© (9) n 0110 Sè bÞnh© (6) n 0000 Thµnh phÇ 1 cña tæ tÝ luü n ng ch 1001 Thµnh phÇ 2 cña tæ tÝ luü n ng ch 1001 Thµnh phÇ 3 cña tæ tÝ luü n ng ch 0000 Thµnh phÇ 3 cña tæ tÝ luü n ng ch 0110110 Tæ tÝ luü (54) ng ch Tổng tích luỹ = 54 Độ dài cực đại của kết quả trong trường hợp này là 8 bit. Nếu ta có các toán hạng 8 (hoặc 16) bit thì độ dài cực đại của phép toán là 16 (hoặc 32) bit. Phân tích kỹ ví dụ trên ta thấy phép nhân có thể thực hiện theo thuật toán cộng và d ịch (trên c ơ s ở các b ộ c ộng và dịch như sau): 17
  18. Thành phần đầu tiên của tổng tích luỹ thu được là tích của số LSB trong số nhân - với số bị nhân. Nếu LSB = 0 thì thành phần này cũng bằng 0, còn n ếu LSB = 1 thì thành phần này chính bằng số bị nhân. Mỗi thành phần thứ i tiếp theo của tổng tích luỹ sẽ tính được bằng cách tương tự, - nhưng phải dịch trái i bit (có thể bỏ qua các thành phần bằng 0) Tổng của các tổng thành phần là tích cần tìm. Lấy luôn ví dụ trên để minh hoạ. - 1001 Sè bÞnh© (9) n 0110 Sè bÞnh© (6) n Sè bÞnh© dÞ tr¸ i n ch 1001 Sè bÞnh© dÞ tr¸ i n ch 1001 0110110 Tæ tÝ luü (54) ng ch 1.3.3.4. Phép chia Vì vi xử lý gồm các phần tử để thực hiện phép cộng và dịch vì v ậy ta s ẽ đ ưa ra quy tắc thực hiện phép chia bằng cách áp dụng phương pháp cộng và dịch. Bước 1: Đổi số chia ra số bù hai của nó. - Bước 2: Lấy số bị chia cộng với số bù hai của số chia (trừ đi số chia). - Nếu kết quả này có bit dấu bằng 0 (nghĩa là phần này c ủa số b ị chia chia được cho số chia) thì bit tương ứng của thương bằng 1. Nếu kết quả này có bit dấu bằng 1 (nghĩa là phần này của số bị chia không chia được cho số chia) thì bit tương ứng c ủa thương bằng 0 và bu ộc ph ải khôi phục lại giá trị ban đầu của số bị chia bằng cách c ộng k ết qu ả v ới s ố chia ở mã hệ hai. Bước 3: Dịch trái kết quả thu được ở trên và làm lại bước 2 cho đến khi nh ận - được kết quả là 0 (chia hết) hoặc nhỏ hơn số chia (chia còn dư). Ví dụ: Thực hiện phép chia: 255/22 Số bị chia: 215 = 011010111 Số chia 22 = 010110 Số bù hai của số chia = 101010 Các bước thực hiện được tiến hành như sau: Số bị chia = 011010111 Số chia ở mã bù 2 để cộng = 101010 Tổng 1 bit dấu = 0 => thương = 1 = 000100111 Dịch trái tổng 1 = 00100111 Số chia ở mã bù 2 để cộng = 101010 Tổng 2 bit dấu =1 => thương = 0 = 11001111 Số chia ở mã hệ 2 để cộng = 010110 Số bị chia = 00100111 Dịch trái số bị chia = 0100111 18
  19. Số chia ở mã bù 2 để cộng = 101010 Tổng 3 bit dấu = 1 => thương = 0 = 1111011 Số chia ở mã hệ hai để cộng= 010110 Số bị chia = 0100111 Dịch trái số bị chia = 100111 Số chia ở mã bù 2 để cộng = 101010 Tổng 4 bit dấu = 0 => thương = 1 = 010001 Đến đây không thể thực hiện được nữa vì tổng 4 là 010001 = 17 < 22 Như vậy kết quả phép chia là: 1001 = 9 và dư 010001 = 17 1.4. LĨNH VỰC ỨNG DỤNG Vi điều khiển hiện nay được ứng dụng trong nhiều lĩnh vực như: TV, thi ết bị HiFi, máy giặt, điện thoại và trong ô tô...góp phần làm đơn giản hóa quá trình x ử d ụng v ới nhi ều tính năng và độ an toàn cao hơn. Ngoài ra vi đi ều khi ển còn đ ược áp d ụng trong lĩnh v ực khoa học kỹ thuật như: các thiết bị phân tích và đo lường, trong công nghi ệp nh ư các dây chuyền sản xuất tự động, trong lĩnh vực máy công cụ nh ư CNC và đi ều khi ển ch ất l ượng s ản phẩm. 1.5. HƯỚNG PHÁT TRIỂN Yêu cầu đặt ra cho vi điều khiển hiện nay là tăng lĩnh vực ứng dụng v ới t ốc đ ộ xử lý ngày càng nhanh và kích thước nhỏ gọn, công suất tiêu thụ thấp. Vấn đ ề đặt ra là li ệu v ới vi điều khiển 8 bít có còn phù hợp hay không ? ho ặc trong tương lai ph ải thay b ằng các vi đi ều khiển 16/32 bít. Khác với vi xử lý việc phát triển luôn kèm theo việc nâng cao khả năng tính toán bằng cách mở rộng hệ thống bus. Đối với vi điều khi ển không nh ất thi ết phải nh ư th ế, m ột vi đi ều khiển 8 bít cũng đủ cho rất nhiều ứng dụng và vi điều khiển 16 bít là hoàn toàn quá d ư th ừa, trong trường hợp cần giảm giá thành, kích thước và công suất tiêu thụ thì vi điều khiển 4 bít là giải pháp tối ưu. Một vài ứng dụng cần vi điều khi ển có nhi ều kh ối ngo ại vi, có ứng dụng lại cần ngoại vi tốc độ cao, hướng phát triển tương lai là tăng kh ả năng c ủa CPU và kh ối ngoại vi. Một hướng đơn giản là tăng tần số xung đồng hồ để rút ngắn thời gian th ực hi ện chương trình, giảm thời gian biến đổi A/D và tăng tần số gi ới hạn c ủa timer. Tuy nhiên các linh kiện bên ngoài cũng phải có khả năng làm việc ở tần số cao, khi tăng t ần s ố đ ồng cũng làm tăng công suất tiêu thụ của vi điều khiển. Việc tối ưu hóa cấu trúc chương trình và bộ nhớ cũng góp ph ần nâng cao kh ả năng h ệ thống. Trong các ứng dụng đa nhiệm, phương pháp phân đoạn và phân dảy hóa có m ột ý nghĩa rất lớn. Với công nghệ sản xuất mới có thể đồng thời tăng tần số làm vi ệc và gi ảm công su ất tiêu thụ và cả điện áp nuôi điều này sẻ mở ra các lĩnh vực ứng dụng mới trong đó mạch điện rất đơn giản và năng lượng tiêu thụ rất thấp, bằng cách thay đ ổi cú pháp t ập l ệnh thích h ợp cho phép biên dịch dễ dàng từ các ngôn ngữ c ấp cao nh ư ``C'' ho ặc ``FORTH'' sang mã l ệnh của vi điều khiển. 19
  20. 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2