官术网_书友最值得收藏!

第2章 半導體存儲器及I/O接口基礎

微型計算機是由CPU、存儲器、輸入/輸出(I/O)接口電路組成的,計算機的工作依賴于存儲器中的程序和數據;各種外設通過I/O接口(Interface)與系統相連,各種方式下的數據傳送都是在接口的支持下實現的。存儲器和I/O接口電路是微型計算機的重要組成部分。

本章主要讓學生了解半導體存儲器的工作原理、分類、主要性能指標及各類存儲器的特點;了解I/O接口電路的基本概念、基本功能、數據傳輸方式、串行通信的基本概念、中斷的基本概念、定時器/計數器的基本概念。本章是微型計算機存儲器及I/O接口的基礎部分。

2.1 存儲器概述

存儲器(Memory)是計算機的重要組成部分,是用來存儲程序和數據的部件。正是因為有了存儲器,計算機才有信息記憶功能,并把計算機要執行的程序、所要處理的數據以及處理的結果存儲在計算機中,使計算機能自動工作。存儲器系統是微機系統中重要的子系統。隨著CPU速度的不斷提高和軟件規模的不斷擴大,人們當然希望存儲器能同時滿足速度快、容量大、價格低的要求。實際上這一點很難辦到,解決這一問題的較好辦法是:設計一個快慢搭配、具有層次結構的存儲系統。圖2-1顯示了新型計算機系統中的存儲器組織,它呈金字塔形結構。越往上,存儲器的速度越快,CPU的訪問頻率越高,每位的造價越高,系統的容量越小;越往下,容量越大,每位的造價越低,速度也較低。

圖2-1 存儲器系統的多層次結構

從圖2-1中可以看出,CPU中的寄存器位于頂端,它的存取速度最快,但數量有限。向下依次為CPU內部的Cache(高速緩沖存儲器)、主板上的Cache(也稱外部Cache,由高速SRAM組成)、主存儲器(由半導體存儲器組成)、輔助存儲器(半導體盤、軟盤、硬盤)和大容量輔助存儲器(光盤、磁帶)。

本章主要介紹構成微型機主存的半導體存儲器的有關問題。

2.1.1 存儲器的基本組成與操作

1.存儲器的基本組成

存儲器由一些能夠表示二進制數0和1狀態的物理器件組成,這些器件本身具有記憶的功能,如電容、雙穩態電路等。這些具有記憶功能的物理器件或者電路就構成了一個基本存儲單元。每個基本存儲單元可以保存1位二進制信息,若干基本存儲器單元構成一個存儲單元,通常一個存儲單元由8個基本存儲單元構成,即一個存儲單元可以存儲8位二進制信息,許多存儲單元組織在一起便構成了存儲器。形象地說,如果把學校的一棟宿舍樓比做存儲器的話,那么宿舍樓中的各個宿舍就是存儲單元,各個宿舍中的每張床就是基本存儲單元。存儲器組成之間的關系如圖2-2所示。

圖2-2 存儲器組成關系圖

2.存儲器的基本操作

存儲器的操作有兩種:讀操作和寫操作。

讀操作是指從存儲器中讀出信息,不破壞原有存儲器單元中的信息,屬于非破壞性操作。寫操作是把信息寫入(存入)存儲器,寫入的信息將會覆蓋存儲單元中的原有信息,屬于破壞性操作。CPU實現對存儲器的讀/寫,其步驟是首先通過地址選中存儲器單元,然后再對選中的存儲單元進行讀/寫操作。

2.1.2 存儲器的分類及主要指標

1.存儲器的分類

存儲器可以按不同的方法進行分類。

(1)按用途分

按存儲器用途分,可以分成內部存儲器和外部存儲器。

① 內部存儲器:內部存儲器也稱為內存,是主存儲器,位于計算機主機的內部。它用來存放當前正在使用的或經常使用的程序和數據,它由半導體集成電路芯片組成。內存工作速度快,可以直接與CPU交換數據、參與運算。但內存的容量有限,通常為幾十到幾百KB(1K=1024)。

② 外部存儲器:外部存儲器也稱為外存,是輔助存儲器。外存的特點是大容量,所存儲的信息既可以修改,也可以保存,存取速度較慢,要由專用的設備來管理。如磁帶、磁盤、光盤等,一盤磁帶可存儲150KB的信息,一片硬磁盤可存儲數十兆字節的信息。磁帶、磁盤的數量可隨意增加。從這個意義上說,外存儲器的容量無限,但外存的工作速度低,它們不能直接參與計算機的運算,一般情況下外存只與內存成批交換信息。也就是說,外存儲器僅起到擴大計算機存儲容量的作用。在計算機中,外存儲器是外設的組成部分。

本書涉及的存儲器系統設計主要是內存儲器系統設計。

(2)按存儲器性質分

內部存儲器按存儲器性質分類通常分為隨機存取存儲器(RAM,Random Access Memory)和只讀存儲器(ROM,Read Only Memory)兩類。

① RAM:RAM又稱讀寫存儲器,它的數據讀取、存入時間都很短,因此計算機運行時,既可以從RAM中讀數據,又可以將數據寫入RAM。但掉電后RAM中存放的信息將丟失。RAM適宜存放輸入數據、中間結果及最后的運算結果,因此又被稱為數據存儲器。

隨機存儲器有靜態RAM和動態RAM兩種。靜態RAM用觸發器存儲信息,只要不斷電,信息就不會丟失。動態RAM依靠電容存儲信息,充電后為“1”,放電后為“0”。由于集成電路中電容的容量很小,且存在泄漏電流的放電作用,高電平的保持時間只有幾毫秒。為了保存信息,每隔1~2ms必須對高電平的電容重新充電,這稱為動態RAM的定時刷新。動態RAM的集成度高;靜態RAM的集成度低、功耗大,優點是省去了刷新電路。在設計專用的微型計算機系統時,一般只用靜態RAM就可以滿足要求。

② ROM:ROM讀出一個數據的時間為數百納秒,有時也可改寫,但寫入一個數據的時間長達數十毫秒。因此在計算機運行時只能執行讀操作。掉電后ROM中存放的數據不會丟失。ROM適宜存放程序、常數、表格等,因此又稱為程序存儲器。只讀存儲器有以下五類:

掩模ROM:在半導體工廠生產時,已經用掩模技術將程序做入芯片,用戶只能讀出內容而不能改寫。掩模ROM只能應用于有固定程序且批量很大的產品中。

一次可編程只讀存儲器(PROM,Programmable ROM):用戶可將程序寫入PROM,但程序一經寫入就不能改寫。

紫外線擦除可編程只讀存儲器(EPROM,Erasable PROM):用戶可將程序寫入EPROM芯片。如果要改寫程序,先用EPROM擦除器,擦去原先的程序,然后寫入新程序。與PROM芯片一樣,寫入的速度很慢,且要用到高壓,所以必須用特定的EPROM編程器寫入信息。在計算機運行時只能執行讀操作。

電擦除可編程只讀存儲器(EEPROM,Electrically Erasable PROM):由于采用電擦除方式,而且擦除、寫入、讀出的電源都用+5V,故能在應用系統中在線改寫。但目前寫入時間較長,約需10ms,讀出時間約為幾百納秒。

閃爍存儲器(Flash Memory):快速擦寫存儲器(Flash Memory,簡稱Flash)是20世紀80年代中期推出的新型器件。它可以在聯機條件下,在計算機內進行擦除、改寫,因而稱為快擦寫型存儲器或閃爍存儲器。它具有芯片整體或分區電擦除和可再編程功能,從而使它成為性價比和可靠性最高的可讀寫、非易失性存儲器。主要性能特點如下:

● 高速芯片整體電擦除:芯片整體擦除時間約1s,而一般的EPROM需要15min以上。

● 高速編程:采用快速脈沖編程方法,編程時間短。

● 最少1萬次擦除/編程周期,通常可達到10萬次擦除/編程周期。

● 早期的Flash采用12V編程電壓,改進后在Flash內部集成了1個DC/DC變換器,可以采用單一的5V電壓供電。

● 高速度的存儲器訪問:最大讀出時間不超過200μs。高速Flash的讀出時間達到60μs。

● 低功耗:最大工作電流為30mA,備用狀態下的最大電流為100μA。

● 密度大,價格低,性價比高。

由于Flash的突出性能,因而其發展迅速。Intel公司已決定由Flash來替代EEPROM,不再生產EEPROM。由于它的非易失性和可以長期地反復使用,目前已經廣泛應用于IC卡、單片機系統和其他電子設備中。大容量的Flash也可以“固態盤”的形式代替軟盤或硬盤作為海量存儲器使用。

圖2-3歸納了存儲器的分類情況。

圖2-3 存儲器分類圖

2.存儲器的主要性能指標

衡量半導體存儲器性能的主要指標有存儲容量、存取速度、存儲器周期、功耗、可靠性、價格、電源種類等,其中主要的技術指標是存儲容量和存取速度。

(1)存儲容量

存儲容量是存儲器的一個重要指標。存儲器芯片的存儲容量用“存儲單元個數×每個單元的存儲位數”來表示。如存儲器有256個單元,每個單元存放8位二進制數,那么該存儲器的容量為256×8位。存儲器容量1K=1024=210。對于以字節編址的微型計算機,可以以字節表示容量,如某微型計算機的容量為64KB。

在表示存儲器的容量時,一般是以某一空間范圍來表示的,而空間范圍是由地址線來決定的,即存儲器的容量和存儲器的地址線的寬度(數量)有關。地址的二進制位數N與容量的關系是Q=2N

如某存儲器芯片有13 條地址線A12~A0,則存儲器容量為8KB,空間表示范圍為0000H~1FFFH。

(2)存取速度

該項指標一般用以下兩個參數中的一個來描述。

① 存取時間(Access Time,TA):是指從CPU給出有效的存儲地址啟動一次存儲器讀/寫操作,到操作完成所經歷的時間。

具體地說,對一次讀操作的存取時間就是讀出時間,即從地址有效到數據輸出有效之間的時間;對于一次寫操作,存取時間就是寫入時間。

② 存取周期(Access Cycle,TAC):是指連續兩次存儲器讀/寫操作之間所需要的最小時間間隔。對于讀操作,就是讀周期時間;對于寫操作,就是寫周期時間。因為在一次數據訪問后,芯片不可能無間歇地進入下一次訪問,所以存取周期TAC要略大于存取時間TA。表示上,該參數常表示為讀周期TRC或寫周期TWC,存取時間TAC是其統稱。

(3)功耗

功耗反映了存儲器耗電的多少,同時也相應地反映了它的發熱程度(溫度會限制集成度的提高)。通常要求是功耗小,這對存儲器件的工作穩定性有利。雙極型半導體存儲器功耗高于MOS型存儲器,相應的MOS型存儲器芯片的集成度高于雙極型的。

(4)可靠性

可靠性通常以平均無故障時間(MTBF)來衡量。平均無故障時間可以理解為兩次故障之間的平均時間間隔,即平均無故障時間越長,則可靠性越高。集成存儲芯片一般在出廠時需經過測試,以保證它有很高的可靠性。

(5)性價比

性價比用于衡量存儲器的經濟性能,它是存儲容量、存取速度、可靠性、價格等的一個綜合指標,其中的價格還應包括系統中使用存儲器時而附加的線路的價格。用戶選用存儲器時,應針對具體的用途,側重考慮要滿足某種性能,以利于降低整個系統的價格。例如選用外存儲器要求它有大的存儲容量,但對于存取是否高速則不做要求;Cache要求高的存取速度,但對于其存儲容量則不做過高要求。

2.1.3 存儲器芯片的一般結構及地址結構形式

1.存儲器芯片的一般結構

常用的存儲器由存儲體、地址譯碼器、控制邏輯電路、數據緩沖器4部分組成,如圖2-4所示。

圖2-4 存儲器芯片組成示意圖

(1)存儲體

存儲體是存儲芯片的主體,它由若干存儲單元組成,每個存儲單元又由若干基本存儲電路組成,每個存儲電路可存放一位二進制信息。通常,一個存儲單元是一個字節,存放8位二進制信息,即以字節來組織。為了區分不同的存儲單元以便于讀/寫操作,每個存儲單元都有一個地址(稱為存儲單元地址),CPU訪問時按地址訪問。為了減少存儲器芯片的封裝引腳和簡化譯碼器的結構,存儲體總是按照二維矩陣的形式來排列存儲單元電路。存儲體內基本存儲單元的排列結構通常有兩種形式:一種是位結構,即每個存儲單元可存放一位二進制信息,其容量表示成N×1位,如1K×1位、4K×1位。另一種排列是字排列,即每個存儲單元可存放多位二進制信息,其容量表示成N×4位或N×8位,如靜態存儲器6116為2×8位,6264為8K×8位。

(2)地址譯碼器

地址譯碼器接收來自CPU的N位地址,經譯碼后產生2N個地址選擇信號,實現對片內存儲單元的選址,即地址譯碼器完成存儲單元的選擇。

(3)控制邏輯電路

控制邏輯電路接收片選信號CS和來自CPU的讀/寫控制信號,形成芯片內部的控制信號,控制數據的讀出和寫入。

(4)數據緩沖器

數據緩沖器用于暫時存放來自CPU的寫入數據或從存儲體內讀出的數據。暫存的目的是為了協調CPU和存儲器之間在速度上的差異。

2.存儲器地址空間的結構形式

存儲器用于存放程序與數據。半導體存儲器由一個個單元組成,每個單元有一個編號(稱為地址),一個單元存放一個8位二進制數(1個字節)。

計算機的存儲器地址空間有兩種結構形式:普林斯頓結構和哈佛結構。圖2-5所示為具有64KB地址的兩種結構圖。

圖2-5 計算機存儲器地址的兩種結構形式

普林斯頓結構的特點是計算機只有一個地址空間,ROM和RAM被安排在這一地址空間的不同區域,一個地址對應唯一的一個存儲器單元,CPU訪問ROM和訪問RAM使用的是相同的指令。8086、奔騰等計算機采用的是普林斯頓結構。

哈佛結構的特點是計算機的ROM和RAM被安排在兩個不同的地址空間,ROM和RAM可以有相同的地址,CPU訪問ROM和訪問RAM使用的是不同的訪問指令。MCS-51系列單片機采用的是哈佛結構。

2.1.4 堆棧的概念

眾所周知,堆棧是堆放貨物的倉庫。從地面起自下而上堆放的貨物總是“先進后出”的。微型計算機中的堆棧是在隨機存儲器(RAM)中建立的一個特殊區域,是一組按照“先進后出”的方式工作的、用于暫存信息的存儲單元。也就是說,所謂堆棧,是指在存儲器中開辟的一個區域,用來存放需要暫時保存的數據。

1.堆棧的作用

實用程序中,常有主程序與子程序兩大部分。如果在一個程序中需要多次使用某段程序,就把這段程序獨立出來編成子程序,其他部分稱為主程序。在主程序執行過程中需要使用該子程序時,可用調用子程序指令來調用它,待子程序執行完后再返回繼續執行主程序。過程如圖2-6所示。顯然,這樣做可以減少編制程序時的重復工作量,也縮短了程序的長度。

圖2-6 子程序執行過程圖

在調用子程序的過程中,要保留斷點地址,有時還要保護現場。所謂斷點地址,就是調用子程序指令的按順序排列的下一條指令的地址,也就是執行調用子程序指令時的程序計數器(PC)的內容。只有保留了斷點地址,才能在子程序執行后保證返回到主程序的斷點處,繼續執行主程序。所謂現場,就是調用子程序前保存在累加器A、工作寄存器及標志寄存器中的信息,這些信息是主程序執行的中間結果。如果在執行子程序的過程中要使用這些寄存器,將會破壞原來的內容。為此,進入子程序后,首先要轉存這些寄存器的內容,這就是保護現場。斷點地址與現場信息是送入堆棧保存的。

在返回主程序前,要把保存在堆棧中的現場信息送回對應的寄存器,這稱為恢復現場。

有時在執行一段子程序的過程中還要調用其他子程序,如圖2-7所示,這稱為子程序嵌套。這種情況下,堆棧不僅需要存放多個斷點地址和多批現場信息,而且為了保證逐次正確返回,要求先存入堆棧中的斷點地址、現場信息后取出來,所以堆棧按照“先進后出”的方式工作。

圖2-7 子程序嵌套圖

2.堆棧操作

堆棧有兩種操作方式。將數據送入堆棧稱為推入操作,又稱為壓入操作,如壓入指令

            PUSH    A

執行把累加器A的內容壓入堆棧的操作。把堆棧中內容取出來的操作稱為彈出操作,如彈出指令

            POP     A

執行把棧頂內容送回A的操作。

保護現場和恢復現場是由壓入指令和彈出指令實現的。斷點地址壓入堆棧是執行調用子程序指令時由硬件自動實現的,斷點地址自堆棧中彈出是執行返回主程序指令RET時由硬件自動實現的。

3.堆棧指針

堆棧是由堆棧指針來管理的。堆棧指針(SP,Stack Pointer)是一個專用的地址指針寄存器,它指明棧頂的位置,起著管理堆棧工作的作用。

下面以MCS-51單片機為例,說明堆棧工作過程和SP的作用。

MCS-51單片機的堆棧是建立在片內RAM中。MCS-51片內RAM的容量為128B,其地址為8位二進制數,所以SP是一個8位地址寄存器。在使用堆棧前,首先要確定堆棧在RAM中的位置,這稱為建立堆棧。建立堆棧可用一條傳送指令來實現。例如,執行指令:“MOV SP,#60H”后,(SP)=60H,在圖2-8(a)中,用SP指在60H單元來表示。

圖2-8 堆棧操作示意圖

由于機器規定SP指在堆棧的頂部,也就是指在最后壓入堆棧的信息的所在單元,所以剛建立堆棧時,盡管60H單元中實際上沒有信息,但認為該單元已有信息存放,堆棧將從60H單元開始向上增長(地址依次增大)。此后,如果執行指令PUSH A,A的內容將存放在61H單元中,同時SP的內容自動加1,即(SP)=61H,如圖2-8(b)所示。繼續執行指令PUSH B后,堆棧的情況如圖2-8(c)所示。彈出指令POP則把堆棧頂的內容送回寄存器或累加器,而且每彈出一個數據,SP的內容自動減1,故SP始終指在堆棧的頂部。

4.注意

堆棧可用于中斷及子程序調用,也可用于數據的暫時保存。在進入中斷服務子程序和子程序調用前,原來CPU中的現行信息(指令指針IP及寄存器中的有關內容)都必須保存,在中斷服務子程序和子程序調用結束返回主程序時,又必須恢復原來保存的信息,這些均由堆棧操作來完成,其中指令指針的入棧和出棧由CPU自動管理,而一些寄存器中內容的保存及返回,需要用戶自己利用指令PUSH、POP來完成。由于堆棧操作的“先進后出”的特點,一定要注意兩點:

① 先進入的內容要后彈出,保證返回寄存器的內容不發生錯誤。如:

            PUSH    A
            PUSH    B
            POP     A
            POP     B

可引起寄存器A、B內容的改變,即A和B的內容發生了交換。

② PUSH和POP的指令要成對,若不匹配的話,會造成返回主程序的地址出錯。如:

            PUSH    A
            PUSH    B
            …
            POP     B
            RET

由于少彈出一組數據,會使CPU返回主程序時,返回地址取出的是原來A中的內容,使整個程序執行出錯。

主站蜘蛛池模板: 吉安县| 台江县| 项城市| 鹿泉市| 方正县| 宁阳县| 晋中市| 哈巴河县| 青浦区| 赤壁市| 翁牛特旗| 寻甸| 灵山县| 宁陕县| 阿克陶县| 涟源市| 福鼎市| 垣曲县| 安宁市| 安仁县| 南康市| 巴中市| 勃利县| 台中市| 岱山县| 红桥区| 瑞金市| 新龙县| 开原市| 察雅县| 军事| 常州市| 夹江县| 内丘县| 芦溪县| 湘乡市| 德庆县| 额尔古纳市| 西昌市| 珠海市| 梅州市|