2019年10月25日 星期五

Hinet 網頁系列 --- USB DIY 系列(九)---USB DIY 講座 (七)

(補充說明:在我的職場工作經驗裡,我應該至少參與了四顆SOC IC 的開發工作,

我指的都是最後都有量產銷售經驗的成果,而這篇文章是我參與的第一顆SOC IC,

而第二顆是USB 隨身碟SOC ,但這一顆我沒有完成就職務轉換了,接下來就是 MP3 SOC,

這一顆MP3 SOC 是大公司的資源投入,我只是算系統驗證與應用市場協助推廣,吃的是大鍋飯,

工作相對安定與簡單,專心搞份內的工作就好了,天塌下來,也有很多人幫你扛著。

接下來就是八核心的MCU,這一部分是牽涉到IC 最底層的架構設計,所以也包括了系統開發

工具的建置,這一部分是初期開發工作,有很多以前沒有的經驗,也可以算是另一個職涯的



重要里程碑。而最近一顆就是與別人合作開發的機車用整流器IC,走到這一部分也算是屬於個人

事業的重要產品了。但畢竟車用應用市場嚴苛,雖然最終產品上市,但總覺得還是有點缺陷,

畢竟產品是需要不斷改良與精進的。

坦白講:搞系統真的有機會的話,能夠參與IC 設計是一件蠻不錯的經驗,畢竟隨便拿別人的一顆

SOC 或是MCU 來用,那真的不難啊~你會,別人也會;幫忙驗證或搞系統應用,那也還好。

而真正厲害的是:你自己可以開出系統應用SOC 的IC 規格,包括:Block Diagram 或是相關

電器規格。因為這不但代表著你對於系統技術的熟稔之後,也代表著你對於客戶市場或產業

需求的理解。這是另一個層級的體驗。如果你有機會的話,真的不妨試試。你想一想:

當你主導要開一顆 SOC IC 時,相對要投入的資源與經費來說:你的價值在會在哪了,

不是嗎?)

>>>++++++++++++++++++++++++++++++++
 我再進一步解釋一下有關USB  Controller,因為還是有人不是很清楚我所用的USB Controller 

的東西。或許,真的我在USB DIY 講座(四) 中,收尾收得有點太快,有人不是很清楚,

在此我用一張圖來解釋一下我寫這些應用的詳細流程:

 USB DIY 講座(四) 的圖 或許真的不是很清楚,所以,我就把他稍微改寫了一下如上圖

,我想這樣子就很清楚了。

 對於這樣一棵的USB Controller 大家就不要太苛求了,因為她是幾乎是十年前設計的東西了

當然,我也可以順便講一下她的故事囉。既然是十年前的東西,以IC設計這種幾乎是

十倍速的產業來說,我想應該也不會有人想去設計這樣的IC了。他當初就是設計給掃描器

用的IC,說真的,當初是已經初步設計完了,才想到要加USB的介面,畢竟當時USB的

東西還算是新的東西。也根本不知道什麼是 SOC ?!但此IC幾乎也是SOC了。

對作一些CCD/CIS掃描器或名片掃描器來說,根本不需要任何外部IC(除了步進馬達驅動IC)

,連memory 都免了。還是先講技術的東西吧!

        首先,大家看到是中間那顆跑 48MHz 的 RISC 8051 ,跑48MHz 是什麼意思?就是他執行

一個NOP 是 20.833 nSec,不過,因為在性能及架構有作一些調整,所以,他只能用 AD2500 

的組譯器組譯而已。至於高階的C來說,就謝謝惠顧了。既然只能寫 8KBytes 的程式來說,

組語就好了。您說,用組語的程式很難維護?說真的,真正會賺大錢的程式,您覺得您

一輩子要寫幾個?!哪來那麼多模組化的東西可以維護。真正是您親自操刀的程式,

改寫起來都很快的~您覺的我講的有沒有道理?!有時,我們還真的得冷靜下來想一想:

寫這麼多程式,為什麼我還賺不到錢?!是不是不夠努力而已嗎?!工程師們!有時也要

抬起頭來看一看!!那您一定很好奇我有沒有賺到錢?!答案不告訴您:因為大家都喜歡

從別人身上拿到東西,卻都不曾想回饋過~自然至少老天爺就不會給您快樂!

        程式要跑 48MHz 也只能在內部的 SRAM 跑,這種觀念跟 CPU 的cache 是一樣的。

所以,系統開機 Reset 後,硬體會自然的從 Boot Code 載入 Code Buffer 去執行。

當我們要更新程式時,我們可以從 USB 或 EPP 等介面,甚至從外部位置下載程式到 

Data Buffer ,再請內部的 8051 啟動 DMA 1 『自廢武功』把自己給韌體更新

並同時 Reset 重跑。簡單吧!但基本上只能跑 8KBytes 的程式。

但講到這,您有沒有發現一個很好用的作法?!我的應用程式只能跑 8KBytes 嗎?!

答案是錯的

因為在USB 的應用裡,既然程式可以隨時更新,所以我就可以因應不同的需求來更新韌體。

譬如說:我做一條 JTAG Download Cable ,當我發現是 Xilinx 時,我可以要求 HOST 把程式

更新為 Xlinix 的應用介面。同理,當我發現是 Altera 時,也同理可以把應用介面轉成Altera !

說到這,您想一想:MicroChip 的 ICD2 就是在選不同的IC 編號時,他有時也會更新一下

Device System ?!厲害吧。

        皆下來是他的 Data Buffer 是 16 KBytes ,我想對許多應用來說是綽綽有餘的,

為何是 16 KBytes ?要不要猜一下?您既然是系統工程師,應該不是只會寫寫程式而已吧?

重要的是您會不會開規格?!這是您工程能力的提升喔。答案是:當初掃描器的規格是

 600 DPI ,以 A4 的寬度來算是:6000 個點左右,而以 AFE 產生的資料速度來說:

她是 6MHz 的ADC ,而USB 全開的速度是 ~8 Mpbs 所以,以AFE產生的速度是追不上

USB要資料的速度,所以, Buffer  就不必太大,但至少也要把一條線給掃進來,所以就

抓兩條線的裕度,也保留給 EPP 的速度瓶頸。這一點要說明什麼?

您真的很多東西需要 USB 2.0 嗎?!您還是得認清您的物理特性的瓶頸在哪?! 

後來我們發現,若要作純粹 USB 2.0 介面的話,我的 Data Buffer 還可以再小

(說真的要 Cost Down 我也會啊~只是您能不能掌握真正的關鍵技術而已吧)!

只不過,CCD 或 CIS Sensor 支不支援了?!

        當然,為了保險起見,或未來系統的需要,他還是保留可以外接BUFFER 的空間,

就是左邊經由 內部Latch 之後,就可以直接外接記憶體了。16 條 Address ,所以是 64 KBytes 

注意喔~對 8051 來說,這64 KBytes 跟內部的 16 KBytes 是不同的Bank ,

他都可以看得到的喔!!最厲害的還是:他可以直接從USB 下載到外部的 資料空間,

根本不用經由內部任何CPU的介入,所以,我做的 USB ROM Emulator 的下載速度,

我想以USB 1.1 的規格來說:應該沒有人可以超越我了。

        另外,他還有基本的 I/O 及 8051 的 P1 Port 。

        最後我要說明一下是:他的 EPP/ECP/SPP 介面,是相容於標準 parallel 的介面的喔~

是硬體直接作掉的,而不是用程式去造出來的,不信的話,您看他包裝上那些PIN 腳的定義:

有AFD(Auto LineFeed)、SLC(Select) 等喔,當EPP或ECP 傳完一些資料後,也會發中斷通知

 8051 的喔。只不過,當初整個市場很快的被 USB 給席捲了,他的 EPP 介面根本沒有客戶

願意拿來用。所以,我最近就興起想把這兩個介面拿出來作一個橋接器。只是真的有時

忙到沒時間洗PCB 版。

        最後提供一下這顆IC的訊息:他除了 128 Pins 的包裝外也有 44 Pins 的包裝,

兩者的價錢是一樣的,所以,為了避免我的庫存水位,我只有進 128 pins 的包裝。

至少他的應用面或擴充性比較好吧。



至於,44 Pins 的包裝就沒有EPP 或擴充介面了,就看每個人的需求囉。當然,他一些基本的

IO也有啊。只是我不是很懂  BarCode掃描器,不知道這樣的規格適不適合拿來作 BarCode 

掃描器?若有人懂這一塊的應用的話,能否給我一點訊息呢?!

(我在想,BarCode 用的 IC 應該更便宜吧~也不需要USB吧?)

        花了一個章節進一步說明,不知大伙會不會清楚一點,我要表達的東西,否則,

接下來我要說應用的東西,可能大家就更看不懂了?!

~~(待續)


沒有留言:

張貼留言