Xuất phát từ vai trò của kỹ thuật vi xử lý, sự phổ biến của nó trong các lĩnh vực, ta cần nghiên cứu và nắm vững kiến thức về kỹ thuật này để bắt kịp nhịp phát triển của thế giới. Đây là một yêu cầu quan trọng và mang tính chiến lược trong hiện tại và tương lai. Hiện nay, trên thế giới đã có sẵn rất nhiều bộ công cụ (KIT) đa năng, đáp ứng được yêu cầu để nghiên cứu và ứng dụng. Các KIT được xây dựng để có thể thực hiện nhiều chức năng, và việc sử dụng các tài nguyên của KIT hiệu quả hay không phụ thuộc vào người khai thác. Đây cũng là một phương pháp giúp cho người học nắm vững kiến thức về kỹ thuật vi xử lý. Tuy nhiên, tài nguyên của các KIT này thường nhiều hơn nhiều so với nhu cầu sử dụng của ta. Do đó, vấn đề đặt ra là: nếu ta có thể làm chủ được kỹ thuật này, ta có thể thực hiện được các thiết kế theo yêu cầu với phần cứng tối giản và phần mềm tối ưu.
MỤC LỤC CHƯƠNG 1 - KIẾN TRÚC HỆ VI XỬ LÝ ĐA NĂNG 16 BIT 3 LỜI NÓI ĐẦU Kể từ những thập niên cuối của thế kỷ 20, kỹ thuật điện tử đã liên tục có những tiến bộ vượt bậc, đặc biệt là trong kỹ thuật chế tạo mạch vi điện tử. Sự phát triển nhanh chóng của kỹ thuật vi điện tử đã tạo ra bước ngoặt quan trọng trong sự phát triển của khoa học tính toán và xử lý thông tin. Ngày nay, các thiết bị điện tử có mặt ở khắp nơi trong cuộc sống và trong hầu hết các lĩnh vực. Chúng rất đa dạng về mức độ tổ chức, chức năng, giá cả… tùy thuộc vào yêu cầu của bài toán thiết kế. Tuy nhiên, chúng thường cùng sử dụng kỹ thuật vi xử lý để giải quyết các vấn đề đặt ra. Có thể thấy, ngày nay kỹ thuật vi xử lý đóng một vai trò quan trọng trong việc tổng hợp và thiết kế các hệ thống điện tử - tin học hiện đại. Xuất phát từ vai trò của kỹ thuật vi xử lý, sự phổ biến của nó trong các lĩnh vực, ta cần nghiên cứu và nắm vững kiến thức về kỹ thuật này để bắt kịp nhịp phát triển của thế giới. Đây là một yêu cầu quan trọng và mang tính chiến lược trong hiện tại và tương lai. Hiện nay, trên thế giới đã có sẵn rất nhiều bộ công cụ (KIT) đa năng, đáp ứng được yêu cầu để nghiên cứu và ứng dụng. Các KIT được xây dựng để có thể thực hiện nhiều chức năng, và việc sử dụng các tài nguyên của KIT hiệu quả hay không phụ thuộc vào người khai thác. Đây cũng là một phương pháp giúp cho người học nắm vững kiến thức về kỹ thuật vi xử lý. Tuy nhiên, tài nguyên của các KIT này thường nhiều hơn nhiều so với nhu cầu sử dụng của ta. Do đó, vấn đề đặt ra là: nếu ta có thể làm chủ được kỹ thuật này, ta có thể thực hiện được các thiết kế theo yêu cầu với phần cứng tối giản và phần mềm tối ưu. Trước những vấn đề đã đề cập ở trên, tôi nhận thấy việc thiết kế hệ vi xử lý đa năng 16 bit sẽ cho phép ta nghiên cứu và mô phỏng bán tự nhiên các quá trình cơ bản là một hướng đi phù hợp. Vì vậy, tôi đã thực hiện đồ án “Thiết kế hệ vi xử lý đa năng 16 bit 80x86 Intel”. Mục đích của đồ án là thiết kế hệ vi xử lý đa năng 16 bit, có các cổng giao tiếp cơ bản (nối tiếp, song song, tương tự, số) và có thể lập trình để thay đổi chức năng. Nội dung đồ án gồm 3 chương: Chương 1: Kiến trúc hệ vi xử lý đa năng 16 bit Chương 2: Thiết kế các cổng ngoại vi cho hệ vi xử lý đa năng 16 bit Chương 3: Xây dựng phần mềm cho hệ vi xử lý đa năng 16 bit Đồ án có sản phẩm là hệ vi xử lý đa năng 16 bit. Thông qua hệ này, ta có thể kiểm chứng lại kiến thức về kỹ thuật vi xử lý đã học, qua đó hiểu và nắm chắc, tạo cơ sở cho việc thiết kế, tổng hợp các hệ thống phức tạp hơn sau này. Trong quá trình thực hiện đồ án, mặc dù có rất nhiều cố gắng trong việc nghiên cứu, sưu tầm tài liệu và được sự giúp đỡ nhiệt tình của giáo viên hướng dẫn, nhưng do điều kiện thời gian có hạn, trình độ kiến thức còn nhiều hạn chế nên tôi không thể tránh được những thiếu sót. Tôi rất mong nhận được sự đóng góp ý kiến của các thầy cô giáo và những người quan tâm. CHƯƠNG 1 - KIẾN TRÚC HỆ VI XỬ LÝ ĐA NĂNG 16 BIT Trong những năm cuối thế kỷ 20, kỹ thuật điện tử đã liên tục có những tiến bộ vượt bậc, đặc biệt là trong kỹ thuật chế tạo mạch vi điện tử. Các hệ thống điều khiển - điện tử, tin học ngày càng trở nên phổ biến. Ta có thể tìm thấy chúng ở mọi nơi trong cuộc sống, từ những dụng cụ chuyên dụng, đơn giản cho đến những hệ thống phức tạp, đa năng. Quy mô, mức độ phức tạp của các thiết bị điện tử phụ thuộc vào nhiệm vụ, yêu cầu của bài toán thiết kế đề ra. Các hệ thống này, dù phức tạp hay đơn giản vẫn phải có những thành phần cơ bản nào đó để có thể làm việc chính xác. Hệ vi xử lý chính là cơ sở để phát triển lên các hệ thống phức tạp hơn. Như vậy, vai trò của các hệ vi xử lý trong việc tổng hợp và thiết kế các hệ thống điện tử - tin học - điều khiển ngày nay là rất quan trọng.Vì vậy, ta cần tìm hiểu về kiến trúc của hệ vi xử lý để có thể thiết kế hệ một cách chính xác. Trong chương 1, ta sẽ tiến hành: - Tìm hiểu về kiến trúc hệ vi xử lý - Tổ chức đơn vị xử lý trung tâm: + Lựa chọn bộ vi xử lý + Tổ chức kênh hệ thống và bộ nhớ 1.1 TỔNG QUAN VỀ KIẾN TRÚC HỆ VI XỬ LÝ VÀ TỔ CHỨC PHẦN CỨNG CỦA HỆ VI XỬ LÝ ĐA NĂNG 1.1.1 Tổng quan về kiến trúc hệ vi xử lý Khi nói về hệ vi xử lý, người ta thường hay dùng từ kiến trúc để nhấn mạnh tính thống nhất của các thành phần trong hệ. Một hệ vi xử lý gồm 2 phần không thể thiếu là cấu trúc phần cứng và tổ chức phần mềm điều khiển được cài đặt trong hệ thống. Tổ chức (phần cứng) của hệ vi xử lý được thể hiện trên hình 1.1. Hình 1.1 Kiến trúc chung của hệ Vi xử lý Tổ chức của hệ vi xử lý bao gồm các thành phần chính như sau: 1. Bộ vi xử lý (BVXL) là thành phần không thể thiếu của hệ vi xử lý. Đây là một mạch vi điện tử có độ tích hợp cao, nắm quyền kiểm soát toàn bộ thành phần trong hệ thống, thực hiện mọi thao tác liên quan đến tính toán, xử lý, gia công, biến đổi các dạng tín hiệu nhị phân trong hệ dưới sự điều khiển của chương trình cài đặt trong bộ nhớ trung tâm của hệ vi xử lý. BVXL còn được gọi khối xử lý trung tâm (CPU – central processing unit), MP (micro processor). 2. Bộ nhớ trung tâm (bộ nhớ trong) gồm bộ nhớ cố định ROM và bộ nhớ đọc/ghi RAM. Bộ nhớ ROM (Read Only Memory) dùng để chứa chương trình điều hành hoạt động của hệ vi xử lý, các bảng biểu, tham số hệ thống cũng như các số liệu cố định của hệ thống. Nội dung của ROM phải được chuẩn bị trước khi ghép nó vào hệ. Trong quá trình hoạt động sau này, nội dung của ROM không bị thay đổi. Bộ nhớ RAM (Random Access Memory) dùng để lưu trữ các kết quả trung gian và kết quả của các phép tính toán, xử lý thông tin. RAM cũng được dùng để tổ chức các vùng đệm dữ liệu trong các thao tác thu, phát, chuyển đổi số liệu. RAM là bộ nhớ dữ liệu động mà nội dung của nó có thể thay đổi trong quá trình hoạt động của hệ vi xử lý. 3. Các thiết bị ngoại vi Bộ hiển thị và bàn điều khiển: dùng để thể hiện trạng thái hoạt động của hệ vi xử lý. Bàn điều khiển dùng để đưa lệnh, dữ liệu cần thiết vào hệ vi xử lý. Tuỳ vào quy mô và nhiệm vụ của hệ mà cấu trúc của bộ hiển thị và bàn điều khiển có thể từ đơn giản đến phức tạp. Khối xuất nhập thông tin số để trao đổi thông tin với các thiết bị ngoại vi làm việc theo nguyên tắc số. Các khối ADC và DAC để trao đổi thông tin với các thiết bị ngoại vi làm việc theo nguyên tắc phi số. Tuỳ thuộc vào nhiệm vụ và quy mô của hệ mà số lượng các thiết bị ngoại vi sẽ khác nhau. 4. Kênh hệ thống để trao đổi thông tin giữa các thành phần trong hệ. Kênh thông tin hệ thống gồm 3 thành phần: Kênh địa chỉ (Address bus) là kênh một chiều đi từ BVXL ra. BVXL sử dụng kênh này để quản lý các thành phần có trong hệ bằng cách gán cho mỗi thành phần một địa chỉ xác định. Kênh dữ liệu (Data bus) là kênh hai chiều dùng để trao đổi thông tin giữa BVXL và các thành phần có trong hệ. Kênh điều khiển (Control bus) là tập hợp các dây tín hiệu điều khiển để tạo liên lạc giữa BVXL và các thành phần có trong hệ, nhằm đồng bộ hoá mọi chế độ và thao tác của hệ thống. 1.1.2 Tổ chức chung của phần cứng hệ vi xử lý đa năng 16 bit Intel Sau khi tìm hiểu về kiến trúc của hệ vi xử lý, ta tiến hành xây dựng phần cứng của hệ vi xử lý đa năng 16 bit. Để đảm bảo khả năng làm việc và tính đa năng của hệ, phần cứng của hệ sẽ gồm các thành phần được chia thành các nhóm như sau: - Đơn vị xử lý trung tâm: gồm có BVXL 16 bit Intel, bộ nhớ trung tâm (ROM, RAM) - Các ngoại vi: nối tiếp, song song, ADC, DAC - Tổ chức các ngắt - Các hệ xử lý con (onchip) để xử lý 1 số chức năng đặc thù (lựa chọn tốc độ baud) Chức năng tổng quát của các thành phần đã được trình bày ở phần 1.1.1. Các đặc tính kỹ thuật và chức năng cụ thể của các thành phần cũng như các chương trình phần mềm sẽ được làm rõ hơn ở các chương sau. 1.2 TỔ CHỨC KÊNH HỆ THỐNG Như đã tìm hiểu ở phần 1.1, ta đã thấy BVXL là thành phần quan trọng nhất trong hệ vi xử lý. Do đó, trước tiên, ta sẽ tiến hành thiết kế đơn vị xử lý trung tâm của hệ với BVXL 16 bit 8086 Intel [6]. Việc lựa chọn BVXL 8086 của Intel để xây dựng hệ vi xử lý đa năng xuất phát từ các ưu điểm của 8086 và yêu cầu của bài toán thiết kế. Trước đây, người ta thường dùng BVXL 8088. BVXL 8088 ra đời sau 8086 và gần như giống 8086, nhưng chỉ có 8 bus dữ liệu. Điều này cho phép người ta sử dụng các chip lôgic rẻ hơn và hỗ trợ ít hơn. BVXL 8086 không nổi tiếng như bộ xử lý 8088 nhưng với 16 bus địa chỉ, hệ vi xử lý dùng 8086 có khả năng xử lý song song cả dữ liệu 16 bit và dữ liệu 8 bit, và nó có thể dễ dàng tương thích với các hệ vi xử lý khác đã có của Intel. Bên cạnh đó, ngày nay, những đặc điểm của 8086 vẫn còn tiếp tục tồn tại, các tham chiếu đến nó vẫn có thể thấy trong đa số các máy tính hiện đại dưới dạng nơi cung cấp mục vào cho tất cả các thiết bị Intel (ID – Intel devices) kiểu “8086”. Tính kế thừa và tốc độ là một vấn đề quan trọng đối với các hệ vi xử lý. Vì vậy, ta chọn BVXL 8086 làm bộ xử lý trung tâm cho hệ vi xử lý cần thiết kế. Việc thiết kế đơn vị xử lý trung tâm thực chất là thiết kế kênh nội bộ và kênh hệ thống để BVXL làm việc chính xác. Vì vậy, chúng ta sẽ tìm hiểu các đặc điểm chung và đặc điểm hoạt động của bộ xử lý 16 bit Intel 8086 và từ đó tiến hành thiết kế các kênh. 1.2.1 BVXL 16 bit Intel 8086 1.2.1.1 Giới thiệu chung Thao tác tổng quát Các chức năng bên trong của BVXL 8086 được phân chia về mặt logic thành 2 đơn vị xử lý: Đơn vị giao tiếp bus BIU (Bus Interface Unit) và Đơn vị thực hiện lệnh EU (Execution Unit). BIU cung cấp các chức năng liên quan tới việc nạp và xếp hàng đợi lệnh, nạp và lưu toán hạng, định lại địa chỉ và cung cấp sự điều khiển bus cơ sở. EU thực hiện các tính toán số học và logic. Khi BVXL hoạt động, EU cung cấp thông tin về địa chỉ cho BIU để khối này đọc lệnh và dữ liệu, còn EU giải mã và thực hiện lệnh. Sơ đồ khối của BVXL 8086 được thể hiện trên hình 1.2. TỔ CHỨC BỘ NHỚ Bộ xử lý cung cấp địa chỉ 20 bit tới bộ nhớ, bộ nhớ xác định byte đang được tham chiếu. Bộ nhớ được tổ chức thành một mảng tuyến tính các byte, được định địa chỉ từ 00000(H) tới FFFFF(H). Bộ nhớ được phân chia logic thành các thanh ghi mảng lệnh, mảng dữ liệu, mảng dữ liệu mở rộng và mảng ngăn xếp (xem hình 1.3). Hình 1.2 Sơ đồ khối BVXL 8086 Hình 1.3 Sự tổ chức bộ nhớ của 8086 Tất cả các tham chiếu bộ nhớ được tạo ra tương tứng với các địa chỉ cơ sở chứa trong các thanh ghi tốc độ cao. Kiểu đoạn (mảng) được chọn dựa trên nhu cầu định địa chỉ của các chương trình. Thanh ghi đoạn sẽ được chọn một cách tự động theo quy tắc của bảng 1.1. Bằng cách tổ chức bộ nhớ thành các vùng có thể tái định vị có các đặc tính giống nhau và bằng các thanh ghi chọn mảng tự động, các chương trình sẽ ngắn hơn, nhanh hơn và được kết cấu tốt hơn. Các toán hạng word (16 bit) có thể được đặt trên các địa chỉ chẵn hay lẻ. Với các toán hạng địa chỉ và dữ liệu, byte trọng số thấp của từ được lưu tại vị trí địa chỉ giá trị thấp và byte trọng số cao được lưu trong vị trí địa chỉ cao kế tiếp. [...]... H 16 bit Kt lun chng 1 Qua phn tỡm hiu cu trỳc h vi x lý núi chung, ta ó nm c cỏc thnh phn c bn cn cú ca mt h vi x lý õy chớnh l nhng hiu bit c s thit k h vi x lý a nng Trong kt cu phn cng ca h vi x lý, cú th thy b vi x lý l thnh phn quan trng nht, úng vai trũ b nóo ca ton h Do ú, vic thit k kờnh h thng, t chc b nh cho b vi x lý l nhim v u tiờn cn phi thc hin khi xõy dng h T yờu cu thit k h vi x lý. .. dng h T yờu cu thit k h vi x lý 16 bit, cựng vi cỏc u im ca b vi x lý 8086 Intel nh ó trỡnh by, ta chn b vi x lý ny lm b x lý trung tõm ca h Sau khi tỡm hiu cỏc c im chung, phng thc hot ng ca b vi x lý 16 bit ny, ta ó t chc cỏc kờnh h thng v b nh cho h thc hin c yờu cu a nng t ra vi h, ta cũn cn thit k cỏc giao tip ngoi vi h cú th thc hin vic trao i d liu vi cỏc ngoi vi s, tng t Vn ny s c gii quyt... chng 2 Bờn cnh ú, khi tỡm hiu v h, ta thy kin trỳc h vi x lý gm phn cng v phn mm chng 1 v chng 2, ta mi ch dng li vic thit k phn cng ca h Chng 3 s trỡnh by v phn mm cho h CHNG 2 - THIT K CC CNG NGOI VI CHO H VI X Lí A NNG 16 BIT Cỏc h vi x lý luụn luụn ũi hi s trao i d liu vi cỏc ngoi vi Cỏc thit b ngoi vi c ni trc tip vi cng, cng c ni trc tip vi mch iu khin phi ghộp nh ó trỡnh by trờn Cỏc mch h... BVXL 16 bit 8086 Intel, ta cn thc hin vic t chc kờnh thụng tin BVXL cú th lm vic chớnh xỏc Kờnh thụng tin ca h gm cỏc kờnh ni b v kờnh h thng, nh c th hin trờn hỡnh 1.6 Cỏc kờnh trong h phi khụng gõy nh hng ln nhau, m bo s lu thụng d liu B x lý liờn lc vi cỏc thit b khỏc thụng qua h thng bus gm: bus a ch, bus d liu v bus iu khin Hỡnh 1.6 Kờnh thụng tin ca h vi x lý 1.2.2.1 Bus a ch Trong h vi x lý vi. .. chớnh xỏc vi cỏc ngoi vi, ta cn t chc cỏc cng giao tip ca h Tu theo phng thc truyn v dng d liu, ta cn xõy dng mt s cng c bn sau: - Cng song song - Cng ni tip - ADC - DAC Vi BVXL 8086, ti mt thi im no ú, nú ch cú th lm vic vi mt thit b ngoi vi no ú Do ú, ta cn cú mch chn cng cho BVXL Ta thc hin mch gii mó a ch cng theo phng ỏn c th hin trong hỡnh 2.1 Vi s gii mó nh trờn, a ch cỏc cng ngoi vi nh sau... T chc b nh ROM/RAM ca h vi x lý BVXL 8086 cú th qun lý c 1MB b nh Tuy nhiờn, do yờu cu vi h, ta ch cn chn dung lng cho ROM v cho RAM l 16kB cho mi loi Dung lng nh vy l cha chng trỡnh MONITOR v cỏc vựng m d liu cho chc nng h thng Mt khỏc, cú th d dng chn IC nh cho ROM v RAM Ta chn chip EPROM 2764 dung lng 8kB cho ROM v chip 6264 cú dung lng 8kB cho RAM Do h ang thit k l h 16 bit nờn ta cn dựng 2 chip... song song cn m bo cho h cú th truyn tin song song vi ngoi vi Do 8086 cú thanh ghi d liu 16 bit nờn cn xõy dng cng song song cú th truyn d liu 16 bit hoc 8 bit Phng thc truyn d liu song song c th hin trờn hỡnh 2.2 Tiờu chớ cho cng song song: - rng kờnh: 8 bit /16 bit - Hng truyn d liu chớnh xỏc (hai chiu) Hỡnh 2.2 Phng thc truyn thụng tin song song Vi cỏc yờu cu v cng song song, ta cú th trin khai cng... vớ d nh m bus, cỏc mch cng to cỏc tớn hiu múc ni Mt la chn khỏc khi thit k cng song song cho h l vi mch 8255A õy l vi mch phi ghộp vo/ra song song lp trỡnh c (Progammable Peripheral Interface - PPI) Do tớnh mm do trong cỏc ng dng thc t, nú l mch phi ghộp c dựng rt ph bin cho cỏc h vi x lý 8 16 32 bit Vi mch 40 chõn ny cú cỏc chõn b trớ nh trờn hỡnh 2.3, trong ú cú 24 ng dn li vo/ra c xp thnh ba cng... Change Hi Z Hỡnh 1.7 Vi mch cht 74HC573 v bng s tht Vi h vi x lý a nng 16 bit cn thit k, ta cn dựng 2 chip 74HC573 v c t chc nh hỡnh 1.8 VC C C C C C C C C C P P P P P P P P U U U U U U U U _ _ _ _ _ _ _ _ A A A A A A A A D D D D D D D D 0 1 2 3 4 5 6 7 2 3 4 5 6 7 8 9 ALE 11 1 J1 U 1 D D D D D D D D 1 2 3 4 5 6 7 8 Q Q Q Q Q Q Q Q 1 2 3 4 5 6 7 8 19 18 17 16 15 14 13 12 A A A A A A A A d d d d d d d d... c u trc tip vo chõn C ca 74HC573 Vic tỏch cỏc a ch A0 A7 c thc hin bng cỏch ni 74HC573 n chõn AD0 AD7 ca BVXL Cỏc chõn AD8 AD15 ca BVXL c ni n chip 74HC573 th 2 Vi h thng ta thit k, cỏc ng tớn hiu A16 A19 luụn l 1 nờn ta khụng cn a vo cỏc b gii mó a ch vic thc hin mch in c n gin 1.2.2.2 Bus d liu Bus d liu l bus 2 chiu c cho qua mch thu phỏt 74HC245 74HC245 l vi mch thu phỏt bus 2 chiu 8 bit cú . đến phức tạp. Khối xuất nhập thông tin số để trao đổi thông tin với các thiết bị ngoại vi làm việc theo nguyên tắc số. Các khối ADC và DAC để trao đổi thông tin với các thiết bị ngoại vi làm việc. chip được phục vụ tại cuối của lệnh hiện thời. - Ngắt che được (INTR - Interrupt Request) 8086 cung cấp một đầu vào yêu cầu ngắt (INTR) có thể che được bởi phần mềm bằng cách khởi động lại cờ trạng. kênh hệ thống Sau khi tìm hiểu BVXL 16 bit 8086 Intel, ta cần thực hiện việc tổ chức kênh thông tin để BVXL có thể làm việc chính xác. Kênh thông tin của hệ gồm các kênh nội bộ và kênh hệ thống,