CHAPTER 1 微處理器與數位電路簡介
1.1 微處理器簡介
數位運算的濫觴要從1940年代早期的電腦雛形開始。這些早期的電腦使用真空管以及相關電路來組成數學運算與邏輯運算的數位電路,這些龐大的電路元件所組成的電腦大到足以占據一個數十坪的房間,但卻只能作簡單的基礎運算。一直到1947年,貝爾實驗室所發明的電晶體取代了早期的真空管,有效地降低了數位電路的大小以及消耗功率,逐漸地提高了電腦的使用率與普遍性。從此之後,隨著積體電路(Integrated Circuit, IC)的發明,大量的數位電路不但可以被建立在一個微小的矽晶片上,而且同樣的電路也可以一次大量重複製作在同一個矽晶圓上,使得數位電路的應用隨著成本的降低與品質的穩定廣泛地進入到一般大眾的生活中。
在數位電路發展的過程中,所謂的微處理器(microprocessor)這個名詞首先被應用在Intel®於1971年所發展的4004晶片組。這個晶片組能夠執行4位元大小的指令並儲存輸出入資料於相關的記憶體中。相較於當時的電腦,所謂的「微」處理器在功能與尺寸上,當然是相當的微小。但是隨著積體電路的發達,微處理器的功能卻發展得越來越龐大,而主要的發展可以分為兩個系統。
第一個系統發展的方向主要強調強大的運算功能,因此硬體上將使用較多的電晶體來建立高位元數的資料通道、運算元件與記憶體,並且支援非常龐大的記憶空間定址。這一類的微處理器通常被歸類為一般用途微處理器,它本身只負責數學邏輯運算的工作以及資料的定址,通常會搭配著外部的相關元件以及程式資料記憶體一起使用。藉由這些外部輔助的相關元件,或稱為晶片組(chipset),使得一般用途微處理器可以與其他記憶體或輸出入元件溝通,以達到使用者設計要求的目的。例如在一般個人電腦中常見的Core®及Pentium® 處理器,也就是所謂的CPU(Central Processing Unit),便是屬於這一類的一般用途微處理器。
第二個微處理器系統發展的方向,則朝向將一個完整的數位訊號處理系統功能完全建立在一個單一的積體電路上。因此,在這個整合的微處理器系統上,除了核心的數學邏輯運算單元之外,必須要包含足夠的程式與資料記憶體、程式與資料匯流排、以及相關的訊號輸出入介面周邊功能。而由於所具備的功能不僅能夠作訊號的運算處理,並且能夠擷取外部訊號或輸出處理後的訊號至外部元件,因此這一類的微處理器通常被稱作為微控制器(Micro-Controller),或者微控制器元件(Micro-Controller Unit, MCU)。
由於微控制器元件通常內建有數位訊號運算、控制、記憶體,以及訊號輸出入介面在同一個系統晶片上,因此在設計微控制器時,上述內建硬體與功能的多寡便會直接地影響到微控制器元件的成本與尺寸大小。相對地,下游的廠商在選擇所需要的微控制器時,便會根據系統所需要的功能以及所能夠負擔的成本挑選適當的微控制器元件。通常微控制器製造廠商會針對一個相同數位訊號處理功能的核心微處理器設計一系列的微控制器晶片,提供不同程式記憶體大小、周邊功能、通訊介面以及接腳數量的選擇,藉以滿足不同使用者以及應用需求的選擇。
目前微處理器的運算資料大小,已經由早期的8位元微處理器,發展到32位元,甚至於一般個人電腦的64位元的微處理器也可以在一般的市場上輕易地取得。因此,使用者必須針對應用設計的需求選擇適當的微處理器,而選擇的標準不外乎是成本、尺寸、周邊功能與記憶體大小。有趣的是,在個人電腦的使用上,隨著視窗軟體系統的升級與應用程式的功能增加,使用者必須不斷地追求速度更快,位元數更多,運算功能更強的微處理器;但是在一般的微控制器實務運用上,8位元的微控制器便可以滿足一般應用系統的需求,使得8位元微控制器的應用仍然是目前市場的主流。所不同的是,隨著應用的增加,越來越多不同的周邊功能與資料通訊介面不斷地被開發並整合到8位元的微控制器上,以滿足日益複雜的市場需求。
目前在實務的運用上,由於一般用途微處理器僅負責系統核心的數學或邏輯運算,必須搭配相關的晶片組才能夠進行完整的程式與資料記憶體的擷取、輸出入控制等等相關的功能,例如一般個人電腦上所使用的Core®及Pentium®微處理器。因此,在這一類的一般用途微處理器發展過程中,通常會朝向標準化的規格發展,以便相關廠商配合發展周邊元件。因為標準化的關係,即使是其他廠商發展類似的微處理器,例如AMD®所發展的同等級微處理器,也可以藉由標準化的規格以及類似的周邊元件達到同樣的效能。這也就是為什麼各家廠商或自行拼裝的個人電腦或有不同,但是它們都能夠執行一樣的電腦作業系統與相關的電腦軟體。
相反地,在所謂微控制器這一類的微處理器發展上,由於設計者在應用開發的初期便針對所需要的硬體、軟體,或所謂的韌體,進行了特殊化的安排與規劃,因此所發展出來的系統以及相關的軟硬體便有了個別的獨立性與差異性。在這樣的前提下,如果沒有經過適當的調整與測試,使用者幾乎是無法將一個設計完成的微控制系統直接轉移到另外一個系統上使用。例如,甲廠商所發展出來的汽車引擎微控制器或者是輪胎胎壓感測微控制器,便無法直接轉移到乙廠商所設計的車款上。除非經由工業標準的制定,將相關的系統或者功能制定成為統一的硬體界面或通訊格式,否則廠商通常會根據自我的需求與成本的考量選用不同的控制器與程式設計來完成相關的功能需求。即便是訂定了工業標準,不同的微控制器廠商也會提供許多硬體上的解決方案,使得設計者在規劃時可以有差異性的選擇。例如,在規劃微控制器使用通用序列埠(Universal Serial Bus, USB)的設計時,設計者可以選用一般的微控制器搭配外部的USB介面元件,或者是使用內建USB介面功能的微控制器。因此,設計者必須要基於成本的考量以及程式撰寫的難易與穩定性做出最適當的設定;而不同的廠商與設計者便會選擇不同的設計方法、硬體規劃以及應用程式內容。也就是因為這樣的特殊性,微控制器可以客製化的應用在少量多樣的系統上,滿足特殊的使用要求,例如特殊工具機的控制系統;或者是針對數量龐大的特定應用,選擇低成本的微控制器元件有效地降低成本而能夠普遍地應用,例如車用電子元件與MP3播放控制系統;或者是具備完整功能的可程式控制系統,提供使用者修改控制內容的彈性空間,例如工業用的可程式邏輯控制器(Programmable Logic Controller, PLC)。也就是因為微控制器的多樣化與客製化的特色,使得微控制器可以廣泛地應用在各式各樣的電子產品中,小到隨身攜帶的手錶或者行動電話,大到車輛船舶的控制與感測系統,都可以看到微控制器的應用。也正由於它的市場廣大,引起了為數眾多的製造廠商根據不同的觀念、應用與製程開發各式各樣的微控制器,其種類之繁多即便是專業人士亦無法完全列舉。而隨著應用的更新與市場的需求,微控制器也不斷地推陳出新,不但滿足了消費者與廠商的需求,也使得設計者能夠更快速而方便的完成所需要執行的特定工作。
在種類繁多的微處理器產品中,初學者很難選擇一個適當的入門產品作為學習的基礎。即便是選擇微控制器的品牌,恐怕都需要經過一番痛苦的掙扎。事實上,各種微處理器的設計與使用觀念都是類似的,因此初學者只要選擇一個適當的入門產品學習到基本觀念與技巧之後,便能夠類推到其他不同的微處理器應用。基於這樣的觀念,本書將選擇目前在全世界8位元微控制器市場占有率最高的Microchip®微控制器作為介紹的對象。本書除了介紹各種微處理器所具備的基本硬體與功能之外,並將使用Microchip®產品中功能較為完整的PIC18系列微控制器作為程式撰寫範例與微處理器硬體介紹的對象。本書將介紹一般撰寫微處理器所使用的基本工具—組合語言,引導讀者能夠撰寫功能更完整、更有效率的應用程式。並藉由組合語言程式的範例程式詳細地介紹微處理器的基本原理與使用方法,使得讀者可以有效地學習微處理器程式設計的過程與技巧,有效地降低開發的時間與成本。
不論微處理器的發展如何的演變,相關的運算指令與周邊功能都是藉由基本的數位邏輯元件建構而成。因此,在詳細介紹微處理器的各個功能之前,讓我們一起回顧相關的基本數位運算觀念與邏輯電路元件。