lập trình hợp ngữ
I HC CễNG NGH THễNG TIN V TRUYN THễNG THI NGUYấN KHOA CễNG NGH T NG HểA phạm đức long Bài giảng kỹ thuật vi xử lý và lập trình hợp ngữ (Ti liu ny cú th ti v dng file .PDF trong trang http://www.tnu.edu.vn/sites/longpd/Ti liu v Bi ging/Forms/AllItems.aspx ) Thái Nguyên 7-2013 Phm c Long BM Cụng ngh &Thit b T ng Khoa CN T ng húa HCNTT&TT Thỏi Nguyờn BI GING MễN HC VI X Lí V LP TRèNH HP NG MC LC Trang Chơng 1. Giới thiệu chung 1.1 Sự ra đời và phát triển của các bộ vi xử lý 4 1.2 Sơ đồ khối cấu trúc và hoạt động của hệ vi xử lý 4 Chơng 2. Bộ nhớ bán dẫn 2.1 Phân loại bộ nhớ 7 2.1.1 Bộ nhớ cố định (ROM, PROM) 7 2.1.2 Bộ nhớ bán cố định (EPROM, EEPROM, FLASH) 8 2.1.3 Bộ nhớ đọc ghi (SRAM, DRAM) 10 2.1.4 Bộ nhớ ngoài 10 2.2 Phân cấp bộ nhớ 10 2.3 Cấu trúc của mạch nhớ tĩnh SRAM 2.3.1 Giới thiệu công nghệ 12 2.3.2 Cấu trúc mạch nhớ SRAM 12 2.3.2.1 Bit nhớ 12 2.3.2.2 Thanh ghi 14 2.3.2.3 Bộ giải mã 15 2.3.2.4 Mạch nhớ SRAM (Các thành phần, quy trình đọc ghi, biểu đồ thời gian) 18 2.3.3 Thiết kế thẻ nhớ SRAM 18 2.4 Cấu trúc của mạch nhớ DRAM 18 Chơng 3. Các bộ vi xử lý v vi iu khin 3.1 Giới thiệu bộ vi xử lý 8 bit tổng quát 22 3.2 Bộ vi xử lý 8 bit (8086/8088) 3.2.1 Sơ đồ khối bộ vi xử lý 8 bit 22 3.2.2 Các thanh ghi ca 8086/88 23 3.2.3 Biểu đồ thời gian của chu kỳ đọc ghi số liệu 26 3.2.5 Ghép nối các chân tín hiệu 8088 28 3.2.6 Hệ lệnh của bộ vi xử lý 8 bit 30 3.3 Giới thiệu các bộ vi xử lý tiên tiến dũng 80x86 77 3.4 Vi điều khiển 8x51/52 77 3.5 Vi điều khiển thế hệ mới AVR Thỏi Nguyờn 7-2013 1 Phm c Long BM Cụng ngh &Thit b T ng Khoa CN T ng húa HCNTT&TT Thỏi Nguyờn BI GING MễN HC VI X Lí V LP TRèNH HP NG 3.5.1. Giới thiệu chung về AVR 92 3.5.2. Bus I 2 C và SPI 98 3.5.3. AVR 90S8535 101 3.6 Các hệ thống trên một chip có khả năng tái cấu hình (SoC) 3.6.1. SoC là gì? 101 3.6.2. Giới thiệu PSoC 103 3.6.3. PSoC CY8C29446 103 Chơng 4. Các bộ điều khiển và ghép nối dữ liệu 4.1. Vào/ ra số liệu điều khiển bằng ngắt 4.1.1 Nguyên lý vào/ra điều khiển bằng ngắt 111 4.1.2 Bộ điều khiển ngắt PIC (8259) 113 4.1.3 Ngắt trong máy tính IBM/PC 119 4.2. Vào/ra số liệu điều khiển bằng thâm nhập bộ nhớ trực tiếp DMA 4.2.1 Nguyên lý vào/ ra bằng DMA 121 4.2.2 Bộ thâm nhập bộ nhớ trực tiếp DMAC (8237) 123 4.2.3 Sử dụng bộ điều khiển DMAC trong hệ vi xử lý 126 4.3. Bộ đếm lập trình đợc 4.3.1 Sơ đồ khối bộ đếm lập trình đợc (8254) 127 4.3.2 Các chế độ làm việc của bộ đếm lập trình 128 4.3.3 Sử dụng bộ đếm trong hệ vi xử lý 130 4.4. Phối ghép vào ra nối tiếp 4.4.1 Nguyên lý vào/ ra nối tiếp 130 4.4.2 Mạch thu phát thông tin nối tiếp UART 133 4.5. Phối ghép với thiết bị vào/ra qua cổng song song 4.5.1 Ghép nối song song đơn giản 142 4.5.2 Mạch phối ghép vào/ra song song lập trình đợc PPI 8255A 142 4.5.2.1 Các khối của PPI 4.5.2.2 Các tín hiệu của PPI 4.5.2.3 Các chế độ làm việc của PPI 4.5.2.5 Ghép nối PPI trong hệ vi xử lý Chơng 5 Thiết kế hệ thống vi xử lý 5.1 Thiết kế phần cứng 145 5.2 Thiết kế phần mềm 146 Thỏi Nguyờn 7-2013 2 Phạm Đức Long BM Công nghệ &Thiết bị Tự động Khoa CN Tự động hóa – ĐHCNTT&TT Thái Nguyên BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ 5.2.1 ROM Mapping 146 5.2.2 RAM Mapping 149 5.2.3 ThiÕt kÕ c¸c ch−¬ng tr×nh hÖ thèng 151 5.2.4 ThiÕt kÕ c¸c ch−¬ng tr×nh øng dông 154 CÂU HỎI VÀ BÀI TẬP 159 Phụ lục CÁC HỆ SỐ ĐẾM 160 TÀI LIỆU THAM KHẢO 164 Thái Nguyên 7-2013 3 Phm c Long BM Cụng ngh &Thit b T ng Khoa CN T ng húa HCNTT&TT Thỏi Nguyờn BI GING MễN HC VI X Lí V LP TRèNH HP NG Chơng 1. GII THIU CHUNG 1.1 Sự ra đời và phát triển của các bộ vi xử lý Bộ vi xử lý là 1 thành phần không thể thiếu đợc trong các hệ thống tính toán v máy vi tính. Sự phát triển: Thế hệ 1 (1971 - 1973): Bộ vi xử lý đầu tiên ra đời 1971 là 4004 sản phẩm của hãng Intel 4 bit số liệu, 12 bit địa chỉ. Tiếp theo là 4040, 8008 . Đặc điểm chung: + Sử dụng công nghệ PMOS (lỗ trống) + Tốc độ thực hiện lệnh 10-60às. Tốc độ xung nhp đồng hồ 0.1 đến 0.8 MHz + Cú tập lệnh đơn giản Thế hệ 2 (1974-1977): Thế hệ các vi xử lý 8 bit nh 6800, 8080, 8085 .có thể quản lý 64KB bộ nhớ. Đặc điểm: + Sử dụng công nghệ NMOS (Có mật độ phần tử trên một đơn vị diện tích lớn hơn PMOS) + Tốc độ thực hiện lệnh 1-8às. Tốc độ xung nhp đồng hồ 1-5MHz Thế hệ 3 (1978-1982): Thời kỳ các vi xử lý 16 bit 8086/80186/80286 hoặc 68000. + Có tập lệnh đa dạng hơn + Khả năng phân biệt bộ nhớ cao hơn: 1-16MB bộ nhớ chớnh v 64KB thiết bị ngoại vi + c sản xuất bằng công nghệ HMOS (HMOS, XMOS, VMOS: cải tiến của NMOS) + Tốc độ thc hin lnh n 0.1 - 1às. Xung nhp đồng hồ 5-10MHz Thế hệ 4 (1983 - nay): Thời kỳ các bộ vi xử lý 32 bit nh 80386/486/Pentium 1, Pentium 2, Pentium 3, Pentium 4 với các kỹ thuật tiên tiến nh pipeline, cache, vitual memory, Hyper Threading (HT) .Tất cả cỏc vi x lý th h ny đều có bộ đồng xử lý toán học, bộ quản lý bộ nhớ MMU. 1.2 Sơ đồ khối cấu trúc và hoạt động của hệ vi xử lý Bộ vi xử lý là 1 thành phần không thể thiếu đợc để xây dựng lờn các hệ thống tính toán, máy vi tính. Nhng cỏc bộ vi xử lý còn phải kết hợp với các thành phần khác để tạo nên hệ vi xử lý. Thỏi Nguyờn 7-2013 4 Phm c Long BM Cụng ngh &Thit b T ng Khoa CN T ng húa HCNTT&TT Thỏi Nguyờn BI GING MễN HC VI X Lí V LP TRèNH HP NG Hỡnh 1.1 là sơ đồ tổng quát của các hệ vi xử lý kinh điển áp dụng cho các hệ x lý nhỏ và các máy tính đời đầu. Các máy tính hiện nay có cấu trúc khác hơn. In Abus Dbus Cbus I/O M CPU Out Hỡnh 1.1 H vi x lý kinh in CPU (Central Processing Unit): Bộ não của máy tính gồm các mạch vi điện tử có độ tích hợp rất cao (hàng triệu tranzito trong 1 chip). CPU gồm có các phần: + CU (Control Unit): Khối điều khiển có chức năng: đọc mã lệnh dới dạng tập hợp các bit 0/1 từ các ô nhớ trong bộ nhớ. Giải mã các lệnh thành dãy các xung điều khiển để điều khiển các khối khác thực hiện nh điều khiển ALU, điều khiển ra ngoài àPC + ALU (Arithmetic Logic Unit): Khối tính toán số học và logic: Tổ hợp các mạch logic điện tử phức tạp cho phép thực hiện các thao tác trên các thanh ghi nh +, -, *, /, AND, OR, NOT . + Registers: Các thanh ghi Một CPU có thể có nhiều thanh ghi: + Thanh ghi con trỏ lệnh IP (bộ đếm chơng trình) chứa địa chỉ của lệnh sắp thực hiện: Các chơng trình máy tính là tập hợp của các lệnh. CPU sẽ lấy từng lệnh ra để chạy. Để điều khiển chính xác việc thực hiện này cần có một bộ đếm chơng trình; ú chớnh l IP. S lng thanh ghi trong cỏc b vi x lý khỏc nhau l khỏc nhau nhng b vi x lý no cng phi cú thanh ghi con tr lnh IP. + Các thanh ghi khác: Các thanh ghi đoạn, thanh ghi lệch, thanh ghi con trỏ và chỉ số, thanh ghi cờ . là các thanh ghi đảm nhiệm các chức năng nhất định trong hoạt động của bộ vi xử lý (Sẽ nghiên cứu kỹ qua VXL 8086/8088) Bộ nhớ (Memory): Có hai loại chính ROM: Chứa các chơng trình và số liệu cố định, chúng không bị mất thụng tin khi ngắt điện cung cấp cho vi mạch nhớ ROM. Chơng trình khởi động máy tính, các chơng trình vào ra cơ sở thờng đợc chứa trong ROM. Thỏi Nguyờn 7-2013 5 Phm c Long BM Cụng ngh &Thit b T ng Khoa CN T ng húa HCNTT&TT Thỏi Nguyờn BI GING MễN HC VI X Lí V LP TRèNH HP NG RAM: Khi ngắt điện nguồn nuôi vi mạch RAM nội dung lu trữ trong nó sẽ bị mất. RAM lu giữ một phần chơng trình hệ thống, một số số liệu của hệ thống, các chơng trình ứng dụng, các kết quả trung gian của quá trình tính toán, xử lý. Thiết bị vào/ra (I/O): Đây là khối tạo khả năng giao tiếp giữa hệ vi xử lý và bên ngoài. Do đặc điểm của các thiết bị ngoài và hệ trung tâm (Gồm CPU+Bộ nhớ) hoạt động có sự khác nhau về tốc độ làm việc, mức vật lý điện, phơng thức trao i d liu nên cần có bộ phối ghép đệm, đảm bảo cho các khối thiết bị ngoài giao tiếp đợc với hệ trung tâm. Bộ ghép giữa bus hệ thống và thiết bị ngoài gọi là cổng. Mỗi cổng có một địa chỉ xác định. Hệ thống bus: Là tập hợp các đờng dây dẫn ghép nối các chân địa chỉ, dữ liệu, các chân tín hiệu điều khiển của 3 khối đã nêu trên. Cú ba loi bus. Abus: Nối các đờng dây địa chỉ của CPU với 2 khối M và I/O. Khả năng phân biệt địa chỉ của CPU phụ thuộc số chân địa chỉ của nó. Số này có thể là 16, 20, 24, 36 chân. Chỉ có CPU mới có khả năng phát ra tín hiệu địa chỉ - Có một thiết bị nữa có thể phát ra tín hiệu địa chỉ là DMAC (DMA Controller). Dbus: Dùng để vận chuyển dữ liệu. Độ rộng của nó 8, 16, 32, 64 bit. Dbus có tính 2 chiều. Các phần tử có đầu ra nối thẳng với bus dữ liệu đều phải đợc trang bị đầu ra 3 trạng thái để có thể làm việc bình thờng với bus này. Cbus: Gồm nhiều đờng dây tín hiệu khác nhau. Mỗi tín hiệu có 1 chiều xác định. Các tín hiệu trên Cbus bao gồm các tín hiệu điều khiển từ CPU nh điu khin đọc viết, tín hiệu trạng thái từ bộ nhớ, thiết bị ngoại vi báo cho CPU nh INTR, HOLD . Hoạt động của hệ: Chơng trình và dữ liệu đợc chứa trong bộ nhớ ngoài đợc đa vào bộ nhớ trong (RAM). Sau đó đ ợc CPU lấy dần ra để xử lý. CPU thực hiện: + Lấy lệnh + Giải mã lệnh + iều khiển thực hiện lệnh. Đó là một vòng lặp, trong quá trình thực hiện vòng lặp đó nếu có tác động ngắt hoặc yêu cầu DMA CPU sẽ đáp ứng các yêu cầu này sau đó lại quay trở laị chu trình hoạt động chính. Thỏi Nguyờn 7-2013 6 Phm c Long BM Cụng ngh &Thit b T ng Khoa CN T ng húa HCNTT&TT Thỏi Nguyờn BI GING MễN HC VI X Lí V LP TRèNH HP NG Chơng 2. B NH BN DN 2.1 Phân loại bộ nhớ Bộ nhớ dùng để lu trữ lệnh và dữ liệu Bộ nhớ đợc xây dựng từ các phần tử nhớ cơ bản, mỗi phần tử là một bit thông tin. Bộ nhớ bán dẫn Ngoài Cố định Bán cố định Đọc/Ghi ROM DRAM SRAM FLASH EEPROM EPROM PROM Bộ nhớ Hỡnh 2.1. Phõn loi b nh 2.1.1 Bộ nhớ cố định (ROM, PROM) D1 D0 Đầu ra D3 D2 D1 D0 ễ nh cú a ch 0 0 0 1 1 0 1 1 Hỡnh 2.2. B nh ROM Nếu có diot: Đầu ra =1. Nếu không có diot: Đầu ra = 0 Thỏi Nguyờn 7-2013 7 Phm c Long BM Cụng ngh &Thit b T ng Khoa CN T ng húa HCNTT&TT Thỏi Nguyờn BI GING MễN HC VI X Lí V LP TRèNH HP NG Hỡnh 2.3. B nh PROM CS=1. Đầu ra khi địa chỉ đúng bằng 1, u ra ca b o c đảo đi bằng 0. Đầu tiên các cầu chì còn nguyên. Np d liu vo bng cỏch lm t cỏc cu chỡ i hoc gi nguyờn. Nếu vẫn còn cầu chì: điot thông đầu ra d i = 0 Nếu cắt cầu chì, không bị sụt áp đầu ra d i = 1 2.1.2 Bộ nhớ bán cố định (EPROM, EEPROM, FLASH) EPROM (Erasable Programmable ROM): Có cấu tạo đặc biệt dựa trên nguyên tắc làm việc của tranzito trờng có cực điều khiển v thờm ca ni. Việc nạp chơng trình cho EPROM đợc thực hiện bằng điện. Xoá chơng trình bằng tia cực tím, do tia cực tím ảnh hởng đến cực nguồn và cực máng. B nh EPROM cú th ghi li c. Ký hiệu 27xxx a) b) hv File oxide File oxide n-Sounce n-Drain Sounce Drain Gate Floating Gate Control Gate Hỡnh 2.4. a)- Transitor trng, b)- Cấu trúc của EPROM Thỏi Nguyờn 7-2013 8 Phm c Long BM Cụng ngh &Thit b T ng Khoa CN T ng húa HCNTT&TT Thỏi Nguyờn BI GING MễN HC VI X Lí V LP TRèNH HP NG Trong ô nhớ dùng tranzito này, cực cửa đợc nối với đờng từ, cực máng nối với đờng bit và cực nguồn nối với nguồn chuẩn đợc coi là nguồn cho mức logic 1. Khác với tranzito MOS bình thờng, ở đây có thêm 1 cửa gọi là cửa nổi; Đó là một vùng vật liệu đợc thêm vào giữa lớp cách điện cao nh hình trên. Nếu cửa nổi không có điện tích thì không có ảnh hởng gì tới cực cửa điều khiển và tranzito hoạt động bình thờng. Tức là khi dây từ đợc kích hoạt (cực cửa có điện tích dơng) thì tranzito thông, cực máng và cực nguồn đợc nối với nhau qua kênh dẫn và dây bit có mức logic 1. Nếu cửa nổi có các điện tử trong đó với các điện tích âm, chúng sẽ ngăn từ trờng điện điều khiển của cực điều khiển và dù dây từ có đợc kích hoạt thì cũng không thể phát ra trờng đủ mạnh với cực cửa điều khiển để làm thông tranzito. Lúc này đờng dây bit không đợc nối với nguồn chuẩn và ô nhớ đợc coi nh giữ giá trị logic 0. Việc nạp các điện tử vào cửa nổi, tức là tạo ra các ô nhớ có giá trị logic 0, đợc thực hiện bởi các xung điện có độ dài cỡ 50 ms và độ lớn +20V khi đặt vào cực cửa và cực máng. Lúc đó các điện tích mang có năng lợng lớn sẽ đi qua lớp cách điện giữa đế và cửa nổi. Chúng tích tụ trong vùng cửa nổi và đợc giữ ở đây sau khi xung chơng trình tắt. Đó là do cửa nổi đợc cách điện cao với xung quanh và các điện tử không có đủ năng lợng sau khi lạnh đi, để có thể vợt ra ngoài lớp cách điện đó nữa. Chúng sẽ đợc giữ lại ở đây trong một thời gian dài (khoảng 10 năm). Để xóa thông tin, phải chiếu tia tử ngoại vào chip nhớ. Những điện tử ở đây đợc hấp thụ năng lơng nhảy lên mức năng lợng cao, chúng sẽ rời cửa nổi nh cách thâm nhập vào đó. Trong chip EPROM có một cửa sổ bằng thạch anh chỉ để cho ánh sáng tử ngoại đi qua khi cần xóa số liệu trong bộ nhớ. EEPROM (Electric Erasable PROM): Có cấu tạo tơng tự EPROM nhng nạp xoá bằng điện. Ký hiệu 28xxx (vớ d vi mch EEPROM 2864, 28128). im khỏc ca EEPROM là một lớp kênh màng mỏng ôxit giữa vùng cửa nổi trải xuống dới đế và cực máng giữ vai trò quan trọng. Các lớp cách điện không thể lý tởng đợc, các lớp điện tích mang có thể thấm qua lớp phân cách với một xác suất thấp. Xác suất này tăng lên khi bề dày của lớp giảm đi và điện thế giữa hai cực ở hai mặt của lớp cách điện tăng lên. Muốn phóng các điện tích trong vùng cửa nổi, một điện thế (-20V) đợc đặt vào cực cửa điều khiển và cực máng. Lúc này các điện tử âm trong cửa nổi đợc chảy về cực máng qua kênh màng mỏng ôxit và số liệu lu giữ đợc xóa đi. Điều chú ý là phải lu ý làm sao cho dòng điện tích này chảy không quá lâu, vì nếu không vùng cửa nổi này lại trở nên điện tích dơng làm cho hoạt động của tranzitor không đợc ở trạng thái bình thờng (1). Thỏi Nguyờn 7-2013 9 . Chơng 3. Các bộ vi xử lý v vi iu khin 3.1 Giới thiệu bộ vi xử lý 8 bit tổng quát 22 3.2 Bộ vi xử lý 8 bit (8086/8088) 3.2.1 Sơ đồ khối bộ vi xử lý 8 bit. bộ vi xử lý 8 bit 30 3.3 Giới thiệu các bộ vi xử lý tiên tiến dũng 80x86 77 3.4 Vi điều khiển 8x51/52 77 3.5 Vi điều khiển thế hệ mới AVR Thỏi Nguyờn 7-2013