2011年4月10日 星期日

電子自學學習心得回憶(三)

台灣特殊的電子代工產業模式,真的很難給專一專長的工程師們一個穩定的長期允諾:

"只要您懂一門專業技能,就能永保您終身無慮"。.... 因為連公司本身都很難定位為

單一產品線或是單一的代工模式,您看鴻X集團下的富X康...因原來代工產品線的

市佔率下降就虧損...您說:覆巢之下豈有完卵?!...您小小工程師豈能全身而退?!

那您若覺得我若適時轉任管理職,或是有品牌公司是否就可以長命久安?

不好意思,那請您看這一期的商業週刊:薄冰上的戰將。在講誰?講哪一個戰功彪炳卻

是下台一鞠躬的科技界大事。...這裡面透露了太多台灣高科技無奈的悲哀。

所以,我們這些渺小的工程師們也只好安身立命的苦命向學,以求得自己最後一塊淨土。

-----------------------

朋友常開玩笑說:Chamber 啊...我看您就差一個FPGA 應用沒學到而已,

要不然啊...以搞電子系統來說,應該都已經沒有人可以"屌"您了...

(PS : "屌" ...此處的意思就是說...不要為了一個簡單的系統東西,就有許多外包工作要

到處求爺爺、拜奶奶的!有任何人可以妨礙到您的電子系統設計開發想法了!)

我當然是把它當一句玩笑話啊...人外有人,天外有天,我們哪敢啊。

只不過的是:在系統開發上,要成功完成一個產品設計雛形所要結合的技能倒是不少。

我們來稍微整理一下好了...

1. 寫單晶片韌體...包括組合語言或是高階C 語言。因為現在單晶片微處理器取得容易,

     開發平台成熟,價位又平實,在系統發展上頗具一些彈性,所以,是比較方便的零件。

    至於要取哪一種單晶片沒差,道理都是一樣的。

2. 最好懂一種傳輸介面,可以跟PC 連線最好,因為PC 的各種資源最豐富,發展平台成熟,

    ,所以,許多在單晶片上比較受限的功能可以移至到PC 上處理。

     而傳輸介面在這幾年發展下來,當然就是USB 啊。

3. 既然寫USB 韌體傳輸程式,最好也會寫一點PC 端的應用程式...因為,有許多創意想法,

     也不一定每個人的想法一致,而且許多初步的想法也都可以透過簡單的應用程式測試

     就知道想法的可行性了,所以,寫一點PC 應用程式是蠻方便的。

     至於,PC 應用軟體就以個人喜好為主,而我以VC 的MFC 應該就覺得夠用了。

-------

 光這些軟體...在台灣這個電子生態來說,也沒啥多大價值...畢竟台灣的電子產業還是

以硬體為主,所以,最好也是要懂一點硬體相關知識或訊息。

4. 硬體包括什麼?線路設計...至少也會一點繪圖軟體啊...不管是ORCAD 或是Protel 都可以。

    線路設計會不會很難?!現在學硬體設計應該還不算太難,因為現在許多電子零組件的

    解決方案都很成熟了,只要選定一些相關零組件之後,相關的參考電路都可以參考。

    剩下的就是一些線路匹配與調教而已。

5. 光會設計與畫電路圖也沒啥用?最好也可以Layout 電路版,否則怎麼會有實體呢?!

    有時您光靠跳線或麵包洞洞版也不行的...因為有太多不確定因素躲在裡面,

    現在台灣與大陸的產業分工太成熟了....只要您的PCB 版不要太複雜,

    而您也知道大陸的PCB 電路版容易出什麼問題?只要在設計與Layout 上避開這些問題後,

    許多PCB 廠也都會配合的發到大陸處理...費用上也不高。做作實驗還蠻方便的。

6. 硬體方面還有一個重點,就是電子零件的選用了....這一點就是包括FPGA 這一種東西了。

    至於電子零組件的選用,這一點我個人就覺得蠻重要的,因為這一點的設計與零件選用

    就有點考驗您在這個行業裡的"小小成就"了,因為,現在電子零件千百萬種,

    各種產品規格與價格資訊到處充斥,您自己本身一定要有屬於自己的上下游關係與人脈,

     因為也會有很多廠商會從大陸地區拿一些零組件回來販售,我個人不反對這種作法,

     畢竟大陸是全球加工廠集中地區,全球零組件一定會到那集合的,但是重點是:

     您自己本身有沒有能力去釐清這些零組件的穩定性與真實性。我相信:

     只要您有這樣子實力的話,不但您的客人不反對,您的零組件供應商也不敢隨便造次的。

---------------------------

.....大致上就這樣子應該就夠了吧。

朋友在調侃我的....就是最後那一項:沒有FPGA 應用。

(還有開IC 啦,這還是要看應用市場而已,真的有那麼難嗎?!

如果真的有那個市場量的需求,還怕別人"屌"您嗎?!時空環境已經不同了。)

而這個時代,資訊發達,就差您有沒有心而已?要不然,我說過:

這些東西都是一種 Skill 而已,只要您想學就應該不成問題,當然重點還要有一個想法目標

您的學習過程才會有效的收到一定的成果,否則,學這麼多,沒用到也沒用啊。

所以針對FPGA 這一點,我個人的見解是:這個東西的零件取得還真的有得給他麻煩一點,

知名品牌廠商不多,所以供貨都不是那麼容易,要背庫存也沒那麼容易...

您說:一般電子材料行,多多少少還會賣幾顆8051 或PIC 等MCU...

但您可以去這一種店面買得到FPGA 嗎?!...所以,要拿這一種東西回來設計電路,

除非我說的....真的有那個應用產品或是真的有客人願意買單的,否則我都覺得不合算。

當然以前的人會認為FPGA 是一種邏輯整合電路,他可以縮減您的電路設計,而且還可以

成為硬體電路保護的一環(怕別人抄襲您的硬體電路設計...),但我覺得現在:

單晶片MCU 的程式保護機制都已經作得很不錯了...而且單價也夠低了,一樣寫程式,

那就乾脆買一棵MCU 回來當邏輯電路用啊。....那我為什麼要用這一種東西呢?!

更何況現在許多IC 都號稱SOC ,他的周邊整合程度都很好了,要用到複雜的邏輯電路

也不多了。所以,FPGA 在使用上真的只有剩下比較高檔的應用市場...

或是人家拿來開發新IC 的開發平台。更何況現在FPGA 也越作越大,複雜程度也不小...

(製程進步,FPGA 也得跟得上步伐啊!所以,FPGA 越來越大顆也越貴了... )

要搞FPGA 真正的應用產品,也都已經不容易是小貓兩三隻的公司了。

(大部分主要還是工業等級的應用...)

而真正又有量大的應用市場,人家也是會開一棵IC 的...現在開IC 又不是什麼新鮮事啊。

所以啦...不管什麼MCU 或是FPGA ,主要還是要看他的應用市場在哪吧。

但在台灣這個價格殺戮戰場上,大概真的只有工業用產品才負擔得起他的成本吧!

----
那我們就回到真正的系統應用觀念上...其實,還是有一些應用是單晶片MCU 比不上

一般邏輯電路設計的功能(像FPGA 訴求的!)...

簡單來說:就是那一種Clock Trigger 的東西。這是牽涉到整體硬體電路同步信號的問題...

您的MCU 再厲害也不可能同時處理同步信號的,

因為我們的韌體程式也是一行一行指令執行的...他就沒辦法快速的同時處理。

(如果您要問我:我之前搞過那一棵FxxA 多核心MCU ?!

不好意思,他在Clock 時間軸上,也是一行一行執行的...有興趣的私底下再討論了吧!)

最簡單的應用就是類似那一種匯流排線的同步信號...

就是系統應用上,在一個Clock 內要讓所有的  I/O 都可以同步。

像是我們以前那一種單晶片外部解碼電路:解出什麼 3000H 定址為一個I/O 或是

一棵Device IC 等。這時候您就得回到邏輯電路設計了...

但是呢,老是用那些TTL 邏輯IC 也不是辦法,

所以,當然還有另一種選擇...就是以前俗稱的GAL 或PAL...應該算是第一代的FPGA 吧。

但是我們用這些東西,也不用辛辛苦苦的去學什麼VHDL 或Verilog ...我講過了:

不管是用十根手指頭或是 1 + 1 ...一路往下加,一樣都可以作得出來,重點還是在Scheme。

(PS:您不要跟我說:學FPGA 可以去IC 設計公司上班,幹嘛?開 IC 那麼好玩嗎?!)

所以呢,我還是找到另一個解決方式:就是寫ABEL 語言啊...一樣可以搞個小CPLD 的。

以下就是我之前搞過的一個案例:就是我作的那一台USB ROM Emulator

我說現在只要您有心搞電子系統設計,什麼死人骨頭也都有人願意支持,

只怕您不想用而已。所以,我當初詢了幾家廠商,人家就把整套開發工具就給我了...

然後,在網路上Google 一下,就可以試試看了,最主要的還是我說的:

您的心中還是要有一個學習目標或產品觀念。

這樣子的學習與設計才會有效的落實與取得成果的。就像我做這一個案例,一開始是覺得

他有他市場一定的定位與需求,但也不可能需求量大到嚇人,所以,這一種設計方案

是夠用的,而且本身所承受的成本也是可以接受的...我之所以提這樣子的看法是:

您在做系統或產品設計之前,一定都要慢慢培養這一種產品開發分析與Sense,然後才能

發動自己心裡那一股學習向前的心...否則,您傻呼呼的學了一堆也沒啥用啊。

這一張圖就是他基本的開發環境...只要玩幾下應該就可以上手了吧。

至於,該如何學ABEL 語言?簡單啊,找個人家給的範例,先照著作,自修改看看。

然後把它真的移植到自己的應用條件裡...
 

這是一些基本宣告...我想所有的程式語言的基本觀念都是一樣的啦。

然後就是簡單的邏輯電路的語法設計...這個東西比寫單晶片MCU 的韌體還笨,

因為很簡單,每一條指令與語法都會牽涉到您的邏輯閘使用數量,

也不能讓您加加減減的一路往下寫。隨便寫寫鐵定包您(GAL)CPLD 或FPGA 不夠用的。

但是您也不知道該如何寫嗎?!

也很簡單,就是先隨便寫一寫...就可以套一些簡單的模擬條件看結果:

....看到沒,多簡單啊...啊?!看不清楚?沒關係還可以放大仔細瞧:

您要在電腦上面模擬多少次都沒關係...搞到您爽就好了。...說到這裡,我後來才知道:

那些搞IC 設計的工程師們為什麼會那麼死腦筋,也會被外面那些小姐女性們笑說是宅男?!

....

真的...作這一種東西設計的原則,他就只有一個好處,我說過:

他基本上就是一種Clcok Trigger,沒有 Clock Source ,他就沒有運作基準了,

然後您的設計也不用講求花俏,邏輯想法越簡單越好,

然後就靠快速甚至超高速的Clock 時頻...幫您一瞬間全搞定...

(畢竟硬體的速度是什麼軟體都比不上的啦。).....就像1 加到100 的答案...

您也不用什麼演算法,就一路  1+ 2(還可以拆成 1+1耶!)+3 (還是拆成1+1+1)...

往下加就對了。這種東西寫久了...會不會腦筋也變得怪怪的?!...

不知道耶,至少我作過一遍就有這種感覺耶?!

 

當您搞定所有應用條件模擬之後,您就可以真正的把這一個JEDEC 檔燒錄到

GAL (CPLD) 內了。然後就可以實際驗證電路...如果不對也沒關係,

還可以一直重新反覆燒錄,就跟我們寫MCU 一樣。

(不一樣的是:當您的應用FPGA 時,他真正的電路動作的量測,都需要比較高檔的

儀器設備,譬如至少都要 GHz 以上的示波器或邏輯分析儀...這些東西買起來都不便宜!)

講完了 ...在實際上,我的 USB ROM Emulator 也採用這一個設計案例。

基本上還蠻好用的啦。不過,後來在其他案例上...我也都不太愛使用,

因為真的搞久了會變笨,腦筋不容易轉彎...這跟寫一般單晶片的演算法差太多了...

或許,人家寫那一種JPEG 壓縮引擎的Verilog 或VHDL是不一樣的吧!...

不知道!沒做過...我應該也不會想去學吧。

所以,我還是要跟調侃我的朋友說一句:不是我沒有想搞 FPGA ...

真的...我光試過GAL 就不想碰那個東西了。不單只是個性上無法適應這個東西,

還真的是為系統應用的許多零件採買與庫存問題...作系統設計的方法與種類很多,

我不一定都得要全面啊....而我們在設計觀念也得要懂得靈活運用。做過一遍讓自己心裡

有個底就可以了,也不能全然的認為許多案例都非得某一種方法才行啊。

您說對不對啊?!

----
我在討論這些電子應用系統經驗時,我一直強調一點:不是光是埋頭一窩蜂跟著潮流學,

這些學習固然可以帶來您的設計功力提升,但我個人想法是:這些東西都是一種Skill,

除了這些 Skill以外,您最要的是要透過這樣子的因緣際會,讓自己的視野有所擴充,

讓自己更能掌握一些產業趨勢與未來產品觀念...也要懂得自己的個性與市場定位。

我說的:作一行一定要入一行。...否則,您老是學了一大堆有的沒有的...別人說:

現在流行這個,明天流行那個...當您好不容易學一學,結果好像都跟不上別人步伐,

就覺得很痛苦...又搞不懂學這些Skill真正背後對自己生涯規劃有何關係?!

以前我在IC 設計業時,就看過在那個風光產業興盛時期,許多畢業生明明許多基礎的

學理還都不清楚的情況下,就跟著別人喊著要學VHDL 、學IC 設計...幾年下來,

就跟著公司內資深的IC 設計工程師,轉來轉去的...甚至換工作時,都還一眼巴望著:

這些前輩工程師會不會眷顧著他,一起帶著他跳槽?結果:公司越跳越小...

畢竟這些前輩或師父也都不一定是有錢的老闆...人家怎麼可能會一直罩著您呢?

而現在開 IC 又不像我們作系統PCB版一樣,到處有人幫您洗版子,打件加工的...

要一個最實際的產品雛形,找不到金主出光罩費...就全是海市蜃樓,空中閣樓而已。

我跟您說:現在的金主都很精的啦...不見兔子不灑鷹的啦。現在我都勸朋友說:

您看人家一流M公司,這麼成熟與穩健的公司,人家外資法人也才給  12~15本益比,

您跟我說:您憑什麼跟別人要這麼高的投資報酬率呢?!....

所以,我還是要強調一點:您覺得我會學不會FPGA 嗎?! 我不會學懂Android 嗎?!

這些都不是重點,因為高科技的Skill您永遠學不完的啦...重點還是您要培養自己心中的

那一把尺,要給自己學習Skill 過程定下一個停損點,當您覺得您大致上都學得差不多了,

您就要讓這些學成果轉換成您真正的人生價值 ...讓這些學習成果能真正的回報給您過去

辛勤學習的...也一方面檢視自己自己的真正的人生價值,也是不是真正的懂得這一個行業

的各種酸甜苦辣?!有沒有入一行的懂得抓住這一行的趨勢與脈動?!

至於,要不要怨嘆自己有沒有撈到好處?!這一種事您也只能交給老天爺問說:

自己上輩子有沒有燒好香?...如果沒有,那您現在就要開始燒好香,多陪陪家人,救世濟俗...

讓您下輩子就可以撈到好處了。其他的就不要想太多了。...

 

 

 

 

 

4 則留言:

  1. hi, 板大:
                        您文章最後兩行真是中肯啊!個人覺得fpga最大的優點是能並行處理,在同一個clock下能同時做不同的事,不像cpu順序執行一步接著一步。它是非常非常需要EDA工具支持的,晶片效率的優化、面積大小取決於您的EDA軟體。還有時序、亞穩態的問題要考慮,入門的門檻比一般單晶片高上許多。目前市場上的FPGA商家不外乎X牌或是A牌,剩下的廠家還在夾縫中求生存。大陸是有在發展他們自己的FPGA,但一切都還是在起步的階段,感覺對岸的工程師也很熱中學習FPGA,在台灣感覺不到(沒看過幾間電腦補習班有在教FPGA設計的)。雖然半導體製程的進步,但功耗還是沒辦法跟ASIC比擬,產品電源如果是電池的話,FPGA可能就不太適合了。

    像小弟待的部門有些同仁是程式寫完後就燒到晶片裡直接看結果,狀態機中間的過程無法看到。假始結果不如預期再回頭改程式碼,這種try & error 是很沒效率的方式。還有一種方式是像板大那樣,程式寫完後跑模擬,看功能是否滿足設計要求?不行改代碼。假始功能滿足要求再跑時序模擬,檢查時序是否滿足設計要求?不行,改代碼,直到滿足設計需求為止。 設計過程是不斷重覆而且很煩瑣。雖然在學校有修過cpld 的課程,但所學的的根本無滿足工作上的需求,都是一些很皮毛的東西。部門裡也沒有同事是搞IC設計出身的,大家往往都在一知半解或是靠一些口耳相傳的小撇步來開發產品,常常會遇到莫名其妙的問題、靈異現象。

    當初本來是想找跟單晶片相關的差事,也不知道為什麼後來會跑來搞這玩意?如果真的想走FPGA設計這條路,個人覺得不是很好走,沒什麼人可以交談,大都靠自己摸索。有讀不完的原廠文件也覺得很孤單。也曾看過有人受不了這種工作(每天上班就是不斷的編譯程式碼、tune timing,然後看結果是否滿足設計要求?),所以轉換跑道去寫跟cpu、單晶片相關的軔體(遠離fpga就是了)。

    註:最近看到板大兩篇文章都有提到FPGA,這東西有這麼火紅嗎?

    回覆刪除
    回覆
    1. 以FPGA 做設計...的確會讓人有股所謂"專業形象"設計門檻,
      但是若真的以產品開發的角度來說呢?!真的如此嗎?有些事情都是我們以工程師的角度來論斷許多產品定位而已... 就像那些評鑑教授的觀點一樣,沒錯,FPGA 的Skill 的確比較高一點,但他就比較容易創造出比較好的效益嗎?!您看這幾年來,類比IC 的概念股市比一般傳統數位IC 好...因為很簡單,當EDA 工具成熟,玩的人多...那個東西,再怎麼複雜的Skill 就沒啥價值了...剩下的就是您說的:寫程式...跑模擬...合成...驗證...又怎樣?!大家要不要浪費那個生命而已...
      重點還是我說的:您腦袋裡的東西比較重要吧!...我也說了...這樣子的設計流程是很難有靈活的設計訓練的...因為您們都只會照別人的規格作東西。怎麼會有創新觀念在裡面呢?!---至少,我看過太多這樣子的工程師。
      至於您說的那些Try and Error 的流程...我一點也不意外,因為畢竟這個東西的還是要有一些血統門派的啦。我剛進那一行時,我們公司那些IC 設計者幾乎都是台灣第一代的設計者...不乏都是M 公司蔡董事長幹部門經理時的工程師...也都一流學府,也算是師出名門的。人家做設計還是有人家一套正統作法,但當這些人退休閒雲野鶴後...後來搞設計的...就是您所說的這一種土法煉鋼的方法,那您說:這一種小撇步的方法可以登大堂之雅嗎?!我當然一點也不意外啊。
      所以,我自己也捫心自問:若我沒有那個環境與條件可以被訓練成那般功力時,那我何必還要浪費那個生命呢?!那我何不去找一個更適合發展的空間呢?
      ---至於FPGA 這個東西有沒有很火紅?!很簡單,如果您能用這個東西做出產品,又可以賣得好價錢,又有持續的源源不斷的訂單...那就好的產品啊!...如果沒有,那別人賣得火紅...關我什麼事?!錢也不會進我口袋啊。您說:對不對?! :))

       

      刪除
  2. 以前我也是這樣覺得,學了A技術後覺得不夠又去學B技術,然後好像又差了C技術,結果好像到頭來都沒做出什麼像樣的產品...您老提點我很多次,我才慢慢領悟到,這是一種倒果為因,應該是想開發什麼產品,走什麼市場,然後再去涉獵相關技術就行,而且也比較知道哪些可以放掉不用學習,不然真的會陷入一種沒完沒了的情形...

    人力網站龍頭104聽說剛起家的時候,該老闆完全不懂程式設計,是硬著頭皮自學Web程式,當時比他懂Web的人一狗票,結局卻是他在.com泡沫化之後成為最賺錢的網路公司,一堆被fire的工程師卻要重新找頭路,想想真的很值得玩味啊

    回覆刪除
    回覆
    1. 這是一般工程師很容易的想法...這也是學校教育一直沒有好好的扮演好的角色,
      當然啊...台灣一般產業公司也容易讓工程師產生這樣子的疑慮...太沒有那個安全感了。
      所以,如果您還記得我一開始提點您的時候,就是在我們還在那一家公司時,我自己已經很清楚,我不是要去那家公司再學什麼東西或技術的...我是要去利用我們過去所學的技能來賺錢的...老闆搞不清楚,還以為大家都還是初出茅廬的小毛頭...所以,我才跟您說:真的學這麼技術若真的沒辦法轉換成真正的市場價值的話,那學那麼多,還倒不如就不要碰了...
      重點還是您說的:還是得先看看市場需要我們開發什麼產品,再來分析瞭解怎樣的技術才是有其真正發揮之處...否則,您看...我們搞的那個東西...技術在好,沒有市場或找不到技術在市場的定位,也沒啥多大的效益?!---這就是一個很鮮明的例子。

      刪除