乾貨:嵌入式系統設計開發大全!(萬字總結)

出品 21ic中國電子網 付斌整理

網站:21ic.com

01

嵌入式系統設計方法變化的背景

嵌入式系統設計方法的演化總的來說是因爲應用需求的牽引和IT技術的推動,隨着微電子技術的不斷創新和發展,大規模集成電路的集成度和工藝水平不斷提高。硅材料與人類智慧的結合,生產出大批量的低成本、高可靠性和高精度的微電子結構模塊,推動了一個全新的技術領域和產業的發展。

在此基礎上發展起來的器件可編程思想和微處理(器)技術可以用軟件來改變和實現硬件的功能。微處理器和各種可編程大規模集成專用電路、半定製器件的大量應用,開創了一個嶄新的應用世界,以至廣泛影響着並在逐步改變着人類的生產、生活和學習等社會活動。

計算機硬件平臺性能的大幅度提高,使很多複雜算法和方便使用的界面得以實現,大大提高了工作效率,給複雜嵌入式系統輔助設計提供了物理基礎。

高性能的EDA綜合開發工具(平臺)得到長足發展,而且其自動化和智能化程度不斷提高,爲複雜的嵌入式系統設計提供了不同用途和不同級別集編輯、佈局、佈線、編譯、綜合、模擬、測試、驗證和器件編程等一體化的易於學習和方便使用的開發集成環境。

硬件描述語言HDL(Hardware DescrIPtion Language)的發展爲複雜電子系統設計提供了建立各種硬件模型的工作媒介。它的描述能力和抽象能力強,給硬件電路,特別是半定製大規模集成電路設計帶來了重大的變革。目前,用得較多的有已成爲IEEE爲 STD1076標準的VHDL、IEEE STD 1364標準的Verilog HDL和Altera公司企業標準的AHDL等。

  

由於HDL的發展和標準化,世界上出現了一批利用HDL進行各種集成電路功能模塊專業設計的公司。其任務是按常用或專用功能,用HDL來描述集成電路的功能和結構,並經過不同級別的驗證形成不同級別的IP內核模塊,供芯片設計人員裝配或集成選用。

  

IP(Intellectual Property)內核模塊是一種預先設計好的甚至已經過驗證的具有某種確定功能的集成電路、器件或部件。它有幾種不同形式。IP內核模塊有行爲(behavior)、結構(structure)和物理(physical)3級不同程度的設計,對應有主要描述功能行爲的「軟IP內核(soft IP core)」、完成結構描述的「固IP內核(firm IP core)」和基於物理描述並經過工藝驗證的「硬IP內核(hard IP core)」3個層次。這相當於集成電路(器件或部件)的毛坯、半成品和成品的設計技術。

  

軟IP內核通常是用某種HDL文本提交用戶,它已經過行爲級設計優化和功能驗證,但其中不含有任何具體的物理信息。據此,用戶可以綜合出正確的門電路級網表,並可以進行後續結構設計,具有最大的靈活性,可以很容易地藉助於EDA綜合工具與其他外部邏輯電路結合成一體,根據各種不同的半導體工藝,設計成具有不同性能的器件。可以商品化的軟IP內核一般電路結構總門數都在5000門以上。但是,如果後續設計不當,有可能導致整個結果失敗。軟IP內核又稱作虛擬器件。

  

硬IP內核是基於某種半導體工藝的物理設計,已有固定的拓撲佈局和具體工藝,並已經過工藝驗證,具有可保證的性能。其提供給用戶的形式是電路物理結構掩模版圖和全套工藝文件,是可以拿來就用的全套技術。

  

固IP內核的設計深度則是介於軟IP內核和硬IP內核之間,除了完成硬IP內核所有的設計外,還完成了門電路級綜合和時序仿真等設計環節。一般以門電路級網表形式提交用戶使用。

TI,Philips和Atmel等廠商就是通過Intel授權,用其MCS51的IP內核模塊結合自己的特長開發出有個性的與Intel MCS51兼容的單片機。

常用的IP內核模塊有各種不同的CPU(32/64位CISC/RISC結構的CPU或8/16位微控制器/單片機)、32/64位 DSP、DRAM、SRAM、MRAM、EEPROM、Flashmemory、A/D、D/A、MPEG/JPEG、USB、PCIe、、MIPI、標準接口、網絡單元、編譯器、編碼/解碼器和模擬器件模塊等。豐富的IP內核模塊庫爲快速地設計專用集成電路和單片系統以及儘快佔領市場提供了基本保證。

軟件技術的進步,特別是嵌入式實時操作系統EOS(Embedded Operation System)和RTOS的推出,爲開發複雜嵌入式系統應用軟件提供了底層支持和高效率開發平臺。

02

嵌入式系統設計方法的變化

過去擅長於軟件設計的編程人員一般對硬件電路設計「敬而遠之」,硬件設計和軟件設計被認爲是性質完全不同的技術。

隨着電子信息技術的發展,電子工程出身的設計人員,往往還逐步涉足軟件編程。其主要形式是通過微控制器(國內習慣稱作單片機)的應用,學會相應的彙編語言編程。在設計規模更大的集散控制系統時,必然要用到已普及的PC機,以其爲上端機,從而進一步學習使用C、C++、Python等高級語言編程作系統程序,設計系統界面,通過與單片機控制的前端機進行多機通信構成集中分佈控制系統。

軟件編程出身的設計人員則很少有興趣去學習應用電路設計。但是,隨着計算機技術的飛速發展,特別是硬件描述語言HDL的發明,系統硬件設計方法發生了變化,數字系統的硬件組成及其行爲完全可以用HDL來描述和仿真。在這種情況下,設計硬件電路不再是硬件設計工程師的專利,擅長軟件編程的設計人員可以藉助於HDL工具來描述硬件電路的行爲、功能、結構、數據流、信號連接關係和定時關係,設計出滿足各種要求的硬件系統。

 

EDA工具允許有兩種設計輸入工具,分別適應硬件電路設計人員和軟件編程人員兩種不同背景的需要。讓具有硬件背景的設計人員用已習慣的原理圖輸入方式,而讓具有軟件背景的設計人員用硬件描述語言輸入方式。由於用HDL描述進行輸入,因而與系統行爲描述更接近,且更便於綜合、時域傳遞和修改,還能建立獨立於工藝的設計文件,所以,擅長軟件編程的人一旦掌握了HDL和一些必要的硬件知識,往往可以比習慣於傳統設計的工程師設計出更好的硬件電路和系統。所以,習慣於傳統設計的工程師應該學會用HDL來描述和編程。 

爲什麼在大部分畢業生眼中,只有嵌入式、單片機、ARM、FPGA纔是技術呢?現在的高校,幾乎都開設這方面的專業,這方面固然有很多高層次人才,高待遇的,但這個東西並不是適合所有人的,大部分起點低的,或者年級偏大的,其實不應該去做這些東西。
 
現在的嵌入式都是快餐,隨着大學生的不停涌入,價值越來越低,並且這些羣體大部分都能做出東西來,卻就是做不穩定,最後就是白菜價格也賣不出去,而根本點在於缺少對生產、質量、售後、測試、模擬基礎功底的漠視。
 
中國發展這麼多年,本質上講,真正賺錢的,還是這幫搞生產,抓質量,懂銷售的羣體賺錢,絕對不是研發技術人員。但技術人員,總是把技術舉得高高的,而支撐技術變成產品再銷售出去的環節,則非常漠視,最後一輩子只能打工。相反,若抓其他幾個環節,則完全可以發展出來當老闆,自己聘請技術人員即可。
 
到今天爲止,一個公司的倒閉,沒有幾個是因爲技術問題導致的,大多數都是因爲其他原因,比如市場、生產、品質等等。賺錢是一個體系,研發只是其中一塊。

可以說,對於國內大部分公司來說,就今天來說,貿、工、技路線遠比技、工、貿容易成功的多。
 
21ic援引一位標準的技術人員的話:現在我教給我同事的,大部分都是工廠的東西:一看、二想、三做、四檢查。其次就是基於事實,用常理去推理分析,讓他們捨去所謂的高科技,把常理用好。通過這兩點來做各種事情,而不僅僅限於技術。同時,儘可能避開大家做的東西,大家都喜歡做嵌入式,那我們就做給嵌入式配套的設備,或者嵌入式羣體做不了的設備,只有這樣,才能獲得高額的利潤。

03

嵌入式系統設計的3個層次

21ic家瞭解到,嵌入式系統設計有3個不同層次:

第1層次:以PCB CAD軟件和ICE爲主要工具的設計方法

這是過去直至現在我國單片機應用系統設計人員一直沿用的方法,其步驟是先抽象後具體。

  

抽象設計主要是根據嵌入式應用系統要實現的功能要求,對系統功能細化,分成若干功能模塊,畫出系統功能框圖,再對功能模塊進行硬件和軟件功能實現的分配。

  

具體設計包括硬件設計和軟件設計。硬件設計主要是根據性能參數要求對各功能模塊所需要使用的元器件進行選擇和組合,其選擇的基本原則就是市場上可以購買到的性價比最高的通用元器件。必要時,須分別對各個沒有把握的部分進行搭試、功能檢驗和性能測試,從模塊到系統找到相對優化的方案,畫出電路原理圖。硬件設計的關鍵一步就是利用印製板(PCB)計算機輔助設計(CAD)軟件對系統的元器件進行佈局和佈線,接着是印製板加工、裝配和硬件調試。

  

工作量最大的部分是軟件設計。軟件設計貫穿整個系統的設計過程,主要包括任務分析、資源分配、模塊劃分、流程設計和細化、編碼調試等。軟件設計的工作量主要集中在程序調試,所以軟件調試工具就是關鍵。最常用和最有效的工具是在線仿真器(ICE)。

  

第2層次:以EDA工具軟件和EOS爲開發平臺的設計方法

隨着微電子工藝技術的發展,各種通用的可編程半定製邏輯器件應運而生。在硬件設計時,設計師可以利用這些半定製器件,逐步把原先要通過印製板線路互連的若干標準邏輯器件自制成專用集成電路(ASIC)使用,這樣,就把印製板佈局和佈線的複雜性轉換成半定製器件內配置的複雜性。

然而,半定製器件的設計並不需要設計人員有半導體工藝和片內集成電路佈局和佈線的知識和經驗。隨着半定製器件的規模越來越大,可集成的器件越來越多,使印製板上互連器件的線路、裝配和調試費用越來越少,不僅大大減少了印製板的面積和接插件的數量,降低了系統綜合成本,增加了可編程應用的靈活性,更重要的是降低了系統功耗,提高了系統工作速度,大大提高了系統的可靠性和安全性。

  

這樣,硬件設計人員從過去選擇和使用標準通用集成電路器件,逐步轉向自己設計和製作部分專用的集成電路器件,而這些技術是由各種EDA工具軟件提供支持的。

  

半定製邏輯器件經歷了可編程邏輯陣列PLA、可編程陣列邏輯PAL、通用陣列邏輯GAL、複雜可編程邏輯器件CPLD和現場可編程門陣列FPGA的發展過程。其趨勢是集成度和速度不斷提高,功能不斷增強,結構趨於更合理,使用變得更靈活和方便。

  

設計人員可以利用各種EDA工具和標準的CPLD和FPGA等,設計和自制用戶專用的大規模集成電路。然後再通過自下而上的設計方法,把用半定製器件設計自制的集成電路、可編程外圍器件、所選擇的ASIC與嵌入式微處理器或微控制器在印製板上佈局、佈線構成系統。

  

第3層次:以IP內核庫爲設計基礎,用軟硬件協同設計技術的設計方法

20世紀90年代後,進一步開始了從「集成電路」級設計不斷轉向「集成系統」級設計。目前已進入單片系統SOC(System o-n a chip)設計階段,並開始進入實用階段。這種設計方法不是把系統所需要用到的所有集成電路簡單地二次集成到1個芯片上,如果這樣實現單片系統,是不可能達到單片系統所要求的高密度、高速度、高性能、小體積、低電壓、低功耗等指標的,特別是低功耗要求。

單片系統設計要從整個系統性能要求出發,把微處理器、模型算法、芯片結構、外圍器件各層次電路直至器件的設計緊密結合起來,並通過建立在全新理念上的系統軟件和硬件的協同設計,在單個芯片上完成整個系統的功能。有時也可能把系統做在幾個芯片上。因爲,實際上並不是所有的系統都能在一個芯片上實現的;還可能因爲實現某種單片系統的工藝成本太高,以至於失去商業價值。目前,進入實用的單片系統還屬簡單的單片系統,如智能IC卡等。但幾個着名的半導體廠商正在緊鑼密鼓地研製和開發像單片PC這樣的複雜單片系統。

  

單片系統的設計如果從零開始,這既不現實也無必要。因爲除了設計不成熟、未經過時間考驗,其系統性能和質量得不到保證外,還會因爲設計週期太長而失去商業價值。

  

爲了加快單片系統設計週期和提高系統的可靠性,目前最有效的一個途徑就是通過授權,使用成熟優化的IP內核模塊來進行設計集成和二次開發,利用膠粘邏輯技術GLT(Glue Logic Technology),把這些IP內核模塊嵌入到SoC中。IP內核模塊是單片系統設計的基礎,究竟購買哪一級IP內核模塊,要根據現有基礎、時間、資金和其他條件權衡確定。

購買硬IP內核模塊風險最小,但付出最大,這是必然的。但總的來說,通過購買IP內核模塊不僅可以降低開發風險,還能節省開發費用,因爲一般購買IP內核模塊的費用要低於自己單獨設計和驗證的費用。當然,並不是所需要的IP內核模塊都可以從市場上買得到。爲了壟斷市場,有一些公司開發出來的關鍵IP內核模塊(至少暫時)是不願意授權轉讓使用的。像這樣的IP內核模塊就不得不自己組織力量來開發。

  

這3個層次各有各的應用範圍。從應用開發角度看,在相當長的一段時間內,都是採用前2種方法。第3層次設計方法對一般具體應用人員來說,只能用來設計簡單的單片系統。而複雜的單片系統則是某些大的半導體廠商才能設計和實現的,並且用這種方法實現的單片系統,只可能是那些廣泛使用、具有一定規模的應用系統才值得投入研製。還有些應用系統,因爲技術問題或商業價值問題並不適宜用單片實現。當它們以商品形式推出相應單片系統後,應用人員只要會選用即可。

所以,3個層次的設計方法會並存,並不會簡單地用後者取代前者。初級應用設計人員會以第1種方法爲主;富有經驗的設計人員會以第2種方法爲主;很專業的設計人員會用第3種方法進行簡單單片系統的設計和應用。但所有的設計人員都可以應用半導體大廠商推出的用第3種方法設計的專用單片系統。

04

嵌入式硬件系統設計

嵌入式設計是個龐大的工程,在軟件方面嵌入式ARM已經有了多次介紹,具體可以觀看《深度:嵌入式系統的軟件架構設計!》一文。在硬件電路設計方面,21ic家瞭解到有幾個注意事項,首先,咱們瞭解下嵌入式的硬件構架。

我們知道,CPU是這個系統的靈魂,所有的外圍配置都與其相關聯,這也突出了嵌入式設計的一個特點硬件可剪裁。在做嵌入式硬件設計中,以下幾點需要關注。

 

第一、電源確定

電源對於嵌入式系統中的作用可以看做是空氣對人體的作用,甚至更重要:人呼吸的空氣中有氧氣、二氧化碳和氮氣等但是含量穩定,這就相當於電源系統中各種雜波,我們希望得到純淨和穩定符合要求的電源,但由於各種因素制約,只是我們的夢想。這個要關注兩個方面:

a、電壓

嵌入式系統需要各種量級的電源比如常見的5v、3.3v、1.8v等,爲儘量減小電源的紋波,在嵌入式系統中使用LDO器件。如果採用DCDC不僅個頭大,其紋波也是一個很頭疼的問題。

b、電流

嵌入式系統的正常運行不但需要穩定足夠的電源,還要有足夠的電流,因此在選擇電源器件的時候需要考慮其負載,我設計時一般留有30%的餘量。

如果是多層板,電源部分在layout的時候需電源分割,這時需要注意分割路徑,儘量將一定量的電源放置在一起。如果是雙面板,則走線寬度需要注意,在板子允許的情況下儘量加寬。合適的退耦電容儘量靠近電源管腳。

 

第二、 晶振確定

晶振相當於嵌入式系統的心臟,其穩定與否直接關係其運行狀態和通訊性能。常見的振有無源晶振,有源晶振,首先要確定其振盪頻率,其次要確定晶振類型。

a、無源晶振

其匹配電容和匹配電阻的選擇,這部分一般依據參考手冊。在單片機設計中,經常使用插件晶振配合瓷片電容。在ARM中,爲了減少空間和便於佈線,經常使用四角無源晶振配合貼片電容。雖然我們對於固定晶振的匹配電路比較熟悉,但是爲了達到萬無一失,還是要看參考手冊確定電容大小,是否需要匹配電阻等細節。

b、有源晶振

具有更好的更準確的時鐘信號,但是相比之下,比無緣晶振價格高,因此這也是在硬件電路設計中需要關注的成本。

在做電路板設計時需要注意晶振走線儘量靠近芯片,關鍵信號遠離時鐘走線。在條件允許的情況下增加接地保護環。如果是多層板,也要講關鍵信號遠離晶振的走線。

 

第三、 預留測試IO口

在嵌入式調試階段,在管腳資源豐富的情況下,我通常預留一個IO口連接led或者喇叭,爲下一步軟件的編寫做鋪墊。在嵌入式系統運行過程中適當控制該IO接口,從而判斷系統是否正常運行。

 

第四、外擴存儲設備

一個嵌入式系統如果有電源、晶振和CPU,那麼這就是我們熟悉的最小系統。如果該嵌入式系統需要運行大點的操作系統,那麼不但需要CPU具有 MMU,CPU還需要外接SDRAM和NANDFLASH。如果該cpu具有SDRAM和NANDFLASH控制器,那麼在硬件設計上不用過多的考慮地址線的使用。如果沒有相關的控制器,那麼需要注意地址線的使用。

這部分在LAYOUT的時候是一個重點,究其原因就是要使相關信號線等長以確保信號的延時相等,時鐘和DQS的差分信號線走線。在佈線的時候各種佈線技巧需要綜合使用,例如與cpu對稱分佈,菊花鏈佈線、T型佈線,這都需要依據內存的個數多少來進行選擇,一般來說個數越多,佈線越複雜,但是知道其關鍵點,一切迎刃而解。

 

第五、功能接口

一個嵌入式系統最重要的就是通過各種接口來控制外圍模塊,達到設計者預設的目的。常用的接口有串口(可用來連接藍牙,wifi和3G等模塊),USB接口、 網絡接口、JTAG接口、音視頻接口、HDMI接口等等。由於這些接口與外部模塊連接,做好電磁兼容設計是重要的一項工作。除此之外,在LAYOUT的時候注意差分線的使用。

 

第六、屏幕

這個功能之所以單獨列出來,是由於其可有可無。如果一個嵌入式系統只是作爲一個連接器連接外圍設備模塊,通過相關接口連接到電腦主機或者直接掛在網絡上,那麼屏幕就不需要了。但是如果做出來的是一個消費類產品,與用戶交互頻繁,這就不得不嘮叨幾句。

電容屏幕是嵌入式屏幕的首選,在電路設計中需要注意觸屏連接線和顯示屏連接線的佈局。在走線的過程中儘量短的靠近主控cpu,同時注意配對信號走差分線,RGB控制信號走等長。各種信號走線間距遵循3W規則,避免相互干擾。在屏幕的設計中,一定要確保功率和防止干擾,以防屏幕閃屏和花屏現象的出現。

06

嵌入式產品開發流程

嵌入式產品,與普通電子產品一樣,開發過程都需要遵循一些基本的流程,都是一個從需求分析到總體設計,詳細設計到最後產品完成的過程。但是,與普通電子產品相比,嵌入式產品的開發流程又有其特殊之處。它包含嵌入式軟件和嵌入式硬件兩大部分,針對嵌入式硬件和軟件的開發,在普通的電子產品開發過程中,是不需要涉及的。21ic家瞭解到嵌入式產品的研發流程具體如下圖:

 

下面,針對嵌入式產品的開發過程中的各個階段,我們進行詳細探討。

階段1:產品需求



在這一個階段,我們需要弄清楚的是產品的需求從何而來,一個成功的產品,我們需要滿足哪些需求。只有需求明確了,我們的產品開發目標才能明確。在產品需求分析階段,我們可以通過以下這些途徑獲取產品需求:

     

1)市場分析與調研,主要是看市場有什麼需求,還有就是前沿的技術是什麼(站在做一款產品的角度);

2)客戶調研和用戶定位,從市場廣大客戶那獲取最準確的產品需求(要注意分析市場,產品生命週期,升級是否方便);

3)利潤導向(成本預算);

4)如果是外包項目,則需要我們的客戶提供產品的需求(直接從客戶那獲取,讓客戶籤協議);

當一個項目做完的時候,如果客戶突然又增加需求,增加功能,將導致你的項目週期嚴重拖延,成本劇烈上升,並且測試好的產品可能要全部重新測試,原本的設計可能將不會滿足當前的要求,所以做項目之前,最好要跟客戶把需求確定下來,並且簽定一份協議,否則,你辛苦多少個日日夜夜,得到的將是一個無法收拾的爛攤子!

階段2:產品規格說明



在前一個階段,我們蒐集了產品的所有需求。那麼在產品規格說明階段,我們的任務是將所有的需求,細化成產品的具體的規格,就比如一個簡單的USB轉串口線,我們需要確定產品的規格,包括:

1)產品的外觀;

2)產品支持的操作系統;

3)產品的接口形式和支持的規範;

等等諸如此類,切記,在形成了產品的規格說明後,在後續的開發過程中,我們必須嚴格的遵守,沒有200%的理由,不能隨意更改產品的需求。否則,產品的開發過程必將是一個反覆無期的過程。

《產品規格說明》主要從以下方面進行考慮:

1)考慮該產品需要哪些硬件接口;

2)產品用在哪些環境下,要做多大,耗電量如何。如果是消費類產品,還跟設計美觀,產品是否便於攜帶,以確定板子大小的需求,是否防水;

3)產品成本要求;

4)產品性能參數的說明(例如交換機,如果是百兆的速率,用於家庭和一般公司;如果是用於整個省的交換,那設計的速率肯定數十萬兆以上了)所以說,產品性能參數的不同,就會影響到我們設計考慮的不同,那麼產品的規格自然就不同了;

5)需要適應和符合的國家標準,國際標準,或行業標準;

階段3:產品總體設計方案


在完成了產品規格說明以後,我們需要針對這一產品,瞭解當前有哪些可行的方案,通過幾個方案進行對比,包括從成本、性能、開發週期、開發難度等多方面進行考慮,最終選擇一個最適合自己的產品總體設計方案。

在這一階段,我們除了確定具體實現的方案外,我們還需要綜合考慮,產品開發週期,多少人月的工作量,需要哪些資源或者外部協助,以及開發過程中可能遇到的風險及應對措施,形成整個項目的項目計劃,指導我們的整個開發過程。 

階段4:產品概要設計


產品概要設計主要是在總體設計方案的基礎上進一步的細化,具體從硬件和軟件兩方面入手:

硬件模塊概要設計

硬件模塊概要設計,主要從硬件的角度出發,確認整個系統的架構,並按功能來劃分各個模塊,確定各個模塊的的大概實現。首先要依據我們到底要哪些外圍功能以及產品要完成的工作,來進行CPU選型(注意:CPU一旦確定,那麼你的周圍硬件電路,就要參考該CPU廠家提供的方案電路來設計)。然後再根據產品的功能需求選芯片,比如是外接AD還是用片內AD,採用什麼樣的通訊方式,有什麼外部接口,還有最重要的是要考慮電磁兼容。

一般一款CPU 的生存週期是5-8年,你考慮選型的時候要注意,不要選用快停產的CPU,以免出現這樣的結局:產品辛辛苦苦開發了1到2 年,剛開發出來,還沒賺錢,CPU又停產了,又得要重新開發。很多公司就死在這個上面。

軟件模塊概要設計

軟件模塊概要設計階段,主要是依據系統的要求,將整個系統按功能進行模塊劃分,定義好各個功能模塊之間的接口,以及模塊內主要的數據結構等。

階段5:產品詳細設計


硬件模塊詳細設計

主要是具體的電路圖和一些具體要求,包括 PCB和外殼相互設計,尺寸這些參數。接下來,我們就需要依據硬件模塊詳細設計文檔的指導,完成整個硬件的設計。包括原理圖、PCB的繪製。

軟件模塊詳細設計

功能函數接口定義,該函數功能接口完成功能,數據結構,全局變量,完成任務時各個功能函數接口調用流程。在完成了軟件模塊詳細設計以後,就進入具體的編碼階段,在軟件模塊詳細設計的指導下 ,完成整個系統的軟件編碼。

一定要注意需要先完成模塊詳細設計文檔以後,軟件才進入實際的編碼階段,硬件進入具體的原理圖、PCB實現階段,這樣才能儘量在設計之初就考慮周全,避免在設計過程中反覆修改。提高開發效率,不要爲了圖一時之快,沒有完成詳細設計,就開始實際的設計步驟。

階段6&7:產品調試與驗證


該階段主要是調整硬件或代碼,修正其中存在的問題和BUG,使之能正常運行,並儘量使產品的功能達到產品需求規格說明要求。

硬件部分:

1)目測加工會得PCB板是否存在短路,器件是否焊錯,或漏焊接;

2)測試各電源對地電阻是否正常;

3)上電,測試電源是否正常;

4)分模塊調試硬件模塊,可藉助示波器、邏輯分析儀等根據。

軟件部分:

驗證軟件單個功能是否實現,驗證軟件整個產品功能是否實現。

階段8:測試


功能測試(測試不通過,可能是有BUG);

壓力測試(測試不通過,可能是有BUG或哪裏參數設計不合理);

性能測試(產品性能參數要提煉出來,供將來客戶參考,這個就是你的產品特徵的一部分);

其他專業測試:包括工業級的測試,例如含抗干擾測試,產品壽命測試,防潮溼測試,高溫和低溫測試(有的產品有很高的溫度或很低的溫度工作不正常,甚至停止工作)。

有的設備電子元器件在特殊溫度下,參數就會異常,導致整個產品出現故障或失靈現象的出現;有的設備,零下幾十度的情況下,根本就啓動不了,開不了機;有的設備在高溫下,電容或電阻值就會產生物理的變化,這些都會影響到產品的質量。這裏要引出一個話題,工業級產品與消費類產品有什麼區別呢?工業級的產品就要避免這些異常和特殊問題,有的產品是在很深的海里工作,或者在嚴寒的山洞工作,或者火熱沙漠工作,或者顛簸的設備上,比如汽車;或者是需要防止雷擊;所以這就是工業級產品跟消費類產品的區別,消費類的產品就不需要做這麼多的測試。

階段9:產品


通過上一階段完整測試驗證,在此階段,即得到我們開發成功的產品。在此階段,可以比較實際的產品和最初的形成的產品規格說明,看經過一個完整的開發過程,是否產品完全符合最初的產品規格說明,又或者,中途發現產品規格說明存在問題,對它進行了多少修改呢?

附錄:嵌入式硬件開發流程

之前,我們詳細講述了嵌入式產品的研發流程,那麼在這一節,我們具體以嵌入式產品的硬件部分爲例,再次講解其開發過程,希望通過這一節,大家能對嵌入式硬件開發流程有更深刻的認識,在以後的學習和工作中,更加規範化和標準化,提高開發技能。嵌入式硬件開發流程一般如下圖,分爲8個階段:

 

嵌入式產品的硬件形態各異,CPU 從簡單的4 位/8位單片機到32 位的ARM處理器,以及其他專用IC。另外,依據產品的不同需求,外圍電路也各不相同。每一次硬件開發過程,都需要依據實際的需求,考慮多方面的因素,選擇最合適的方案來。

硬件階段1:硬件產品需求


和普通的嵌入式產品需求一樣。階段1:產品需求。

硬件階段2:硬件總體設計方案


一個硬件開發項目,它的需求可能來自很多方面,比如市場產品的需要或性能提升的要求等,因此,作爲一個硬件設計人員,我們需要主動去了解各個方面的需求並分析,根據系統所要完成的功能,選擇最合適的硬件方案。

在這一階段,我們需要分析整個系統設計的可行性,包括方案中主要器件的可採購性,產品開發投入,項目開發週期預計,開發風險評估等,並針對開發過程中可能遇到的問題,提前選擇應對方案,保證硬件的順利完成。

硬件階段3:硬件電路原理圖設計


在系統方案確定後,我們即可以開展相關的設計工作,原理設計主要包括系統總體設計和詳細設計,最終產生詳細的設計文檔和硬件原理圖。

原理設計和PCB設計是設計人員最主要的兩個工作之一,在原理設計過程中,我們需要規劃硬件內部資源,如系統存儲空間,以及各個外圍電路模塊的實現。另外,對系統主要的外圍電路,如電源、復位等也需要仔細的考慮,在一些高速設計或特殊應用場合,還需要考慮EMC/EMI等。

電源是保證硬件系統正常工作的基礎,設計中要詳細的分析:系統能夠提供的電源輸入;單板需要產生的電源輸出;各個電源需要提供的電流大小;電源電路效率;各個電源能夠允許的波動範圍;整個電源系統需要的上電順序等等。

爲了系統穩定可靠的工作,復位電路的設計也非常重要,如何保證系統不會在外界干擾的情況下異常復位,如何保證在系統運行異常的時候能夠及時復位,以及如何合理的復位,才能保證系統完整的復位後,這些也都是我們在原理設計的時候需要考慮的。

同樣的,時鐘電路的設計也是非常重要的一個方面,一個不好的時鐘電路設計,可能會引起通信產品的數據丟包,產生大的EMI,甚至導致系統不穩定。

 

原理圖設計中要有「拿來主義」!現在的芯片廠家一般都可以提供參考設計的原理圖,所以要儘量的藉助這些資源,在充分理解參考設計的基礎上,做一些自己的發揮。

硬件階段4:PCB圖設計


PCB設計階段,即是將原理圖設計轉化爲實際的可加工的PCB 線路板,目前主流的PCB 設計軟件有PADS,Candence 和Protel幾種。

PCB設計,尤其是高速PCB,需要考慮EMC/EMI,阻抗控制,信號質量等,對PCB 設計人員的要求比較高。爲了驗證設計的PCB是否符合要求,有的還需要進行PCB 仿真。並依據仿真結果調整PCB 的佈局佈線,完成整個的設計。

硬件階段5:PCB加工文件製作與PCB打樣


PCB繪製完成以後,在這一階段,我們需要生成加工廠可識別的加工文件,即常說的光繪文件,將其交給加工廠打樣PCB 空板。一般1~4層板可以在一週內完成打樣。

硬件階段6:硬件產品的焊接與調試


在拿到加工廠打樣會的 PCB空板以後,接下來我們,需要檢查PCB空板是否和我們設計預期一樣,是否存在明顯的短路或斷痕,檢查通過後,則需要將前期採購的元器件和PCB空板交由生產廠家進行焊接(如果PCB 電路不復雜,爲了加快速度,也可以直接手工焊接元器件)。

當PCB 已經焊接完成後,在調試PCB之前,一定要先認真檢查是否有可見的短路和管腳搭錫等故障,檢查是否有元器件型號放置錯誤,第一腳放置錯誤,漏裝配等問題,然後用萬用表測量各個電源到地的電阻,以檢查是否有短路,這樣可以避免貿然上電後損壞單板。調試的過程中要有平和的心態,遇見問題是非常正常的,要做的就是多做比較和分析,逐步的排除可能的原因,直致最終調試成功。

在硬件調試過程中,需要經常使用到的調試工具有萬用表和示波器,邏輯分析儀等,用於測試和觀察板內信號電壓和信號質量,信號時序是否滿足要求。

硬件階段7:硬件產品測試


當硬件產品調試通過以後,我們需要對照產品產品的需求說明,一項一項進行測試,確認是否符合預期的要求,如果達不到要求,則需要對硬件產品進行調試和修改,直到符合產品需求文明(一般都以需求說明文檔作爲評判的一句,當然明顯的需求說明錯誤除外)。

硬件階段8:硬件產品


我們最終開發的硬件成功。一個完整的,完成符合產品需求的硬件產品還不能說明一個成功的產品開發過程,我們還需要按照預定計劃,準時高質量的完成。纔是一個成功的產品開發過程。

-END-

整理文章爲傳播相關技術,版權歸原作者所有 |

| 如有侵權,請聯繫刪除 |

往期好文合集

重磅,成立南京集成電路大學!

90後馬來西亞女孩闖華爲

十分有趣的電子雕塑

  最 後  

 

若覺得文章不錯,轉發分享,也是我們繼續更新的動力。

5T資源大放送!包括但不限於:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、單片機、等等

在公衆號內回覆「更多資源」,即可免費獲取,期待你的關注~