硬件設計經驗分享

一:成本節約
現象一:這些拉高/拉低的電阻用多大的阻值關係不大,就選個整數5K吧
點評:市場上不存在5K的阻值,最接近的是 4.99K(精度1%),其次是5.1K(精度5%),其成本分別比精度爲20%的4.7K高4倍和2倍。20%精度的電阻阻值只有一、1.五、2.二、 3.三、4.七、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廠家換了個生產線,我們的板子就不轉了,緣由就是人家的芯片參數發生了點變化,但並無超出手冊的範圍。如 果你以手冊爲準,那他怎麼變化都不怕,若是參數變得超出手冊範圍了還可找他索賠(假如這時你的板子還能轉,那你的可靠性就更牛了)。
現象二:這部分電路只要要求軟件這樣設計就不會有問題
點評:硬件上不少電氣特性直接受軟件控制,但軟件是常常發生意外的,程序跑飛了以後沒法預料會有什麼操做。設計者應確保不論軟件作什麼樣的操做硬件都不該在短期內發生永久性損壞。
現象三:用戶操做錯誤發生問題就不能怪我了
點評:要求用戶嚴格按手冊操做是沒錯的,但用戶是人,就有犯錯的時候,不能說碰錯一個鍵就死機,插錯一個插頭就燒板子。因此對用戶可能犯的各類錯誤必須加以保護。
現象四:這板子壞的緣由是對端的板子出問題了,也不是個人責任
點評:對於各類對外的硬件接口應有足夠的兼容性,不能由於對方信號不正常,你就歇着了。它不正常只應影響到與其有關的那部分功能,而其它功能應能正常工做,不該完全罷工,甚至永久損壞,並且一旦接口恢復,你也應當即恢復正常。函數

相關文章
相關標籤/搜索