作者:merlin2007 這次抓鬼的過程應該說是成功的。說起來,有幾條經驗可以總結: 要注意保存好原始資料 現在的設計復雜程度越來越高,周期也拉的較長。短的幾個月,長的可能就得以年記。這么長的時間,中間還要穿插許多不同的內容,任誰都很難保證記住設計過程中的每個細節。這樣一來,隨時注意留下記錄,保存好所用技術文件及關鍵的數據就顯得極為重要。你的工作筆記本的作用不是教科書,不一定非要清清爽爽,橫平豎直。它應更像一塊黑板,不但記下你的計算過程和結果,還可以包括你的問題,困惑和疑問。文字,數字,圖形,甚至情緒化的標記都可以是內容。這樣作的目的只有一個:幫你記住盡可能多的信息。你在設計過程中隨手寫下的幾個字,文件中標注的幾個數據,日后都有可能對你有所幫助,幫你回憶起當時的設計依據和條件. 以這次的事情為例,如果我沒有保留K公司原來的技術文件,就很難在事發后的分析中發現新老文件的差異,以判斷出可能的故障原因。即使后來排除了故障,也很難讓人相信,這是器件廠商的原因,而不是我設計的問題。麥克很可能會問:為什么在開始設計時沒有注意這個問題, 而導致現在造成這么大的恐慌?那就真是有嘴說不清了。 你不止是個硬件設計工程師 你的頭銜是個“硬件工程師”, 但你不止是一個“硬件”工程師。現在電子工程設計的集成度越來越高,硬件與軟件的界限也越來越模糊。現在一個硬件工程師所從事的工作,幾乎等同于若干年前一個系統設計師。我總喜歡將現在硬件工程師的工作比喻成“搭臺”的,軟件工程師的工作是“唱戲”的。觀眾看到的是演員在臺上五花八門的演出,可沒了舞臺,燈光和布景,那就啥也不是。 系統的功能要靠軟件實現,但它必須要在硬件環境的支持下。在現在的產品開發過程中,多數情況下硬件設計要先于軟件開始,軟件的工作要在硬件已經形成的環境里進行(我這里指的是那些直接與硬件打交道的底層驅動程序和管理程序,而不是指上層的應用程序和操作系統)。這就決定了硬件設計在整個流程中起著一定的引領作用。從某種程度上說硬件設計者是整個設計階段的帶路人并不為過。因此你不能把自己僅僅局限在硬件的領域內. 在設計過程中必須要考慮:這樣作,對軟件會有什么要求?有沒有實現的可能?如何能使相應軟件設計工作變得簡單? 你可能不需要去寫程序,但你必須要了解與你的硬件相關的軟件部分如何工作。 還以上面的事為例:當我認為可以通過軟件修改來解決這個問題時,不搞清具體的相關寄存器的功能和操作方式,而只是簡單地推給軟件組讓他們去修改,以應對存儲器的初始化的問題,那結果很可能就是被置之不理,因為他們很可能不理解存儲器的上電過程與他們有什么關系。至于存儲器的錯誤那更是與他們無關:你們搞硬件的難道不應該先把硬件故障排除后再找我們嗎? 給你的設計多留些余地 這里說的余地,并不單指在選擇器件時,其參數相對于應用環境要留有一定的余量。更指 的是,應該充分利用你的設計中的可用資源,為其功能或工作特征的改變或拓展留下空間。 比如說:按照現在的硬件結構,有沒有可能應對不同的使用環境?這個產品將來有沒有升級的要求? 如果要升級硬件要做哪些變動?能否讓你的設計用很少的修改,甚至不修改,只通過改動軟件來實現?你選用的器件將來會有變動嗎?如果有,你能做到不修改電路板就實現嗎? 舉個例子:一個器件管腳的設置會導致不同的功能狀態,那么有可能的話,在電路中就不妨將上拉和下拉電阻都放上,在裝配時根據需要只安裝其中之一即可。再比如,如果你的設計中有FPGA,那么通常情況下它的管腳和內部邏輯單元的使用量最好控制在80%以下。一方面這樣FPGA的編譯/合成速度會很快,內部的定時關系也容易保證,同時剩余的管腳和邏輯單元也可能成為你的備用資源。分析一下你的設計,把那些將來有可能用來改變電路功能或特征的的某些信號(主要是控制類信號),接到FPGA上,而不是簡單地固定在一個邏輯電平上。這樣一旦有需要,只要修改你的FPGA設計即可。這都遠比你將來再修改電路板要容易的多。 只所以這樣做,是因為就現在硬件的復雜程度而言,翻新一版硬件所需時間和費用遠非軟件的修改所能比。單說修改過程,一旦方案確定,軟件的修改只是敲敲鍵盤以及系統編譯的時間,幾乎沒有其他成本。而硬件的改動,即便你只是要增加一個電阻,電路圖-布線-元器件表-制板-裝配-調試這一系列過程少那個也不成。這種耗費往往是驚人的。更不要說碰到前面提到的緊急情況。如果我在前面提到的設計中,不是簡單的將QDR存儲器上的DOFF控制線固定死,而是連到FPGA上,那么我就有可能在FPGA中加一個簡單的控制即可達到目的,而無需興師動眾去麻煩千里之外的軟件組的人,所需的時間還要少得多。在板子上增加幾個電阻,多布幾條線,不是很困難的事,但可能帶來的收益卻是不可低估的。 當然,所有這些都要在不影響主體設計性能的前提下,不能喧賓奪主。說句玩笑的話,這多少有點兒像諜戰劇中那些深藏不露的間諜臥底,武俠小說中密不示人的行俠劍客。這些人從受領任務的那一天起,就大隱于世,從不張揚。只是冷眼旁觀他們的同伴建功立業,爭奇斗艷。他們也許永遠不會被啟用,只能默默一生,直到終老。而如果有一天他們被召喚,那多半是形勢已經到了關鍵時刻,生死關頭. 他們的出手一擊,有可能成為扭轉乾坤的勝負手,一決生死的殺手锏。到了那時,你可能會由衷地感嘆,自己當初是多么“英明”。 如果這樣的比喻可以接受,就這樣來概括吧: 各位將軍,當驅動你的大軍攻城略地之時,別忘了埋下一支伏兵,留下幾個臥底。他們可能使你在關鍵時刻反敗為勝。 列位莊主, 在差遣你的鏢局出發上路之前,要記得派出幾個潛行的劍客,布放幾個隱身的保鏢。他們也許會讓你在生死關頭轉危為安。 |