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