嵌入式硬件設計必備基礎知識

 
一、嵌入式計算機體系結構

計算機能用來幹什麼?它必須完成什麼任務?它是如何實現與人和其他系統交互的?這決定了這臺計算機的功能,進而決定了其體系結構、存儲器和I/O。

計算機系統大致分爲兩類。第一類就是您目前手上用的計算機,最常見的臺式計算機。再就是,您最近有沒有用全自動洗衣機洗衣服,把衣服往裏面一扔(別忘了放洗衣粉,我就常常忘),只消按一個鍵便高枕無憂了,這裏面就有一個第二類計算機:嵌入式計算機,這種計算機往往作爲控制和/或監控目的的而集成到另外的系統中(比如洗衣機)。那這樣說來我們身邊豈不滿是計算機?電視機、DVD、遙控器、手機、甚至玩具?就是他們!

一臺專用的臺式計算機(不一定是PC)有很大的主內存來支持操作系統、應用程序和數據,以及一個大容量存儲設備(硬盤、DVD/CD-ROM等)的接口。這種臺式計算機帶有各種各樣的I/O設備以便用戶輸入(鍵盤、鼠標和話筒)、輸出(顯示器及耳機)以及互聯(網絡和外設)。快速的處理器需要一個系統管理器來監視其核心溫度、供給電壓以及進行系統重啓。

大規模嵌入式計算機也可能採用上述的形式。例如,它可能作爲一個網絡路由器或網關從而需要一個或多個網絡接口、大容量內存以及快速操作。它們也可能需要某種形式的用戶界面來作爲嵌入式應用的一部分。或者在許多情況下,它們也可能只是專用於某一特定任務的常規計算機。因此,單就硬件而言,許多高性能嵌入式系統與常規臺式機沒有什麼大的差別。

較小的嵌入式系統使用微控制器作爲它們的處理器,這樣做的優點在於處理器可以將很多的計算機功能包含在一個芯片上。

微控制器至少有一個CPU,一個小容量的內部存儲器(ROM和/或RAM)以及作爲子系統模塊在微控制器內部實現的某種I/O。這些子系統爲處理器提供了附加功能,許多處理器通常都有這種子系統。你經常可以在微處理器裏發現這些子系統,這些子系統最普通的I/O是數字I/O,它們都是端口,可以以引腳爲基礎,由軟件配置成數字輸入或輸出。作爲數字輸入,這些端口可以用來讀取開關或按鈕的狀態以及讀取另外一個設備的數字狀態;作爲數字輸出,它們可以用來開啓或關閉外部設備,也可以向外部設備傳達工作狀態。例如,一個數字輸出端口可以爲一個電機激活控制電路,開/關燈,或者可能的話還可以觸發諸如花園澆灌系統的水壓閥這樣的設備,當然也控制洗衣機。將數字輸入/輸出端口結合在一起可以用來合成對其他芯片的接口和協議。除了數字I/O外,大多數控制器還有其他子系統。而如果不需要其他子系統的功能,那麼微控制器本身也能將其他子系統轉換到通用數字I/O。作爲一個系統設計者,這就爲您在所設計的應用裏如何使用微控制器提供了多種選擇。

許多微控制器也有模擬輸入,允許爲監控或記錄目的的傳感器進行採樣。這樣,一臺嵌入式計算機就可以用來測量光強、溫度、震動或加速度,大氣或水的壓力,溼度或者磁場之類的項目。或者,這些模擬輸入可以用來監測簡單的電壓,或許用來確保較大規模系統的可靠操作。

有些微控制器有串口,通過串口,嵌入式計算機可以與一臺主機、另外的嵌入式系統或者也許是一個簡單的網絡進行連接。諸如SPI和I2C這樣的專用形式的串行接口,爲擴展微控制器的功能提供了一種簡單的方法。這些串口允許外部設備與微控制器連接起來,爲諸如片外存儲器(用於數據或參數存儲)、時鐘/日曆芯片、帶數字接口的傳感器、外部模擬輸入或輸出,甚至音頻芯片及其他微處理器提供了訪問途徑。

大多數微控制器都帶有計時器和計數器,用來在固定的時間間隔裏爲多任務處理產生內部中斷,爲片外系統提供外部觸發,或者爲電機提供控制脈衝。或者用來爲來自其他設備的外部觸發(脈衝)計數。

有少數的微控制器也包含諸如USB、以太網、或CAN這類的網絡接口。

一些比較大的微處理器還提供一個總線接口,將內部地址、數據和控制總線展現給外部世界。這就使得處理器能夠以與常規處理器近乎同樣的方式與大量可能的外部設備進行連接。前面所描述的所有可能的設備和接口都可以通過總線接口和適當選擇的外部設備來實現。總線接口爲微控制器帶來了巨大的發展潛力。

各個微控制器具有的I/O子系統的組合差別相當大。有些微控制器針對簡單的數控應用,可能只含有數字I/O;其他的一些微控制器可能面向工業應用,因此可能有數字I/O、模擬輸入、電機控制以及網絡連接等。微控制器(幾千個種類)的選擇依賴於你的處理需要和接口需求,請選擇一款最合適的一款。

以後將選取三星公司生產的以ARM7TDMI爲核心的S3C4510B爲例講解基於它的電路設計以及程序設計。

名詞解釋:

系統體系結構:單個處理器是不能完成任何任務的,還需要存儲器(用於程序核數據存儲)、支撐邏輯以及至少一個I/O設備(輸入/輸出設備),用以實現計算機系統於外界之間的數據傳輸。計算機系統的存儲器包含了處理器將要執行的指令以及將要操作的數據。指令由計算機系統從存儲器裏讀取,而數據則可以讀出和寫入存儲器,上述形式的計算機結構就是馮.諾伊曼體系結構。馮.諾伊曼計算機可以歸類爲控制流計算機,在這種體系結構中,計算機的執行步驟由程序的順序控制所管理。另有一種爲哈佛體系結構,其指令和數據具有不同的內存空間。

總線:所謂總線,就是具有相關功能的信號線的物理集合。總線允許在計算機系統的不同部件之間傳輸電子信號,因此可把信息從一個設備傳輸到另外一個設備上。當今的多數微處理器採用了三總線系統體系結構,分別爲地址總線、數據總線和控制總線。數據總線是雙向的,具體的傳輸方向由處理器決定。地址總線傳輸的是地址信息,這一地址指向微處理器想要訪問的內存單元。控制總線攜帶來自處理器的當前訪問狀態信息,如寫操作還是讀操作。控制總線也將當前訪問狀態信息返回給處理器,例如地址錯誤等。

硬件設計背景知識

二、關於電子學的一些東西

模擬信號

一個模擬信號可以擁有一定範圍內任何電壓的幅值,而不像數字信號那樣只能處於兩種定義電壓狀態(要麼低電平,要麼高電平)之一。如波形爲正弦曲線的正弦信號。

信號的電壓可以隨時間的推移而變化,或者爲常量。如果電壓是變化的它會每隔一定時間就重複,這種情況下就說這種信號有週期性。這個週期就是信號模式重複的時間間隔(例如,從一個波峯到另外一個波峯)。信號的頻率就是每秒鐘信號模式重複的次數。

頻率的單位是赫茲(單位符號爲Hz),它與週期有如下關係:

f = 1 / T (f : 頻率 T: 週期)

這樣,週期爲1ms的信號,其頻率就是1KHz。

單極信號組成的電壓,要麼全正要麼全負。雙極信號具有正和負兩種電壓。

典型的模擬信號既有交流(Alternating Current, AC)分量又有直流(Direct Current, DC)分量,DC分量是信號的固定電壓,而AC分量則是一個加在DC分量上的變化着的電壓。AC分量通常是指信號的峯-峯振幅,一般以後綴pp來表示。例如,一個5V的AC分量可以寫作5Vpp。

電阻

連接到電源的電阻提供高電平信號,稱爲“上拉電阻”。
連接到地的電阻提供低電平信號,稱爲“下拉電阻”。

RC電路

把電容和電阻結合起來會產生一些有趣和有用的效果。一個電阻-電容的結合就是所謂的一個RC電路,它們的結合有三種形式。

在第一種形式中,電阻和電容並聯在一起。這種結合能用來做什麼呢?施加在這兩個元件上的電壓(V)將對電容充電(也會有一些電流穿過電阻)。當所施加的電壓撤去時,電容便會通過電阻釋放電容。電阻將限制電荷釋放的速率,因爲電阻限制了電流。

第二種形式的RC電路爲串聯RC電路,當一個電壓加到RC電路輸入端(靠近電阻端)時,電流就會通過電阻,電容也會開始充電。然而電阻限制了電流,進而限制了電容充電的速率。這種類型的RC電路是一個簡單的低通濾波器。這種電路能將信號的高頻分量濾掉,從而在主信號中削弱它們,而低頻分量沒有任何衰減。這種類型的電路對於去掉疊加在信號上的高頻噪聲來說非常有用。

任何處理器和外部設備芯片的每個輸入引腳上都會有少量的輸入電容。輸入電容連同電路連接固有的微小阻抗以及引腳的輸入阻抗一起意味着施加在引腳上的數字電壓實際上呈指數增長,而不是(數字的)陡然上升的。這種影響很小,但在高速電路中,或者當幾個設備連接到同一個信號線上而所有的輸入電容不可忽略時,這種影響就很大了。

輸入端的感應作用會引起另外的一個特性。當源電壓突然變化時,電感應作用導致“阻尼振盪”。

第三種形式的RC電路仍是RC串聯,但輸入電壓靠近電容端。這種類型的電路是一個簡單形式的高通濾波器,因爲它只輸出高頻信號。這種電路里的電容通常被稱作隔直流電容。

時鐘和振盪器

所有的處理器都需要時鐘。所謂的時鐘就是來自振盪器的輸出,這一輸出管理着處理器以及其他與時鐘相關的所有系統事件。其實時鐘就是一個數字脈衝流。

任何處理器都有一個最大和最小時鐘頻率。這表明了振盪器驅動處理器的頻率範圍。我們說最小時鐘速率爲零的處理器具有靜態操作(Static Operation)或DC操作。這意味着處理器能夠使時鐘停下來,也能在稍後的時刻重新啓動操作而不受影響。如果處理器的最小操作頻率大於零值,那麼稱該處理器具有動態操作。如果振盪器的頻率低於上述動態處理器的最小頻率值,那麼處理器的寄存器的內存有可能會被破壞掉。

產生時鐘的方式有好幾種,有些處理器期望一個數字(方波)時鐘輸入。對於以通用頻率運行的處理器——大多數處理器都屬於這類,最好的選擇是採用一個名爲振盪器模塊的設備。另外許多處理器都包含振盪器電路,並且通常只需要增加一個晶體和旁路電容即可。這裏的電容用來去除來自振盪的高次諧波。

數字信號

一個數字設備的輸出引腳可能處於下列三種狀態之一:高電平(邏輯1)、低電平(邏輯0)、或三態(高阻態,也叫漂移)。當引腳上的輸出電壓高於一個給定閾值時就定義爲邏輯高電平。當一個設備的引腳輸出爲高時,這一引腳就對其連接提供電流(sourcing current)。同樣地,當輸出電壓低於給定閾值時就定義爲邏輯低電平,我們稱設備的引腳吸收電流(sinking current)。典型情況是,元件吸收的電流多於它所提供的電流。

一個三態引腳的輸出既不是高電平也不是低電平,而是高阻狀態,這樣流入或流出該引腳的電流都被忽略。實際上,流入或流出該引腳的電流對於與這一引腳相連的其他元件而言是不可見的。例如,計算機系統中可能有好幾個存儲設備連接到數據總線,當從一個設備讀取數據時,它的數據輸出要麼爲高電平要麼爲低電平。系統內所有其他的存儲設備,由於它們未被訪問,因此會把它們的數據總線置爲三態,不會參與處理器和被訪問存儲器之間的讀數據處理。

電壓閾值

TTL(Transistor-Transistor Logic, 晶體管-晶體管邏輯)系列的電壓定義:低電平,輸入最高電壓爲0.8V,輸出最高電壓爲0.4V;高電平,輸入最低電壓爲2.0V,輸出最低電壓爲2.4V。處理器不同規定就不同,所以器件的電氣(和時序)規和列在產品手冊裏。
 
 

發佈了51 篇原創文章 · 獲贊 12 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章