第3章嵌入式硬件平臺_第1頁
第3章嵌入式硬件平臺_第2頁
第3章嵌入式硬件平臺_第3頁
第3章嵌入式硬件平臺_第4頁
第3章嵌入式硬件平臺_第5頁
已閱讀5頁,還剩146頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第3章嵌入式硬件平臺3.1引言3.2嵌入式硬件平臺概述3.3總線3.4存儲設備3.5I/O設備

3.6通信設備3.7其他思考與練習題

3.1引

嵌入式系統的硬件除了核心部件——嵌入式處理器外,還包括存儲器系統、外圍接口部件以及連接各種設備的總線系統。其中,存儲器是嵌入式系統存放數據和程序的功能部件,而外圍設備決定了應用于不同領域的嵌入式系統的獨特功能。

3.2嵌入式硬件平臺概述

嵌入式處理器是嵌入式系統中硬件的核心組成部分,但是若沒有存儲器和I/O設備,它就無法具有各種實用的功能。嵌入式處理器通常集成了大量的I/O模塊單元(如中斷控制器和通信控制器等)和存儲器(Flash和RAM等)。當嵌入式處理器上集成的存儲器單元和I/O單元不夠時,可以通過擴充組成強大的嵌入式硬件系統。嵌入式系統的硬件是以嵌入式處理器為中心,由存儲器、I/O單元電路、通信模塊、外部設備等必要的輔助接口組成的,如圖3-1所示。在實際應用中,嵌入式系統硬件配置非常精簡,除了微處理器和基本的外圍電路以外,其余的電路可以根據需要和成本進行裁剪、定制。

圖3-1嵌入式系統的硬件組成

在嵌入式系統中使用的存儲器可以是內部存儲器,也可以是外部存儲器。通常處理器的內部存儲器是非常有限的。對于小型應用,如果這些存儲器夠用,就不必使用外部存儲器;否則,就必須進行擴展,使用外部存儲設備。與通用計算機把應用軟件和操作系統放在外存的工作方式不同,嵌入式系統的軟件通常直接存放在內存(如Flash)中,上電之后可以立刻運行;當然,也有的嵌入式系統的軟件從外存啟動、裝載并運行。無論如何,需要考慮嵌入式系統的軟件的固化問題,而這一問題在通用計算機(如PC機)上開發軟件是不需要考慮的。此外,考慮存儲器系統時,還需要考慮嵌入式系統軟件的引導問題。

嵌入式處理器工作時必須有附屬電路支持,如時鐘電路、復位電路、調試電路、監視定時器、中斷控制電路等,這些電路并不完成數據的輸入/輸出功能,而是為嵌入式處理器的工作提供必要的條件。在設計嵌入式系統的硬件電路時,常常將它們與嵌入式處理器設計成一個模塊,形成處理器最小系統。

嵌入式處理器在功能上有別于通用處理器,其區別在于嵌入式處理器上集成了大量的I/O電路。因此,用戶在開發嵌入式系統時,可以根據系統需求選擇合適的嵌入式處理器,而無需再另外配合I/O電路。隨著半導體技術的發展,嵌入式處理器的集成度不斷提高,許多嵌入式處理器上集成的I/O功能完全滿足應用的需求,基本無需擴展。嵌入式系統的I/O接口電路主要完成嵌入式處理器與外部設備之間的交互和數據通信。這些電路包括網絡接口、串行接口、模/數轉換和數/模轉換接口、人機交互接口等。應用于不同行業的嵌入式系統,其接口功能和數量有很大的差異。在設計I/O接口電路時,一般把這部分作為I/O子系統進行統一的設計,這樣既可以綜合考慮優化電路,又便于設計成果的重復使用。

3.3總

3.3.1總線協議1.握手協議總線協議中的基本構件是四周期握手協議。總線握手信號的作用是控制每個總線周期中數據傳送的開始和結束,從而實現兩個設備間的協調和配合,保證數據傳送的可靠性。握手線用兩根連線enq(查詢)和ack(應答)來表示。在握手期間,使用專用的握手線來傳輸數據。因此,數據握手線必須以某種方式用信號的電壓變化來表明整個總線傳輸周期的開始和結束,以及在整個周期內每個子周期的開始和結束。一般地,四周期握手過程(如圖3-2所示)描述如下:

圖3-2四周期握手協議

(1)設備1升高它的輸出電平來發出查詢信號,它告訴設備2應準備好接收數據。(2)當設備2準備好接收數據時,升高它的輸出電平來發出應答信號。這時,設備1已準備好發送數據,設備2已準備好接收數據。(3)一旦數據傳送完畢,設備2降低它的輸出電平表示它已經接收完數據。(4)看到設備2的應答信號變低,設備1降低它的輸出電平。在握手結束時,兩個設備的握手信號都是低電平,恢復到開始握手前的狀態。因此,系統回到其初始狀態,為下一次握手方式傳輸數據做好準備。

2.總線讀/寫微處理器總線在握手基礎上為CPU和系統其他部分建立通信。基本的總線操作包括讀和寫,圖3-3說明了一個支持讀和寫的典型總線結構。

圖3-3典型的微處理器總線

*Clock提供總線組件各部分的同步。*當總線讀時,R/W'為1;當總線寫時,R/W'為0。*Address是一個a位信號束,為訪問提供地址。*Data是一個n位信號束,它可以從CPU得到數據或向CPU傳送數據。*Dataready'當數據束上值合法時發信號。

在這個基本總線上的所有傳輸都由CPU控制,即CPU可以讀/寫設備或存儲器,但設備或存儲器自己不能啟動傳輸。這是因為R/W'和地址都是單向信號,只有CPU能夠決定傳輸地址和方向。總線行為經常用時序圖來說明,時序圖表示了總線上的信號如何隨時間變化。圖3-4所示為某總線的時序圖,包括讀和寫兩部分。由于讀不改變設備和存儲器的任何狀態,因此總線通常處于讀狀態。CPU可以忽略數據線直到它要使用讀操作的結果為止。此外,還要注意在雙向線路上數據的傳輸方向并未在時序圖中指定。讀過程中,外設或存儲器在數據線上發送數據;而寫過程中,CPU控制數據線。

圖3-4總線時序圖

通常可以用總線握手信號來執行突發傳輸,如圖3-5所示。在這個突發讀事務中,CPU發送一個地址信號,但接收的是一個數據值序列。我們給總線額外增加一根稱為Burst'的線路。當事務是突發事務時,用它來向設備發信號;用釋放Burst'信號來通知設備已傳輸了足夠的數據。

圖3-5總線的突發讀事務

總線事務的狀態機是對時序圖的有效補充,圖3-6展示了讀操作的CPU和設備的狀態機。當CPU決定執行一個讀事務時,它轉換到新狀態,并發出讓設備正確工作的總線信號;而設備狀態轉換圖捕獲了它這一端的總線協議狀態。

圖3-6總線讀事務的狀態圖

3.3.2DMA標準總線事務要求CPU在每個讀/寫事務中間,解決與其他設備的信息交換問題。但是,某些數據傳輸不需要CPU介入,如I/O設備和存儲器之間的數據交換。要實現這類操作,就要求CPU以外的設備單元能夠控制總線上的操作。直接存儲器訪問(DirectMemery-Access,DMA)是允許讀/寫不由CPU控制的總線操作。DMA使用一種稱為DMA控制器的專用硬件來完成外設與存儲器之間的高速數據傳送。DMA控制器從CPU請求總線控制,得到控制權后,控制器能像CPU那樣提供內存的地址和必要的讀/寫控制信號,實現直接在設備和存儲器之間執行讀/寫操作。圖3-7展示了一個帶有DMA控制器的總線配置。

圖3-7帶DMA控制器的總線

DMA要求CPU提供兩個附加的總線信號:總線請求和總線授權。總線請求是CPU的輸入信號,DMA控制器通過它來請求總線所有權;總線授權信號表示總線已經授權給DMA控制器。DMA控制器使用這兩個信號來獲得使用標準四周期握手協議的總線控制權。當要獲取總線控制權時,DMA控制器發出總線請求信號;當總線準備好時,CPU發出總線授權信號。CPU在總線控制權授予DMA控制器之前,將完成所有未完成的總線事務。一旦DMA控制器獲得了總線的所有權,它將可以使用和CPU驅動的總線事務一樣的總線協議來完成讀和寫。在事務完成之后,DMA控制器通過釋放總線請求信號把總線還給CPU,然后CPU釋放總線授予信號。

3.3.3總線配置一個微處理器系統可能使用多條總線來連接設備。如圖3-8所示,高速設備可以連到高速總線上,而低速設備連到低速總線上,通過一個被稱為橋的邏輯電路使得總線可以互連。

圖3-8多總線系統

使用這樣的總線配置主要考慮到以下幾個原因:(1)高速總線通常提供較寬的數據連接。(2)高速總線通常要更昂貴的電路和連接器,可以通過使用較慢的、比較便宜的總線來降低低速設備成本。(3)橋允許總線獨立操作,因此可以在I/O操作中提供并行性。在高速總線和低速總線之間的總線橋是高速總線的受控器,是低速總線的主控器。橋從高速總線上獲取指令并將其傳到低速總線,將結果從低速總線傳到高速總線上。

3.3.4總線實例這里以ARM的一個總線系統為例,簡單分析該系統的組成和特征。由于ARM微處理器由許多不同制造商制造,因此芯片外提供的總線隨芯片變化而變化。ARM已經為單芯片系統創建了一個獨立的總線規格說明——AMBA規范。AMBA總線(ARM99A)支持將多個CPU、存儲器和外圍設備集成在片上系統中。如圖3-9所示,AMBA規格說明包括兩條總線:AHB和APB。其中,AMBA高性能總線(AHB)是為高速傳輸而經過優化的,它直接連到CPU上并支持多種高性能總線的特性:流水線技術、突發傳輸、分離事務和多總線主控器等。橋用來將AHB連到AMBA外圍設備總線(APB)上。

圖3-9ARMAMBA總線系統

3.4存

3.4.1嵌入式系統存儲器子系統的結構嵌入式系統的存儲器子系統與通用計算機的存儲器子系統的功能并無明顯的區別,這決定了嵌入式系統的存儲器子系統的設計指標和方法也可以采用通用計算機的方法,尤其是嵌入通用計算機的大型嵌入式系統更是如此。

存儲器子系統設計的首要目標是使存儲器在工作速度上很好地與處理器匹配,并滿足各種存取需要。因此,體系結構的特性能夠提高存儲系統的速度和容量。隨著微電子技術的發展,微處理器的工作速度有了很大的提高。而微處理器時鐘頻率提高比內存速度提高要快,以至于內存速度遠遠落后于CPU速度。如果大量使用高速存儲器,使它們在速度上與處理器相吻合,就能夠簡便地解決問題。但是,這種方法受到經濟上的限制。因為隨著存儲器芯片速度的提高,其價格急劇上升,使系統成本十分昂貴。在實際的計算機系統中,總是采用分級的方法來設計整個存儲器系統。圖3-10所示為這種分級存儲系統的組織結構示意圖,它把全部存儲系統分為四級,即寄存器組、高速緩存、內存和外存。它們在存取速度上依次遞減,而在存儲容量上逐級遞增。

圖3-10分級存儲器系統

寄存器組是最高一級的存儲器。在計算機設備中,寄存器組一般是微處理器內含的,如上一章介紹的ARM處理器中有37個寄存器。有些待使用的數據或者運算的中間結果可以暫存在這些寄存器中。微處理器在對本芯片內的寄存器讀/寫時,速度很快,一般在一個時鐘周期內完成。從總體上說,設置一系列寄存器是為了盡可能減少微處理器直接從外部取數的次數。但是,由于寄存器組是制作在微處理器內部的,受芯片面積和集成度的限制,因此寄存器的數量不可能做得很多。

第二級存儲器是高速緩沖存儲器(Cache)。高速緩存是一種小型、快速的存儲器,其存取速度足以與微處理器相匹配。高速緩存能夠保存部分內存的內容的拷貝,如果正確使用,它能夠減少內存平均訪問時間。第三級是內存。運行的程序和數據都放在內存中。由于微處理器的尋址大部分在高速緩存上,因此內存可以采用速度稍慢的存儲器芯片,對系統性能的影響不會太大,同時又降低了成本。內存除主要使用RAM外,還要使用一定量的ROM。這些ROM主要用來解決系統初始化的一系列操作,如設備檢測、接口電路初始化、啟動操作系統等。一般情況下,ROM的存取時間比較長,對ROM的每次讀/寫要增添3~4個等待周期。但這種少量慢速存儲器只在開機時運行,對系統性能影響不大。

最低一級存儲器是大容量的外存。這種外存容量大,但是在存取速度上比內存要慢得多。目前嵌入式系統中常用閃存作為大容量硬盤存儲各種程序和數據。上述四級存儲器系統并不是每個嵌入式系統所必須具備的,應當根據系統的性能要求和處理器的功能來確定。例如,在8位處理器上,主要考慮內存的時間,而高速緩存極少被采用。對于16位和32位微處理器組成的系統,隨著性能的提高,存儲系統變得更為復雜,一般都包含了全部四級存儲器。

3.4.2RAMRAM(RandomAccessMemory,隨機存儲器)能夠隨時在任一地址讀出或寫入內容。RAM的突出優點是讀/寫方便、使用靈活;缺點是不能長期保存信息,一旦停電,所存信息就會丟失。所以RAM用于二進制信息的臨時存儲或緩沖存儲,在嵌入式系統中主要用于:(1)存放當前正在執行的程序和數據,如用戶的調試程序、程序的中間運算結構以及掉電時無需保存的I/O數據和參數等。(2)作為I/O數據緩沖存儲器,如顯示輸出緩沖存儲器、鍵盤輸入緩沖存儲器等。以顯示緩沖存儲器為例,它實質上就是在主存中開辟的一個存放字符、漢字、圖形、圖像等顯示信息的數據緩沖區。(3)作為中斷服務程序中保護CPU現場信息的堆棧。

1.靜態RAM靜態RAM(SRAM)的存儲單元電路是以雙穩態電路為基礎的,因此狀態穩定,只要不掉電,信息就不會丟失。靜態RAM的接口和操作時序如圖3-11所示。

圖3-11靜態RAM圖3-11中:CE'是芯片啟用輸入,在低電平工作。當CE'=1時,SRAM的Data引腳被禁用;當CE'=0時,SRAM的Data引腳被啟用。R/W'控制當前操作是讀(R/W'=1)還是寫(R/W'=0)。讀/寫是相對于CPU而言的,因此讀意味著從RAM讀,寫意味著寫至RAM。需要注意的是,有些SRAM的讀/寫使用兩個控制引腳即WR'和RD',WR'=0時執行寫操作;RD'=0時執行讀操作。Adrs指出讀或寫的地址。Data是數據傳輸雙向信號束。R/W'=1時,該引腳為輸出;R/W'=0時,該引腳為輸入。SRAM的操作方法有兩種,即讀操作和寫操作。

SRAM上讀操作的方法如下:(1)當R/W'=1時,讓CE'=0,啟用SDRAM。(2)將地址送到地址線上。(3)一定延遲時間后,數據通過數據線進行傳輸。SRAM上寫操作的方法如下:(1)讓CE'=0,啟用SDRAM。(2)讓R/W'=0。(3)地址出現在地址線上,數據出現在數據線上。在使用SRAM時,需要考慮SRAM與處理器的匹配,一般包括工作電壓、工作速度、時序等的匹配。電路設計完成把SRAM接到系統總線上的工作。

2.動態RAM動態RAM(DRAM)的存儲單元電路是以電容為基礎的,電路簡單,集成度高,功耗小。但是DRAM即使不掉電也會因電容放電而丟失信息,需要定時刷新,因此在工作時必須配合DRAM控制器。DRAM控制器是位于處理器和存儲器芯片之間的一個額外的硬件,如圖3-12所示。它的主要用途是執行DRAM的刷新操作,使得DRAM中數據有效。

圖3-12DRAM通過DRAM控制器組成存儲器系統

圖3-13基本動態RAM接口和讀時序

DRAM芯片集成度高,存儲容量大,導致引腳數量不夠,因此地址輸入采用兩路復用鎖存方式。也就是說,DRAM將地址信號分為兩組,共用幾根地址輸入線,分兩次把地址送入芯片內部鎖存起來。這兩組地址信號的送入,分別用行地址選擇(RAS')和列地址選擇(CAS')控制。讀操作的時序圖表明地址按以下兩步提供:首先,RAS'置成0,地址的行部分(即地址高位部分)置于地址線;然后,CAS'置成0,地址的列部分(即地址低位部分)置于地址線。

3.RAM的選擇在設計嵌入式系統時,隨機存儲器的選擇一般有兩種:SRAM和DRAM。選擇時,通常考慮以下因素:(1)如果系統的隨機存儲器的容量不是很大,則一般采用SRAM;反之,選擇DRAM。(2)對于特別高速度的應用,使用SRAM。(3)如果嵌入式系統對功耗敏感,可使用SRAM。因為DRAM需要定時刷新,消耗能力相對大,而SRAM在系統進入待機工作方式時,只需要微小的待機電流就可以維持數據不丟失。需要注意的是,SRAM的平均功耗低,但是工作時功耗不一定低。

(4)對于嵌入式處理器而言,有的嵌入式處理器芯片集成了DRAM控制器,這時選擇DRAM比較好。一般的,小規模的嵌入式系統不建議使用分離的DRAM控制器+DRAM的方案,因為這種方案既會增加系統的復雜性(如電路板的面積、故障率等),又會增加系統的成本。因此如果選用了DRAM,那么盡量使用帶有DRAM控制器的嵌入式處理器,然后配合使用DRAM。(5)目前,基于32位嵌入式處理器的嵌入式系統一般使用DRAM。(6)復雜的嵌入式系統可以采用SRAM和DRAM混合設計的方案。不同要求的數據使用不同的隨機存儲器,以滿足系統整體的優化設計。

(7)嵌入式系統的設計,在使用SRAM和DRAM的成本上,需要仔細并與整個系統的硬件一起進行核算,最終做出選擇。在選擇存儲器類型時,一般要考慮存取時間和成本。SRAM提供了極快的存取時間,一般比DRAM快4倍,但是造價十分昂貴。通常,SRAM只是用于那些存取速度極端重要的場合。在需要使用大容量的RAM時,一般選擇使用DRAM。很多嵌入式系統混合使用兩種RAM,如關鍵數據通道上的一小塊SRAM(幾百至幾千個字節)和其他所有地方的一大塊DRAM(以兆計)。

3.4.3ROMROM(Read-OnlyMemory,只讀存儲器)中的內容一經寫入,在工作過程中就只能讀出不能重寫,即使掉電,寫入的內容也不會丟失。ROM在嵌入式系統中非常有用,常常用來存放系統軟件(如ROMBIOS)、應用程序等不隨時間改變的代碼或數據。ROM可以分為工場可編程ROM和現場可編程ROM兩大類。工場可編程ROM(即掩膜可編程ROM,mask-programmedROM)是由廠商按照用戶要求掩膜制成,封裝后不能改寫,用戶只能讀出,不能改寫。掩膜ROM一般只用于大批量生產的計算機產品中,在產品研制和實驗室小批量生產時,宜選用現場可編程ROM。

有幾種不同類型的現場可編程ROM,一些只可編程一次,而另一些可以被重復編程。(1)可編程ROM(ProgrammedROM):該類ROM只可編程一次,即用戶一次性編程寫入后就永久性地修改了芯片。這種類型的ROM最便宜,但沒有可重復燒制的ROM靈活。(2)紫外線可擦可編程ROM(UVErasableProgrammedROM,UV_EPROM):該類ROM可以通過紫外線擦除后重復編程。該類ROM芯片外殼上有一個窗口,以便讓紫外線照進芯片;紫外線照射約半小時,所有存儲位復原到“1”。通過這種方法,用戶可以多次改寫芯片內容,有任意位發生錯誤都需要全片擦除、改寫。

(3)電可擦可編程ROM(ElectricalProgrammedROM,EEPROM):該類ROM允許用戶以字節為單位多次用電擦除和改寫存儲內容,而且可以直接在機內進行,不需要專用設備,方便靈活。因為程序不需要在線修改,所以EEPROM一般不用作程序存儲器,而用作對數據、參數等有掉電保護要求的數據存儲器。

3.4.4FlashMemoryFlashMemory(按塊擦除存儲器)是存儲器技術的最新發展。FlashMemory綜合了目前為止的所有存儲器器件的優點,主要特點是在不加電情況下能長期保存信息,同時又能在線進行快速擦除與重寫。從軟件的觀點來看,FlashMemory和EEPROM的的技術十分類似。但是,EEPROM擦寫和編程時要加高電壓,這意味著重新編程時必須將芯片從系統中拿出來。而FlashMemory使用標準電壓擦寫和編程,允許芯片在標準系統內部編程。這就允許FlashMemory在重新編程的同時存儲新的內容。此外,EEPROM必須被整體擦寫,FlashMemory可以一塊一塊地擦寫。大部分FlashMemory允許某些塊被保護,這一點對存儲空間有限的嵌入式系統非常有用,即將引導代碼放進保護塊內而允許更新設備上其他的存儲器塊。

理想的存儲器應具有密度高、讀/寫速度快、價格低和非易失性的特點。但是,傳統的存儲器卻只能滿足這些要求中的一部分。FlashMemory的推出,恰好同時實現了所有這些優良的存儲器特性。FlashMemory是一種高密度、低價格的高性能讀/寫存儲器,兼有功耗低、可靠性高等特點。表3-1所示為FlashMemory與傳統存儲器技術的比較。

表3-1FlashMemory與傳統存儲器技術的比較

根據工藝的不同,FlashMemory主要有兩類:NORFlashMemory和NANDFlashMemory。NORFlashMemory是在EEPROM的基礎上發展起來的,它的存儲單元由N-MOS構成,連接N-MOS單元的線是獨立的。NORFlashMemory的特點是可以隨機讀取任意單元的內容,適合于程序代碼的并行讀/寫、存儲,所以常用于制作計算機的BIOS存儲器和微控制器的內部存儲器等。NANDFlashMemory是將幾個N-MOS單元用同一根線連接起來,可以按順序讀取存儲單元的內容,適合于數據或文件的串行讀/寫。

FlashMemory的操作包括寫入和讀出。讀操作:從FlashMemory中讀出數據與其他存儲器的操作基本相同。處理器只要提供地址、讀操作信號和片選信號,存儲器就返回在該位置保存的數據。大部分的FlashMemory在系統重啟時自動進入讀狀態,啟動讀狀態不需要特別的初始化序列。寫操作:把程序或數據寫入FlashMemory的過程叫做編程。FlashMemory的編程有兩種方式,一種是在線編程,一種是離線編程。FlashMemory的編程操作比較麻煩,主要表現在以下3個方面:

(1)每一個存儲位置必須在重寫操作之前被擦除。如果舊的數據沒有被擦除,那么寫操作的結果會是新、舊數值的某種邏輯組合,存儲的數據通常是錯誤的。(2)一次只能有一個扇區或者塊被擦除,而且不可能只是擦除一個單個的字節。(3)擦除舊數據的過程和寫入新數據的過程是隨著制造商的不同而變化的。因此在進行FlashMemory寫入操作時,提供一個軟件層來完成寫入和擦除操作比較方便,這個軟件層叫做FlashMemory的驅動程序。

設計FlashMemory驅動程序的目的是為了屏蔽不同制造商提供的器件在寫入操作時的細節,為上層軟件設計提供一個統一的接口,以便于上層軟件的移植和開發。FlashMemory的驅動程序應該有一個由擦除和寫操作組成的簡單應用編程接口。當需要修改FlashMemory中的數據的部分應用軟件時,只要調用驅動程序來控制細節即可。這樣就允許應用程序員做一個高級的請求,例如擦除地址D0000H處的塊或于地址D0000H處開始寫入一塊數據。通過設計并使用FlashMemory的設備驅動程序,當使用其他制造商的FlashMemory時,軟件代碼可以很容易地被修改。

FlashMemory不僅可以用作嵌入式系統的程序存儲器,也可以作許多其他的應用。(1)FlashMemory文件系統:因為FlashMemory提供了可被重寫的非易失性存儲,所以它可以被看作類似于任何其他的二級存儲系統,如硬盤。在作為文件系統的情況下,由驅動程序提供的函數要更加面向文件,提供諸如open()、close()、read()、write()等標準文件系統函數。FlashMemory文件系統的組織與普通的外存基本相同。(2)便攜設備的存儲裝置:隨著數碼產品的飛速發展,FlashMemory作為一種最常用的存儲裝置應用于數碼相機(如CF卡、XD卡、記憶棒等)、MP3等數碼產品中。

3.5I/O設

3.5.1定時器/計數器所有的嵌入式處理器都集成了定時器/計數器單元。系統中至少有一個定時器設備,用作系統時鐘。定時器和計數器都是由帶有保存當前值的寄存器和向當前寄存器值加1的增量輸入的加法器邏輯電路組成的。但是,定時器和計數器的用處不同,主要體現在:定時器的計數裝置是連到周期性時鐘信號上的,用來測量時間間隔;而計數器的計數裝置是連到非周期性信號上的,用來計算外部事件的發生次數。因為同樣的邏輯電路可以有這兩種使用方式,所以該設備經常被稱為“定時器/計數器”。

嵌入式處理器上的定時器/計數器通常具有以下功能:(1)嵌入式操作系統的任務調度,特別是具有時間片輪轉調度功能的嵌入式操作系統的任務調度,必須使用定時器產生時間片。(2)嵌入式操作系統的軟件時鐘需要基于硬件定時器產生定時信號。(3)通信電路的波特率發生器。(4)實時時鐘電路。(5)集成的片上A/D轉換和D/A轉換電路。(6)具有液晶控制器的嵌入式處理器應用液晶屏的刷新。(7)處理器監控電路,如看門狗等。(8)集成的動態存儲器控制器用于動態存儲器的刷新。

圖3-14展示了定時器/計數器的內部結構。當計數信號被確認時,一個n位的定時器/計數器使用一個n位的寄存器來保存當前計數值并使用半減器陣列減去該計數器的值。組合邏輯電路用來檢查計數值是否為0。輸出Done發出0計數信號。為了對控制超時進行響應而不是確切要求2n次事件發生,使用一個復位寄存器提供給計數寄存器裝入的值。定時器/計數器用邏輯電路來裝載復位寄存器。此外,大部分計數器提供循環和非循環的操作模式。在循環模式中,一旦計數器達到Done狀態,它自動重裝并繼續計數;在非循環操作模式,定時器/計數器等待一個來自微處理器的明確信號來重新計數。

圖3-14 定時器/計數器的內部結構

3.5.2模/數轉換器和數/模轉換器模/數(A/D)轉換器和數/模(D/A)轉換器是非數字設備(即模擬信號源)和嵌入式系統之間聯系的接口。D/A轉換相對簡單,轉換器接口僅包括數據值,輸入值被連續轉換成模擬信號。

A/D轉換器是將連續變化的模擬信號轉換為數字信號,以便計算機和數字系統進行處理、存儲、控制和顯示。A/D轉換需要更復雜的電路,所以也需要更復雜的接口。A/D轉換在將模擬輸入轉換為數字形式前需要對模擬輸入進行采樣。控制信號使得A/D轉換器進行采樣并將其數字化。典型的A/D轉換器接口除了模擬輸入外還有兩個主要的數字輸入,一個數據端口允許A/D寄存器被讀/寫;另一個時鐘輸入信號通知什么時候開始下一次轉換。A/D轉換器有若干種不同的類型,主要包括:逐位比較型、積分型、計數型、并行比較型和電壓-頻率型。選用A/D轉換器時,主要應根據使用場合的具體需求,分析轉換速度、精度、價格、功能以及接口條件等因素,最終決定選擇的類型。

3.5.3人機接口設備

1.鍵盤鍵盤是標準的輸入設備,廣泛用于嵌入式產品,如微波爐、傳真機、復印機、激光打印機等。依賴鍵盤接口實現用戶的輸入,使得嵌入式設備能夠處理用戶的輸入信息,將嵌入式控制器的功能發揮得更大。鍵盤可以用來輸入數字型數據或者選擇控制設備的操作模式。鍵盤主要由一個開關陣列組成,此外還包括一些邏輯電路來簡化它到微處理器的接口。我們首先了解一個簡單開關的原理,然后再分析由微處理器控制的鍵盤。

開關使用機械接觸實現斷開或接觸電路,如圖3-15所示。當開關打開時,通過處理器I/O接口的一個上拉電阻提供邏輯1;當開關閉合時,處理器I/O接口的輸入被拉到邏輯0。機械開關的主要問題是圖3-16所示的顫動。當通過按下連接到開關臂上的按鈕將開關壓上時,接觸點可能看起來穩定而且很快閉合,但實際上壓力導致接觸點顫動幾次才停下來。這種顫動顯現為按了幾次開關,持續時間通常維持在5~30ms之間。為了避免這種顫動,可以使用一個單步定時器形成硬件消顫電路,也可以用軟件來消除開關輸入顫動。

圖3-15簡單的開關電路

圖3-16開關顫動

原始的鍵盤是開關的簡單集合,每個開關有自己的一對引出線,直接連到處理器的輸入端口上。這種開關的組合方法使得當開關的數目增加時,將很快用完所有的輸入端口,原始鍵盤會變得不實用。更加實用的鍵盤通過排列開關形成如圖3-17所示的開關陣列。一個瞬時接觸開關放置在每一行與每一列的交叉點處,使用編碼來表示被按下的開關,形成編碼鍵盤,通過掃描開關陣列來確定是否有鍵被按下。與原始鍵盤不同,掃描鍵盤陣列每次只讀開關的一行。陣列左邊的多路分路器選擇要讀的行。當掃描輸入為1時,該值被送到該行的每一列,如果某個鍵被按下,那么該列的1被探測到。由于每列只有一個鍵被激活,因此該值唯一代表了一個鍵。行地址和列輸出被用來編碼,或者用電路來給出不同的編碼。

圖3-17掃描鍵盤陣列

鍵盤編碼可能使得多個鍵的組合無法被識別。例如,在PC鍵盤中,必須選擇一種編碼使Ctrl+Q之類的鍵能被識別并送進PC。另外,鍵盤編碼還可能導致不允許同時按鍵。例如,在大部分應用中,如果按1,在未釋放之前再按2,那么大多數應用是想要鍵盤先發送1再發送2。這種編碼電路的一種簡單實現是在一個鍵被按下而未釋放之前,丟棄已按下的其他任何字符。鍵盤的微控制器可以被編程處理多個鍵被同時按下(即多鍵滾轉),這使得同時按鍵被識別、入棧,而在鍵被釋放時,再依次傳輸。

2.LCD顯示器1)直接驅動如圖3-18所示,多個數字陣列是直接驅動顯示的簡單例子。單數字顯示器通常有七段,每段可以是發光二極管,也可以是液晶顯示器。這種顯示用數字輸入來選擇當前要更新的數字,被選擇的數字在當前數據值的基礎上激活它的顯示元件。顯示驅動器復雜,重復掃描數字并將當前值送到顯示器上。

圖3-18多個數字顯示器

2)幀緩沖區如圖3-19所示,幀緩沖區是一個連到系統總線上的隨機存取存儲區。微處理器可以以任意所需次序將值寫入幀緩沖區。這種顯示方式主要適用于陰極射線管(Cathode-RayTube,CRT)顯示。當CRT被連到幀緩沖區時,它通常以光柵的順序讀像素,一次顯示一行。

圖3-19幀緩沖顯示系統

3)液晶控制板大平面顯示器通常由LCD構成。其中每個像素都由一個液晶體構成。LCD顯示器到系統的接口獨具特點,這主要因為LCD像素陣列能夠被隨機訪問。早期的液晶顯示控制板被稱為被動矩陣,它依靠一個二維的電線網絡來編址像素。現代液晶顯示控制板顯示器使用一種主動矩陣系統,它給每個像素配置轉發器,以此來控制、訪問LCD顯示器。主動矩陣顯示器提供了更高的對比度和顯示質量。

3.觸摸屏觸摸屏是覆蓋在輸出設備上的輸入設備,用來記錄觸摸位置。把觸摸屏覆蓋在顯示器上,使用者可以對顯示的信息作出反應。觸摸屏按其工作原理不同分為表面聲波屏、電容屏、電阻屏和紅外屏等。其中常見的觸摸屏是電阻式觸摸屏。電阻式觸摸屏用二維電壓表來探測位置。如圖3-20所示,觸摸屏由兩層被許多細小的透明隔離球隔開的導電薄層組成。當手指或筆觸摸屏幕時,平常互相絕緣的導電層在觸摸點位置有了一個接觸。在頂層的導電層上加上電壓,它的電阻就在穿過該層時產生電勢差;然后頂層在接觸點對電壓采樣;最后用模/數轉換器來測量電壓,以此得出位置。觸摸屏通過交替使用水平和垂直電壓梯度來獲得x和y坐標位置。

圖3-20電阻式觸摸屏的結構

3.6通

3.6.1通用異步收發器通用異步收發器(UniversalAsynchronousReceiverandTransmitter,UART)是用于控制計算機與串行設備的接口。我們在介紹數據通信模式和串行通信標準的基礎上,分析通用異步收發器的原理和功能。1.數據通信模式數據通信是兩臺數字設備之間的數據傳輸。從不同的角度劃分,數據通信方式大致可以分為雙工通信、串行和并行通信、同步和異步通信。

1)雙工通信雙工通信是對相互通信的兩臺通信設備之間數據流向的描述。雙工通信包括單工、半雙工和全雙工三種方式。雙工通信方式的結構如圖3-21所示。

圖3-21雙工通信方式的結構

(1)單工通信方式是指兩臺通信設備間數據只能在一個方向上傳送。在單工方式下,兩臺通信設備一臺為發送設備,另一臺為接收設備,它們之間只有一條通信鏈路。(2)半雙工通信方式是指兩臺相互通信的設備均具有收發數據的能力,但在某一時間內它們只能執行一種操作(收或發),不能同時執行收、發兩種操作;在它們之間的通信線路的兩個方向上均可傳輸數據,但在某一時間內只能在一個方向上傳輸數據。為實現半雙工通信,兩臺通信設備間只需一條通信線路,但各通信設備必須配備收發切換開關。(3)全雙工通信方式是指相互通信的兩臺設備可以同時發送和接收數據,即數據在同一時刻可在兩個方向上傳輸,因此它們之間至少需要兩條通信線路。

2)串行和并行通信并行通信是構成字符的二進制代碼在并行信道上同時傳輸的方式。并行傳輸時,一次傳輸一個字符,收發雙方不存在同步問題,傳輸速度較快。但是,并行傳輸需要并行信道,所以線路投資大,不適合小型化產品。串行通信是指構成字符的二進制代碼在一條信道上以位(碼元)為單位,按時間順序且按位傳輸的方式。串行傳輸時,發送端按位發送,接收端按位接收,同時還要對所傳輸的字符加以確認,所以收、發雙方要采取同步措施,否則接收端將不能正確區分出所傳輸的字符。雖然串行通信的速度慢,但是只需要一條傳輸信道,線路投資少,易于實現,因此在數據通信吞吐量不是很大的嵌入式系統中顯得更加簡易、方便、靈活。

3)異步和同步通信串行通信有兩種基本工作方式:異步通信和同步通信。在異步通信方式下,傳輸數據以字符為單位。當發送一個字符代碼時,字符前面要加一個“起”信號,其長度為1個碼元,極性為“0”;字符后面要加一個“止”信號,其長度為1、1.5或2個碼元,極性為“1”。加上起、止信號后,即可區分出所傳輸的字符。傳送時,字符可以連續發送,也可以單獨發送,不發字符時線路要保持為“1”狀態。異步傳輸方式適用于1200b/s以下的低速傳輸,實現起來比較簡單。同步通信傳輸不需要加起、止信號,因此傳輸效率高,適用于2400b/s以上的數據傳輸,但是實現起來比較復雜。

2.標準串行通信接口標準異步串行通信接口主要有以下幾類:RS-232C、RS-422和RS-485。RS-232C是美國電子工業協會(EIA)正式公布的、在異步串行通信中應用最廣的標準總線,適合短距離或帶調制解調器的通信場合。為了提供數據傳輸速率和通信距離,EIA又公布了RS-422和RS-485串行總線接口標準。

1)RS-232CRS-232C是美國電子工業協會(ElectronicIndustryAssociation,EIA)制定的在數據終端設備(DataTerminalEquipment,DTE)和數據通信設備(DataCommunicationEquipment,DCE)之間進行串行二進制數據交換的接口。RS是英文“推薦標準”的縮寫,232為標識號,C表示修改次數。RS-232C標準是一種硬件協議,規定了21個信號和25個引腳,用于連接DTE和DCE兩種設備。

RS-232C標準規定的數據傳輸速率為50、75、100、150、300、600、1200、2400、4800、9600、19200b/s;驅動器允許有不超過2500pF的電容負載,通信距離將受此電容限制。例如,當信號傳輸速率為20kb/s時,最大傳輸距離為15m。傳輸距離短的另一個原因是RS-232C屬于單端信號傳送,存在共地噪聲和不能抑制共模干擾等問題,因此一般用于短距離通信。RS-232C接口的缺點主要表現在兩個方面:數據傳輸速率慢和傳輸距離短。RS-232C規定的20kb/s的傳輸速率雖然能夠滿足異步通信要求(通常異步通信速率限制在19.2kb/s以下),但對某些同步系統來說不能滿足傳輸速率要求。此外,RS-232C接口的一般設備之間電纜長度為15m,最長也不會超過60m。

2)RS-422RS-422是EIA公布的“平衡電壓數字接口電路的電氣特性”標準,是為改善RS-232C標準的電氣特性、又考慮與RS-232C兼容而制定的。RS-422與RS-232C的關鍵差別在于把單端輸入改為雙端差分輸入,雙方的信號地不再共用。RS-422給出了對電纜、驅動器的要求,規定了雙端電氣接口形式,并使用雙絞線傳送信號。與RS-232C相比,RS-422傳輸信號距離長、速度快。傳輸率最大為10Mb/s,在此速率下,電纜允許長度為120m。如果采用較低傳輸速率,如90kb/s,則最大距離可達1200m。

3)RS-485RS-485是RS-422的變型,RS-422是全雙工的,可以同時發送與接收;而RS-485是半雙工的,在某一時刻,只能一個發送另一個接收。RS-485是一種多發送器的電路標準,它擴展了RS-422的性能,允許雙線總線上驅動32個負載設備。負載設備可以是被動發送器、接收器或二者組合而成的收發器。當用于多點互連時,可節省信號線,便于高速遠距離傳送。許多智能儀器設備配有RS-485總線接口,便于將它們進行聯網。

表3-2RS-232C、RS-422A與RS-485性能比較

3.UARTUART提供了RS-232C數據終端設備接口,這樣計算機就可以和調制解調器或其他使用RS-232C接口的串行設備進行通信。作為接口的一部分,UART還提供了以下功能:將計算機外部傳來的串行數據轉換為字節,供計算機內部使用并行數據的器件使用;將由計算機內部傳送過來的并行數據轉換為輸出的串行數據;在輸出的串行數據流中加入奇偶校驗位,并對從外部接收的數據流進行奇偶校驗;在輸出的數據流中加入“起”、“止”標記,并從接收數據流中刪除“起”、“止”標記;處理計算機與外部串行設備的同步管理問題;處理由鍵盤或鼠標發出的中斷信號(鍵盤和鼠標也是串行設備)。

相對于微處理器,一臺UART是作為一個甚至多個存儲點或I/O端口的。UART一般包括一個或多個狀態寄存器,用于驗證數據傳輸和接收時的狀態、進程。微處理器能夠判斷何時已收到一個字節、何時已發送一個字節、是否產生通信錯誤等。UART還可以通過一個或多個控制寄存器進行配置,配置內容包括波特率的設置、終止位數量的設置以及在發送字節時產生中斷等。異步通信在UART上幾乎是透明地運行,為了收、發數據,只需運行程序,簡單地在UART上執行讀/寫操作。比較流行的UART有NS16550、AMDZ8530、ACIA、Motorola6850、ZilogZ-80STO等。當UART用于嵌入式設計時,嵌入式系統就能夠利用通信終端、計算機甚至是其他嵌入式微處理器上的數據資源。

3.6.2USB設備1.USB總線概述連接計算機外設的串行數據總線,其技術的發展一直非常緩慢。1969年EIA推出的RS-232C串行總線至今仍是連接計算機外設的主流串行總線。盡管在20世紀70年代和80年代陸續推出了RS-422A、RS-449、RS-485和RS-530等串行總線(其中RS-449的設計初衷是想取代RS-232C,而RS-530則是想取代RS-449),但由于種種原因都沒有改變RS-232C先入為主的主導地位。因此,長期以來,串行總線只用于連接慢速外設或用作低速網絡的總線。

通用串行總線(UniversalSerialBus,USB)是1995年Microsoft、Compaq、IBM等公司聯合制定的一種新的計算機串行通信協議。USB協議得到各PC廠商、芯片制造商和PC外設廠商的廣泛支持。從當初的0.7、0.8版本到現在廣泛采用的1.0、1.1版本,甚至到正在逐步推廣的2.0版本,USB本身也在不斷地發展和完善。通用串行總線是一種將USB外圍設備連接到主機的外部總線結構,它通過PCI總線和PC的內部系統數據線連接,實現數據傳送。USB同時又是一種通信協議,它支持主系統和USB外圍設備之間的數據傳送,通過一個4針的標準插頭,采用菊花鏈形式把所有的外設連接起來。

USB主要具有以下優點:(1)支持熱插拔(hotplug)和即插即用(Plug-and-Play),即在不關機的情況下可以安全地插上或斷開USB設備,動態加載驅動程序。(2)為所有的USB外設提供單一的、易于操作的標準連接類型,排除了外設對系統資源的需求,因此減少了硬件的復雜性和對端口的占用,整個USB系統只有一個端口和一個中斷,節省了系統資源。

(3)USB1.1提供全速12Mb/s和低速1.5Mb/s的模式,USB2.0提供高達480Mb/s的傳輸速率。

(4)為了適應各種不同類型外設的要求,USB提供了四種不同的數據傳輸類型。(5)易于擴展,理論上最多可支持127個設備。

2.USB總線的硬件結構USB通過四線電纜傳送信號和電能,如圖3-22所示。其中兩根是用來傳送數據的串行通道,另兩根為下游(Downstream)設備提供電能。

圖3-22USB連接線

D+、D-是一對差模信號線,它支持兩種數據傳輸率。以USB1.1為例,對于高速外設,USB以全速12Mb/s傳輸數據,但必須使用屏蔽的雙絞線且長度不超過5m;對于低速外設,USB則以1.5Mb/s的速率傳輸數據,這種模式下可以使用無屏蔽的非雙絞線,但長度不超過3m。為了保證能夠提供一定電平的信號并且與終端的負載匹配,在電纜的每一端都使用不平衡終端負載。這種終端負載既能保證檢測出外設與端口的連接和分離,又能區分高速與低速USB總線,可以根據外設情況在兩種傳輸模式中自動動態切換。VBUS通常為+5V的電源,GND是地線。

USB總線是基于令牌的總線,類似于令牌環網絡。USB主控制器廣播令牌,總線上的設備檢測令牌中的地址是否與自身相符,通過接收或者發送數據來響應主機。USB通過支持懸掛/恢復操作來管理USB總線電源。USB系統采用級聯星型拓撲,該拓撲由三個基本部分組成:主機(Host)、集線器(Hub)和功能設備,如圖3-23所示。主機也稱為根或RootHub,它做在主板上或作為適配卡安裝在計算機上。主機通過主機控制器與USB設備進行交互,控制著USB總線上的數據,并控制信息的流動。每個USB系統只能有一個根集線器,它連在主控制器上。集線器是USB結構中的特定成分,它提供用于將設備連接到USB總線上的端口,同時檢測連接在總線上的設備,并為這些設備提供電源管理,負載總線的故障檢測和恢復。集線器可為總線提供能源,也可為自身提供能源(從外部得到電能)。圖3-23USB系統級聯結構

3.USB總線的軟件結構每個USB僅有一個主機,在USB通信過程中占主導地位。主機包括USB總線接口、USB設備層和功能層三層結構。主機各層具有的功能包括:檢測連接和移去的USB設備、管理主機和USB設備間的數據流、連接USB狀態和活動統計、控制主控制器和USB設備間的電氣接口等。(1)USB總線接口。USB總線接口處理電氣層與協議層的互連,由主控制器實現。(2)USB系統。USB系統用主控制器管理主機與USB設備間的數據傳輸。它與主控制器間的接口依賴于主控制器的硬件定義。同時,USB系統也負責管理USB資源,例如帶寬和總線能量,這使得客戶訪問USB成為可能。USB系統包括三個基本組件:主控制器驅動程序(HCD)、USB驅動程序(USBD)和主機軟件。①主控制器驅動程序:該程序可以把不同主控制器設備映射到USB系統中。通用主控制器驅動程序(UHCD)處于軟結構的最低層,實現了USB主控制器通信和控制USB主控制器,并且對系統軟件的其他部分是隱蔽的。系統軟件中的對高層通過UHCD的軟件接口與主控制器通信。②USB驅動程序:該程序在UHCD驅動器之上,提供驅動器級的接口,以滿足現有設備驅動器設計的要求。③主機軟件:這些軟件本來是用于向設備驅動程序提供配置信息和裝載結構的,但在某些操作系統中沒有提供USB系統軟件,設備驅動程序將應用操作系統提供的接口而不是直接訪問USB驅動程序接口。(3)USB客戶軟件。USB客戶軟件是軟件結構的最高層,負責處理特定的USB設備驅動。客戶程序層描述所有直接作用于設備的軟件入口。當設備系統被檢測到后,這些客戶程序將直接作用于外圍硬件。這種共享特性將USB系統軟件置于客戶和它的設備之間,客戶程序要根據USB在客戶端形成的設備映像對它進行處理。

4.USB總線的數據傳輸方式數據和控制信號在主機和USB設備之間的交換存在兩種通道:單向通道和雙向通道。USB的數據傳送是在主機和某個USB設備的指定端口之間進行的。這種主機和USB設備的端口間的聯系稱作通道。一般情況下,各個通道之間的數據流動是相互獨立的,且一個指定的USB設備可有許多通道。對任何給定的設備進行設置時,一個通道上的數據傳輸只能支持下列四種USB數據傳輸方式中的一種:同步(isochronous)、控制(control)、中斷(interrupt)和批量(bulk)。(1)同步數據傳輸。同步數據傳輸提供了確定的帶寬和間隔時間(latency)。它主要用于時間要求嚴格并且具有較強容錯性的流數據傳輸,或者用于要求恒定數據傳輸速率的即時應用中。對于同步傳輸來說,即時的數據傳遞比數據的完整性更重要。例如,即時通話的網絡電話常常使用同步傳輸模式。(2)控制數據傳輸。控制傳輸是雙向傳輸,數據量通常較小。USB系統軟件主要用來進行查詢、配置和給USB設備發送通用的命令。控制傳輸方式可以傳輸8、16、32和64字節的數據,這依賴于設備和傳輸速度。控制傳輸的典型應用是在主機和USB外設之間的傳輸。例如,當USB設備初次安裝時,USB系統軟件使用控制數據對設備進行設置,設備驅動程序通過特定方式使用控制數據來傳輸,且數據傳送是無損性的。(3)中斷數據傳輸。中斷方式傳輸主要用于定時查詢設備是否有中斷數據傳輸。設備的端點模式器的結構決定了它的查詢頻率范圍是1~255ms,這種傳輸方式典型應用在少量的、分散的、不可預測數據的傳輸,如鍵盤、操縱桿和鼠標就屬于這一類型。中斷方式傳輸數據是單向的,且對于主機來說只有輸入的方式。(4)批量數據傳輸。批量方式傳輸主要應用在大量傳輸和接收數據,同時又沒有帶寬和間隔時間要求的情況下。批量數據由大量的數據組成,且批量數據是連續的。這種傳輸方式可以等到所有其他類型的數據傳輸完成之后再傳輸和接收數據。

5.USB總線的數據傳輸原理在USB結構中,占主導地位的是主控制器。主控制器要保證所有與其連接的數量不同、傳輸方式不同的設備能夠同時正常工作。為此,USB主控制器使用間隔為1ms的幀來實現數據傳輸。由于有許多設備連接到USB總線上,所以每1ms產生的傳輸幀是混合的。在幾種數據傳輸方式都存在的情況下,中斷傳輸和同步傳輸對時間要求較高,因此占用了約90%的總帶寬;控制傳輸占用了約10%的帶寬;批量傳輸對時間要求不高,但數據量大,它使用剩下的可用帶寬。各種USB設備就是通過這種基本的幀結構實現共享USB帶寬來傳輸數據的。在主機端,不同設備的數據傳輸請求被劃分成若干個塊(Transaction)。為了保證連接到主機上的設備可以同時工作,主機每次從不同設備取一個塊構成一個1ms幀,然后將整個幀發送到USB總線上。每一個塊由三個包(Packet)組成:標志包(TokenPacket)、數據包(DataPacket)和握手信號包(HandshakePacket)。根據令牌包里定義的設備地址和端點號,設備能夠確定屬于自己的相應數據。一根USB總線每次最多傳輸三個數據包。在每次傳輸開始時,主機控制器發送一個描述傳輸種類、傳輸方向、USB設備地址和終端號的USB數據包,該數據包就是標志包。在數據開始傳輸時,由標志包來標志數據的傳輸方向,數據傳輸方向不是從主機到設備就是從設備到主機;然后,發送端開始發送包含信息的數據包或表明沒有數據傳輸。接收端要相應發送一個握手的數據包,以表明數據是否傳輸成功。USB設備從解碼后的數據包的適當位置取出屬于自己的數據。

6.USB設備即插即用的實現USB設備可以實現熱插拔。當USB設備插入到主機中時,主機通過查詢設備的描述符(Descriptor)來了解設備,進而建立通信,這個過程叫做對設備的枚舉。圖3-24是某個設備的描述符結構。USB設備被分成了許多類(class),某一特定類的設備又可以劃分成若干子類(subclass),劃分子類后的軟件就可以搜索總線并選擇所有它支持的設備了。一個USB設備只有一個設備描述符(DeviceDescriptor),它指明了設備所屬的類。每個設備可以有一個或多個配置(Configuration),配置用于定義設備的功能。如果一個設備有幾種不同的功能,則每個功能都需要一個配置。配置是接口(Interface)的集合。接口用來指定設備中與USB交換數據的硬件。每一個與USB交換數據的硬件就叫做一個端點(Endpoint)。因此,接口是端點的集合。例如,以一個能播放CD的USB接口的CD-ROM作為一個設備。它具有兩種功能:讀取光盤和播放CD,所以有兩個配置描述符。一種功能的實現要涉及許多接口,如當CD播放機使用時,需要音頻接口,同時還需要控制CD機的接口,因此具有兩個接口描述符。而控制命令接口又由許多端點組成,如有的端點負責向CD機發送命令,有的端點負責接收來自CD機的反饋,因此又有若干個端點描述符。圖3-24一個USB設備的描述符結構7.USB器件的選擇在進行一個USB設備開發之前,首先要根據具體使用要求選擇合適的USB控制器。目前,市場上供應的USB控制器主要有兩種:帶USB接口的單片機(MCU)和純粹的USB接口芯片。帶USB接口的單片機從應用上可以分成兩類,一類是從底層設計專用于USB控制的單片機;另一類是增加了USB接口的普通單片機,如Cypress公司的EZ-USB(基于8051),選擇這類USB控制器的最大好處在于開發者對系統結構和指令集非常熟悉,開發工具簡單,但對于簡單或低成本系統,價格也是在實際選擇過程中需要考慮的因素。純粹的USB接口芯片僅處理USB通信,必須有一個外部微處理器來進行協議處理和數據交換。典型產品有Philips公司的PDIUSBD11(IIC接口)、PDIUSBD12(并行接口),NS公司的USBN9603/9604(并行接口),NetChip公司的NET2888等。USB接口芯片的主要特點是價格便宜、接口方便、可靠性高,尤其適合于產品的改型設計(硬件上僅需對并行總線和中斷進行改動,軟件則需要增加微處理器的USB中斷處理和數據交換程序、PC機的USB接口通信程序,無需對原有產品系統結構作很大的改動。8.USB系統的開發流程(1)系統結構、功能的定義。首先要選擇所要開發的USB系統的結構類型,即是作主機(Host)還是作USB設備(Device)。其次,要選擇該系統的功能,即是作為數據采集器(要求實時性)還是作為存儲設備。最后,要選擇采用的USB標準,即是用USB1.1標準還是用USB2.0標準。(2)USB接口方法的選擇。常用的USB接口方法有兩種:一種是采用專用的USB接口芯片,一種是選用內部集成USB接口的單片機。選擇哪一種方法主要由系統的功能、特點、成本等因素決定。(3)與微處理器的接口電路。如果選擇的接口方法是采用USB接口芯片,就要解決該芯片與選定的微處理器的接口問題。一般情況下,專用USB接口芯片都會提供簡單直觀的接口方式,可以與大部分主流CPU連接,因此按照芯片資料上的典型接法連接就可以了。(4)固件編程。如果將USB系統作為主機,那么固件編程的主要工作是向設備端發送各種請求,并要求設備端提供各種描述符。主機將記錄描述符的詳細信息,并為設備指定地址,然后通過這些端點與設備進行通信。(5)開發PC端驅動程序與應用程序。如果USB設備與PC機接口,則需要開發PC機上的驅動程序和應用程序。在PC機端(這里是Host),除了由主機控制器(HostController)完成硬件級的接口外,還需要編寫設備的客戶端程序(ClientProgram)。例如,一個通過下載界面下載MP3的USB設備,需要編寫PC端的那個下載程序;如果是一個實時的數據采集設備,則需要在PC端編寫一個用戶界面程序,通過這個界面可以看到USB設備采集的結果。(6)USB系統調試。嵌入式USB系統的調試一般按照“調試嵌入式中的固件→調試PC端驅動程序和應用程序→系統調試”的流程進行。這種調試方式能夠將調試過程中出現的問題最大限度地進行定位,而不會把所有問題混在一起。在調試固件時,可以借助BusHound等工具來模擬主機的一些行為。固件調試完成后,再使用嵌入式設備作為一個USBDevice來調試PC端的驅動程序和應用程序。最后完成系統的測試和改進。3.6.3Ethernet設備1.以太網的特點以太網是最廣泛應用的局域網絡技術,實現了在小區域(如一個辦公室)范圍內連接計算機。以太網數據速率為10Mb/s,而快速以太網(FastEthernet)數據速率為100Mb/s。最常用的以太網協議是IEEE802.3標準,媒體的存取規則采用CSMA/CD(載波檢測多路存取/沖突檢測)。現代的操作系統均能同時支持這些協議標準,因此對嵌入式系統的應用來說,考慮系統精簡因素,只需要支持這一種就夠了,除非有特殊需要,否則沒有必要支持太多協議。

2.以太網的數據傳輸以太網傳輸報文的基本格式如圖3-25所示。它提供了目的地址和源地址,同時還提供了要傳送的有效數據。圖3-25以太網傳輸報文的基本格式以太網的數據傳輸有以下特點:(1)所有數據位的傳輸由低位開始,傳輸的位流采用曼徹斯特編碼。(2)以太網傳輸的數據段長度最小為60字節,最大為1514字節。(3)通常以太網卡可以接收來自三種地址的數據,即廣播地址、多播地址(在嵌入式系統中很少使用)和它自己的地址。但有時用于網絡分析和監控,網卡也可以設置為接收任何數據包。(4)任何兩個網卡的物理地址都是不一樣的。網卡地址由專門結構分配,不同廠家使用不同地址段,同一廠家的任意兩個網卡的地址也是唯一的。

3.嵌入式以太網接口的實現方法在嵌入式系統中實現以太網接口的方法通常有兩種。方法一是采用嵌入式處理器與網卡芯片的組合。這種方法對嵌入式處理器沒有特殊要求,只需要把以太網芯片連接到嵌入式處理器的總線上即可。該方法通用性強,不受處理器的限制,但是,處理器和網絡數據交換通過外部總線(通常是并行總線)實現,速度慢、可靠性不高并且電路板布線復雜。方法二是直接采用帶有以太網接口的嵌入式處理器。這種方法要求嵌入式處理器有通用的網絡接口,如MII(MediaIndependentInterface)。通常這種處理器是為面向網絡應用而設計的。處理器和網絡數據交換通過內部總線實現,因此速度快,實現簡單。3.7其他3.7.1電源大多數嵌入式系統本身都有電源,且電源的供電方式具有一種特定的電壓范圍。嵌入式系統中各個單元的電壓范圍有四種:5.0±0.25V、3.3±0.3V、2.0±0.2V和1.5±0.2V。此外,嵌入式系統微控制器中的電可擦可編程只讀存儲器(EEPROM)、RS-232串行接口,均需要提供12±0.2V的電壓。某些系統本身不具有供電子系統,它們使用外部電源或者使用充電泵來供電。例如,網絡接口卡和圖形加速器都是本身沒有供電系統而使用PC電源的嵌入式系統。充電泵有一個串聯的二極管,后面跟隨一個充電電容。充電泵從一個非電源線獲得電能。例如,當計算機使用鼠標時,充電泵消耗電路;當鼠標處于空閑狀態時,鼠標中的充電泵存儲電荷,從而獲得電能。嵌入式系統必須從加電開始連續執行任務并有可能一直處于加電狀態。因此,節電在設備運行過程中是很重要的。嵌入式處理器必須提供Wait和Stop指令,使系統能夠在低電壓模式下運行。通常實現嵌入式設備低電壓模式運行的方法有兩種:一種是在軟件中集成Wait和Stop指令;另一種是在空閑狀態下選擇低電壓模式,從而在最低電壓下運行系統。此外,還有一種節電方法,即在特殊的軟件部分運行時(如定時器和I/O設備),禁止處理器的某些不必要的結構單元(如高速緩存)運行,并將它們處于斷開連接狀態。3.7.2時鐘在嵌入式系統中,處理器需要有一個時鐘振蕩(clockoscillator)電路。時鐘控制著CPU、系統定時器和CPU機器周期的各種時序需求。機器周期用于兩個方面:一方面,從存儲器中取回代碼和數據,然后在處理器上對它們進行譯碼并運行;另一方面,將結果傳回到存儲器中。時鐘控制著執行一條指令的時間。通用計算機可以使用分離的時鐘電路,如IBMPC/XT使用專用時鐘芯片8284產生時鐘信號。而嵌入式系統通常為了節省電路,把時鐘電路集成在嵌入式處理器上,外面只需要接晶體即可。嵌入式系統的時鐘電路一般有以下幾種形式:RC時鐘、石英晶體、石英振蕩器、鎖相倍頻時鐘和多時鐘源。(1)RC時鐘:RC時鐘一般用于嵌入式微控制器。這種時鐘源的振蕩頻率的穩定性低于時鐘振蕩器,但是功耗比較低。當嵌入式系統對時鐘的穩定性要求不高時,例如家用電器的控制,可以采用這種電路,且其時鐘頻率可以動態修改。嵌入式處理器的功耗與時鐘頻率基本呈線性關系,因此根據處理器的負荷動態改變時鐘頻率以降低功耗是比較好的方法。(2)石英晶體:基于石英晶體的時鐘電路,其振蕩電路集成在處理器上,處理器引出兩個引腳,分別是放大器的輸入和輸出,石英晶體接在這兩個引腳上,如圖3-26所示。(3)石英振蕩器:與石英晶體不同,石英振蕩器把石英晶體和振蕩電路集成一體,形成石英振蕩器電路,直接輸出時鐘信號給處理器。石英振蕩器輸出的時鐘信號接在處理器的輸入引腳上,如圖3-27所示。圖3-26由石英晶體構成的振蕩器電路結構圖3-27石英振蕩器的振蕩器電路(4)鎖相倍頻時鐘:通常在高性能的嵌入式處理器上采用鎖相倍頻電路。該時鐘電路的鎖相環是一個倍頻鎖相環,時鐘電路外接的石英晶體通常采用32768Hz,鎖相環的倍頻系數可以通過編程設置,倍頻得到的高頻時鐘經過分頻器進行分頻,分別送給處理器的CPU內核和各個I/O接口電路。高性能的嵌入式處理器如32位的處理器,功能強大,芯片上集成了眾多的智能電路,很多的智能電路都需要不同頻率的時鐘源。此外,出于節電設計的考慮,不同I/O電路的工作狀態可以由處理器的編程控制。為此,這樣的處理器設計了許多時鐘源,分別為CPU內核、實時時鐘電路、不同的I/O電路提供時鐘信號。3.7.3復位1.復位電路概述嵌入式處理器的復位電路就是使處理器從起始地址開始執行指令。這個起始地址是處理器程序計數器(x86系列處理器中是指令指針和代碼段寄存器)加電時的默認設置。處理器復位之后,從存儲器的這個地址開始取程序指令。在一些存儲器(如6HC11和HC12)中有兩個起始地址,一個用來作為加電復位向量,另一個作為執行Reset指令后或者發生超時(如來自看門狗定時器的超時)之后的復位向量。復位電路激活固定的周期數后處于無效狀態。處理器電路保持復位管腳處于有效狀態,然后使之處于無效狀態,使程序從默認的起始地址開始執行。如果復位管腳或內部復位信號與系統中其他的單元(例如I/O接口、串行接口)相連接,那么它會被處理器再一次激活,成為一個輸出管腳,用于驅動系統中其他單元處于復位狀態。在處理器動作之后使復位信號無效,程序會從起始地址開始執行。通常使用的復位電路有以下幾種形式:阻容復位電路、專用復位電路、手動復位電路、看門狗定時器的時鐘輸出復位以及軟件復位。

2.阻容復位電路阻容復位電路是最簡單的復位電路,電路原理如圖3-28所示。上電瞬

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論