1.1 MỞ ĐẦU
Vào năm 1971 tập đoàn Intel đã giới thiệu 8080, bộ vi xử lý ( micro- processor ) thành công đầu tiên. Sau đó không lâu Motorola, RCA, kế đến là MOS Technology và Zilog đã giới thiệu các bộ vi xử lý tương tự : 6800, 1801, 6502 và Z80. Bản thân các vi mạch ( IC : integrated circuit ) này tuy không có nhiều hiệu quả sử dụng nhưng khi là một phần của một máy tính đơn board. ( single-board Computer) chúng trở thành thành phần trung tâm trong các sản phẩm có ích dùng để nghiên cứu và thiết kế. Các máy tính đơn board này, trong đó có D2 của Motorola, K1M-1 của MOS Technology và SDK-85 của Intel là đáng ghi nhớ nhất, đã nhanh chóng xâm nhập vào các phòng thí nghiệm thiết kế của trường trung học, trường đại học và các công ty điện tử.
Vào năm 1976 Intel giới thiệu bộ vi điều khiển ( microcontroller ) 8748, một chip tương tự như các bộ vi xử lý và là chip đầu tiên trong họ vi điều khiển MCS-48. 8748 là một vi mạch chứa trên 17000 transistor bao gồm một CPU, 1 K byte EPROM, 64 byte RAM, 27 chân xuất nhập và một bộ định thời 8-bit. IC này và các IC khác tiếp theo của họ MCS- nhanh chóng trở thành chuẩn công nghiệp trong các ứng dụng hướng điều khiển ( control-oriented application ). Việc thay thế các thành phần cơ điện trong các sản phẩm như các máy giặt và các bộ điều khiển đèn giao thông là một ứng dụng phổ biến ban đầu. Các sản phẩm khác mà trong đó bộ vi điều khiển được tìm thấy bao gồm xe ô tô, thiết bị công nghiệp, các sản phẩm tiêu dùng và các ngoại vi của máy tính ( bàn phím của IBM-PC là một thí dụ sử dụng bộ vi điều khiến trong các thiết kế tối thiểu thành phần ).
Độ phức tạp, kích thước và khả năng của các bộ vi điều khiển được tăng thêm một bậc quan trọng vào năm 1980 khi Intel công bố chip 8051, bộ – điều khiển đầu tiên của họ vi điều khiển MCS-51. So với 8084, chip 8051 chứa trên 60000 transistor bao gồm 4K byte ROM, 128 byte RAM, 32 đường xuất nhập, 1 port nối tiếp và 2 bộ định thời 16-bit – một số lượng mạch đáng chú ý trong một IC đơn. Các thành viên mới được thêm vào cho họ MCS-51 và các biến thể ngày nay gần như có gấp đôi các đặc trưng này. Tập đoàn Siemens, nguồn sản xuất thứ hai các bộ vi điều khiển thuộc họ MCS-51 cung cấp chip SAB80515, một cải tiến của 8051 chứa trong một vỏ 68 chân, có 6 port xuất nhập 8-bit, 13 nguồn tạo ra ngắt và một bộ biến đổi A/D 8-bit với 8 kênh ngõ vào. Họ 8051 là một trong những bộ vi điều khiển 8-bit mạnh và linh hoạt nhất, đã trở thành bộ vi điều khiển hàng đầu trong những năm gần đây.
Quyển sách này khảo sát họ vi điều khiến MCS-51. Các chương tiếp theo giới thiệu cấu trúc phần cứng và phần mềm của họ MCS-51, đồng thời chứng minh qua nhiều thí dụ thiết kế, cách mà họ vi điều khiển này có thế tham gia vào các thiết kế điện tử với số thành phần thêm vào tối thiểu.
Trong các mục sau của chương này, thông qua việc giới thiệu vắt tắt về cấu trúc máy tính, ta sẽ phát triển từ vựng của nhiều từ được cấu tạo từ chữ đầu của các từ khác và các từ đang được sử dụng phổ biến nhưng dễ nhầm lẫn trong lĩnh vực này. Do nhiều thuật ngữ có định nghĩa mơ hồ và trùng lấp phụ thuộc vào định kiến của các tập đoàn lớn và các ý chợt nảy ra của nhiều tác giả khác nhau, cách giải quyết của chúng ta mang tính thực tiển hơn là trừu tượng. Mỗi một thuật ngữ được giới thiệu trong khung cảnh chung nhất cùng với sự giải thích rõ ràng.
1.2 THUẬT NGỮ
Một máy tính ( Computer ) được định nghĩa bởi hai điểm chính :
- Khả năng được lập trình để thao tác trên dữ liệu mà không cần đến sự can thiệp của con người.
- Khả năng lưu trữ và khôi phục dữ liệu
Tổng quát hơn, một hệ máy tính ( Computer system ) cũng bao gồm các thiết bị ngoại vi ( peripheral device ) để truyền thông với con người cũng như các chương trình ( program ) đế xử lý dữ liệu. Thiết bị là phần cứng ( hardware ) và chương trình là phần mềm ( software ). Chúng ta hãy bắt đầu với phần cứng của máy tính bằng cách khảo sát hình 1.1.
Hình 1.1 là sơ đồ khối đơn giản, không chi tiết một cách cố ý nhằm mục đích tiêu biểu cho tất cả các loại máy tính. Như ta đã thấy, một hệ máy tính bao gồm một đơn vị xử lý trung tâm CPU ( Central Processing unit ), đơn vị này kết nối với bộ nhớ truy xuất ngẫu nhiên RAM ( ram dom access memory ) và bộ nhớ chỉ đọc ROM ( read only memory ) thông qua bus địa chi ( address bus ), bus dữ liệu ( data bus ) và bus điều khiển ( control bus ). Các mạch giao tiếp ( interface circuit ) kết nối các bus của hệ thống ( gọi tắt là bus hệ thống ) với các thiết bị ngoại vi. Ta sẽ đề cập chi tiết các đơn vị vừa nêu trên.
Hình 1.1 : Sơ đồ khối của một hệ máy vi tính CPU : đơn vị xử lý trung tâm
1.3 ĐƠN VỊ XỬ LÝ TRUNG TÂM
CPU, trái tim của hệ máy tính, quản lý tất cả các hoạt động của hệ và thực hiện tất cả các thao tác trên dữ liệu. Hầu hết các CPU chỉ bao gồm một tập các mạch logic thực hiện liên tục hai thao tác : tìm nạp lệnh và thực thi lệnh. CPU có khả năng hiểu và thực thi các lệnh dựa trên một tập các mã nhị phân, mỗi một mã nhị phân biểu thị một thao tác đơn giản. Các lệnh này thường là các lệnh số học ( như cộng, trừ, nhân, chia ), các lệnh logic ( như AND, OR, NOT, v.v… ), các lệnh di chuyển dữ liệu hoặc các lệnh rẽ nhánh, được biểu thị bởi một tập các mã nhị phân và được gọi là tập lệnh ( instruction set ).
Hình 1.2 cho ta một cái nhìn rất đơn giản bên trong của CPU. Hình này trình bày một tập các thanh ghi ( register ) có nhiệm vụ lưu giữ tạm thời các thông tin, một đơn vị số học logic ALU ( arithmetic-logic unit ) có nhiệm vụ thực hiện các thao tác trên các thông tin này, một đơn vị giải mã lệnh và điều khiển ( instruction decode and control unit ) có nhiệm vụ xác định thao tác cần thực hiện và thiết lập các hoạt động cần thiết đế thực hiện thao tác. CPU còn có hai thanh ghi nữa : thanh ghi lệnh IR ( instruction register ) lưu giữ mã nhi phân của lệnh để được thực thi và bộ đếm chương trình PC ( program counter ) lưu giữ địa chỉ của lệnh kế tiếp trong bộ nhớ cần được thực thi.
Hình 1.2 Đơn vị xữ lý trung tâm CPU
CPU : đơn vị xử lý trung tâm
Instruction register ( IR ) : thanh ghi lệnh ( IR )
Instruction decode and control unit : đơn vị giải mã lệnh và điều khiển
Program counter ( PC ) : bộ đếm chương trình ( PC )
Registers : các thanh ghi
Việc tìm nạp một lệnh từ RAM hệ thống là một trong các thao tác cơ bản nhất mà CPU thực hiện. Việc tìm nạp lệnh được thực hiện theo các bước sau :
- Nội dung của PC được đặt lên bus địa chỉ
- Tín hiệu điều khiển READ được xác lập ( chuyển sang-trạng thái tích cực )
- Dữ liệu ( opcode của lệnh ) được đọc từ RAM và đưa lên bus dữ liệu
- opcode được chốt vào thanh ghi lệnh bên trong CPU
- PC được tăng để chuẩn bị tìm nạp lệnh kế từ bộ nhớ
CPU : đơn vị xử lý trung tâm
Program counter : bộ đếm chương trình
Instruction register : thanh ghi lệnh
Clock : chân xung clock
Read : chân điều khiển đọc
Address bus : bus địa chỉ
Data bus : bus dữ liệu
Control bus : bus điều khiển
Giai đoạn thực thi lệnh bao gồm việc giải mã opcode và tạo ra các tín hiệu điều khiển, các tín hiệu này điều khiến việc xuất nhập giữa các thanh ghi nội với ALU và thông báo để ALU thực hiện thao tác đã được xác định. Do các thao tác có tầm thay đổi rộng, phạm vi dành cho các giải thích vừa nêu trên có phần nào bị giới hạn, chỉ áp dụng được cho các thao tác đơn giản như tăng nội dung của một thanh ghi. Các lệnh phức tạp hơn đối hỏi thêm nhiều bước nữa, chẳng hạn như đọc byte dữ liệu thứ hai và byte dữ liệu thứ ba đế thực hiện thao tác.
1.4 BỘ NHỚ BÁN DẪN : RAM VÀ ROM
Các chương trình và dữ liệu được lưu giữ trong bộ nhớ. Các biến thể của bộ nhớ máy tính và các thành phần kèm theo rất đa dạng, và công nghệ thường bị đột phá nên việc nghiên cứu liên tục và bao quát bộ nhớ đòi hỏi phải theo kịp các phát triển mới nhâ’t. Các bộ nhớ được truy xuât trực tiếp bởi CPU bao gồm các IC bán dẫn gọi là RAM và ROM. Có hai đặc trưng dùng đề phân biệt RAM và ROM : thứ nhât RAM là bộ nhớ đọc / ghi trong khi ROM là bộ nhớ chỉ đọc, thứ hai RAM không tiếp tục lưu giữ nội dung khi bị mất nguồn cấp điện trong khi ROM thì ngược lại.
Hầu hết các hệ máy tính đều có ố đĩa và một dung lượng ROM nhỏ chỉ cần đủ để lưu giữ các chương trình ngắn, thường sử dụng, nhằm thực hiện các thao tác xuất nhập. Các chương trình và dữ liệu của người sử dụng được lưu trên đĩa và được nạp vào RAM để thực thi. Với giá thành liên tục được giảm thấp, các hệ máy tính nhỏ thường chứa bộ nhớ RAM từ hàng triệu byte đến hàng trăm triệu byte.
1.5 CÁC BUS : ĐỊA CHỈ, DỮ LIỆU VÀ ĐIỀU KHIỂN
Một bus là một tập các dây mang thông tin có cùng một mục đích. Việc truy xuất tới một mạch xung quanh CPU sử dụng ba bus : bus địa chỉ, bus dữ liệu và bus điều khiến. Với mỗi thao tác đọc hoặc ghi, CPU xác định rõ vị trí của dữ liệu ( hoặc lệnh ) bằng cách đặt một địa chỉ lên bus địa chỉ, sau đó tích cực một tín hiệu trên bus điều khiển đế chỉ ra thao tác là đọc hay ghi. Thao tác đọc lấy một byte dữ liệu từ bộ nhớ ở vị trí đã xác định và đặt byte này lên bus dữ liệu. CPU đọc dữ liệu và đặt dữ liệu vào một trong các thanh ghi nội của CPU. Với thao tác ghi, CPU xuất, dữ liệu lên bus dữ liệu. Nhờ vào tín hiệu điều khiển, bộ nhớ nhận biết đây là thao tác ghi và lưu dữ liệu vào vị trí đã được xác định.
Hầu hết các máy tính nhỏ có từ 16 đến 32 đường địa chỉ và có khả năng truy xuất 2n vị trí nhớ. Một bus địa chỉ 16- bít có thế truy xuất một bộ nhớ có 64 K vị trí nhớ, một bus địa chỉ 20-bit có khả năng truy xuất 1 M vị trí nhớ và một bus địa chỉ 32-bit có khả năng truy xuât đến 4 G vị trí nhớ ( 1 K = 1024, 1 M = 1024 K và 1 G = 1024 M ).
Bus dữ liệu mang thông tin giữa CPU và bộ nhớ cũng như giữa CPU và các thiết bị xuất nhập. Việc cố gắng nghiên cứu bao quát phần lớn được dùng vào việc xác định loại các hoạt động làm mất nhiều thời gian thực thi đáng giá của máy tính. Hiển nhiên là máy tính sử dụng đến 2/3 thời gian vào các việc di chuyển dữ liệu. Vì đa số các thao tác di chuyến dữ liệu xảy ra giữa một thanh ghi của CPU với ROM và RAM ngoài, số đường ( hay độ rộng ) của bus dữ liệu rất quan trọng đối với hiệu suất tổng thể của máy tính. Giới hạn bởi độ rộng này có dạng cố chai : có thể có một lượng rất lớn bộ nhớ trong hệ thống và CPU có thế có khả năng tính toán rât lớn nhưng việc truy xuất dữ liệu – di chuyền dữ liệu giữa bộ nhớ và CPU thông qua bus dữ liệu – thường bị nghẽn như cổ chai do độ rộng của bus dữ liệu.
Điều này rất quan trọng nên người ta thường thêm một tiền tố ( trong tiếng Anh ) để chỉ ra sự mở rộng để tránh hiện tượng cổ chai. Câu máy tính 16-bit chỉ ra rằng máy tính có 16 đường dữ liệu. Các máy tính được phân loại 4-bit, 8-bit, 16-bit, 32-bit có khả năng tính toán tổng thể tăng khi độ rộng của bus dữ liệu tăng.
Lưu ý là bus dữ liệu, như được chỉ ra trong hình 1.1, là bus hai chiều còn bus địa chỉ là bus một chiều. Các thông tin địa chỉ luôn luôn đươc cung cấp bởi CPU ( được chỉ bởi mũi tên trong hình 1.1 ) trong khi dữ liệu di chuyển theo cả hai hướng tùy thuộc vào thao tác được dự định là đọc hay ghi. Cũng lưu ý là thuật ngữ “ dữ liệu “ được sử dụng theo nghĩa tổng quát : ” thông tin ” di chuyến trên bus dữ liệu có thế là lệnh của chương trình, địa chỉ theo sau lệnh hoặc dữ liệu được sử dụng bởi chương trình.
Bus điều khiển là một hỗn hợp các tín hiệu, mỗi một tín hiệu có một vai trò riêng trong việc điều khiến có trật tự hoạt động của hệ thống. Theo lệ thường, các tín hiệu điều khiển là các tín hiệu định thời được cung cấp bởi CPU để đồng bộ việc di chuyến thông tin trên các bus địa chỉ và dữ liệu. Mặc dù thông thường có ba tín hiệu như là CLOCK, READ và WRITE đối với việc di chuyển dữ liệu cơ bản giữa CPU và bộ nhớ, tên và hoạt động của các tín hiệu điều khiển phụ thuộc nhiều vào CPU cụ thể. Ta cần nghiên cứu chi tiết các tham khảo kỹ thuật của các nhà sản xuât.
1.6 CÁC THIẾT BỊ XUẤT NHẬP
Các thiết bị xuât nhập hay các thiết bị ngoại vi của máy tính cho ta đường truyền thông giữa hệ máy tính với thế giới bên ngoài. Không có các thiết bị ngoại vi, các hệ máy tính chỉ là những chiếc máy bị thu hẹp và ít được sử dụng. Tổng quát có ba loại thiết bị xuât nhập là các thiết bị lưu trữ lớn, các thiết bị giao tiếp với con người và các thiết bị điều khiển / kiểm tra.
1.6.1 Các thiết bị lưu trữ lớn
Cũng như các bộ nhớ bán dẫn RAM và ROM, các thiết bị lưu trữ lớn luôn luôn tăng trưởng và phát triển. Như tên gọi, các thiết bị lưu trữ lớn lưu trữ các lượng lớn thông tin ( chương trình hoặc dữ liệu ) mà các thông tin này không thể chứa đủ trong RAM tương đối nhỏ ( còn gọi là bộ nhớ chính ) của máy tính. Thông tin này phải được nạp vào trong bộ nhớ chính trước khi CPU truy xuất chúng. Nếu ta phân loại theo sự truy xuất, các thiết bị lưu trữ lớn hoặc thuộc loại Online hoặc thuộc loại archival. Bộ lưu trữ loại Online thường là đĩa từ thích hợp với CPU không có sự can thiệp của con người khi yêu cầu một chương trình, bộ lưu trữ archival thường là đĩa hoặc băng từ mặc dù các đĩa quang như là CD-ROM hoặc công nghệ WORM hiện đang được ưa chuộng và có thể thay thê các bộ lưu trữ archival do độ tin cậy, khả năng lưu trữ và giá thành thấp.
1.6.2 Các thiết bị giao tiếp với con người
Việc liên kết con người và máy được thực hiện qua nhiều thiết bị giao tiếp với con người mà thông thường nhất là thiết bị đầu cuối hiển thị video VDT ( video display terminal ) và máy in. Máy in là thiết bị xuất còn các VDT thực ra là 2 thiết bị vì chúng chứa một bàn phím để nhập và một đèn tia âm cực CRT ( cathode ray tube ) để xuất. Một lĩnh vực kỹ thuật, được gọi là “ các nhân tô’ con người đã phát triển từ nhu cầu thiết kế các thiết bị ngoại vi cho con người với mục đích là an toàn, tiện nghi và hiệu quả cùng với các đặc tính của con người đối với những máy mà con người sử dụng. Từ đó ta thấy có nhiều công ty sản xuât ra các thiết bị ngoại vi hơn là các công ty sản xuất ra máy tính.
Đối với hầu hết các hệ máy tính, thường ta có tối thiểu 3 thiết bị : một bàn phím, một CRT và một máy in. Các thiết bị khác giao tiếp với con người bao gồm : cần điều khiển trò chơi, bút sáng, con chuột, ống nói, loa v.v… .
1.6.3 Các thiết bị điểu khiển / kiểm tra
Nhờ vào các thiết bị điều khiển / kiểm tra, các máy tính có thể thực hiện vô số các tác vụ hướng điều khiển cũng như thực hiện chúng không ngơi nghỉ, không mệt mỏi và điều này vượt xa khả năng của con người. Nhiều ứng dụng trong đời sông hoặc trong công nghiệp sử dụng các thiết bị này.
Các thiết bị điều khiển là các thiết bị xuất hoặc các bộ kích thích ( actuator ), các thiết bị kiếm tra là các thiết bị nhập hoặc các cảm biến biến dối các đại lượng phi điện như nhiệt, ánh sáng, áp suât, v.v… thành các dại lượng diện như điện áp hay dòng điện để máy tính đọc. Mạch giao tiếp biến dổi diện áp hay dòng điện này thành các mã nhị phân hoặc ngược lại và thông qua phần mềm, một quan hệ được thiết lập giữa các thiết bị nhập và các thiết bị xuất.
Việc giao tiếp bằng phần cứng và phần mềm giữa các thiết bị này với các bộ vi diều khiển là một trong các chủ đề chính của quyển sách này.
1.7 CHƯƠNG TRÌNH : LỚN VÀ NHỎ
Các thảo luận ở trên tập trung vào phần cứng của các hệ máy tính, các chương trình hoặc phần mềm điều khiển phần cứng làm việc chỉ mới đề cập qua. Tầm quan trọng tương đối của phần cứng so với phần mềm đã được dịch chuyển một cách rõ rệt trong thập niên cuối của thê kỷ 20. Trong khi trước đây giá sản xuất và bảo trì phần cứng của máy tính rất đắt so với giá thành của phần mềm, ngày nay với các chíp có độ tích hợp cao LSI ( large scale integrated ) và rất cao VLSI ( very large scale integrated ) giá thành của phần cứng giảm đi rất nhiều. Các công việc đòi hỏi nghiên cứu sâu như viết, cung câp và thu thập tư liệu, bảo trì, cập nhật và phân phối phần mềm chiếm phần lớn giá thành trong việc tự động hóa quá trình sử dụng các máy tính
Applications software : phần mềm ứng dụng
User interface : giao diện với người sử dụng
Operating system : hệ điều hành
Command language, Utilities : ngôn ngữ lệnh, các tiện ích
Input/output subroutines : các chương trình con xuất nhập
Access to hardware : truy xuất đến phần cứng
Hardware : phần cứng
Ta hãy khảo sát các loại phần mềm khác nhau. Hình 1.4 minh họa ba cấp phần mềm có vị trí ở giữa người sử dụng và phần cứng của một hệ máy tính : phần mềm ứng dụng ( application software ), hệ điều hành ( operating system ) và các chương trình con xuất nhập ( input/output subroutine ).
Ớ cấp thấp nhât các chương trình con xuất nhập trực tiếp quản lý phần cứng của hệ thống, đọc các ký tự từ bàn phím, đưa các ký tự lên GRT, đọc một khối thông tin từ đĩa và v.v… Do các chương trình con này liên kết mật thiết với phần cứng, chúng được viết bởi các chuyên gia thiết kế phần cứng và thường được lưu giữ trong ROM ( chúng là hệ xuất nliập cơ bản BIOS [ basic input output system ] trên máy tính cá nhân PC [ personal Computer ] của IBM chẳng hạn ).
Để giúp cho người lập trình dễ dàng truy cập đến phần cứng của hệ thống, các điều kiện nhập và thoát được xác định một cách rõ ràng đối với các chương trình con xuất nhập. Người lập trình chỉ cần khởi động các giá trị cho các thanh ghi của CPU và gọi chương trình con : thao tác cần thiết được thực thi và kết quả sẽ trả về trong các thanh ghi của CPU hoặc lưu lại trong RAM hệ thống.
Để bổ sung đầy đủ cho các chương trình con xuất nhập, ROM chứa một chương trình khởi động ( start-up program ), chương trình này được thực thi khi hệ thống được cấp điện hoặc được thiết lập lại ( reset ) bằng tay. Bản chất không bị mất nội dung của ROM được sử dụng ở đây vì chương trình khởi động phải hiện hữu trong thời gian khởi động hệ thống. Chương trình này kiểm tra các tùy chọn, khởi động bộ nhớ, thực hiện việc kiểm tra chẩn đoán hư hỏng v.v… Cuối cùng nhưng không kém quan trọng, một trình nạp bootstrap ( bootstrap loader ) đọc track đầu tiên ( một chương trình nhỏ ) từ đĩa vào RAM và chuyển điều khiến tới chương trình nhỏ này để nạp phần thường trú trong RAM của hệ điều hành ( một chương trình lớn ) từ đĩa và chuyển điều khiển tới chương trình lớn này, hoàn tất việc khởi động hệ thống.
Hệ điều hành là một tập hợp lớn các chương trình được nạp vào trong một hệ máy tính nhằm cung cấp cắc cơ chế truy xuất, quản lý và sử dụng một cách có hiệu quả các tài nguyên ( resource ) của máy tính. Các khả năng này được thể hiện thông qua ngôn ngữ lệnh điều khiển ( command language ) và các chương trình tiện ích ( utility program ) của hệ điều hành, và đến lượt chúng tạo điều kiện thuận lợi cho việc phát triển các phần mềm ứng dụng. Nếu một phần mềm ứng dụng được thiết kế tốt, người sử dụng tác động tương hỗ với máy tính mà không cần có kiến thức nhiều về hệ điều hành. Cung cấp một giao diện với người sử dụng một cách an toàn, hiệu quả là một trong các mục tiêu cơ bản của việc thiết kế các phần mềm ứng dụng.
1.8 MICRO, MINI VÀ MAINFRAME
Chúng ta phân loại máy tính dựa theo độ lớn và khả năng tính toán : máy vi tính ( microcomputer ), máy tính mini ( minicomputer ) và máy tính mainframe ( mainframe Computer ). Đặc điểm chính của máy vi tính là kích thước và khả năng đóng gói của CPU. Máy vi tính chứa bên trong một vi mạch tích hợp đơn gọi là bộ vi xử lý ( microprocessor ). Các máy tính mini và mainframe thì phức tạp hơn trong từng chi tiết cấu trúc, chúng có các CPU chứa nhiều vi mạch tích hợp, từ vài IC đối với máy tính mini đến vài board chứa các IC đối với máy tính mainframe. Đây là điều cần thiết để có được tốc độ cao và khả năng tính toán mạnh.
Các máy vi tính điển hình của IBM-PC, Apple Macintosh và Commo- dore Amiga sử dụng một bộ vi xử lý làm CPU. RAM, ROM và các mạch giao tiếp yêu cầu nhiều vi mạch với số thành phần thường tăng theo khả năng tính toán. Các mạch giao tiếp có độ phức tạp thay dổi tùy thuộc vào các thiết bị xuất nhập. Chẳng hạn để điểu khiển một loa chứa trong hầu hết các máy vi tính ta chỉ cần một cặp cổng logic, tuy nhiên mạch giao tiếp và điều khiển ổ dĩa cần nhiều vi mạch ở dạng LSI.
Có một đặc trưng khác phân biệt máy vi tính, máy tính mini và máy tính mainframe. Các máy vi tính là các hệ thống chi dành cho một người sử dụng và thuộc loại đơn tác vụ, chúng chỉ tác động tương hỗ với một người sử dụng và chúng chỉ thực thi một chương trình ở một thời điểm. Các máy tính mini và mainframe là các hệ thống dành cho nhiều người sử dụng và thuộc loại đa tác vụ, chúng có thế tác động tương hỗ với nhiều người sử dụng và thực thi đồng thời nhiều chương trình. Thực tế, việc thực thi đồng thời nhiều chương trình là ảo giác được tạo ra từ việc chia xẻ thời gian sử dụng các tài nguyên của CPU. Tuy nhiên, với các hệ đa xử lý có nhiều CPU, các tác vụ được thực thi đồng thời.
1.9 TỪ BỘ VI XỬ LÝ ĐẾN BỘ VI ĐIÊU KHIỂN
Như đã đề cập ở các phần trên, các bộ vi xử lý là các CPU đơn chíp được sử dụng trong các máy vi tính. Vậy thì đâu là sự khác nhau giữa một bộ vi điều khiến và một bộ vi xử lý. Câu hỏi này có thể được trả lời từ 3 phối cảnh : câu trúc phần cứng ( hardware architecture ), các ứng dụng và các đặc trưng của tập lệnh ( instruction set feature ).
1.9.1 Cấu trúc phần cứng
Để chỉ rõ sự khác nhau giữa các bộ vi diều khiển và các bộ vi xử lý, hình 1.2 được vẽ lại chi tiết hơn ở hình 1.5.
Trong khi bộ vi xử lý là một CPU đơn chíp, một bộ vi điều khiển là một vi mạch đơn chứa bên trong một CPU và các mạch khác để tạo nên một hệ máy vi tính đầy đủ. Các thành phần ở bên trong của khung vẽ bằng các đường không liên tục ở hình 1.5 là phần chủ yếu của hầu hết các bộ vi điều khiến.
Ngoài CPU, các bộ vi điều khiển còn chứa bên trong chúng các RAM, ROM, mạch giao tiếp nối tiếp, mạch giao tiếp song song, bộ định thời và các mạch điều khiển ngắt, tất cả hiện diện bên trong một vi mạch. Dĩ nhiên dung lượng của RAM trong chíp không thể đạt bằng với dung lượng RAM ở các máy vi tính nhưng như ta sẽ khảo sát sau, điều này không phải là một hạn chế vì các bộ vi điều khiển được thiết kế với dự định dành cho những ứng dụng hoàn toàn khác.
CPU : đơn vị xử lý trung tâm
Timers : các bộ định thời
Interrupt control : điều khiển ngắt
Serial interface : giao tiếp nối tiếp Parallel interface : giao tiếp song song
Address, data and control buses : các bus địa chỉ, dữ liệu và điều khiển RAM : bộ nhớ đọc / ghi ROM : bộ nhớ chỉ dọc
External clocks : các xung clock bên ngoài
External interrupts : các ngắt ngoài
Serial device : thiết bị nối tiếp
Parallel device : thiết bị song song
Một đặc trưng quan trọng của bộ vi điều khiển là hệ thông ngắt được thiết kế bên trong chip. Cũng như các thiết bị hướng điều khiển, các bộ vi điều khiển đáp ứng với các tác động bên ngoài ( các ngắt ) theo thời gian thực. Chúng phải thực hiện việc chuyển đổi ngữ cảnh rất nhanh theo một quá trình trong khi đang thực thi một quá trình khác theo yêu cầu của một sự kiện. Dĩ nhiên hầu hết các bộ vi xử lý đều có khả năng hiện thực các sơ đồ ngắt ( interrupt scheme ) nhưng phải sử dụng các thành phần bên ngoài trong khi đó mạch bên trong của một chip vi điều khiển bao gồm các mạch quản lý ngắt cần thiết.
1.9.2 Các ứng dụng
Các bộ vi xử lý hầu hết được dùng làm các CPU trong các hệ máy vi tính trong khi các bộ vi điều khiển được tìm thấy trong các thiết kế nhỏ, vài số thành phần thêm vào tối thiểu nhằm thực hiện các hoạt động hướng điều khiển. Trong quá khứ các thiết kế như vậy yêu cầu hàng chục hoặc thậm chí hàng trăm vi mạch số. Bộ vi điều khiển giúp ta giảm thiểu số lượng tổng thể các thành phần. Tất cả chỉ cần một bộ vi điều khiển, một số ít các thành phần hỗ trợ và một chương trình điều khiển chứa trong ROM. Các bộ vi điều khiển thích hợp với các ứng dụng điều khiển thiết bị xuất nhập trong các thiết kế yêu cầu số thành phần tối thiểu, trong khi đó các bộ vi xử lý thích hợp với các ứng dụng xử lý thông tin trong các hệ máy tính.
1.9.3 Các đặc trưng của tập lệnh
Từ các khác nhau về ứng dụng, các bộ vi điều khiển có các yêu cầu khác đôi với tập lệnh của chúng so với các bộ vi xử lý. Các tập lệnh của các bô vi xử lý bao gồm các lênh xử lý bao quát nên chúng mạnh về các kiểu định địa chỉ với các lệnh cung câp các hoạt động trên các lượng dữ liệu lớn. Các lệnh của chúng có thê hoạt động trên các 1/2 Byte, byte, từ, từ kép. Các kiểu định địa chỉ cung cấp khả năng truy xuất dãy liệu lớn bằng cách sử dụng các con trỏ địa chỉ và các offset . Các kiểu tăng và giảm tự động làm đơn giản hóa các bước thực thi trên các dãy dữ liệu ở các giới hạn byte, từ và từ kép. Các lệnh đặc quyền không thể thực thi trong các chương trình của người sử dụng và việc liệt kê còn tiếp tục nữa nếu ta muốn.
Các bộ vi điều khiển có các tập lệnh cung cấp các điều khiển xuất nhập -Mạch giao tiếp cho nhiều ngõ nhập và ngõ xuât chỉ sử dụng một bit. Thí dụ một động cơ có thế được điều khiển chạy hoặc dừng bằng cách cung cấp tín hiệu điều khiển từ một port 1-bit. Các bộ vi điều khiến có các lệnh set và xóa các bit đơn và thực thi các thao tác hướng bit ( bit oriented operation ) như là AND, OR, XOR, nhảy nếu bit được set hoặc được xóa, v.v…
Đặc trưng mạnh này hiếm khi thây trong các bộ vi xử lý thường được thiết kế đế hoạt động trên các byte hoặc các đơn vị dữ liệu lớn hơn.
Trong các thiết bị điều khiển và kiếm tra, các bộ vi điều khiển có các mach bẽn trong và các lệnh dành cho các thao tác xuâ’t nhập, định thời sự kiện, cho phép và thiết lập các mức ưu tiên cho các ngắt được tao ra bởi các kích thích bên ngoài. Các bộ vi xử lý thường yêu cầu thêm các mạchpIĩụT các IC giao tiếp nối tiếp, các IC điều khiến ngắt, các bộ định thời v.v . ) để thực hiện cùng các thao tác. Tuy nhiên, khả năng xử lý tuyệt đối của bộ vi điều khiến không bao giờ tiếp cận được với khả năng xử lýiuỉa bộ vi xử lý do một lượng lớn IC cần được cung câp cho các chức năng trán chip – điều này trổ giá cho khả năng xử lý.
Do kết cấu phần cứng bên trong các bộ vi điều khiển, các lệnh phải thật cô động và hầu hết được thực thi trên từng byte. Một tiêu chuẩn thiết kế là chương trình điều khiển cần phải đặt vừa trong ROM nội vì việc thêm ROM bên ngoài sẽ làm tăng giá thành của sản phẩm thiết kế trên bộ vi điều khiển. Một sơ đồ mã hóa chặt chẽ luôn luôn cần thiết cho tập lệnh. Đặc trưng này hiếm thây ở các bộ vi xử lý; các kiểu định địa chỉ mạnh của chúng làm cho việc mã hóa các lệnh ít chặt chẽ hơn.
1. 10 KHÁI NIỆM MỚI
Các bộ vi điều khiển không được dùng trong các máy tính nhưng lại được sử dụng trong các sản phẩm tiêu dùng và các sản phẩm công nghiệp. Những người sử dụng các sản phẩm này thường không nhận biết sự hiện diện của các bộ vi điều khiển; với họ, các thành phần bên trong là những chi tiết không quan trọng trong thiết kế.
1.11 ƯU VÀ KHUYẾT ĐIỂM : MỘT THÍ DỤ THIẾT KẾ
Các công việc được thực hiện bởi các bộ vi điều khiển thì không mới. Điều mới là các thiết kế được hiện thực với ít thành phần hơn so với các thiết kế trước đó. Các thiết kế trước đó yêu cầu vài chục hoặc thậm chí vài trăm IC để hiện thực nay chỉ có một ít thành phần trong đó bao gồm bộ vi điều khiển. Số thành phần được giảm bớt, hậu quả trực tiếp của tính khả lập trình của các bộ vi điều khiển và độ tích hợp cao trong công nghệ chế tạo vi mạch, thường chuyển thành thời gian phát triển ngắn hơn, giá thành khi sản xuất thấp hơn, công suất tiêu thụ thấp hơn và độ tin cậy cao hơn. Các hoạt động logic yêu cầu vài IC thường được hiện thực bên trong bộ vi điều khiển cùng với một chương trình điều khiển thêm vào.
Vấn đề ở đây là tốc độ. Các giải pháp dựa trên bô vi điều khiển không bao giờ nhanh bằng giai pháp dựa trên các thành phần rời rac. ĩíhừng tình huốngTđoi hỏi phải đáp ứng thật nhanh đổivới các sự kiện ( chiếm thiểu số trong các ứng dụng ) sẽ đươc quản lý tồi khi dựa vào các bộ vi điều khiển.
Lấy thí dụ ta khảo sát hình 1.6, thí dụ này hiện thực một cổng NAND bằng cách sử dụng chip vi điều khiển 8051. Không phải hoàn toàn hiển nhiên mà một bộ vi điều khiển có thể được sử dụng cho một hoạt động như vậy, nhưng lại có thế được. Phần mềm phải thực hiện các thao tác được chỉ ra trong lưu đồ ở hình 1.7. Chương trình hợp ngữ của 8051 cho hoạt động logic này như sau :
Nếu chương trình này được thực thi trên bộ vi điều khiển 8051, chức năng cổng NAND 3-ngõ vào được thực hiện. Thời gian trì hoãn truyền tính từ khi có sự chuyển trạng thái ở ngõ vào cho đến khi xuât hiện logic đúng ở ngõ ra khá lâu, ít nhất cũng so sánh được với các mạch TTL tương đương. Tùy thuộc vào lúc ngõ vào được chuyển trạng thái và chương trình biết được sự chuyển trạng thái này, thời gian trì hoãn có thể từ 3 đến 17 nsec ( giả sử 8051 hoạt động với tần sô’ xung clock chuẩn là 12 MHz ). Thời gian trì hoãn truyền của mạch TTL tương đương vào khoảng 10 nsec. Hiển nhiên là không có tranh cải khi so sánh tốc độ cùa các bộ vi điều khiến với các hiện thực TTL có cùng chức năng.
Trong nhiều ứng dụng, đặc biệt là các ứng dụng có liên quan đến con người, các khoảng thời gian trễ tính bằng nsec, µsec hoặc thậm chí msec là không quan trọng. Thí dụ về cổng logic ở trên minh họa rằng các bộ vi điều khiến có thế hiện thực các thao tác logic. Hơn nữa, khi các thiết kế trở nên phức tạp hơn, các lợi ích cùa thiết kế dựa trên các bộ vi điều khiến được thấy rõ hơn. Việc giảm bớt các thành phần là một điều lợi như đã đề cập, các thao tác trong chương trình điều khiển làm cho thiết kế có thể thay đổi bằng cách thay đổi phần mềm. Điều này có ảnh hưởng tối thiểu đến chu kỳ sản xuất.
Hình 1.6 : Hiện thực một cổng logic dùng bộ vi điều khiển 8051
Enter : điểm nhập
Read bit P1.4 : đọc bit P1.4
AND with bit P1.5 : AND với bit P1.5
AND with bit P1.6 : AND với bit P1.6
Complement result : lấy bù kết quả
Send bit to P1.7 : gởi bit đến P1.7
Hình 1.7 : Lưu đồ cho chương trình hiện thực cổng logic