其實我覺得一個系統的完成,系統的規劃是最重要的,在規劃時對硬體設計的知識和認識是決定性的,它可以讓你知道什麼是可行的,什麼是不可行的,當你同時具有軟體設計能力時,就可以合理的分配系統功能,完成使用VHDL進行系統行為描述-—系統功能劃分—— 系統子結構設計這樣的自頂向下的設計規劃流程,成為系統設計專家、專案經理,否則只是硬體工程師、軟體工程師。無論作51、196、還是DSP都是這樣。
下面分別談談我對硬體和軟體設計的感受
硬體設計是系統設計的關鍵,國內和國外產品的差距往往是硬體設計水平高低決定的,任何軟體設計思想沒有可靠的物理載體都是空中樓閣,紙上談兵。學校的研究生很多都想避開硬體設計,對於一個全新的設計與其說不屑不如說不敢。試想一下燒幾個片子的壓力要比跑飛幾段程式的壓力大的多,尤其是功率器件,一旦燒掉,弄不好火光沖天,人的自信都沒了。況且改一次板週期長,經費高,還不知行不行。其實在國外實力一般的公司也是儘量避免硬體的更新設計,產品一旦定型往往透過軟體升級,這是公司的發展策略,對個人而言物以希為貴,培養一個硬體設計師往往要比軟體設計師時間長花費多。
在設計dsp硬體時,開始設計最小系統板,系統按功能分板設計除錯,注意分板電路的穩定性可能不如整板電路,要多加入抗干擾環節,分板間的引線包括電源線地線要短,儘量在10公分以內,實在不行加入光耦隔離、採用隔離電源。切記電源線、地線的干擾遠比訊號干擾對系統的危害大得多,又常常被人忽視。電路板工作正常的先決條件就是電源正常!當分板電路正常後再更居情況設計整板電路。在除錯時發現的問題一定要找到原因解決,即使是飛線,割線,不要寄希望於下一板改了再看,除非原理性錯誤。每一個功能環節多準備幾套方案。
DSP的選型要根據系統功能而定,2000是一個功能比較全的控制器,但運算效能相對低,但目前大部分控制類、家電類包括中低層次的工業匯流排通訊產品足夠了,281X不錯但太貴,而且開發技術不成熟。54XX更像一個協處理器,其實高階產品5471就很好,功能完*,但BGA封裝對產品的開發有一定難度。如果沒有從事過嵌入式系統開發的朋友其實可以從51看起,許多思想是共通的,51很經典沒有哪一款微處理器像51那樣使用持久和普遍。在硬體設計時更多的精力放在外圍電路設計上,外圍電路設計的靈活性要比DSP本身高得多,難度大得多。建議多考慮CPLD。
軟體設計上,著眼點不要僅侷限於某種演算法和控制策略,而是軟體系統框架的制定,即作業系統的選擇和實現,演算法和控制策略只是其中技巧性很強的子程式和子程式間引數相互關係,建議設計軟體時能具有作業系統、資料結構和編譯原理方面的知識,特別是使用C。對DSP的內部硬體結構一定要掌握,特別是中斷結構和流程、流水線操作,不然飛都不知道怎麼飛的。在語言選擇上我當時是這麼給自己規定的先編20個左右的彙編程式,每個程式碼量超過4K,使用語句範圍覆蓋全部語句的60%-70%,在此基礎上使用C。
現在發現用C構建程式的主體框架(作業系統)比較快而其不容易出錯,(我現在正在用ASM根據UCOSII的思想重寫自己的作業系統)但對系統實時性影響比較大的運算演算法一般採用MATLAB——C——ASM的辦法模擬除錯最佳化,這裡的最佳化不單單是利用最佳化器最佳化,而是根據資料的特點改變運算方法,以除法為例C裡的/號其實掩蓋了許多技巧,當除數為常數時就可以放大倒數移位相乘移位的辦法進行,精度高速度快。這些辦法只有掌握了ASM語言並用ASM語言思考才會熟練應用。另外我想告訴一些作演算法特別是控制演算法的朋友,千萬不要隨意評判一個演算法的優劣,在程式中程式和程式碼最佳化的程度往往影響了控制效果好壞,而不是演算法本身的思想。
其實在實際中往往PID甚至PI、PD就夠了,神經元、模糊、小波適用於研究和寫論文,模糊在實際中用的多一點,主要是小日本用的比較成熟,我再恨日本人,這點也服氣,小日本就是滑,許多物理現象搞不透,就用這法,還管用,題外話。
最後我想說的是,當我們面對市場要求時,產品往往考慮的是可靠性、效能、價格而不是你用的什麼晶片,在滿足效能的基礎上結構越簡單就越可靠,晶片越通用價格就越低,能用51就不用196,能用2407就不用2812,除非把晶片本身作買點利用高成本贏取高利潤。無論2000還是5000、6000系列都有市場前景,關鍵是要做深做透
獲取知識的方法、處理專案的能力是相通的,具體的說就是不要把目光盯在做硬體還是做軟體上,用ASM還是C,要勤動手打好基礎,提高自己對系統總體設計的能力,從系統的眼光看問題。
其實我覺得一個系統的完成,系統的規劃是最重要的,在規劃時對硬體設計的知識和認識是決定性的,它可以讓你知道什麼是可行的,什麼是不可行的,當你同時具有軟體設計能力時,就可以合理的分配系統功能,完成使用VHDL進行系統行為描述-—系統功能劃分—— 系統子結構設計這樣的自頂向下的設計規劃流程,成為系統設計專家、專案經理,否則只是硬體工程師、軟體工程師。無論作51、196、還是DSP都是這樣。
下面分別談談我對硬體和軟體設計的感受
硬體設計是系統設計的關鍵,國內和國外產品的差距往往是硬體設計水平高低決定的,任何軟體設計思想沒有可靠的物理載體都是空中樓閣,紙上談兵。學校的研究生很多都想避開硬體設計,對於一個全新的設計與其說不屑不如說不敢。試想一下燒幾個片子的壓力要比跑飛幾段程式的壓力大的多,尤其是功率器件,一旦燒掉,弄不好火光沖天,人的自信都沒了。況且改一次板週期長,經費高,還不知行不行。其實在國外實力一般的公司也是儘量避免硬體的更新設計,產品一旦定型往往透過軟體升級,這是公司的發展策略,對個人而言物以希為貴,培養一個硬體設計師往往要比軟體設計師時間長花費多。
在設計dsp硬體時,開始設計最小系統板,系統按功能分板設計除錯,注意分板電路的穩定性可能不如整板電路,要多加入抗干擾環節,分板間的引線包括電源線地線要短,儘量在10公分以內,實在不行加入光耦隔離、採用隔離電源。切記電源線、地線的干擾遠比訊號干擾對系統的危害大得多,又常常被人忽視。電路板工作正常的先決條件就是電源正常!當分板電路正常後再更居情況設計整板電路。在除錯時發現的問題一定要找到原因解決,即使是飛線,割線,不要寄希望於下一板改了再看,除非原理性錯誤。每一個功能環節多準備幾套方案。
DSP的選型要根據系統功能而定,2000是一個功能比較全的控制器,但運算效能相對低,但目前大部分控制類、家電類包括中低層次的工業匯流排通訊產品足夠了,281X不錯但太貴,而且開發技術不成熟。54XX更像一個協處理器,其實高階產品5471就很好,功能完*,但BGA封裝對產品的開發有一定難度。如果沒有從事過嵌入式系統開發的朋友其實可以從51看起,許多思想是共通的,51很經典沒有哪一款微處理器像51那樣使用持久和普遍。在硬體設計時更多的精力放在外圍電路設計上,外圍電路設計的靈活性要比DSP本身高得多,難度大得多。建議多考慮CPLD。
軟體設計上,著眼點不要僅侷限於某種演算法和控制策略,而是軟體系統框架的制定,即作業系統的選擇和實現,演算法和控制策略只是其中技巧性很強的子程式和子程式間引數相互關係,建議設計軟體時能具有作業系統、資料結構和編譯原理方面的知識,特別是使用C。對DSP的內部硬體結構一定要掌握,特別是中斷結構和流程、流水線操作,不然飛都不知道怎麼飛的。在語言選擇上我當時是這麼給自己規定的先編20個左右的彙編程式,每個程式碼量超過4K,使用語句範圍覆蓋全部語句的60%-70%,在此基礎上使用C。
現在發現用C構建程式的主體框架(作業系統)比較快而其不容易出錯,(我現在正在用ASM根據UCOSII的思想重寫自己的作業系統)但對系統實時性影響比較大的運算演算法一般採用MATLAB——C——ASM的辦法模擬除錯最佳化,這裡的最佳化不單單是利用最佳化器最佳化,而是根據資料的特點改變運算方法,以除法為例C裡的/號其實掩蓋了許多技巧,當除數為常數時就可以放大倒數移位相乘移位的辦法進行,精度高速度快。這些辦法只有掌握了ASM語言並用ASM語言思考才會熟練應用。另外我想告訴一些作演算法特別是控制演算法的朋友,千萬不要隨意評判一個演算法的優劣,在程式中程式和程式碼最佳化的程度往往影響了控制效果好壞,而不是演算法本身的思想。
其實在實際中往往PID甚至PI、PD就夠了,神經元、模糊、小波適用於研究和寫論文,模糊在實際中用的多一點,主要是小日本用的比較成熟,我再恨日本人,這點也服氣,小日本就是滑,許多物理現象搞不透,就用這法,還管用,題外話。
最後我想說的是,當我們面對市場要求時,產品往往考慮的是可靠性、效能、價格而不是你用的什麼晶片,在滿足效能的基礎上結構越簡單就越可靠,晶片越通用價格就越低,能用51就不用196,能用2407就不用2812,除非把晶片本身作買點利用高成本贏取高利潤。無論2000還是5000、6000系列都有市場前景,關鍵是要做深做透
獲取知識的方法、處理專案的能力是相通的,具體的說就是不要把目光盯在做硬體還是做軟體上,用ASM還是C,要勤動手打好基礎,提高自己對系統總體設計的能力,從系統的眼光看問題。