- 嵌入式系統原理與接口技術
- 張學武 江冰 張卓編著
- 14字
- 2020-04-08 14:56:11
第2章 嵌入式系統工程設計概述
2.1 嵌入式系統設計的基本流程
不知各位讀者是否記得在小學學過的一篇課文,說的是統籌方法,課文中舉了泡茶喝這個例子。比方,想泡壺茶喝,當時的情況是,開水沒有;水壺要洗,茶壺茶杯要洗,火生了,茶葉也有了。怎樣辦?
方法甲:洗好水壺,灌上涼水,放在火上;在等候水開的時間里,洗茶壺、洗茶杯、拿茶葉;等水開了,泡茶喝。
方法乙:先做好一些準備工作,洗水壺,洗茶壺茶杯,拿茶葉;一切就緒,灌水燒水;坐待水開了泡茶喝。
方法丙:洗凈水壺,灌上涼水,放在火上,坐待水開;水開了之后,急趕忙忙找茶葉,洗茶壺茶杯,泡茶喝。
哪一種方法省時間?我們能一眼看出第一種方法好,后兩種方法都窩了工。
例子雖然比較簡單,但是卻對統籌方法進行了一個直觀的詮釋。同樣在嵌入式系統的設計過程中,只有遵循一定的設計流程,才能保證最終產品的順利實現。采用設計流程的設計方法有以下四個優點。
(1)在設計之初就可以明確設計目標,找出面臨的主要問題并進行評估。
(2)通過設計流程的細化,可以方便地評估系統的工作量,易于任務劃分。
(3)易于多部門協同工作,提高工作效率。
(4)有利于控制項目的進度。
本節就重點敘述在嵌入式系統的設計過程中的各個基本過程,并對每個過程所需要注意的內容進行分析。
2.1.1 需求分析
需求分析是嵌入式系統設計的根本,即:我要做什么?需要完成哪些功能?達到什么樣的要求?該階段的任務就是確定用戶對應用系統的設計要求和設計指標。其考慮問題主要是整個系統需要“做什么,不做什么”,不考慮具體“怎樣做”。
需求一般由用戶提出,很多情況下,用戶并不是專業的開發人員,因此設計者必須在需求分析階段與用戶反復討論、協商,充分交流信息。為的是開發人員與用戶對將要開發的系統達成一致的理解,必須要建立相應的需求文檔。確定需求的過程有時需要反復多次,并最終得到用戶和開發者的共同確認。
確定需求對于嵌入式系統設計至關重要,否則后面的工作就南轅北轍,沒有任何意義了。因此需求分析階段最主要的任務就是根據用戶需求,對用戶提出的要求進行識別以產生以下的需求:功能需求、性能需求、環境需求、可靠性需求、安全性需求、用戶界面需求、資源使用需求、開發成本需求、人機交互需求、開發進度需求等。通過對用戶的需求進行具體的識別和分類,編寫制定格式規范、描述準確的說明的文檔,可以極大地方便項目的開發和管理。需求分析的最后階段就是對各項需求進行綜合評估和整理,確保開發者對需求的理解與客戶需求一致,有問題的地方要及時提出以進行下一步探討。
需要說明的是,在嵌入式系統的開發過程中,開發者可以根據系統的設計情況在得到用戶確認的前提下對需求進行局部調整,因為很多時候需求的實現方式并不是唯一的,開發者可以在與用戶進行溝通確認的前提下對需求進行調整,從而方便項目的進行。
2.1.2 詳細說明
詳細說明是對需求分析的進一步細化,如果說需求分析主要是面向用戶,那么詳細說明就是給開發人員看的,就是根據用戶需求對系統的一些設計要求的具體化,由于功能需求往往只是功能上的一個概括,因此需要通過詳細說明將系統設計需求進行進一步的說明和細化,一方面在系統的設計過程中有一個統一的方向,另一方面詳細說明也便于團隊合作開發。
詳細說明應當盡可能羅列可能的參數需求,例如針對模擬量A/D采樣這一功能需求,在詳細說明中可以包括。
(1)模擬量類型,電壓量還是電流量?電流量可以轉換成電壓量采集?
(2)采樣的精度與速度要求。
(3)采樣數據是否需要濾波、存儲。
(4)模擬量輸入是否需要和CPU隔離?
嵌入式系統的工程設計可能是很長的一段時間,期間可能需要團隊協作,根據需求分析所做的詳細說明可以在整個設計過程中作為設計的一個參考,防止在設計過程中出現顧此失彼的現象。
2.1.3 結構設計
1.硬件結構設計
結構設計時在需求分析和詳細說明之后對整個系統進行整體架構上的設計,在結構設計階段硬件需要確定整體的結構和電路中主要的芯片選型,軟件方面可以確定所要使用的軟件開發平臺、涉及的相關驅動、協議等。
在多數的嵌入式系統設計中,硬件方面需要考慮的問題主要有以下五方面。
(1)選擇什么樣的CPU?
(2)選擇哪些相應的外圍芯片?
(3)系統的主要I/O分配。
(4)系統的電源要求。
(5)硬件的尺寸要求、外殼設計。
在結構設計階段,根據詳細說明,要能夠確定硬件部分的主要組成結構并選定主要元器件如:CPU、A/D、運放、電源芯片等都可以在結構設計階段進行確定,相應的設計電路也應該有一個設計雛形。
芯片的選擇與初步電路設計是結構設計的主要內容之一,然而從成千上萬種芯片中選擇出自己合適的芯片并不是一件容易的事情,對于芯片的選擇與主要電路設計可以遵循以下四個原則。
(1)在實現功能的基礎上可以盡量選擇比較常用的芯片與方案,可以參考類似的設計,找出對本項目有效的設計方案。
(2)選用較為常用的芯片與設計方案,一方面這些方案經過多人的驗證不會有太大的漏洞,同時也可以減輕設計的工作量。另一方面常用的設計方案在元器件采購等方面會容易得多,性價比也比較高。
(3)對于側重于成本的嵌入式系統設計可以將部分功能進行分解,使用分立元件完成,或者對主要電路進行重新評估,在保證參數達到的前提下使用更為廉價的方案。
(4)對于側重于性能和穩定性的設計可以較多的使用集成電路芯片,一方面可以提高系統的穩定性,另一方面可以降低后期調試等方面的難度。
在選擇元器件時可以充分參考主要半導體廠家提供選擇工具,例如,需要選擇一款A/D芯片時,可以考慮美國著名的模擬半導體公司ADI公司的產品,通過搜索引擎可以很方便地找到亞德諾半導體(Analog Devices)公司的官方網站http://www.analog.com,如圖2-1所示。

圖2-1 亞德諾半導體(Analog Devices)公司的官方網站主頁
由于需要查找的是A/D,屬于數據轉換器系列,因此選擇數據轉換器,進入之后選擇ADC產品列表,這時網站會列出所有ADC芯片的信息如圖2-2所示。然而這里列出的信息量很大,如果直接查找仍然需要很大的工作量,因此可以進一步使用網站提供的工具,單擊圖中的可以進行進一步的限定條件,如圖2-3所示。單擊添加/移除參數即可選擇自己需要關心的參數,在下方的參數選擇框中即可以選擇需要篩選的條件,如精度、速度、接口、價格等。

圖2-2 ADC清單

圖2-3 篩選條件設置
由于各公司的網站不盡相同,網站也可能不斷改版,但是類似的工具在主要的幾家半導體公司網站上卻是普遍存在的,可以通過這種方法進行元件的選擇。元件選定后需要下載芯片的應用手冊,詳細了解芯片內容,看看是否符合項目需求,芯片手冊中一般都會給出典型應用電路,有的芯片甚至會單獨給出實驗電路板的應用電路,可以作為系統電路設計的主要參考。需要說明的是并不一定找到符合要求芯片之后就是可以使用的,一方面,需要考慮在國內市場元件有無供貨,方不方便購買;另一方面,如果是大批量的產品還需要考慮元件的供貨能否滿足需求。
2.軟件結構設計
在軟件方面,需要考慮的問題有以下三方面。
(1)是否需要嵌入式系統,選擇什么樣的嵌入式系統,硬件資源能夠滿足嵌入式系統的需求。
(2)軟件主要包括哪些功能模塊,對CPU有什么要求。
(3)使用什么軟件開發平臺?
在軟件設計方面,軟件開發應當與硬件開發同步進行,在結構設計階段可以對系統的軟件部分進行分解,確定軟件部分需要開發的子功能。與硬件關聯不大的軟件可以先行開發驗證,與硬件關系密切如底層驅動函數等,可以利用實驗板等現有硬件器材進行先期開發,等到硬件設計完成后進行修改調整。
2.1.4 組件設計
1.功能模塊與原理圖設計
在結構設計完成之后,系統的主要框架就已經建立,接下來就需要集中精力在系統的硬件模塊和軟件模塊的設計上。根據系統的主要結構,將系統劃分成若干組件,分別進行調試。一般的設計原則是先設計硬件,后設計軟件。由于有的系統功能模塊較多,相對比較復雜,開發人員在初期可能并不清楚,因此在組件設計階段可以單獨設計一些驗證性的功能板,對主要的電路進行驗證和測試,以確保電路正確并符合要求。在設計過程中也可以使用相應的最小系統板或者開發板進行功能驗證和前期的軟件編寫,以加快開發進度。
在結構設計一節中已經有所提及,相應元件的Datasheet是設計的重要參考,絕大多數的Datasheet中都給出了元件的典型應用電路和相關參數,因此無論是硬件設計還是軟件設計,Datasheet始終是重要參考。然而很多Datasheet中的典型應用電路只是一個基本的功能演示,并無法滿足實際應用需求,因此應在充分理解Datasheet的基礎之上,廣泛參考其他類似的電路設計,結合項目的實際需求從而得到最優的電路設計。
雖然在設計過程中一個系統按照功能被劃分為若干功能模塊分別進行設計,然而在設計過程中應時刻注意各功能模塊之間的協調,如電平匹配、信號方向、端口占用等情況。否則,很容易出現獨立模塊功能可以實現而系統卻無法協同工作的情況。
2.PCB設計
PCB是硬件設計中必不可少的一部分,常用的設計軟件有Altium Designer(Protel)、Cadence(包括Allegro、OrCAD Capture)、Mentor PADS(Power PCB)等,其中Protel在國內的普及率較高,使用也比較方便,這里不做過多介紹,然而Protel在設計多層電路板的時候有點力不從心,因此多用于單層板及兩層板的設計,對于四層及以上電路板目前國內使用OrCAD Capture和PADS組合的較多。
OrCAD Capture被稱為全球最多人使用的線路圖繪圖程序+畫原理圖最厲害的軟件,之所以被推薦是因為它的庫比較多,元件不需要你建,而且易與其他軟件(如Ansoft、Mentor的軟件)集成,各種工具交互比較容易。在設計中,OrCAD Capture可以連接Cadence OrCAD PCB Editor、Allegro或其他Layout軟件,來完成PCB設計。
PowerLogic和PowerPCB產品被Mentor Graphics公司收購后,更名為PADS系列,版本升級非常快,先前有PADS2005、PADS2007,目前最新的版本為PADS9.4,不過也有工程師反映運行最穩定還是PADS2005。PADS系列軟件包括:原理圖工具PADS Logic、PCB工具PADS Layout和自動布線工具PADS Router。PADS系列是低端的PCB軟件中最優秀的一款,其界面友好、容易上手、功能強大而深受中小企業的青睞,在中小企業用戶中占有很大的市場份額。PADS最大的優勢就是手機產品設計,雖然它功能簡單,但是山寨機基本上都是用它搞定的,國內的設計公司有80%都是用它。不足是其本身沒有仿真,做高速板時,要結合其他專用仿真工具,如hyperlynx,另外原理圖繪制元件庫很少。總之這些只是設計工具,工具的優劣并不能決定最終的設計水平,更重要的還是在于設計者的水平,以上對主要的設計軟件進行了簡單的介紹,感興趣的讀者可以有選擇地學習。
3.軟件和硬件調試
PCB設計完成之后由PCB生產廠家制作樣板,得到樣板之后就要進行調試電路板的焊接與調試。電路板的焊接這里不做過多敘述,普通的DIP、SOP、TQFP等封裝均可以方便地手工焊接,BGA等封裝則需要專業的設備。在手工焊接的時候可以分塊進行,即焊接一部分,測試一部分,測試正常后再進行下一步。例如:可以按照電源—CPU相關—外設的順序來進行焊接。因為電源是整個系統運行的基礎,先進行電源模塊的焊接與測試,確保系統各部分的供電滿足要求。如果電源部分沒有測試穩定貿然焊接其他部分,極有可能會因為電源原因導致系統無法運行甚至損壞相關芯片。電源測試完成后可以繼續焊接與CPU相關的部分電路,如CPU、時鐘電路、復位電路、下載線接口等,先測試開發系統能否下載程序并正確運行,測試通過后即可繼續焊接其他相關電路。硬件設計及焊接是嵌入式系統設計中極易出錯的一個環節,如果不掌握合理的方法有可能會在這一環節耗費大量時間,這種分模塊逐步焊接調試方法最大的好處就是能夠方便地發現問題所在,如果一次性焊接完畢出現問題則很難排查。
軟件設計也是一樣,無論多么復雜的程序或者軟件都是從最基礎的功能逐步完善起來的。在軟件功能的設計上同樣需要遵循循序漸進的設計方法,可以有效地節省時間。
2.1.5 系統集成
系統集成的主要目的是在系統的各個組件設計完成之后,得到一個可以運轉的原始系統,并利用這個原始系統,進行集成測試。
系統集成的主要任務是:測試系統各模塊建立的連接是否正確,系統或子系統的正確處理能力、容錯能力、輸入/輸出處理能否達到需求分析的設計需求。雖然經過組件的設計,可能已經實現了系統需求的各個子功能,然而在組件設計階段,無論是軟件還是硬件,各模塊之間仍然是獨立的,并不能保證各模塊在軟件和硬件集成上沒有沖突,同時有些功能需要各模塊之間的配合才能夠實現,因此在系統集成階段的第一步就是將各功能模塊進行集成和測試。
- Div+CSS 3.0網頁布局案例精粹
- Excel 2007函數與公式自學寶典
- Hadoop 2.x Administration Cookbook
- 計算機控制技術
- 自動化控制工程設計
- Python Data Science Essentials
- Creo Parametric 1.0中文版從入門到精通
- INSTANT Autodesk Revit 2013 Customization with .NET How-to
- Implementing Splunk 7(Third Edition)
- 筆記本電腦維修90個精選實例
- 在實戰中成長:Windows Forms開發之路
- IBM? SmartCloud? Essentials
- Learn QGIS
- JSP網絡開發入門與實踐
- 面向Agent的軟件設計開發方法