嵌入式系統(tǒng)設(shè)計方法變化的背景
嵌入式系統(tǒng)設(shè)計方法的演化總的來說是因為應(yīng)用需求的牽引和IT技術(shù)的推動,隨著微電子技術(shù)的不斷創(chuàng)新和發(fā)展,大規(guī)模集成電路的集成度和工藝水平不斷提高。硅材料與人類智慧的結(jié)合,生產(chǎn)出大批量的低成本、高可靠性和高精度的微電子結(jié)構(gòu)模塊,推動了一個全新的技術(shù)領(lǐng)域和產(chǎn)業(yè)的發(fā)展。
在此基礎(chǔ)上發(fā)展起來的器件可編程思想和微處理(器)技術(shù)可以用軟件來改變和實現(xiàn)硬件的功能。微處理器和各種可編程大規(guī)模集成專用電路、半定制器件的大量應(yīng)用,開創(chuàng)了一個嶄新的應(yīng)用世界,以至廣泛影響著并在逐步改變著人類的生產(chǎn)、生活和學(xué)習(xí)等社會活動。
計算機(jī)硬件平臺性能的大幅度提高,使很多復(fù)雜算法和方便使用的界面得以實現(xiàn),大大提高了工作效率,給復(fù)雜嵌入式系統(tǒng)輔助設(shè)計提供了物理基礎(chǔ)。
高性能的EDA綜合開發(fā)工具(平臺)得到長足發(fā)展,而且其自動化和智能化程度不斷提高,為復(fù)雜的嵌入式系統(tǒng)設(shè)計提供了不同用途和不同級別集編輯、布局、布線、編譯、綜合、模擬、測試、驗證和器件編程等一體化的易于學(xué)習(xí)和方便使用的開發(fā)集成環(huán)境。
硬件描述語言HDL(Hardware DescrIPtion Language)的發(fā)展為復(fù)雜電子系統(tǒng)設(shè)計提供了建立各種硬件模型的工作媒介。它的描述能力和抽象能力強(qiáng),給硬件電路,特別是半定制大規(guī)模集成電路設(shè)計帶來了重大的變革。目前,用得較多的有已成為IEEE為 STD1076標(biāo)準(zhǔn)的VHDL、IEEE STD 1364標(biāo)準(zhǔn)的Verilog HDL和Altera公司企業(yè)標(biāo)準(zhǔn)的AHDL等?! ∮捎贖DL的發(fā)展和標(biāo)準(zhǔn)化,世界上出現(xiàn)了一批利用HDL進(jìn)行各種集成電路功能模塊專業(yè)設(shè)計的公司。其任務(wù)是按常用或?qū)S霉δ?,用HDL來描述集成電路的功能和結(jié)構(gòu),并經(jīng)過不同級別的驗證形成不同級別的IP內(nèi)核模塊,供芯片設(shè)計人員裝配或集成選用?! P(Intellectual Property)內(nèi)核模塊是一種預(yù)先設(shè)計好的甚至已經(jīng)過驗證的具有某種確定功能的集成電路、器件或部件。它有幾種不同形式。IP內(nèi)核模塊有行為(behavior)、結(jié)構(gòu)(structure)和物理(physical)3級不同程度的設(shè)計,對應(yīng)有主要描述功能行為的“軟IP內(nèi)核(soft IP core)”、完成結(jié)構(gòu)描述的“固IP內(nèi)核(firm IP core)”和基于物理描述并經(jīng)過工藝驗證的“硬IP內(nèi)核(hard IP core)”3個層次。這相當(dāng)于集成電路(器件或部件)的毛坯、半成品和成品的設(shè)計技術(shù)?! ≤汭P內(nèi)核通常是用某種HDL文本提交用戶,它已經(jīng)過行為級設(shè)計優(yōu)化和功能驗證,但其中不含有任何具體的物理信息。據(jù)此,用戶可以綜合出正確的門電路級網(wǎng)表,并可以進(jìn)行后續(xù)結(jié)構(gòu)設(shè)計,具有最大的靈活性,可以很容易地借助于EDA綜合工具與其他外部邏輯電路結(jié)合成一體,根據(jù)各種不同的半導(dǎo)體工藝,設(shè)計成具有不同性能的器件??梢陨唐坊能汭P內(nèi)核一般電路結(jié)構(gòu)總門數(shù)都在5000門以上。但是,如果后續(xù)設(shè)計不當(dāng),有可能導(dǎo)致整個結(jié)果失敗。軟IP內(nèi)核又稱作虛擬器件?! ∮睮P內(nèi)核是基于某種半導(dǎo)體工藝的物理設(shè)計,已有固定的拓?fù)洳季趾途唧w工藝,并已經(jīng)過工藝驗證,具有可保證的性能。其提供給用戶的形式是電路物理結(jié)構(gòu)掩模版圖和全套工藝文件,是可以拿來就用的全套技術(shù)?! 」蘄P內(nèi)核的設(shè)計深度則是介于軟IP內(nèi)核和硬IP內(nèi)核之間,除了完成硬IP內(nèi)核所有的設(shè)計外,還完成了門電路級綜合和時序仿真等設(shè)計環(huán)節(jié)。一般以門電路級網(wǎng)表形式提交用戶使用。
TI,Philips和Atmel等廠商就是通過Intel授權(quán),用其MCS51的IP內(nèi)核模塊結(jié)合自己的特長開發(fā)出有個性的與Intel MCS51兼容的單片機(jī)。
常用的IP內(nèi)核模塊有各種不同的CPU(32/64位CISC/RISC結(jié)構(gòu)的CPU或8/16位微控制器/單片機(jī))、32/64位 DSP、DRAM、SRAM、MRAM、EEPROM、Flashmemory、A/D、D/A、MPEG/JPEG、USB、PCIe、、MIPI、標(biāo)準(zhǔn)接口、網(wǎng)絡(luò)單元、編譯器、編碼/解碼器和模擬器件模塊等。豐富的IP內(nèi)核模塊庫為快速地設(shè)計專用集成電路和單片系統(tǒng)以及盡快占領(lǐng)市場提供了基本保證。
軟件技術(shù)的進(jìn)步,特別是嵌入式實時操作系統(tǒng)EOS(Embedded Operation System)和RTOS的推出,為開發(fā)復(fù)雜嵌入式系統(tǒng)應(yīng)用軟件提供了底層支持和高效率開發(fā)平臺。
02
嵌入式系統(tǒng)設(shè)計方法的變化
過去擅長于軟件設(shè)計的編程人員一般對硬件電路設(shè)計“敬而遠(yuǎn)之”,硬件設(shè)計和軟件設(shè)計被認(rèn)為是性質(zhì)完全不同的技術(shù)。
隨著電子信息技術(shù)的發(fā)展,電子工程出身的設(shè)計人員,往往還逐步涉足軟件編程。其主要形式是通過微控制器(國內(nèi)習(xí)慣稱作單片機(jī))的應(yīng)用,學(xué)會相應(yīng)的匯編語言編程。在設(shè)計規(guī)模更大的集散控制系統(tǒng)時,必然要用到已普及的PC機(jī),以其為上端機(jī),從而進(jìn)一步學(xué)習(xí)使用C、C++、Python等高級語言編程作系統(tǒng)程序,設(shè)計系統(tǒng)界面,通過與單片機(jī)控制的前端機(jī)進(jìn)行多機(jī)通信構(gòu)成集中分布控制系統(tǒng)。
軟件編程出身的設(shè)計人員則很少有興趣去學(xué)習(xí)應(yīng)用電路設(shè)計。但是,隨著計算機(jī)技術(shù)的飛速發(fā)展,特別是硬件描述語言HDL的發(fā)明,系統(tǒng)硬件設(shè)計方法發(fā)生了變化,數(shù)字系統(tǒng)的硬件組成及其行為完全可以用HDL來描述和仿真。在這種情況下,設(shè)計硬件電路不再是硬件設(shè)計工程師的專利,擅長軟件編程的設(shè)計人員可以借助于HDL工具來描述硬件電路的行為、功能、結(jié)構(gòu)、數(shù)據(jù)流、信號連接關(guān)系和定時關(guān)系,設(shè)計出滿足各種要求的硬件系統(tǒng)?!?a target="_blank">EDA工具允許有兩種設(shè)計輸入工具,分別適應(yīng)硬件電路設(shè)計人員和軟件編程人員兩種不同背景的需要。讓具有硬件背景的設(shè)計人員用已習(xí)慣的原理圖輸入方式,而讓具有軟件背景的設(shè)計人員用硬件描述語言輸入方式。由于用HDL描述進(jìn)行輸入,因而與系統(tǒng)行為描述更接近,且更便于綜合、時域傳遞和修改,還能建立獨立于工藝的設(shè)計文件,所以,擅長軟件編程的人一旦掌握了HDL和一些必要的硬件知識,往往可以比習(xí)慣于傳統(tǒng)設(shè)計的工程師設(shè)計出更好的硬件電路和系統(tǒng)。所以,習(xí)慣于傳統(tǒng)設(shè)計的工程師應(yīng)該學(xué)會用HDL來描述和編程。
為什么在大部分畢業(yè)生眼中,只有嵌入式、單片機(jī)、ARM、FPGA才是技術(shù)呢?現(xiàn)在的高校,幾乎都開設(shè)這方面的專業(yè),這方面固然有很多高層次人才,高待遇的,但這個東西并不是適合所有人的,大部分起點低的,或者年級偏大的,其實不應(yīng)該去做這些東西。
現(xiàn)在的嵌入式都是快餐,隨著大學(xué)生的不停涌入,價值越來越低,并且這些群體大部分都能做出東西來,卻就是做不穩(wěn)定,最后就是白菜價格也賣不出去,而根本點在于缺少對生產(chǎn)、質(zhì)量、售后、測試、模擬基礎(chǔ)功底的漠視。
中國發(fā)展這么多年,本質(zhì)上講,真正賺錢的,還是這幫搞生產(chǎn),抓質(zhì)量,懂銷售的群體賺錢,絕對不是研發(fā)技術(shù)人員。但技術(shù)人員,總是把技術(shù)舉得高高的,而支撐技術(shù)變成產(chǎn)品再銷售出去的環(huán)節(jié),則非常漠視,最后一輩子只能打工。相反,若抓其他幾個環(huán)節(jié),則完全可以發(fā)展出來當(dāng)老板,自己聘請技術(shù)人員即可。
到今天為止,一個公司的倒閉,沒有幾個是因為技術(shù)問題導(dǎo)致的,大多數(shù)都是因為其他原因,比如市場、生產(chǎn)、品質(zhì)等等。賺錢是一個體系,研發(fā)只是其中一塊。
可以說,對于國內(nèi)大部分公司來說,就今天來說,貿(mào)、工、技路線遠(yuǎn)比技、工、貿(mào)容易成功的多。
21ic援引一位標(biāo)準(zhǔn)的技術(shù)人員的話:現(xiàn)在我教給我同事的,大部分都是工廠的東西:一看、二想、三做、四檢查。其次就是基于事實,用常理去推理分析,讓他們舍去所謂的高科技,把常理用好。通過這兩點來做各種事情,而不僅僅限于技術(shù)。同時,盡可能避開大家做的東西,大家都喜歡做嵌入式,那我們就做給嵌入式配套的設(shè)備,或者嵌入式群體做不了的設(shè)備,只有這樣,才能獲得高額的利潤。
03
嵌入式系統(tǒng)設(shè)計的3個層次
21ic家了解到,嵌入式系統(tǒng)設(shè)計有3個不同層次:
第1層次:以PCB CAD軟件和ICE為主要工具的設(shè)計方法
這是過去直至現(xiàn)在我國單片機(jī)應(yīng)用系統(tǒng)設(shè)計人員一直沿用的方法,其步驟是先抽象后具體?! 〕橄笤O(shè)計主要是根據(jù)嵌入式應(yīng)用系統(tǒng)要實現(xiàn)的功能要求,對系統(tǒng)功能細(xì)化,分成若干功能模塊,畫出系統(tǒng)功能框圖,再對功能模塊進(jìn)行硬件和軟件功能實現(xiàn)的分配。 具體設(shè)計包括硬件設(shè)計和軟件設(shè)計。硬件設(shè)計主要是根據(jù)性能參數(shù)要求對各功能模塊所需要使用的元器件進(jìn)行選擇和組合,其選擇的基本原則就是市場上可以購買到的性價比最高的通用元器件。必要時,須分別對各個沒有把握的部分進(jìn)行搭試、功能檢驗和性能測試,從模塊到系統(tǒng)找到相對優(yōu)化的方案,畫出電路原理圖。硬件設(shè)計的關(guān)鍵一步就是利用印制板(PCB)計算機(jī)輔助設(shè)計(CAD)軟件對系統(tǒng)的元器件進(jìn)行布局和布線,接著是印制板加工、裝配和硬件調(diào)試?! 」ぷ髁孔畲蟮牟糠质擒浖O(shè)計。軟件設(shè)計貫穿整個系統(tǒng)的設(shè)計過程,主要包括任務(wù)分析、資源分配、模塊劃分、流程設(shè)計和細(xì)化、編碼調(diào)試等。軟件設(shè)計的工作量主要集中在程序調(diào)試,所以軟件調(diào)試工具就是關(guān)鍵。最常用和最有效的工具是在線仿真器(ICE)?! 〉?層次:以EDA工具軟件和EOS為開發(fā)平臺的設(shè)計方法
隨著微電子工藝技術(shù)的發(fā)展,各種通用的可編程半定制邏輯器件應(yīng)運而生。在硬件設(shè)計時,設(shè)計師可以利用這些半定制器件,逐步把原先要通過印制板線路互連的若干標(biāo)準(zhǔn)邏輯器件自制成專用集成電路(ASIC)使用,這樣,就把印制板布局和布線的復(fù)雜性轉(zhuǎn)換成半定制器件內(nèi)配置的復(fù)雜性。
然而,半定制器件的設(shè)計并不需要設(shè)計人員有半導(dǎo)體工藝和片內(nèi)集成電路布局和布線的知識和經(jīng)驗。隨著半定制器件的規(guī)模越來越大,可集成的器件越來越多,使印制板上互連器件的線路、裝配和調(diào)試費用越來越少,不僅大大減少了印制板的面積和接插件的數(shù)量,降低了系統(tǒng)綜合成本,增加了可編程應(yīng)用的靈活性,更重要的是降低了系統(tǒng)功耗,提高了系統(tǒng)工作速度,大大提高了系統(tǒng)的可靠性和安全性。 這樣,硬件設(shè)計人員從過去選擇和使用標(biāo)準(zhǔn)通用集成電路器件,逐步轉(zhuǎn)向自己設(shè)計和制作部分專用的集成電路器件,而這些技術(shù)是由各種EDA工具軟件提供支持的。 半定制邏輯器件經(jīng)歷了可編程邏輯陣列PLA、可編程陣列邏輯PAL、通用陣列邏輯GAL、復(fù)雜可編程邏輯器件CPLD和現(xiàn)場可編程門陣列FPGA的發(fā)展過程。其趨勢是集成度和速度不斷提高,功能不斷增強(qiáng),結(jié)構(gòu)趨于更合理,使用變得更靈活和方便?! ≡O(shè)計人員可以利用各種EDA工具和標(biāo)準(zhǔn)的CPLD和FPGA等,設(shè)計和自制用戶專用的大規(guī)模集成電路。然后再通過自下而上的設(shè)計方法,把用半定制器件設(shè)計自制的集成電路、可編程外圍器件、所選擇的ASIC與嵌入式微處理器或微控制器在印制板上布局、布線構(gòu)成系統(tǒng)。 第3層次:以IP內(nèi)核庫為設(shè)計基礎(chǔ),用軟硬件協(xié)同設(shè)計技術(shù)的設(shè)計方法
20世紀(jì)90年代后,進(jìn)一步開始了從“集成電路”級設(shè)計不斷轉(zhuǎn)向“集成系統(tǒng)”級設(shè)計。目前已進(jìn)入單片系統(tǒng)SOC(System o-n a chip)設(shè)計階段,并開始進(jìn)入實用階段。這種設(shè)計方法不是把系統(tǒng)所需要用到的所有集成電路簡單地二次集成到1個芯片上,如果這樣實現(xiàn)單片系統(tǒng),是不可能達(dá)到單片系統(tǒng)所要求的高密度、高速度、高性能、小體積、低電壓、低功耗等指標(biāo)的,特別是低功耗要求。
單片系統(tǒng)設(shè)計要從整個系統(tǒng)性能要求出發(fā),把微處理器、模型算法、芯片結(jié)構(gòu)、外圍器件各層次電路直至器件的設(shè)計緊密結(jié)合起來,并通過建立在全新理念上的系統(tǒng)軟件和硬件的協(xié)同設(shè)計,在單個芯片上完成整個系統(tǒng)的功能。有時也可能把系統(tǒng)做在幾個芯片上。因為,實際上并不是所有的系統(tǒng)都能在一個芯片上實現(xiàn)的;還可能因為實現(xiàn)某種單片系統(tǒng)的工藝成本太高,以至于失去商業(yè)價值。目前,進(jìn)入實用的單片系統(tǒng)還屬簡單的單片系統(tǒng),如智能IC卡等。但幾個著名的半導(dǎo)體廠商正在緊鑼密鼓地研制和開發(fā)像單片PC這樣的復(fù)雜單片系統(tǒng)。 單片系統(tǒng)的設(shè)計如果從零開始,這既不現(xiàn)實也無必要。因為除了設(shè)計不成熟、未經(jīng)過時間考驗,其系統(tǒng)性能和質(zhì)量得不到保證外,還會因為設(shè)計周期太長而失去商業(yè)價值?! 榱思涌靻纹到y(tǒng)設(shè)計周期和提高系統(tǒng)的可靠性,目前最有效的一個途徑就是通過授權(quán),使用成熟優(yōu)化的IP內(nèi)核模塊來進(jìn)行設(shè)計集成和二次開發(fā),利用膠粘邏輯技術(shù)GLT(Glue Logic Technology),把這些IP內(nèi)核模塊嵌入到SoC中。IP內(nèi)核模塊是單片系統(tǒng)設(shè)計的基礎(chǔ),究竟購買哪一級IP內(nèi)核模塊,要根據(jù)現(xiàn)有基礎(chǔ)、時間、資金和其他條件權(quán)衡確定。
購買硬IP內(nèi)核模塊風(fēng)險最小,但付出最大,這是必然的。但總的來說,通過購買IP內(nèi)核模塊不僅可以降低開發(fā)風(fēng)險,還能節(jié)省開發(fā)費用,因為一般購買IP內(nèi)核模塊的費用要低于自己單獨設(shè)計和驗證的費用。當(dāng)然,并不是所需要的IP內(nèi)核模塊都可以從市場上買得到。為了壟斷市場,有一些公司開發(fā)出來的關(guān)鍵IP內(nèi)核模塊(至少暫時)是不愿意授權(quán)轉(zhuǎn)讓使用的。像這樣的IP內(nèi)核模塊就不得不自己組織力量來開發(fā)?! ∵@3個層次各有各的應(yīng)用范圍。從應(yīng)用開發(fā)角度看,在相當(dāng)長的一段時間內(nèi),都是采用前2種方法。第3層次設(shè)計方法對一般具體應(yīng)用人員來說,只能用來設(shè)計簡單的單片系統(tǒng)。而復(fù)雜的單片系統(tǒng)則是某些大的半導(dǎo)體廠商才能設(shè)計和實現(xiàn)的,并且用這種方法實現(xiàn)的單片系統(tǒng),只可能是那些廣泛使用、具有一定規(guī)模的應(yīng)用系統(tǒng)才值得投入研制。還有些應(yīng)用系統(tǒng),因為技術(shù)問題或商業(yè)價值問題并不適宜用單片實現(xiàn)。當(dāng)它們以商品形式推出相應(yīng)單片系統(tǒng)后,應(yīng)用人員只要會選用即可。
所以,3個層次的設(shè)計方法會并存,并不會簡單地用后者取代前者。初級應(yīng)用設(shè)計人員會以第1種方法為主;富有經(jīng)驗的設(shè)計人員會以第2種方法為主;很專業(yè)的設(shè)計人員會用第3種方法進(jìn)行簡單單片系統(tǒng)的設(shè)計和應(yīng)用。但所有的設(shè)計人員都可以應(yīng)用半導(dǎo)體大廠商推出的用第3種方法設(shè)計的專用單片系統(tǒng)。
04
嵌入式硬件系統(tǒng)設(shè)計
嵌入式設(shè)計是個龐大的工程,在軟件方面嵌入式ARM已經(jīng)有了多次介紹,具體可以觀看《深度:嵌入式系統(tǒng)的軟件架構(gòu)設(shè)計!》一文。在硬件電路設(shè)計方面,21ic家了解到有幾個注意事項,首先,咱們了解下嵌入式的硬件構(gòu)架。
我們知道,CPU是這個系統(tǒng)的靈魂,所有的外圍配置都與其相關(guān)聯(lián),這也突出了嵌入式設(shè)計的一個特點硬件可剪裁。在做嵌入式硬件設(shè)計中,以下幾點需要關(guān)注。
第一、電源確定
電源對于嵌入式系統(tǒng)中的作用可以看做是空氣對人體的作用,甚至更重要:人呼吸的空氣中有氧氣、二氧化碳和氮氣等但是含量穩(wěn)定,這就相當(dāng)于電源系統(tǒng)中各種雜波,我們希望得到純凈和穩(wěn)定符合要求的電源,但由于各種因素制約,只是我們的夢想。這個要關(guān)注兩個方面:
a、電壓嵌入式系統(tǒng)需要各種量級的電源比如常見的5v、3.3v、1.8v等,為盡量減小電源的紋波,在嵌入式系統(tǒng)中使用LDO器件。如果采用DCDC不僅個頭大,其紋波也是一個很頭疼的問題。
b、電流嵌入式系統(tǒng)的正常運行不但需要穩(wěn)定足夠的電源,還要有足夠的電流,因此在選擇電源器件的時候需要考慮其負(fù)載,我設(shè)計時一般留有30%的余量。
如果是多層板,電源部分在layout的時候需電源分割,這時需要注意分割路徑,盡量將一定量的電源放置在一起。如果是雙面板,則走線寬度需要注意,在板子允許的情況下盡量加寬。合適的退耦電容盡量靠近電源管腳。
第二、 晶振確定
晶振相當(dāng)于嵌入式系統(tǒng)的心臟,其穩(wěn)定與否直接關(guān)系其運行狀態(tài)和通訊性能。常見的振有無源晶振,有源晶振,首先要確定其振蕩頻率,其次要確定晶振類型。
a、無源晶振其匹配電容和匹配電阻的選擇,這部分一般依據(jù)參考手冊。在單片機(jī)設(shè)計中,經(jīng)常使用插件晶振配合瓷片電容。在ARM中,為了減少空間和便于布線,經(jīng)常使用四角無源晶振配合貼片電容。雖然我們對于固定晶振的匹配電路比較熟悉,但是為了達(dá)到萬無一失,還是要看參考手冊確定電容大小,是否需要匹配電阻等細(xì)節(jié)。
b、有源晶振具有更好的更準(zhǔn)確的時鐘信號,但是相比之下,比無緣晶振價格高,因此這也是在硬件電路設(shè)計中需要關(guān)注的成本。
在做電路板設(shè)計時需要注意晶振走線盡量靠近芯片,關(guān)鍵信號遠(yuǎn)離時鐘走線。在條件允許的情況下增加接地保護(hù)環(huán)。如果是多層板,也要講關(guān)鍵信號遠(yuǎn)離晶振的走線。
第三、 預(yù)留測試IO口
在嵌入式調(diào)試階段,在管腳資源豐富的情況下,我通常預(yù)留一個IO口連接led或者喇叭,為下一步軟件的編寫做鋪墊。在嵌入式系統(tǒng)運行過程中適當(dāng)控制該IO接口,從而判斷系統(tǒng)是否正常運行。
第四、外擴(kuò)存儲設(shè)備
一個嵌入式系統(tǒng)如果有電源、晶振和CPU,那么這就是我們熟悉的最小系統(tǒng)。如果該嵌入式系統(tǒng)需要運行大點的操作系統(tǒng),那么不但需要CPU具有 MMU,CPU還需要外接SDRAM和NANDFLASH。如果該cpu具有SDRAM和NANDFLASH控制器,那么在硬件設(shè)計上不用過多的考慮地址線的使用。如果沒有相關(guān)的控制器,那么需要注意地址線的使用。
這部分在LAYOUT的時候是一個重點,究其原因就是要使相關(guān)信號線等長以確保信號的延時相等,時鐘和DQS的差分信號線走線。在布線的時候各種布線技巧需要綜合使用,例如與cpu對稱分布,菊花鏈布線、T型布線,這都需要依據(jù)內(nèi)存的個數(shù)多少來進(jìn)行選擇,一般來說個數(shù)越多,布線越復(fù)雜,但是知道其關(guān)鍵點,一切迎刃而解。
第五、功能接口
一個嵌入式系統(tǒng)最重要的就是通過各種接口來控制外圍模塊,達(dá)到設(shè)計者預(yù)設(shè)的目的。常用的接口有串口(可用來連接藍(lán)牙,wifi和3G等模塊),USB接口、 網(wǎng)絡(luò)接口、JTAG接口、音視頻接口、HDMI接口等等。由于這些接口與外部模塊連接,做好電磁兼容設(shè)計是重要的一項工作。除此之外,在LAYOUT的時候注意差分線的使用。
第六、屏幕
這個功能之所以單獨列出來,是由于其可有可無。如果一個嵌入式系統(tǒng)只是作為一個連接器連接外圍設(shè)備模塊,通過相關(guān)接口連接到電腦主機(jī)或者直接掛在網(wǎng)絡(luò)上,那么屏幕就不需要了。但是如果做出來的是一個消費類產(chǎn)品,與用戶交互頻繁,這就不得不嘮叨幾句。
電容屏幕是嵌入式屏幕的首選,在電路設(shè)計中需要注意觸屏連接線和顯示屏連接線的布局。在走線的過程中盡量短的靠近主控cpu,同時注意配對信號走差分線,RGB控制信號走等長。各種信號走線間距遵循3W規(guī)則,避免相互干擾。在屏幕的設(shè)計中,一定要確保功率和防止干擾,以防屏幕閃屏和花屏現(xiàn)象的出現(xiàn)。
06
嵌入式產(chǎn)品開發(fā)流程
嵌入式產(chǎn)品,與普通電子產(chǎn)品一樣,開發(fā)過程都需要遵循一些基本的流程,都是一個從需求分析到總體設(shè)計,詳細(xì)設(shè)計到最后產(chǎn)品完成的過程。但是,與普通電子產(chǎn)品相比,嵌入式產(chǎn)品的開發(fā)流程又有其特殊之處。它包含嵌入式軟件和嵌入式硬件兩大部分,針對嵌入式硬件和軟件的開發(fā),在普通的電子產(chǎn)品開發(fā)過程中,是不需要涉及的。21ic家了解到嵌入式產(chǎn)品的研發(fā)流程具體如下圖:
下面,針對嵌入式產(chǎn)品的開發(fā)過程中的各個階段,我們進(jìn)行詳細(xì)探討。
階段1:產(chǎn)品需求
在這一個階段,我們需要弄清楚的是產(chǎn)品的需求從何而來,一個成功的產(chǎn)品,我們需要滿足哪些需求。只有需求明確了,我們的產(chǎn)品開發(fā)目標(biāo)才能明確。在產(chǎn)品需求分析階段,我們可以通過以下這些途徑獲取產(chǎn)品需求:
1)市場分析與調(diào)研,主要是看市場有什么需求,還有就是前沿的技術(shù)是什么(站在做一款產(chǎn)品的角度);2)客戶調(diào)研和用戶定位,從市場廣大客戶那獲取最準(zhǔn)確的產(chǎn)品需求(要注意分析市場,產(chǎn)品生命周期,升級是否方便);3)利潤導(dǎo)向(成本預(yù)算);4)如果是外包項目,則需要我們的客戶提供產(chǎn)品的需求(直接從客戶那獲取,讓客戶簽協(xié)議);
當(dāng)一個項目做完的時候,如果客戶突然又增加需求,增加功能,將導(dǎo)致你的項目周期嚴(yán)重拖延,成本劇烈上升,并且測試好的產(chǎn)品可能要全部重新測試,原本的設(shè)計可能將不會滿足當(dāng)前的要求,所以做項目之前,最好要跟客戶把需求確定下來,并且簽定一份協(xié)議,否則,你辛苦多少個日日夜夜,得到的將是一個無法收拾的爛攤子!
階段2:產(chǎn)品規(guī)格說明
在前一個階段,我們搜集了產(chǎn)品的所有需求。那么在產(chǎn)品規(guī)格說明階段,我們的任務(wù)是將所有的需求,細(xì)化成產(chǎn)品的具體的規(guī)格,就比如一個簡單的USB轉(zhuǎn)串口線,我們需要確定產(chǎn)品的規(guī)格,包括:
1)產(chǎn)品的外觀;2)產(chǎn)品支持的操作系統(tǒng);3)產(chǎn)品的接口形式和支持的規(guī)范;
等等諸如此類,切記,在形成了產(chǎn)品的規(guī)格說明后,在后續(xù)的開發(fā)過程中,我們必須嚴(yán)格的遵守,沒有200%的理由,不能隨意更改產(chǎn)品的需求。否則,產(chǎn)品的開發(fā)過程必將是一個反復(fù)無期的過程。
《產(chǎn)品規(guī)格說明》主要從以下方面進(jìn)行考慮:
1)考慮該產(chǎn)品需要哪些硬件接口;2)產(chǎn)品用在哪些環(huán)境下,要做多大,耗電量如何。如果是消費類產(chǎn)品,還跟設(shè)計美觀,產(chǎn)品是否便于攜帶,以確定板子大小的需求,是否防水;3)產(chǎn)品成本要求;4)產(chǎn)品性能參數(shù)的說明(例如交換機(jī),如果是百兆的速率,用于家庭和一般公司;如果是用于整個省的交換,那設(shè)計的速率肯定數(shù)十萬兆以上了)所以說,產(chǎn)品性能參數(shù)的不同,就會影響到我們設(shè)計考慮的不同,那么產(chǎn)品的規(guī)格自然就不同了;5)需要適應(yīng)和符合的國家標(biāo)準(zhǔn),國際標(biāo)準(zhǔn),或行業(yè)標(biāo)準(zhǔn);
階段3:產(chǎn)品總體設(shè)計方案
在完成了產(chǎn)品規(guī)格說明以后,我們需要針對這一產(chǎn)品,了解當(dāng)前有哪些可行的方案,通過幾個方案進(jìn)行對比,包括從成本、性能、開發(fā)周期、開發(fā)難度等多方面進(jìn)行考慮,最終選擇一個最適合自己的產(chǎn)品總體設(shè)計方案。
在這一階段,我們除了確定具體實現(xiàn)的方案外,我們還需要綜合考慮,產(chǎn)品開發(fā)周期,多少人月的工作量,需要哪些資源或者外部協(xié)助,以及開發(fā)過程中可能遇到的風(fēng)險及應(yīng)對措施,形成整個項目的項目計劃,指導(dǎo)我們的整個開發(fā)過程。
階段4:產(chǎn)品概要設(shè)計
產(chǎn)品概要設(shè)計主要是在總體設(shè)計方案的基礎(chǔ)上進(jìn)一步的細(xì)化,具體從硬件和軟件兩方面入手:
硬件模塊概要設(shè)計
硬件模塊概要設(shè)計,主要從硬件的角度出發(fā),確認(rèn)整個系統(tǒng)的架構(gòu),并按功能來劃分各個模塊,確定各個模塊的的大概實現(xiàn)。首先要依據(jù)我們到底要哪些外圍功能以及產(chǎn)品要完成的工作,來進(jìn)行CPU選型(注意:CPU一旦確定,那么你的周圍硬件電路,就要參考該CPU廠家提供的方案電路來設(shè)計)。然后再根據(jù)產(chǎn)品的功能需求選芯片,比如是外接AD還是用片內(nèi)AD,采用什么樣的通訊方式,有什么外部接口,還有最重要的是要考慮電磁兼容。
一般一款CPU 的生存周期是5-8年,你考慮選型的時候要注意,不要選用快停產(chǎn)的CPU,以免出現(xiàn)這樣的結(jié)局:產(chǎn)品辛辛苦苦開發(fā)了1到2 年,剛開發(fā)出來,還沒賺錢,CPU又停產(chǎn)了,又得要重新開發(fā)。很多公司就死在這個上面。
軟件模塊概要設(shè)計
軟件模塊概要設(shè)計階段,主要是依據(jù)系統(tǒng)的要求,將整個系統(tǒng)按功能進(jìn)行模塊劃分,定義好各個功能模塊之間的接口,以及模塊內(nèi)主要的數(shù)據(jù)結(jié)構(gòu)等。
階段5:產(chǎn)品詳細(xì)設(shè)計
硬件模塊詳細(xì)設(shè)計
主要是具體的電路圖和一些具體要求,包括 PCB和外殼相互設(shè)計,尺寸這些參數(shù)。接下來,我們就需要依據(jù)硬件模塊詳細(xì)設(shè)計文檔的指導(dǎo),完成整個硬件的設(shè)計。包括原理圖、PCB的繪制。軟件模塊詳細(xì)設(shè)計
功能函數(shù)接口定義,該函數(shù)功能接口完成功能,數(shù)據(jù)結(jié)構(gòu),全局變量,完成任務(wù)時各個功能函數(shù)接口調(diào)用流程。在完成了軟件模塊詳細(xì)設(shè)計以后,就進(jìn)入具體的編碼階段,在軟件模塊詳細(xì)設(shè)計的指導(dǎo)下 ,完成整個系統(tǒng)的軟件編碼。
一定要注意需要先完成模塊詳細(xì)設(shè)計文檔以后,軟件才進(jìn)入實際的編碼階段,硬件進(jìn)入具體的原理圖、PCB實現(xiàn)階段,這樣才能盡量在設(shè)計之初就考慮周全,避免在設(shè)計過程中反復(fù)修改。提高開發(fā)效率,不要為了圖一時之快,沒有完成詳細(xì)設(shè)計,就開始實際的設(shè)計步驟。
階段6&7:產(chǎn)品調(diào)試與驗證
該階段主要是調(diào)整硬件或代碼,修正其中存在的問題和BUG,使之能正常運行,并盡量使產(chǎn)品的功能達(dá)到產(chǎn)品需求規(guī)格說明要求。
硬件部分:
1)目測加工會得PCB板是否存在短路,器件是否焊錯,或漏焊接;2)測試各電源對地電阻是否正常;3)上電,測試電源是否正常;4)分模塊調(diào)試硬件模塊,可借助示波器、邏輯分析儀等根據(jù)。
軟件部分:
驗證軟件單個功能是否實現(xiàn),驗證軟件整個產(chǎn)品功能是否實現(xiàn)。
階段8:測試
功能測試(測試不通過,可能是有BUG);
壓力測試(測試不通過,可能是有BUG或哪里參數(shù)設(shè)計不合理);
性能測試(產(chǎn)品性能參數(shù)要提煉出來,供將來客戶參考,這個就是你的產(chǎn)品特征的一部分);
其他專業(yè)測試:包括工業(yè)級的測試,例如含抗干擾測試,產(chǎn)品壽命測試,防潮濕測試,高溫和低溫測試(有的產(chǎn)品有很高的溫度或很低的溫度工作不正常,甚至停止工作)。
有的設(shè)備電子元器件在特殊溫度下,參數(shù)就會異常,導(dǎo)致整個產(chǎn)品出現(xiàn)故障或失靈現(xiàn)象的出現(xiàn);有的設(shè)備,零下幾十度的情況下,根本就啟動不了,開不了機(jī);有的設(shè)備在高溫下,電容或電阻值就會產(chǎn)生物理的變化,這些都會影響到產(chǎn)品的質(zhì)量。這里要引出一個話題,工業(yè)級產(chǎn)品與消費類產(chǎn)品有什么區(qū)別呢?工業(yè)級的產(chǎn)品就要避免這些異常和特殊問題,有的產(chǎn)品是在很深的海里工作,或者在嚴(yán)寒的山洞工作,或者火熱沙漠工作,或者顛簸的設(shè)備上,比如汽車;或者是需要防止雷擊;所以這就是工業(yè)級產(chǎn)品跟消費類產(chǎn)品的區(qū)別,消費類的產(chǎn)品就不需要做這么多的測試。
階段9:產(chǎn)品
通過上一階段完整測試驗證,在此階段,即得到我們開發(fā)成功的產(chǎn)品。在此階段,可以比較實際的產(chǎn)品和最初的形成的產(chǎn)品規(guī)格說明,看經(jīng)過一個完整的開發(fā)過程,是否產(chǎn)品完全符合最初的產(chǎn)品規(guī)格說明,又或者,中途發(fā)現(xiàn)產(chǎn)品規(guī)格說明存在問題,對它進(jìn)行了多少修改呢?
附錄:嵌入式硬件開發(fā)流程
之前,我們詳細(xì)講述了嵌入式產(chǎn)品的研發(fā)流程,那么在這一節(jié),我們具體以嵌入式產(chǎn)品的硬件部分為例,再次講解其開發(fā)過程,希望通過這一節(jié),大家能對嵌入式硬件開發(fā)流程有更深刻的認(rèn)識,在以后的學(xué)習(xí)和工作中,更加規(guī)范化和標(biāo)準(zhǔn)化,提高開發(fā)技能。嵌入式硬件開發(fā)流程一般如下圖,分為8個階段:
嵌入式產(chǎn)品的硬件形態(tài)各異,CPU 從簡單的4 位/8位單片機(jī)到32 位的ARM處理器,以及其他專用IC。另外,依據(jù)產(chǎn)品的不同需求,外圍電路也各不相同。每一次硬件開發(fā)過程,都需要依據(jù)實際的需求,考慮多方面的因素,選擇最合適的方案來。
硬件階段1:硬件產(chǎn)品需求
和普通的嵌入式產(chǎn)品需求一樣。階段1:產(chǎn)品需求。
硬件階段2:硬件總體設(shè)計方案
一個硬件開發(fā)項目,它的需求可能來自很多方面,比如市場產(chǎn)品的需要或性能提升的要求等,因此,作為一個硬件設(shè)計人員,我們需要主動去了解各個方面的需求并分析,根據(jù)系統(tǒng)所要完成的功能,選擇最合適的硬件方案。
在這一階段,我們需要分析整個系統(tǒng)設(shè)計的可行性,包括方案中主要器件的可采購性,產(chǎn)品開發(fā)投入,項目開發(fā)周期預(yù)計,開發(fā)風(fēng)險評估等,并針對開發(fā)過程中可能遇到的問題,提前選擇應(yīng)對方案,保證硬件的順利完成。
硬件階段3:硬件電路原理圖設(shè)計
在系統(tǒng)方案確定后,我們即可以開展相關(guān)的設(shè)計工作,原理設(shè)計主要包括系統(tǒng)總體設(shè)計和詳細(xì)設(shè)計,最終產(chǎn)生詳細(xì)的設(shè)計文檔和硬件原理圖。
原理設(shè)計和PCB設(shè)計是設(shè)計人員最主要的兩個工作之一,在原理設(shè)計過程中,我們需要規(guī)劃硬件內(nèi)部資源,如系統(tǒng)存儲空間,以及各個外圍電路模塊的實現(xiàn)。另外,對系統(tǒng)主要的外圍電路,如電源、復(fù)位等也需要仔細(xì)的考慮,在一些高速設(shè)計或特殊應(yīng)用場合,還需要考慮EMC/EMI等。
電源是保證硬件系統(tǒng)正常工作的基礎(chǔ),設(shè)計中要詳細(xì)的分析:系統(tǒng)能夠提供的電源輸入;單板需要產(chǎn)生的電源輸出;各個電源需要提供的電流大??;電源電路效率;各個電源能夠允許的波動范圍;整個電源系統(tǒng)需要的上電順序等等。
為了系統(tǒng)穩(wěn)定可靠的工作,復(fù)位電路的設(shè)計也非常重要,如何保證系統(tǒng)不會在外界干擾的情況下異常復(fù)位,如何保證在系統(tǒng)運行異常的時候能夠及時復(fù)位,以及如何合理的復(fù)位,才能保證系統(tǒng)完整的復(fù)位后,這些也都是我們在原理設(shè)計的時候需要考慮的。
同樣的,時鐘電路的設(shè)計也是非常重要的一個方面,一個不好的時鐘電路設(shè)計,可能會引起通信產(chǎn)品的數(shù)據(jù)丟包,產(chǎn)生大的EMI,甚至導(dǎo)致系統(tǒng)不穩(wěn)定。 原理圖設(shè)計中要有“拿來主義”!現(xiàn)在的芯片廠家一般都可以提供參考設(shè)計的原理圖,所以要盡量的借助這些資源,在充分理解參考設(shè)計的基礎(chǔ)上,做一些自己的發(fā)揮。
硬件階段4:PCB圖設(shè)計
PCB設(shè)計階段,即是將原理圖設(shè)計轉(zhuǎn)化為實際的可加工的PCB 線路板,目前主流的PCB 設(shè)計軟件有PADS,Candence 和Protel幾種。
PCB設(shè)計,尤其是高速PCB,需要考慮EMC/EMI,阻抗控制,信號質(zhì)量等,對PCB 設(shè)計人員的要求比較高。為了驗證設(shè)計的PCB是否符合要求,有的還需要進(jìn)行PCB 仿真。并依據(jù)仿真結(jié)果調(diào)整PCB 的布局布線,完成整個的設(shè)計。
硬件階段5:PCB加工文件制作與PCB打樣
PCB繪制完成以后,在這一階段,我們需要生成加工廠可識別的加工文件,即常說的光繪文件,將其交給加工廠打樣PCB 空板。一般1~4層板可以在一周內(nèi)完成打樣。
硬件階段6:硬件產(chǎn)品的焊接與調(diào)試
在拿到加工廠打樣會的 PCB空板以后,接下來我們,需要檢查PCB空板是否和我們設(shè)計預(yù)期一樣,是否存在明顯的短路或斷痕,檢查通過后,則需要將前期采購的元器件和PCB空板交由生產(chǎn)廠家進(jìn)行焊接(如果PCB 電路不復(fù)雜,為了加快速度,也可以直接手工焊接元器件)。
當(dāng)PCB 已經(jīng)焊接完成后,在調(diào)試PCB之前,一定要先認(rèn)真檢查是否有可見的短路和管腳搭錫等故障,檢查是否有元器件型號放置錯誤,第一腳放置錯誤,漏裝配等問題,然后用萬用表測量各個電源到地的電阻,以檢查是否有短路,這樣可以避免貿(mào)然上電后損壞單板。調(diào)試的過程中要有平和的心態(tài),遇見問題是非常正常的,要做的就是多做比較和分析,逐步的排除可能的原因,直致最終調(diào)試成功。
在硬件調(diào)試過程中,需要經(jīng)常使用到的調(diào)試工具有萬用表和示波器,邏輯分析儀等,用于測試和觀察板內(nèi)信號電壓和信號質(zhì)量,信號時序是否滿足要求。
硬件階段7:硬件產(chǎn)品測試
當(dāng)硬件產(chǎn)品調(diào)試通過以后,我們需要對照產(chǎn)品產(chǎn)品的需求說明,一項一項進(jìn)行測試,確認(rèn)是否符合預(yù)期的要求,如果達(dá)不到要求,則需要對硬件產(chǎn)品進(jìn)行調(diào)試和修改,直到符合產(chǎn)品需求文明(一般都以需求說明文檔作為評判的一句,當(dāng)然明顯的需求說明錯誤除外)。
硬件階段8:硬件產(chǎn)品
我們最終開發(fā)的硬件成功。一個完整的,完成符合產(chǎn)品需求的硬件產(chǎn)品還不能說明一個成功的產(chǎn)品開發(fā)過程,我們還需要按照預(yù)定計劃,準(zhǔn)時高質(zhì)量的完成。才是一個成功的產(chǎn)品開發(fā)過程。
評論
查看更多