硬體設計經驗

2022-11-27 06:57:05 字數 5409 閱讀 1017

一:成本節約

現象一:這些拉高/拉低的電阻用多大的阻值關係不大,就選個整數5k吧

點評:市場上不存在5k的阻值,最接近的是 4.99k(精度1%),其次是5.

1k(精度5%),其成本分別比精度為20%的4.7k高4倍和2倍。20%精度的電阻阻值只有1、1.

5、2.2、 3.3、4.

7、6.8幾個類別(含10的整數倍);類似地,20%精度的電容也只有以上幾種值,如果選了其它的值就必須使用更高的精度,成本就翻了幾倍,卻不能帶來任何好處。

現象二:面板上的指示燈選什麼顏色呢?我覺得藍色比較特別,就選它吧

點評:其它紅綠黃橙等顏色的不管大小(5mm以下)封裝如何,都已成熟了幾十年,**一般都在5毛錢以下,而藍色卻是近三四年才發明的東西,技術成熟度和供貨穩定度都較差,**卻要貴四五倍。目前藍色指示燈只用在不能用其它顏色替代的場合,如顯示**訊號

等。現象三:這點邏輯用74xx的閘電路搭也行,但太土,還是用cpld吧,顯得高檔多了點評:

74xx的閘電路只幾毛錢,而cpld至少也得幾十塊,(gal/pal雖然只幾塊錢,但公司不推薦使用)。成本提高了n倍不說,還給生產、文件等工作增添數倍的工作。

現象四:我們的系統要求這麼高,包括mem、cpu、fpga等所有的晶元都要選最快的點評:在乙個高速系統中並不是每一部分都工作在高速狀態,而器件速度每提高乙個等級,**差不多要翻倍,另外還給訊號完整性問題帶來極大的負面影響。

現象五:這板子的pcb設計要求不高,就用細一點的線,自動布吧

點評:自動佈線必然要占用更大的pcb面積,同時產生比手動佈線多好多倍的過孔,在批量很大的產品中,pcb廠家降價所考慮的因素除了商務因素外,就是線寬和過孔數量,它們分別影響到pcb的成品率和鑽頭的消耗數量,節約了**商的成本,也就給降價找到了理由。

現象六:程式只要穩定就可以了,**長一點,效率低一點不是關鍵

點評:cpu的速度和儲存器的空間都是用錢買來的,如果寫**時多花幾天時間提高一下程式效率,那麼從降低cpu主頻和減少儲存器容量所節約的成本絕對是划算的。cpld/fpga設計也類似。

二:低功耗設計

現象一:我們這系統是220v供電,就不用在乎功耗問題了

點評:低功耗設計並不僅僅是為了省電,更多的好處在於降低了電源模組及散熱系統的成本、由於電流的減小也減少了電磁輻射和熱雜訊的干擾。隨著裝置溫度的降低,器件壽命則相應延長(半導體器件的工作溫度每提高10度,壽命則縮短一半)

現象二:這些匯流排訊號都用電阻拉一下,感覺放心些

點評:訊號需要上下拉的原因很多,但也不是個個都要拉。上下拉電阻拉乙個單純的輸入訊號,電流也就幾十微安以下,但拉乙個被驅動了的訊號,其電流將達毫安級,現在的系統常常是位址資料各32位,可能還有244/245隔離後的匯流排及其它訊號,都上拉的話,幾瓦的功耗就耗在這些電阻上了(不要用8毛錢一度電的觀念來對待這幾瓦的功耗)。

現象三:cpu和fpga的這些不用的i/o口怎麼處理呢?先讓它空著吧,以後再說

點評:不用的i/o口如果懸空的話,受外界的一點點干擾就可能成為反覆振盪的輸入訊號了,而mos器件的功耗基本取決於閘電路的翻轉次數。如果把它上拉的話,每個引腳也會有微安級的電流,所以最好的辦法是設成輸出(當然外面不能接其它有驅動的訊號)

現象四:這款fpga還剩這麼多門用不完,可盡情發揮吧

點評:fgpa的功耗與被使用的觸發器數量及其翻轉次數成正比,所以同一型號的fpga在不同電路不同時刻的功耗可能相差100倍。儘量減少高速翻轉的觸發器數量是降低fpga功耗的根本方法。

現象五:這些小晶元的功耗都很低,不用考慮

點評:對於內部不太複雜的晶元功耗是很難確定的,它主要由引腳上的電流確定,乙個abt16244,沒有負載的話耗電大概不到1毫安,但它的指標是每個腳可驅動60毫安的負載(如匹配幾十歐姆的電阻),即滿負荷的功耗最大可達60*16=960ma,當然只是電源電流這麼大,熱量都落到負載身上了。

現象六:儲存器有這麼多控制訊號,我這塊板子只需要用oe和we訊號就可以了,片選就接地吧,這樣讀操作時資料出來得快多了。

點評:大部分儲存器的功耗在片選有效時(不論oe和we如何)將比片選無效時大100倍以上,所以應盡可能使用cs來控制晶元,並且在滿足其它要求的情況下盡可能縮短片選脈衝的寬度。

現象七:這些訊號怎麼都有過衝啊?只要匹配得好,就可消除了

點評:除了少數特定訊號外(如100base-t、cml),都是有過衝的,只要不是很大,並不一定都需要匹配,即使匹配也並非要匹配得最好。象ttl的輸出阻抗不到50歐姆,有的甚至20歐姆,如果也用這麼大的匹配電阻的話,那電流就非常大了,功耗是無法接受的,另外訊號幅度也將小得不能用,再說一般訊號在輸出高電平和輸出低電平時的輸出阻抗並不相同,也沒辦法做到完全匹配。

所以對ttl、lvds、422等訊號的匹配只要做到過衝可以接受即可。

現象八:降低功耗都是硬體人員的事,與軟體沒關係

點評:硬體只是搭個舞台,唱戲的卻是軟體,匯流排上幾乎每乙個晶元的訪問、每乙個訊號的翻轉差不多都由軟體控制的,如果軟體能減少外存的訪問次數(多使用暫存器變數、多使用內部cache等)、及時響應中斷(中斷往往是低電平有效並帶有上拉電阻)及其它爭對具體單板的特定措施都將對降低功耗作出很大的獻。

三:系統效率

現象一:這主頻100m的cpu只能處理70%,換200m主頻的就沒事了

點評:系統的處理能力牽涉到多種多樣的因素,在通訊業務中其瓶頸一般都在儲存器上,cpu再快,外部訪問快不起來也是徒勞。

現象二:cpu用大一點的cache,就應該快了

點評:cache的增大,並不一定就導致系統效能的提高,在某些情況下關閉cache反而比使用cache還快。原因是搬到cache中的資料必須得到多次重複使用才會提高系統效率。

所以在通訊系統中一般只開啟指令cache,資料cache即使開啟也只侷限在部分儲存空間,如堆疊部分。同時也要求程式設計要兼顧cache的容量及塊大小,這涉及到關鍵**迴圈體的長度及跳轉範圍,如果乙個迴圈剛好比cache大那麼一點點,又在反覆迴圈的話,那就慘了。

現象三:這麼多工到底是用中斷還是用查詢呢?還是中斷快些吧

點評:中斷的實時性強,但不一定快。如果中斷任務特別多的話,這個沒退出來,後面又接踵而至,一會兒系統就將崩潰了。

如果任務數量多但很頻繁的話,cpu的很大精力都用在進出中斷的開銷上,系統效率極為低下,如果改用查詢方式反而可極大提高效率,但查詢有時不能滿足實時性要求,所以最好的辦法是在中斷中查詢,即進一次中斷就把積累的所有任務都處理完再退出。

現象四:儲存器介面的時序都是廠家預設的配置,不用修改的

點評:bsp對儲存器介面設定的預設值都是按最保守的引數設定的,在實際應用中應結合匯流排工作頻率和等待週期等引數進行合理調配。有時把頻率降低反而可提高效率,如ram的訪問週期是70ns,匯流排頻率為40m時,設3個週期的訪問時間,即75ns即可;若匯流排頻率為50m時,必須設為4個週期,實際訪問時間卻放慢到了 80ns。

現象五:乙個cpu處理不過來,就用兩個分布處理,處理能力可提高一倍

點評:對於搬磚頭來說,兩個人應該比乙個人的效率高一倍;對於作畫來說,多乙個人只能幫倒忙。使用幾個cpu需對業務有較多的了解後才能確定,儘量減少兩個cpu間協調的代價,使1+1盡可能接近2,千萬別小於1。

現象六:這個cpu帶有dma模組,用它來搬資料肯定快

點評:真正的dma是由硬體搶占匯流排後同時啟動兩端裝置,在乙個週期內這邊讀,那邊些。但很多嵌入cpu內的dma只是模擬而已,啟動每一次dma之前要做不少準備工作(設起始位址和長度等),在傳輸時往往是先讀到晶元內暫存,然後再寫出去,即搬一次資料需兩個時鐘週期,比軟體來搬要快一些(不需要取指令, 沒有迴圈跳轉等額外工作),但如果一次只搬幾個位元組,還要做一堆準備工作,一般還涉及函式呼叫,效率並不高。

所以這種dma只對大資料塊才適用。

四:訊號完整性

現象一:這些訊號都經過**了,絕對沒問題

點評:**模型不可能與實物一模一樣,連不同批次加工的實物都有差別,就更別說模型了。再說實際情況千差萬別,**也不可能窮舉所有可能,尤其是串擾。

曾經有一教訓是某單板只有特定長度的包極易丟包,最後的原因是長度域的值是0xff,當這個資料出現在匯流排上時,干擾了相鄰的we訊號,導致寫不進ram。其它資料也會對we產生干擾,但干擾在可接受的範圍內,可是當8位匯流排同時由0邊1時,附近的訊號就招架不住了。結論是**結果僅供參考,還應留有足夠的餘量。

現象二:100m的資料匯流排應該算高頻訊號,至於這個時鐘訊號頻率才8k,問題不大

點評:資料匯流排的值一般是由控制訊號或時鐘訊號的某個邊沿來取樣的,只要爭對這個邊沿保持足夠的建立時間和保持時間即可,此範圍之外有干擾也罷過衝也罷都不會有多大影響(當然過衝最好不要超過晶元所能承受的最大電壓值),但時鐘訊號不管頻率多低(其實頻譜範圍是很寬的),它的邊沿才是關鍵的,必須保證其單調性,並且跳變時間需在一定範圍內。

現象三:既然是數碼訊號,邊沿當然是越陡越好

點評:邊沿越陡,其頻譜範圍就越寬,高頻部分的能量就越大;頻率越高的訊號就越容易輻射(如微波電台可做成手機,而長波電台很多國家都做不出來),也就越容易干擾別的訊號,而自身在導線上的傳輸質量卻變得越差,因此能用低速晶元的盡量使用低速晶元,。

現象四:為保證乾淨的電源,去偶電容是多多益善

點評:總的來說去偶電容越多電源當然會更平穩,但太多了也有不利因素:浪費成本、佈線困難、上電衝擊電流太大等。

去偶電容的設計關鍵是要選對容量並且放對地方,一般的晶元手冊都有爭對去偶電容的設計參考,最好按手冊去做。

現象五:訊號匹配真麻煩,如何才能匹配好呢?

點評:總的原則是當訊號在導線上的傳輸時間超過其跳變時間時,訊號的反射問題才顯得重要。訊號產生反射的原因是線路阻抗的不均勻造成的,匹配的目的就是為了使驅動端、負載端及傳輸線的阻抗變得接近,但能否匹配得好,與訊號線在pcb上的拓撲結構也有很大關係,傳輸線上的一條分支、乙個過孔、乙個拐角、乙個接外掛程式、不同位置與地線距離的改變等都將使阻抗產生變化,而且這些因素將使反射波形變得異常複雜,很難匹配,因此高速訊號僅使用點到點的方式,盡可能地減少過孔、拐角等問題。

五:可靠性設計

現象一:這塊單板已小批量生產了,經過長時間測試沒發現任何問題

點評:硬體設計和晶元應用必須符合相關規範,尤其是晶元手冊中提到的所有引數(耐壓、i/o電平範圍、電流、時序、溫度pcb佈線、電源質量等),不能光靠試驗來驗證。公司有不少產品都有過慘痛的教訓,產品賣了一兩年,ic廠家換了個生產線,咱們的板子就不轉了,原因就是人家的晶元引數發生了點變化,但並沒有超出手冊的範圍。

如果你以手冊為準,那他怎麼變化都不怕,如果引數變得超出手冊範圍了還可找他索賠(假如這時你的板子還能轉,那你的可靠性就更牛了)。

現象二:這部分電路只要要求軟體這樣設計就不會有問題

點評:硬體上很多電氣特性直接受軟體控制,但軟體是經常發生意外的,程式跑飛了之後無法預料會有什麼操作。設計者應確保不論軟體做什麼樣的操作硬體都不應在短時間內發生永久性損壞。

現象三:使用者操作錯誤發生問題就不能怪我了

點評:要求使用者嚴格按手冊操作是沒錯的,但使用者是人,就有犯錯的時候,不能說碰錯乙個鍵就宕機,插錯乙個插頭就燒板子。所以對使用者可能犯的各種錯誤必須加以保護。

現象四:這板子壞的原因是對端的板子出問題了,也不是我的責任

點評:對於各種對外的硬體介面應有足夠的相容性,不能因為對方訊號不正常,你就歇著了。它不正常只應影響到與其有關的那部分功能,而其它功能應能正常工作,不應徹底罷工,甚至永久損壞,而且一旦介面恢復,你也應立即恢復正常。

硬體設計心得

一,pcb布局。1,電源線與地線及濾波電容。在pcb板中電源輸入端必需加濾波電容,並盡量靠近輸入介面,並遵循電源走線經過電容的正極 正電壓供電 再佈線出,地線從電容負極回的走線原則,以保證濾波電容起到最佳濾波作用 電源線應從濾波電容引腳處分多路出線,根據電流大小不同選擇線寬 應用ldo時,在ldo輸...

硬體設計之路

問一問 1 電阻電容的封裝形式如何選擇,有沒有什麼原則?比如,同樣是 104 的電容有 0603 0805 的封裝,同樣是 10uf 電容有 3216 0805 3528 等封裝形式,選擇哪種封裝形式比較合適呢?2 有時候兩個晶元的引腳 如晶元a 的引腳 1,晶元b 的引腳 2 可以直接相連,有時候...

硬體設計規範

說明為保證產品設計質量和生產適應性,保證產品設計時部品選擇合理並符合通用化和標準化的要求,在總結產品設計與試生產經驗的基礎上,由研發部提出產品設計工作中設計師需進行檢查的專案,經整理編制了 硬體設計規範 產品設計師應根據所開發產品的具體情況,適時地對產品的設計進行必要的檢查。對不合格專案應及時進行設...