高速下行分組接入的接收端設計挑戰分析
上網時間 : 2005年11月08日
高速下行分組接入(HSDPA)能提供比通用移動通信系統(UMTS)更高的速率,但要求更強的處理能力、更大存儲容量和高階調製等新的性能,這些要求對接收端的設計帶來挑戰。本文分析了這些技術挑戰,並提出了採用均衡器、雙天線等解決思路。
許多有關HSDPA的討論都集中於這樣一個事實,即HSDPA可與傳統的UMTS業務共存於相同的無線網絡中。這使運營商能夠對網絡進行逐步升級,從而儘可能減少用於改善基礎設施的投資,降低傳輸每比特業務的成本。儘管許多人都強調這種技術能為運營商帶來好處,包括從原有的 UMTS順利過渡、更有效地利用現有設備以及更高的投資回報,但無線技術開發商卻很少談到它對手機設計的影響。
事實上,這種技術給手機設計帶來了挑戰,如果能夠有效解決這些挑戰的話,將為消費者提供3G的性能,使數據傳輸速率達到14.4Mbps,大大超過目前UMTS所能提供的速度。
在權衡HSDPA手機設計所面臨的挑戰時,有兩點需要考慮。其中最重要的一點是,該協議是第三代合作夥伴計劃(3GPP)規範的進一步擴展,而不是一種全新的技術。這種技術通過擴展在UMTS標準裡已經建立的技術來取得速度上的優勢。它將關鍵的數據處理從無線電網絡控製器轉移到節點B(基站),使數據處理與空中接口更靠近,從而實現更高的系統吞吐量並改善服務質量。
由於HSDPA建立在3GPP規範基礎之上,因此手機OEM廠商在開發HSDPA設備時可重複使用大量已有的設計工作,但這些手機將需要性能更高的信號處理器件。
第二個需要考慮的是上行的性能,正如其名稱暗示的那樣,HSDPA只是運營商對下行性能的升級。在未來一定時間內,對高速上行分組接入(HSUPA)的部署將會增加。目前,設計更改應該只是針對手機的接收部分,發射端(W-CDMA上行鏈路)基本保持不變,這對設計所需時間及複雜性的影響是顯而易見的。
接收器實現面臨的困難
並不是所有HSDPA的實現方式都是一樣的,注意到這點很重要。一些較早投入市場的HSDPA解決方案是基於CDMA耙式接收器(rake receiver)技術。儘管對傳統的UMTS而言,耙式接收器工作效果很好,能滿足HSDPA速率高達每秒數兆比特的系統要求,但要實現 14.4Mbps的HSDPA峰值下載速率,則還需要更先進的接收器技術。通常需要在接收器中採用先進的均衡器來應對這一挑戰。
接收器分集是HSDPA性能決定於實現方式的另一個方面。雖然單天線系統適合某些實現方式,在最佳的空中接口條件下有可能提供全速的數據速率,但對更高性能的手機和PDA來說,採用具有接收器分集特性的雙天線系統更有利。增加的第二個接收器和天線允許手機在大多數空中接口條件下達到更高的下載速率。
接收器的其它方面也需要加強。HSDPA支持16-QAM(正交振幅調製)、鏈路自適應、物理層中繼與混合自動重傳請求 (HARQ)相結合、物理層信道條件反饋,以及一種新的傳輸信道類型,這種新的傳輸信道稱為高速下行共享信道(HS-DSCH),它允許幾名用戶共享空中接口的信道資源。16-QAM調製要求更嚴格的射頻性能,特別是對線性的要求更加嚴格,接收器還必須能夠檢測信道質量並反饋給基站。
HSDPA帶來的最基本的影響就是它改變了手機的信號處理及系統控制,從而導致軟硬件實現更加複雜。
HSDPA提供的數據傳輸速率將需要更快的處理能力,並要求手機具備容量更大的存儲器。若要以可接受的成本和功耗水平實現必需的速度和存儲器功能,那麼就必須借助於65納米節點的半導體工藝技術,而目前UMTS系統通常採用130納米及90納米技術。採用65納米工藝技術製造的多內核半導體器件對HSDPA手機獲取市場領導地位將至關重要。
如上所述,以數據處理為主的高性能手機將採用兩個接收器和兩個天線,以儘可能增加在所有鏈路條件下HSDPA業務的吞吐量。儘管兩個天線都嘗試捕獲相同的信號,但通過將接收分集設計到手機裡,將獲得最佳接收性能。通過採用自適應性調製及編碼,任何一個天線接收到的高質量信號,都能進行複雜的調製與更高速率的編碼。因此,用戶能夠享受到更高吞吐量及更高速率的數據業務,同時運營商也能更有效地傳輸數據並為其他用戶保留系統資源。
為達到最好效果,每個天線和接收器都必須工作於相互獨立的信號傳輸路徑。同時,系統必須能夠結合兩個信號輸入以獲得可能的最佳信號。所有這些都增加了設計複雜性,並需要額外的電路,這可能增加手機的尺寸。
不過對設計人員而言,雙天線、雙接收器配置所帶來的最大挑戰在於兩個天線放置的位置必須儘可能離得遠些。通常說來,這意味著兩個天線必須位於手機兩端,即一個天線靠近麥克風,另一個則靠近耳機。在翻蓋式手機設計裡,這意味著信號路徑必須通過翻蓋轉軸,這會帶來工程上的問題,但還沒到無法解決的地步。
增強用戶體驗
對手機OEM廠商和消費者來說,HSDPA技術還有一個方面的好處,即其空中接口有助於延長電池的使用壽命。雖然HSDPA接收器比標準的UMTS手機要複雜得多,並且處理能力更強,但它下載數據的效率也將大幅提高。
因此,處理器不需要那麼多時間來工作,它處於低功耗狀態的時間會更長。目前還沒有數據能夠量化該技術對電池使用壽命的影響,不過預計上述特性能夠達到節能作用。儘管預計功效將得到提高,不過這仍取決於諸多因素。
無論如何,消費者將會注意到的HSDPA最大優勢就是能提供比傳統UMTS更高的速率。吞吐量翻了一番,這意味著最終用戶接收數據的速率更快,而且在更多時間裡將享受到更好的網絡性能。
作者:Bill Krenik
無線先進架構經理
德州儀器
星期二, 11月 08, 2005
星期五, 11月 04, 2005
Skyworks用TTPCom軟體開發EDGE方案
Skyworks用TTPCom軟體開發EDGE方案
上網時間 : 2005年11月04日
TTPCom表示,已授權其數位蜂巢式矽知識產權和EDGE協定軟體給無線半導體公司Skyworks,後者將運用該軟體開發Lynx EDGE蜂巢式系統解決方案,為中、高階手機強化多媒體性能。
TTPCom表示,在一個手機平台上體現EDGE數據機功能,要比執行GSM/GPRS系統性能複雜得多。平台設計者必須優化數據機的所有元件,以確保系統可行性。而TTPCom蜂巢式基頻引擎系列(CBE)為一個完整的通訊系統,能提供數據機核心元件,同時也是開發支援EDGE的基頻晶片組的起點。
Skyworks曾在1996年提出完整手機系統解決方案概念。在其Helios射頻及PA技術基礎上,Skyworks提供用於建造完整無線終端的系統解決方案,內含所有重要的軟、硬體。Skyworks同時提供符合GCF的參考設計,並預先整合協定堆疊和多媒體框架,大幅縮短了手機製造商的開發時程。
TTPCom進一步指出,在結合Skyworks的系統解決方案與TTPCom的CBE、經驗證的協定軟體和預先整合的AJAR應用框架後,將大幅減少手機製造商採用高性能平台時的成本,並縮短上市時間。
上網時間 : 2005年11月04日
TTPCom表示,已授權其數位蜂巢式矽知識產權和EDGE協定軟體給無線半導體公司Skyworks,後者將運用該軟體開發Lynx EDGE蜂巢式系統解決方案,為中、高階手機強化多媒體性能。
TTPCom表示,在一個手機平台上體現EDGE數據機功能,要比執行GSM/GPRS系統性能複雜得多。平台設計者必須優化數據機的所有元件,以確保系統可行性。而TTPCom蜂巢式基頻引擎系列(CBE)為一個完整的通訊系統,能提供數據機核心元件,同時也是開發支援EDGE的基頻晶片組的起點。
Skyworks曾在1996年提出完整手機系統解決方案概念。在其Helios射頻及PA技術基礎上,Skyworks提供用於建造完整無線終端的系統解決方案,內含所有重要的軟、硬體。Skyworks同時提供符合GCF的參考設計,並預先整合協定堆疊和多媒體框架,大幅縮短了手機製造商的開發時程。
TTPCom進一步指出,在結合Skyworks的系統解決方案與TTPCom的CBE、經驗證的協定軟體和預先整合的AJAR應用框架後,將大幅減少手機製造商採用高性能平台時的成本,並縮短上市時間。
星期四, 11月 03, 2005
3G標準戰火再起 惟速戰速決才是眾人之福
3G標準戰火再起 惟速戰速決才是眾人之福
上網時間 : 2005年11月03日
想想也不過就是六年前的事,當時由於L.M. Ericsson和Qualcomm撤消了對簿公堂的威脅,讓這一件鬧得沸沸揚揚的知識產權糾紛達成協議,因而也為3G標準開啟了平順之路。當我聽到這個消息時,覺得是心頭放下了一塊大石。之前雙方為了誰擁有這項CDMA介面技術爭論了多年。他們是在1999年3月達成協議的,適逢第三代行動電話標準獲得批准。
當然,我們現在知道它實際上導致三種相互競爭的無線介面規格並存,為現在的國際商務旅者埋下了禍根。當時磋商取得的突破,是因為當事人表示願意支援一種能夠支援多種作業模式的CDMA射頻介面標準,即在全球各個地區容忍不同的射頻介面。因此產生了下面我們非常熟悉的縮寫,即: Qualcomm的CDMA2000,主要用於美國和韓國;歐洲和日本則迅速採納了W-CDMA (W代表寬頻),目前幾乎在全球各地都在採用。
當然,與IP相關的問題往往久拖不決。但一旦擺平,無線產業一般會接受各方達成的協議,並努力應用相關技術。而現在我要以沈重的心情指出, Ericsson,現在又加上了行動大廠們:Broadcom 、NEC、德州儀器(TI)、諾基亞(Nokia)和Panasonic Mobile Communications讓戰端再起。他們向歐盟提出的申訴中指稱,Qualcomm沒有履行對國際標準機構所做出的承諾,以公平、合理和非歧視性的條款提供其技術授權。
雙方在歐洲開戰,至少最初是這樣,基本上是在預料之中的,因為歐洲正推出3G的W-CDMA版本。但由於有兩家日本廠商捲入其中,因此無法排除官司可能也會打到亞洲。只是歐洲當局將如何回應仍需拭目以待。採用以往的經驗,他們將歡迎這個可以從容審案的機會。英特爾和微軟都曾與歐盟長期爭執不下,而微軟與歐盟的官司至今仍然懸而未決。
在兩項申訴中,其中一項將令歐洲律師們垂涎三尺。這項指控的內容是:Qualcomm試圖阻止其它手機晶片組製造商在歐盟市場進行競爭或者進入此一市場,因而違反了歐盟的法規。但願他們的審理過程不會拖上幾年時間,因為我擔心會出現這種情況。六家公司分別提出申訴不會有什麼用處。如果聯合起訴,倒是有可能加速官司的進展。
更重要的是,希望上述糾紛不會延遲3G服務的推出,因為有些歐洲國家已在迅速推出3G服務。
(John Walko)
上網時間 : 2005年11月03日
想想也不過就是六年前的事,當時由於L.M. Ericsson和Qualcomm撤消了對簿公堂的威脅,讓這一件鬧得沸沸揚揚的知識產權糾紛達成協議,因而也為3G標準開啟了平順之路。當我聽到這個消息時,覺得是心頭放下了一塊大石。之前雙方為了誰擁有這項CDMA介面技術爭論了多年。他們是在1999年3月達成協議的,適逢第三代行動電話標準獲得批准。
當然,我們現在知道它實際上導致三種相互競爭的無線介面規格並存,為現在的國際商務旅者埋下了禍根。當時磋商取得的突破,是因為當事人表示願意支援一種能夠支援多種作業模式的CDMA射頻介面標準,即在全球各個地區容忍不同的射頻介面。因此產生了下面我們非常熟悉的縮寫,即: Qualcomm的CDMA2000,主要用於美國和韓國;歐洲和日本則迅速採納了W-CDMA (W代表寬頻),目前幾乎在全球各地都在採用。
當然,與IP相關的問題往往久拖不決。但一旦擺平,無線產業一般會接受各方達成的協議,並努力應用相關技術。而現在我要以沈重的心情指出, Ericsson,現在又加上了行動大廠們:Broadcom 、NEC、德州儀器(TI)、諾基亞(Nokia)和Panasonic Mobile Communications讓戰端再起。他們向歐盟提出的申訴中指稱,Qualcomm沒有履行對國際標準機構所做出的承諾,以公平、合理和非歧視性的條款提供其技術授權。
雙方在歐洲開戰,至少最初是這樣,基本上是在預料之中的,因為歐洲正推出3G的W-CDMA版本。但由於有兩家日本廠商捲入其中,因此無法排除官司可能也會打到亞洲。只是歐洲當局將如何回應仍需拭目以待。採用以往的經驗,他們將歡迎這個可以從容審案的機會。英特爾和微軟都曾與歐盟長期爭執不下,而微軟與歐盟的官司至今仍然懸而未決。
在兩項申訴中,其中一項將令歐洲律師們垂涎三尺。這項指控的內容是:Qualcomm試圖阻止其它手機晶片組製造商在歐盟市場進行競爭或者進入此一市場,因而違反了歐盟的法規。但願他們的審理過程不會拖上幾年時間,因為我擔心會出現這種情況。六家公司分別提出申訴不會有什麼用處。如果聯合起訴,倒是有可能加速官司的進展。
更重要的是,希望上述糾紛不會延遲3G服務的推出,因為有些歐洲國家已在迅速推出3G服務。
(John Walko)
星期三, 11月 02, 2005
用編譯時聲明在早期發現錯誤
用編譯時聲明在早期發現錯誤
上網時間 : 2005年11月02日
一段時間以來,筆者一直在討論如何在C和C++中使用結構來定義記憶體映射元件暫存器的佈局,並曾討論了可以用來為相應暫存器給每個結構成員以合適的尺寸和排列。然而,不同的平台對數據的排列和填充不一樣。因此,一個特定的結構定義對一個平台能正確佈局結構成員,但對另外一個不同的平台進行編譯時,可能會產生錯誤的佈局。
一種不正確的佈局結構在編譯時常常沒有警告出現,但是最終的程式在執行時不能依所期望的那樣工作。你可以改進程式碼而不用費時費力地除錯,這樣編譯器能發現佈局錯誤。其中的技巧就是利用聲明(assertion),聲明能在結構成員出現尺寸或者排列錯誤時產生明顯的編譯時 (compile-time)錯誤。
C和C++提供了實現聲明的不同方法。筆者偏愛於那些能提供標準C聲明巨集編譯時對等量的方法。我們從簡要了解一下這個巨集開始。
執行時(Run-time)聲明
聲明巨集在標準的C頭文件和標準的C++頭文件中定義。形式為:
assert(condition);
的調用擴展到測試條件的程式碼。如果條件為真(產生一個非零值),將什麼也不會產生。即在巨集調用之後,程式繼續執行下一個語句。另一方面,如果條件為假(等於零),程式寫一個診斷消息到stderr(標準錯誤串流),並透過調用標準中斷函數終止程式的執行。
聲明巨集能幫助在程式中發現邏輯錯誤。例如,假設調用get_token(f, t, n)掃描來自FILE *f的輸入,並將掃描的輸入拷貝到字符數組中,以*t開頭,長度為n,可以在get_token中調用聲明來發現錯誤的自變量值,否則將導致產生不確定的行為,如下面的函數:
bool get_token(FILE *f, char *t, size_t n)
{
...
assert(f != NULL);
assert(t != NULL);
assert(n >= 2);
...
}
如果程式不經意地用一個空指針作為第一個自變量來調用get_token函數,第一個聲明將向stderr寫入一個消息,並中斷執行。對於大多數編譯器來說,消息看起來類似於:
Assertion failed: f != NULL, file get_token.c, line 18
將聲明寫入到程式碼中能幫助進行歸檔,並提高開發程式碼的成功率。然而,因為是寫到stderr,在缺乏對標準C I/O系統支援的嵌入式環境中,標準的聲明巨集毫無用處。然而,寫你自己的聲明巨集版、在別的地方顯示消息並不那麼困難。
儘管聲明巨集可以是一種有用的除錯輔助手段,但並不適合於處理在已付運的終端用戶產品中的執行時錯誤。已付運的產品應該產生對於一般終端用戶來說很有意義的診斷消息。它還應該比透過調用中斷函數更可靠地恢復或關斷程式的執行。因此,提供了一種在原始程式碼很少或不改變的情況下使所有聲明無效的簡單方法。開發者可以在程式碼中保留聲明作為文檔,但是應該使它們不會產生程式碼。
如果在包入之前在原始文件中定義NDEBUG巨集,聲明巨集將這樣簡單地定義:
#define assert(cond) ((void)0)
因此,隨後的調用諸如:
assert(f != NULL);
擴展為:
((void)0);
編譯器能夠優化這個語句,使其根本不會產生程式碼。
可以在包入指令前,將NDEBUG的定義寫入到原始程式碼中:
#define NDEBUG
#include }
這種方法的問題是,每次想打開或者關閉聲明的時候必須修改原始程式。大多數編譯器允許在調用編譯器的時候,透過使用命令行自變量來定義巨集,通常選擇D選項。例如,像下面的命令行出現在原始程式的第一行之前,則將聲明關斷:
cc -DNDEBUG get_token.c
compiles get_token.c as if:
#define NDEBUG
使用預處理程式的編譯時聲明
開發者可以使用聲明來驗證記憶體映射結構成員具有正確的尺寸和排列。例如,假設像下面這樣為一個定時器定義元件暫存器:
typedef struct timer timer;}
struct timer
{
uint8_t MODE;
uint32_t DATA;
uint32_t COUNT;
};
可以使用一個聲明和offsetof巨集來驗證DATA成員在結構內部具有偏移4,如下:
assert(offsetof(timer, DATA) == 4);
在標準C頭文件和標準C++頭文件中定義了tffsetof巨集。一種fsetof(t, m)形式的表達式從結構類型t的開始處返回成員m的偏移,偏移佔若干位元組。
這個聲明確實解決了一個潛在的排列問題,但是並不十分理想。使用聲明來檢查一個結構成員的偏移將應該在編譯時完成的檢查延遲到執行時。對聲明的調用只可以出現在函數內,因此不得不將調用包含在一個函數里,將這個函數作為程式啟動的一部份調用,或者緊接著程式啟動調用這個函數。
這裡需要澄清的是,筆者並不是建議每個聲明都可以在編譯時檢查。例如,像測試一個變量的值的聲明如:
assert(f != NULL);
必須在執行時完成。然而,測試一個常數表達式的值的聲明,例如一個結構成員的尺寸和偏移,可以在編譯時完成。
對於只涉及常數表達式的聲明來說,一些C和C++編譯器將允許使用一個預處理程式條件語句來測試聲明,如下列語句:
#if (offsetof(timer, DATA) != 4)}
#error DATA must be at offset 4 in timer
#endif
利用這種方法,編譯器在編譯時評估這個條件─實際上是在預處理期間。如果聲明失敗(#if條件為真),預處理程式執行#error指令,這個指令顯示一個包含指令中的文本的消息,並結束編譯。不同的編譯器的消息形式各不相同,但可發現一些相似之處:
timer.h, line 14: #error: DATA must be at offset 4 in timer
使用#error指令使你能寫出非常清楚的診斷消息。
因為這種方法在編譯時評估聲明,因此聲明不會存在任何執行時的代價,因此你可以不必將聲明關閉。一個程式的編譯時聲明失敗只會導致編譯失敗。
與聲明調用不同的是,預處理指令可以出現在任何地方─全局、局部,或者甚至是在一個類或者結構定義內部,而聲明調用只能出現在函數體內。
儘管有這些優勢,使用#if指令實現聲明至少會有幾個問題。第一個問題不太嚴重,即必須對#if語句中的聲明條件求反,在這個語句中通常你會使用聲明巨集來寫。例如,為測試定時器的DATA成員的偏移為4,依下面的語句寫執行時聲明:
assert(offsetof(timer, DATA) = = 4);
為測試在編譯時的相同條件,需要用運算符!=替換= =,如:
#if (offsetof(timer, DATA) != 4)}
#error ...
#endif
或者在邏輯上對整個條件求反,如:
#if (!(offsetof(timer, DATA) == 4))
#error ...
#endif
或者不管條件,將#error指令放到#else部份,如:
#if (offsetof(timer, DATA) == 4)}
#else
#error ...
#endif
第二個問題是關於使用#if指令來實現聲明,這個問題比較嚴重:標準C和C++不識別在#if條件中的sizeof和 offsetof。它們也不能識別在#if條件中的枚舉常數。一些編譯器允許在#if中作為擴展存在sizeof、offsetof和枚舉常數,但是大多數編譯器是不允許的。慶幸的是,你可以以另外一種沒有這種限制的方式來寫編譯時聲明。
編譯時聲明的無效聲明
在C和C++中,規定一個數組聲明中元素數量的一個常數表達式必須具有一個正值。例如:
int w[10];
int x[1];
是有效的數組聲明,而int y[0];不是。一個常數維數組具有多個作業數和運算符,包括sizeof和offsetof子表達式,例如:
int z[2 * sizeof(w) / sizeof(w[0])];
這聲明數組z具有兩倍於數組w的元素。
開發者可以利用常數數組的維數必須是正數的要求,來以巨集的形式實現編譯時聲明:
#define compile_time_assert(cond)
char assertion[(cond) ? 1 : 0]
如果x是一個評估為真的表達式,於是調用:
compile_time_assert(x);
擴展到一個有效的數組聲明(一維)。否則,擴展到一個無效的數組聲明(0維),這個數組聲明產生一個編譯時診斷消息(錯誤或者警告)。
然而,當聲明失敗時錯誤消息的文本對於不同的編譯器是不同的。筆者看到過的消息如『數組必須至少具有一個元素’,或者『無效的腳本或者腳本過大’。
如果幸運,編譯器產生包含數組名的一個消息,例如數組大小『聲明’為零。在那種情況下,它幫助使數組名成為一個額外的巨集參數,如下:
#define compile_time_assert(cond, msg)
char msg[(cond) ? 1 : 0]
然後,你可以使用數組名來描述聲明失敗的原因。例如,如果調用:
compile_time_assert(offsetof(timer, DATA) == 4,}
DATA_must_be_at_offset_4);
造成一個聲明失敗,那麼將可能看到一個錯誤消息,類似於:
size of array 'DATA_must_be_at_offset_4' is zero
如上所述,這個巨集有一個很容易解決的小問題。這個問題是,在某些情況下,數組聲明可能是分配儲存的一個定義。可以將數組聲明轉變為typedef來避免這個問題,如:
#define compile_time_assert(cond, msg)
typedef char msg[(cond) ? 1 : 0]
在相同的範圍內,兩個typedefs不能具有相同的名字,因此必須使用msg參數來給每個typedef一個獨特的名字。如果不願意採用msg參數,那麼可以將數組聲明為外部數組,如下所示:
#define compile_time_assert(cond)
extern char assertion[(cond) ? 1 : 0]
然而,如果採用這種方法,將不能在C++類中使用巨集,因為你不能將C++類成員聲明為外部量。你可以發現編譯器不會對0大小的數組提出『抱怨’。在這種情況下,你可能嘗試將0改變為-1,如下所示:
#define compile_time_assert(cond, msg)
typedef char msg[(cond) ? 1 : -1]
Boost庫(www.boost.org)為C++程式設計師提供了另一種以稱為BOOST_STATIC_ASSERT 的巨集的形式實現編譯時聲明的方法。利用C++模板可以巧妙地實現這個巨集。如果你是一個C++程式設計師,而且你理解模板的特殊性,你可以進行嘗試。
作者: Dan Saks
總裁
Email:dsaks@wittenberg.edu
Saks & Associates公司
上網時間 : 2005年11月02日
一段時間以來,筆者一直在討論如何在C和C++中使用結構來定義記憶體映射元件暫存器的佈局,並曾討論了可以用來為相應暫存器給每個結構成員以合適的尺寸和排列。然而,不同的平台對數據的排列和填充不一樣。因此,一個特定的結構定義對一個平台能正確佈局結構成員,但對另外一個不同的平台進行編譯時,可能會產生錯誤的佈局。
一種不正確的佈局結構在編譯時常常沒有警告出現,但是最終的程式在執行時不能依所期望的那樣工作。你可以改進程式碼而不用費時費力地除錯,這樣編譯器能發現佈局錯誤。其中的技巧就是利用聲明(assertion),聲明能在結構成員出現尺寸或者排列錯誤時產生明顯的編譯時 (compile-time)錯誤。
C和C++提供了實現聲明的不同方法。筆者偏愛於那些能提供標準C聲明巨集編譯時對等量的方法。我們從簡要了解一下這個巨集開始。
執行時(Run-time)聲明
聲明巨集在標準的C頭文件和標準的C++頭文件中定義。形式為:
assert(condition);
的調用擴展到測試條件的程式碼。如果條件為真(產生一個非零值),將什麼也不會產生。即在巨集調用之後,程式繼續執行下一個語句。另一方面,如果條件為假(等於零),程式寫一個診斷消息到stderr(標準錯誤串流),並透過調用標準中斷函數終止程式的執行。
聲明巨集能幫助在程式中發現邏輯錯誤。例如,假設調用get_token(f, t, n)掃描來自FILE *f的輸入,並將掃描的輸入拷貝到字符數組中,以*t開頭,長度為n,可以在get_token中調用聲明來發現錯誤的自變量值,否則將導致產生不確定的行為,如下面的函數:
bool get_token(FILE *f, char *t, size_t n)
{
...
assert(f != NULL);
assert(t != NULL);
assert(n >= 2);
...
}
如果程式不經意地用一個空指針作為第一個自變量來調用get_token函數,第一個聲明將向stderr寫入一個消息,並中斷執行。對於大多數編譯器來說,消息看起來類似於:
Assertion failed: f != NULL, file get_token.c, line 18
將聲明寫入到程式碼中能幫助進行歸檔,並提高開發程式碼的成功率。然而,因為是寫到stderr,在缺乏對標準C I/O系統支援的嵌入式環境中,標準的聲明巨集毫無用處。然而,寫你自己的聲明巨集版、在別的地方顯示消息並不那麼困難。
儘管聲明巨集可以是一種有用的除錯輔助手段,但並不適合於處理在已付運的終端用戶產品中的執行時錯誤。已付運的產品應該產生對於一般終端用戶來說很有意義的診斷消息。它還應該比透過調用中斷函數更可靠地恢復或關斷程式的執行。因此,提供了一種在原始程式碼很少或不改變的情況下使所有聲明無效的簡單方法。開發者可以在程式碼中保留聲明作為文檔,但是應該使它們不會產生程式碼。
如果在包入之前在原始文件中定義NDEBUG巨集,聲明巨集將這樣簡單地定義:
#define assert(cond) ((void)0)
因此,隨後的調用諸如:
assert(f != NULL);
擴展為:
((void)0);
編譯器能夠優化這個語句,使其根本不會產生程式碼。
可以在包入指令前,將NDEBUG的定義寫入到原始程式碼中:
#define NDEBUG
#include }
這種方法的問題是,每次想打開或者關閉聲明的時候必須修改原始程式。大多數編譯器允許在調用編譯器的時候,透過使用命令行自變量來定義巨集,通常選擇D選項。例如,像下面的命令行出現在原始程式的第一行之前,則將聲明關斷:
cc -DNDEBUG get_token.c
compiles get_token.c as if:
#define NDEBUG
使用預處理程式的編譯時聲明
開發者可以使用聲明來驗證記憶體映射結構成員具有正確的尺寸和排列。例如,假設像下面這樣為一個定時器定義元件暫存器:
typedef struct timer timer;}
struct timer
{
uint8_t MODE;
uint32_t DATA;
uint32_t COUNT;
};
可以使用一個聲明和offsetof巨集來驗證DATA成員在結構內部具有偏移4,如下:
assert(offsetof(timer, DATA) == 4);
在標準C頭文件和標準C++頭文件中定義了tffsetof巨集。一種fsetof(t, m)形式的表達式從結構類型t的開始處返回成員m的偏移,偏移佔若干位元組。
這個聲明確實解決了一個潛在的排列問題,但是並不十分理想。使用聲明來檢查一個結構成員的偏移將應該在編譯時完成的檢查延遲到執行時。對聲明的調用只可以出現在函數內,因此不得不將調用包含在一個函數里,將這個函數作為程式啟動的一部份調用,或者緊接著程式啟動調用這個函數。
這裡需要澄清的是,筆者並不是建議每個聲明都可以在編譯時檢查。例如,像測試一個變量的值的聲明如:
assert(f != NULL);
必須在執行時完成。然而,測試一個常數表達式的值的聲明,例如一個結構成員的尺寸和偏移,可以在編譯時完成。
對於只涉及常數表達式的聲明來說,一些C和C++編譯器將允許使用一個預處理程式條件語句來測試聲明,如下列語句:
#if (offsetof(timer, DATA) != 4)}
#error DATA must be at offset 4 in timer
#endif
利用這種方法,編譯器在編譯時評估這個條件─實際上是在預處理期間。如果聲明失敗(#if條件為真),預處理程式執行#error指令,這個指令顯示一個包含指令中的文本的消息,並結束編譯。不同的編譯器的消息形式各不相同,但可發現一些相似之處:
timer.h, line 14: #error: DATA must be at offset 4 in timer
使用#error指令使你能寫出非常清楚的診斷消息。
因為這種方法在編譯時評估聲明,因此聲明不會存在任何執行時的代價,因此你可以不必將聲明關閉。一個程式的編譯時聲明失敗只會導致編譯失敗。
與聲明調用不同的是,預處理指令可以出現在任何地方─全局、局部,或者甚至是在一個類或者結構定義內部,而聲明調用只能出現在函數體內。
儘管有這些優勢,使用#if指令實現聲明至少會有幾個問題。第一個問題不太嚴重,即必須對#if語句中的聲明條件求反,在這個語句中通常你會使用聲明巨集來寫。例如,為測試定時器的DATA成員的偏移為4,依下面的語句寫執行時聲明:
assert(offsetof(timer, DATA) = = 4);
為測試在編譯時的相同條件,需要用運算符!=替換= =,如:
#if (offsetof(timer, DATA) != 4)}
#error ...
#endif
或者在邏輯上對整個條件求反,如:
#if (!(offsetof(timer, DATA) == 4))
#error ...
#endif
或者不管條件,將#error指令放到#else部份,如:
#if (offsetof(timer, DATA) == 4)}
#else
#error ...
#endif
第二個問題是關於使用#if指令來實現聲明,這個問題比較嚴重:標準C和C++不識別在#if條件中的sizeof和 offsetof。它們也不能識別在#if條件中的枚舉常數。一些編譯器允許在#if中作為擴展存在sizeof、offsetof和枚舉常數,但是大多數編譯器是不允許的。慶幸的是,你可以以另外一種沒有這種限制的方式來寫編譯時聲明。
編譯時聲明的無效聲明
在C和C++中,規定一個數組聲明中元素數量的一個常數表達式必須具有一個正值。例如:
int w[10];
int x[1];
是有效的數組聲明,而int y[0];不是。一個常數維數組具有多個作業數和運算符,包括sizeof和offsetof子表達式,例如:
int z[2 * sizeof(w) / sizeof(w[0])];
這聲明數組z具有兩倍於數組w的元素。
開發者可以利用常數數組的維數必須是正數的要求,來以巨集的形式實現編譯時聲明:
#define compile_time_assert(cond)
char assertion[(cond) ? 1 : 0]
如果x是一個評估為真的表達式,於是調用:
compile_time_assert(x);
擴展到一個有效的數組聲明(一維)。否則,擴展到一個無效的數組聲明(0維),這個數組聲明產生一個編譯時診斷消息(錯誤或者警告)。
然而,當聲明失敗時錯誤消息的文本對於不同的編譯器是不同的。筆者看到過的消息如『數組必須至少具有一個元素’,或者『無效的腳本或者腳本過大’。
如果幸運,編譯器產生包含數組名的一個消息,例如數組大小『聲明’為零。在那種情況下,它幫助使數組名成為一個額外的巨集參數,如下:
#define compile_time_assert(cond, msg)
char msg[(cond) ? 1 : 0]
然後,你可以使用數組名來描述聲明失敗的原因。例如,如果調用:
compile_time_assert(offsetof(timer, DATA) == 4,}
DATA_must_be_at_offset_4);
造成一個聲明失敗,那麼將可能看到一個錯誤消息,類似於:
size of array 'DATA_must_be_at_offset_4' is zero
如上所述,這個巨集有一個很容易解決的小問題。這個問題是,在某些情況下,數組聲明可能是分配儲存的一個定義。可以將數組聲明轉變為typedef來避免這個問題,如:
#define compile_time_assert(cond, msg)
typedef char msg[(cond) ? 1 : 0]
在相同的範圍內,兩個typedefs不能具有相同的名字,因此必須使用msg參數來給每個typedef一個獨特的名字。如果不願意採用msg參數,那麼可以將數組聲明為外部數組,如下所示:
#define compile_time_assert(cond)
extern char assertion[(cond) ? 1 : 0]
然而,如果採用這種方法,將不能在C++類中使用巨集,因為你不能將C++類成員聲明為外部量。你可以發現編譯器不會對0大小的數組提出『抱怨’。在這種情況下,你可能嘗試將0改變為-1,如下所示:
#define compile_time_assert(cond, msg)
typedef char msg[(cond) ? 1 : -1]
Boost庫(www.boost.org)為C++程式設計師提供了另一種以稱為BOOST_STATIC_ASSERT 的巨集的形式實現編譯時聲明的方法。利用C++模板可以巧妙地實現這個巨集。如果你是一個C++程式設計師,而且你理解模板的特殊性,你可以進行嘗試。
作者: Dan Saks
總裁
Email:dsaks@wittenberg.edu
Saks & Associates公司
星期二, 11月 01, 2005
以專利阻礙產業發展 六大廠訴請歐盟調查Qualcomm
以專利阻礙產業發展 六大廠訴請歐盟調查Qualcomm
上網時間 : 2005年11月01日
諾基亞(Nokia)、Ericsson、Broadcom、NEC、Panasonic Mobile Communications和德州儀器(TI)等六家通訊產業廠商日前分別向歐盟提起申訴,指控Qualcomm利用自己持有的CDMA技術專利限制競爭對手之發展,並指稱這種行為違反了反壟斷法。
這些公司訴請歐盟就Qualcomm在3G行動技術基本專利授權方面的做法展開調查,並制止Qualcomm的反公平競爭行為。 Qualcomm是CDMA技術領域的先驅,該公司還擁有采用CDMA技術的3G標準的幾項重要專利。上述幾家公司在申訴中指出,Qualcomm的做法違反了歐盟公平競爭法,同時也沒有兌現自己當初對國際組織的承諾。
Qualcomm之前曾經承諾公平、公正、合理的向其它公司提供技術授權。諾基亞等六家公司在在一個聯合新聞發表會上表示,如果當初 Qualcomm沒有做出這樣的承諾,WCDMA 3G標準將不會被採納。六家公司指控Qualcomm試圖阻止其它手機晶片組廠商進入市場,或削弱其它廠商的競爭力,這種行為違反了歐盟法律。
根據申訴書中的內容,Qualcomm的主要做法包括:拒絕依據標準條款向潛在的晶片組市場競爭對手提供基本專利授權,以及降低獨家購買 Qualcomm晶片組的手機廠商的版權費用。諾基亞等六家公司還指控,Qualcomm為WCDMA標準基本專利收取的版權費用過高,收費等級甚至與 CDMA 2000標準基本專利相當。事實上,Qualcomm對WCDMA標準的貢獻不及CDMA2000標準,因此WCDMA基本專利費用也應當低一些。
而針對上述這些公司向歐盟提起的申訴,美國Qualcomm公司的回應是,認為競爭對手的種種指控是毫無事實和法律依據的,並表示將積極因應任何對其授權和晶片銷售行為的指控。Qualcomm公司表示,已經與多家廠商簽署了130多個授權協議,而其中包括這次進行申訴的六家公司中的其中五家,所以此一指控是缺乏合理性的。
Qualcomm還否認目前的授權模式意在排除手機晶片組市場的競爭對手,理由是,Qualcomm已經把技術授權給了主要的晶片生產商,包括德州儀器、NEC、英飛凌(Infineon)、飛利浦(Philips)、Agere、摩托羅拉(Motorola)、威盛(VIA)和富士通 (Fujitsu)。
(Peter Clarke、Spencer Chin)
上網時間 : 2005年11月01日
諾基亞(Nokia)、Ericsson、Broadcom、NEC、Panasonic Mobile Communications和德州儀器(TI)等六家通訊產業廠商日前分別向歐盟提起申訴,指控Qualcomm利用自己持有的CDMA技術專利限制競爭對手之發展,並指稱這種行為違反了反壟斷法。
這些公司訴請歐盟就Qualcomm在3G行動技術基本專利授權方面的做法展開調查,並制止Qualcomm的反公平競爭行為。 Qualcomm是CDMA技術領域的先驅,該公司還擁有采用CDMA技術的3G標準的幾項重要專利。上述幾家公司在申訴中指出,Qualcomm的做法違反了歐盟公平競爭法,同時也沒有兌現自己當初對國際組織的承諾。
Qualcomm之前曾經承諾公平、公正、合理的向其它公司提供技術授權。諾基亞等六家公司在在一個聯合新聞發表會上表示,如果當初 Qualcomm沒有做出這樣的承諾,WCDMA 3G標準將不會被採納。六家公司指控Qualcomm試圖阻止其它手機晶片組廠商進入市場,或削弱其它廠商的競爭力,這種行為違反了歐盟法律。
根據申訴書中的內容,Qualcomm的主要做法包括:拒絕依據標準條款向潛在的晶片組市場競爭對手提供基本專利授權,以及降低獨家購買 Qualcomm晶片組的手機廠商的版權費用。諾基亞等六家公司還指控,Qualcomm為WCDMA標準基本專利收取的版權費用過高,收費等級甚至與 CDMA 2000標準基本專利相當。事實上,Qualcomm對WCDMA標準的貢獻不及CDMA2000標準,因此WCDMA基本專利費用也應當低一些。
而針對上述這些公司向歐盟提起的申訴,美國Qualcomm公司的回應是,認為競爭對手的種種指控是毫無事實和法律依據的,並表示將積極因應任何對其授權和晶片銷售行為的指控。Qualcomm公司表示,已經與多家廠商簽署了130多個授權協議,而其中包括這次進行申訴的六家公司中的其中五家,所以此一指控是缺乏合理性的。
Qualcomm還否認目前的授權模式意在排除手機晶片組市場的競爭對手,理由是,Qualcomm已經把技術授權給了主要的晶片生產商,包括德州儀器、NEC、英飛凌(Infineon)、飛利浦(Philips)、Agere、摩托羅拉(Motorola)、威盛(VIA)和富士通 (Fujitsu)。
(Peter Clarke、Spencer Chin)
星期五, 10月 28, 2005
3G、Wi-Fi和WiMAX勢必走向整合之路
3G、Wi-Fi和WiMAX勢必走向整合之路
上網時間 : 2005年10月28日
隨著無線服務供應商及設備製造商嘗試選出行動寬頻資料的未來發展之路時出現一些說法認為,業界需要將3G、WiMAX及Wi-Fi加以適當地整合,才能讓成功最大化。市場研究公司Rysavy Research and Datacomm Research Company聲稱,當無線多媒體應用不斷增多時,WiMAX將發揮關鍵作用。
該市場研究公司表示:「WiMAX必須成為較廣泛領域的固定、漫遊(nomadic)和網路中繼站(backhaul)應用之全球標準。只有供應商完美執行,WiMAX才能功成名就。在行動市場,WiMAX廠商必須採用低成本高密度的基地台基礎設備,以提供較高的容量並向大樓應用滲透。」
該報告由Rysavy公司總裁Peter Rysavy撰寫,他聲稱,CDMA無線技術將在未來幾年內主宰行動技術,但這些3G系統仍然不能滿足需求。面對業已活躍的20億無線用戶,Rysavy 指出,沒有一種單一的網路技術能夠解決所有市場的要求。因此,實現額外解決方案的壓力也隨之而來,包括Wi-Fi和WiMAX。然而,後兩種技術卻並未被傳統的服務供應商所接納。
報告指出,「支援更多寬頻用戶的唯一途徑是將多媒體資料傳輸下載給行動廣播網路,採納更密集部署的無線網路技術,不管是3G、WiMAX或 Wi-Fi。」Rysavy並補充說明,3G和WiMAX族群將不得不埋頭苦幹,以改進智慧基地台天線系統和MIMO (Multiple-Input Multiple-Output)方案。
(W. Gardner)
上網時間 : 2005年10月28日
隨著無線服務供應商及設備製造商嘗試選出行動寬頻資料的未來發展之路時出現一些說法認為,業界需要將3G、WiMAX及Wi-Fi加以適當地整合,才能讓成功最大化。市場研究公司Rysavy Research and Datacomm Research Company聲稱,當無線多媒體應用不斷增多時,WiMAX將發揮關鍵作用。
該市場研究公司表示:「WiMAX必須成為較廣泛領域的固定、漫遊(nomadic)和網路中繼站(backhaul)應用之全球標準。只有供應商完美執行,WiMAX才能功成名就。在行動市場,WiMAX廠商必須採用低成本高密度的基地台基礎設備,以提供較高的容量並向大樓應用滲透。」
該報告由Rysavy公司總裁Peter Rysavy撰寫,他聲稱,CDMA無線技術將在未來幾年內主宰行動技術,但這些3G系統仍然不能滿足需求。面對業已活躍的20億無線用戶,Rysavy 指出,沒有一種單一的網路技術能夠解決所有市場的要求。因此,實現額外解決方案的壓力也隨之而來,包括Wi-Fi和WiMAX。然而,後兩種技術卻並未被傳統的服務供應商所接納。
報告指出,「支援更多寬頻用戶的唯一途徑是將多媒體資料傳輸下載給行動廣播網路,採納更密集部署的無線網路技術,不管是3G、WiMAX或 Wi-Fi。」Rysavy並補充說明,3G和WiMAX族群將不得不埋頭苦幹,以改進智慧基地台天線系統和MIMO (Multiple-Input Multiple-Output)方案。
(W. Gardner)
星期二, 10月 25, 2005
為「嵌入式系統」正名
為「嵌入式系統」正名
上網時間 : 2005年10月25日
嵌入式系統中都具有隱藏的智慧。我並不是指嵌入式系統裝置看起來都笨笨的──雖然對消費者來說這樣就足夠了──而是說,嵌入式系統的真正精華所在都隱藏在一個黑箱中。不管是DVD錄影機、音樂播放器、汽車防鎖煞車系統,還是行動通訊設備,其系統核心都藏在彩色塑膠外殼和商標的背後,硬體和軟體設計通常都不是業者強調的賣點。
Jim Turley
的確,我們看到的嵌入式系統其實只是其零件或包裝的表象,而不是真正的技術。相比之下,隨便一台電腦,不管是PC、Mac、工作站、還是超級電腦,業者總是強調產品中的技術內涵。我們常說買一台4-GHz、具備512MB RAM的PC,但從來不會說買具有6箇中斷的微波晶片及一個10位元A/D的產品。對於電腦首先就表現出的是其核心元件(常見的「Intel Inside」),而對於嵌入式產品的核心內容卻總是難以展現出來。
這對許多嵌入式工程師來說其實是感到挫折的,他們設計了產品,但工作本身卻不引人注目。但是換一個角度來看,不強調技術內涵未必是錯誤的。一個過分技術化的嵌入式產品往往會在市場中失敗,而簡單的產品往往非常易於銷售。
嵌入式設計人員對於描述他們自己的工作也會有失落感,假如你參與設計大眾所熟識的產品,如F/A-18 Hornet、Whirlpool冰箱或Nokia手機,你可以自豪地說:「我就是做那個產品的」,但對於我們從事嵌入式產品開發的大多數人來說,開發的產品往往超出一般大眾所理解的範圍,例如,祖母們可以知道留聲機是什麼,但卻無法理解一個具有即時優先權的多工調度程式。
Donald A. Norman有一本著名的書——《無形的電腦》(The Invisible Computer)。他在書中提到,真正的電腦是極其複雜的,然而卻是無形的,也就是說嵌入式電腦無處不在。他說的絕對正確,據我估計,美國每個中產階層家庭中平均擁有大約40至50個內含微處理器的設備,再外上車庫中每輛汽車所包含的10至30個。與家庭中的PC數量(一個PC包括幾個處理器)相比,嵌入式產品雖不起眼但卻佔據了絕對的優勢。
當我們被問到嵌入式系統時,我們總是手舞足蹈地進行描述,我們是嵌入式設計工程師和程式設計人員,卻不能非常清晰地說明我們所做的工作;更甚者,嵌入式 (embedded),這個最基本的名詞,在很多情況下其定義還往往不是完全相同的,也不是大多數人常用的辭彙。看來我們的確需要找到一個名詞,能夠更貼切地描述我們的工作。
《無形的電腦》是一個良好的開始,但如果我說「我的工作是設計看不見的電腦」,好像不太容易讓人理解。但試圖解釋「嵌入式 」又有點像解釋一個笑話:當你說完時,你的聽眾已經不感興趣了。我們所需的是一個更貼切的術語,這種吃力而混亂的描述已經持續太久了,現在需要有人能想出更好的定義。所以,寫出你的高見吧,你所從事的產業需要你。
作者:Jim Turley是EE Times姊妹刊物《嵌入式系統設計》的主編。
上網時間 : 2005年10月25日
嵌入式系統中都具有隱藏的智慧。我並不是指嵌入式系統裝置看起來都笨笨的──雖然對消費者來說這樣就足夠了──而是說,嵌入式系統的真正精華所在都隱藏在一個黑箱中。不管是DVD錄影機、音樂播放器、汽車防鎖煞車系統,還是行動通訊設備,其系統核心都藏在彩色塑膠外殼和商標的背後,硬體和軟體設計通常都不是業者強調的賣點。
Jim Turley
的確,我們看到的嵌入式系統其實只是其零件或包裝的表象,而不是真正的技術。相比之下,隨便一台電腦,不管是PC、Mac、工作站、還是超級電腦,業者總是強調產品中的技術內涵。我們常說買一台4-GHz、具備512MB RAM的PC,但從來不會說買具有6箇中斷的微波晶片及一個10位元A/D的產品。對於電腦首先就表現出的是其核心元件(常見的「Intel Inside」),而對於嵌入式產品的核心內容卻總是難以展現出來。
這對許多嵌入式工程師來說其實是感到挫折的,他們設計了產品,但工作本身卻不引人注目。但是換一個角度來看,不強調技術內涵未必是錯誤的。一個過分技術化的嵌入式產品往往會在市場中失敗,而簡單的產品往往非常易於銷售。
嵌入式設計人員對於描述他們自己的工作也會有失落感,假如你參與設計大眾所熟識的產品,如F/A-18 Hornet、Whirlpool冰箱或Nokia手機,你可以自豪地說:「我就是做那個產品的」,但對於我們從事嵌入式產品開發的大多數人來說,開發的產品往往超出一般大眾所理解的範圍,例如,祖母們可以知道留聲機是什麼,但卻無法理解一個具有即時優先權的多工調度程式。
Donald A. Norman有一本著名的書——《無形的電腦》(The Invisible Computer)。他在書中提到,真正的電腦是極其複雜的,然而卻是無形的,也就是說嵌入式電腦無處不在。他說的絕對正確,據我估計,美國每個中產階層家庭中平均擁有大約40至50個內含微處理器的設備,再外上車庫中每輛汽車所包含的10至30個。與家庭中的PC數量(一個PC包括幾個處理器)相比,嵌入式產品雖不起眼但卻佔據了絕對的優勢。
當我們被問到嵌入式系統時,我們總是手舞足蹈地進行描述,我們是嵌入式設計工程師和程式設計人員,卻不能非常清晰地說明我們所做的工作;更甚者,嵌入式 (embedded),這個最基本的名詞,在很多情況下其定義還往往不是完全相同的,也不是大多數人常用的辭彙。看來我們的確需要找到一個名詞,能夠更貼切地描述我們的工作。
《無形的電腦》是一個良好的開始,但如果我說「我的工作是設計看不見的電腦」,好像不太容易讓人理解。但試圖解釋「嵌入式 」又有點像解釋一個笑話:當你說完時,你的聽眾已經不感興趣了。我們所需的是一個更貼切的術語,這種吃力而混亂的描述已經持續太久了,現在需要有人能想出更好的定義。所以,寫出你的高見吧,你所從事的產業需要你。
作者:Jim Turley是EE Times姊妹刊物《嵌入式系統設計》的主編。
星期五, 10月 21, 2005
採用MIMO-OFDM技術提升WLAN性能
採用MIMO-OFDM技術提升WLAN性能
上網時間 : 2005年10月21日
本文描述了多輸入/多輸出-正交分頻多工(MIMO-OFDM)技術如何顯著提升WLAN性能,使其不僅能夠更加經濟有效地為現有應用服務,而且能夠實現要求更高的新型應用。此外,本文還解釋了製造商和終端用戶如何能夠透過部署MIMO-OFDM產品而獲益,又不錯過未來IEEE 802.11n標準可以帶來的好處。
任何一種無線連接的品質和有用性都可以透過三個基本參數進行完全描述,分別是:速度、範圍以及可靠性。MIMO-OFDM出現之前,上述3個參數依據嚴格的規則相互限制:速度的增加只有靠犧牲範圍和可靠性才可實現;範圍的擴展以犧牲速度和可靠性為代價;而提高可靠性必須降低速度和傳輸範圍。MIMO-OFDM的出現顛覆了這種限制,因為它能同時提升上述3個參數的性能。MIMO最終將使包括行動電話在內的所有主要無線產業獲益,但目前,WLAN引領了利用MIMO創新的潮流。
什麼是MIMO?
多徑傳播是所有無線通訊環境的一大特徵。
通常情況下,從A點的發射器到B點的接收器之間有一條主要(最直接)通道。但不可避免的是,一些發射訊號會通過其它路徑(從環境中的物體、大地以及大氣層反射等)到達接收器。

圖1:多徑傳播如何影響無線訊號。
經非直接通道傳輸的訊號到達接收器的時間會略晚於正常訊號,而且通常會衰減。處理衰減的多徑訊號的一般做法是簡單的忽略。但是,當多徑訊號太強以至於無法忽略時,會導致基於現有標準WLAN設備的性能下降。
無線訊號可借助正弦波進行描述,如圖1.a所示,縱軸表示振幅,橫軸表示時間。當多徑訊號比主訊號稍晚到達接收器時,其峰值和谷值與主訊號的峰谷值不會完全同相,接收器接收到的混合訊號多少會出現失真,見圖1.b。如果多徑訊號的時延導致其波峰與主訊號的波谷在同一刻出現,那麼多徑訊號將部份或完全抵銷主訊號,見圖1.c。傳統無線系統通常不對多徑干擾採取任何防範措施,僅依靠主訊號自身來抑制多徑訊號;或者利用多徑解緩技術。一種解緩技術是使用多個天線以便能夠在任一時刻及時捕捉最強訊號;另一種技術則給接收訊號增加了不同的時延,迫使各波峰和波谷同相。
無論何種解緩技術,它們都假定多徑訊號是無用甚至有害的,並竭盡全力制止這種危害。
與之相反,MIMO卻借助多徑傳播的特點提高吞吐量、傳輸距離/覆蓋範圍以及可靠性。MIMO非但沒有想方設法消除多徑訊號,而是讓多徑訊號攜帶更多的資訊。MIMO技術通過在相同無線訊息通道內同時發射並接收多個數據訊號實現了上述目的。多波形技術的使用構成了一種新的無線通訊模式──利用多維訊號進行通訊,該模式是目前為止唯一已知的能同時提高三個基本連接性能參數(範圍、速度和可靠性)的方法。
因為MIMO透過訊息通道傳輸多訊號(而不是傳統系統中的單訊號),所以MIMO擁有成倍的資訊負載能力(這是速度的另一種表達方式)。無線能力的一個通用測度標準是頻譜效率,即單位時間內單位頻寬所傳送的資訊量,通常以每赫茲每秒位元或b/s/Hz表示。
使用傳統無線技術,工程師必須設法才能漸進地提升頻譜效率(例如,每次增加一個b/s/Hz)。透過在同一個頻道內傳輸包含不同資訊流的多個訊號,MIMO提供了一種能夠成倍或三倍提升頻譜效率的方法。
MIMO還能被看作是一種多維無線通訊系統。傳統無線系統試圖在一維管道內壓縮盡可能多的資訊。為此,工程師必須使其設計適應一維訊息通道的噪音及其它限制。MIMO賦予了工程師在多維空間工作的條件,為消弭一維訊息通道的限制提供了機會。
更高的頻譜效率轉換成為更高的數據速率、更寬的覆蓋範圍、更多的用戶、更強的可靠性或上述指標的任意組合。透過增加頻譜效率,MIMO為多種新應用敞開了大門,同時還節省了現有應用的實施成本。
MIMO與智慧天線的區別
乍看起來,MIMO與智慧天線系統非常相似:兩個系統都採用多個天線,天線的佈置在可實施前提下盡可能遠離。但只要深入研究,你就會發現MIMO和智慧天線系統在本質上存在差別。
智慧天線增強了傳統的一維無線系統。大多數通用智慧天線系統採用波束成形技術(又稱波束切換)將訊號能量聚集於主路徑,而後利用接收合成技術(又叫分集)捕捉在任一特定時間內的最強訊號。注意:波束成形和接收合成僅僅是多徑解緩技術,並不能將無線訊息通道的數據吞吐量加倍(見圖2)。

圖2:比較智慧天線(a,b和c)與MIMO方案(d)
但這並不意味著波束成形和接收合成技術毫無用處。在點對點應用中(例如,戶外無線回傳應用),兩者均被證明能夠成倍提高系統性能。但是,波束成形和接收合成技術只能稱的上是對傳統無線系統性能的提升極有價值,而MIMO是一次可資標榜的轉變,它戲劇性地改變了人們對多徑傳播的接收度和反應。接收合成和波束成形只能一次將頻譜效率增加一或兩個b/s/Hz,而MIMO則能夠使b/s/Hz成倍增加。
為什麼採用MIMO-OFDM?
MIMO能與任何調變或接取技術共同使用。今天,大多數數位無線系統選用時分多址(TDMA)、碼分多址(CDMA)或正交頻分多工(OFDM)技術。
時分系統在窄頻訊息通道上傳輸數據,採用時槽(time slot)來分隔不同用戶或用途的數據。碼分系統在寬頻(擴頻)訊息通道上傳輸數據,採用程式碼來分隔不同用戶和用途的數據。OFDM也是一個寬頻系統,但與在整個訊息通道連續擴展訊號的CDMA不同,OFDM採用多個分離的低數據速率子訊息通道。
MIMO可以與任何調變和接取技術一同使用。研究顯示,執行過程非常簡單,特別是對用於高數據速率的MIMO─OFDM而言更是如此。值得一提的是,MIMO─OFDM訊號能用相對直接的矩陣代數進行處理。
MIMO─OFDM如何使基於現有標準的產品受益
整合準標準MIMO增強型Wi-Fi的產品從外觀上看與具有智慧天線的產品極為相似,這一事實也暗示了另一個優勢。準標準MIMO產品裝配有天線和其它必須電路,當基於現有標準模式進行作業時,可以提供智慧天線功能。
事實上,即便僅在連接的一端採用這種智慧天線功能,也能提升系統性能。因此,準標準MIMO產品不僅能夠與現有Wi-Fi標準完全相容,還能夠增強這些標準的表現性能。
這從另一個方面也證明,準標準MIMO的增強效果可以被用來補充而不是阻礙現有標準。所以,一些用戶或許會購買準標準MIMO增強型Wi-Fi產品以期利用 MIMO-OFDM的出眾性能,而另一些用戶卻可能會發現,僅將這些設備添加到基於標準的網路中就能幫助他們解決問題。
供稿:Datacomm Research公司
上網時間 : 2005年10月21日
本文描述了多輸入/多輸出-正交分頻多工(MIMO-OFDM)技術如何顯著提升WLAN性能,使其不僅能夠更加經濟有效地為現有應用服務,而且能夠實現要求更高的新型應用。此外,本文還解釋了製造商和終端用戶如何能夠透過部署MIMO-OFDM產品而獲益,又不錯過未來IEEE 802.11n標準可以帶來的好處。
任何一種無線連接的品質和有用性都可以透過三個基本參數進行完全描述,分別是:速度、範圍以及可靠性。MIMO-OFDM出現之前,上述3個參數依據嚴格的規則相互限制:速度的增加只有靠犧牲範圍和可靠性才可實現;範圍的擴展以犧牲速度和可靠性為代價;而提高可靠性必須降低速度和傳輸範圍。MIMO-OFDM的出現顛覆了這種限制,因為它能同時提升上述3個參數的性能。MIMO最終將使包括行動電話在內的所有主要無線產業獲益,但目前,WLAN引領了利用MIMO創新的潮流。
什麼是MIMO?
多徑傳播是所有無線通訊環境的一大特徵。
通常情況下,從A點的發射器到B點的接收器之間有一條主要(最直接)通道。但不可避免的是,一些發射訊號會通過其它路徑(從環境中的物體、大地以及大氣層反射等)到達接收器。
圖1:多徑傳播如何影響無線訊號。
經非直接通道傳輸的訊號到達接收器的時間會略晚於正常訊號,而且通常會衰減。處理衰減的多徑訊號的一般做法是簡單的忽略。但是,當多徑訊號太強以至於無法忽略時,會導致基於現有標準WLAN設備的性能下降。
無線訊號可借助正弦波進行描述,如圖1.a所示,縱軸表示振幅,橫軸表示時間。當多徑訊號比主訊號稍晚到達接收器時,其峰值和谷值與主訊號的峰谷值不會完全同相,接收器接收到的混合訊號多少會出現失真,見圖1.b。如果多徑訊號的時延導致其波峰與主訊號的波谷在同一刻出現,那麼多徑訊號將部份或完全抵銷主訊號,見圖1.c。傳統無線系統通常不對多徑干擾採取任何防範措施,僅依靠主訊號自身來抑制多徑訊號;或者利用多徑解緩技術。一種解緩技術是使用多個天線以便能夠在任一時刻及時捕捉最強訊號;另一種技術則給接收訊號增加了不同的時延,迫使各波峰和波谷同相。
無論何種解緩技術,它們都假定多徑訊號是無用甚至有害的,並竭盡全力制止這種危害。
與之相反,MIMO卻借助多徑傳播的特點提高吞吐量、傳輸距離/覆蓋範圍以及可靠性。MIMO非但沒有想方設法消除多徑訊號,而是讓多徑訊號攜帶更多的資訊。MIMO技術通過在相同無線訊息通道內同時發射並接收多個數據訊號實現了上述目的。多波形技術的使用構成了一種新的無線通訊模式──利用多維訊號進行通訊,該模式是目前為止唯一已知的能同時提高三個基本連接性能參數(範圍、速度和可靠性)的方法。
因為MIMO透過訊息通道傳輸多訊號(而不是傳統系統中的單訊號),所以MIMO擁有成倍的資訊負載能力(這是速度的另一種表達方式)。無線能力的一個通用測度標準是頻譜效率,即單位時間內單位頻寬所傳送的資訊量,通常以每赫茲每秒位元或b/s/Hz表示。
使用傳統無線技術,工程師必須設法才能漸進地提升頻譜效率(例如,每次增加一個b/s/Hz)。透過在同一個頻道內傳輸包含不同資訊流的多個訊號,MIMO提供了一種能夠成倍或三倍提升頻譜效率的方法。
MIMO還能被看作是一種多維無線通訊系統。傳統無線系統試圖在一維管道內壓縮盡可能多的資訊。為此,工程師必須使其設計適應一維訊息通道的噪音及其它限制。MIMO賦予了工程師在多維空間工作的條件,為消弭一維訊息通道的限制提供了機會。
更高的頻譜效率轉換成為更高的數據速率、更寬的覆蓋範圍、更多的用戶、更強的可靠性或上述指標的任意組合。透過增加頻譜效率,MIMO為多種新應用敞開了大門,同時還節省了現有應用的實施成本。
MIMO與智慧天線的區別
乍看起來,MIMO與智慧天線系統非常相似:兩個系統都採用多個天線,天線的佈置在可實施前提下盡可能遠離。但只要深入研究,你就會發現MIMO和智慧天線系統在本質上存在差別。
智慧天線增強了傳統的一維無線系統。大多數通用智慧天線系統採用波束成形技術(又稱波束切換)將訊號能量聚集於主路徑,而後利用接收合成技術(又叫分集)捕捉在任一特定時間內的最強訊號。注意:波束成形和接收合成僅僅是多徑解緩技術,並不能將無線訊息通道的數據吞吐量加倍(見圖2)。
圖2:比較智慧天線(a,b和c)與MIMO方案(d)
但這並不意味著波束成形和接收合成技術毫無用處。在點對點應用中(例如,戶外無線回傳應用),兩者均被證明能夠成倍提高系統性能。但是,波束成形和接收合成技術只能稱的上是對傳統無線系統性能的提升極有價值,而MIMO是一次可資標榜的轉變,它戲劇性地改變了人們對多徑傳播的接收度和反應。接收合成和波束成形只能一次將頻譜效率增加一或兩個b/s/Hz,而MIMO則能夠使b/s/Hz成倍增加。
為什麼採用MIMO-OFDM?
MIMO能與任何調變或接取技術共同使用。今天,大多數數位無線系統選用時分多址(TDMA)、碼分多址(CDMA)或正交頻分多工(OFDM)技術。
時分系統在窄頻訊息通道上傳輸數據,採用時槽(time slot)來分隔不同用戶或用途的數據。碼分系統在寬頻(擴頻)訊息通道上傳輸數據,採用程式碼來分隔不同用戶和用途的數據。OFDM也是一個寬頻系統,但與在整個訊息通道連續擴展訊號的CDMA不同,OFDM採用多個分離的低數據速率子訊息通道。
MIMO可以與任何調變和接取技術一同使用。研究顯示,執行過程非常簡單,特別是對用於高數據速率的MIMO─OFDM而言更是如此。值得一提的是,MIMO─OFDM訊號能用相對直接的矩陣代數進行處理。
MIMO─OFDM如何使基於現有標準的產品受益
整合準標準MIMO增強型Wi-Fi的產品從外觀上看與具有智慧天線的產品極為相似,這一事實也暗示了另一個優勢。準標準MIMO產品裝配有天線和其它必須電路,當基於現有標準模式進行作業時,可以提供智慧天線功能。
事實上,即便僅在連接的一端採用這種智慧天線功能,也能提升系統性能。因此,準標準MIMO產品不僅能夠與現有Wi-Fi標準完全相容,還能夠增強這些標準的表現性能。
這從另一個方面也證明,準標準MIMO的增強效果可以被用來補充而不是阻礙現有標準。所以,一些用戶或許會購買準標準MIMO增強型Wi-Fi產品以期利用 MIMO-OFDM的出眾性能,而另一些用戶卻可能會發現,僅將這些設備添加到基於標準的網路中就能幫助他們解決問題。
供稿:Datacomm Research公司
現成IP並非定心丸 專家提醒買家謹慎決策
現成IP並非定心丸 專家提醒買家謹慎決策
上網時間 : 2005年10月21日
知識產權(IP)買家在決定購買IP核心之前,需要被提醒,以便預做心理準備。這是日前參加Denali Memcon活動的業界專家所提出的觀點。IP產業幾年前曾遭業界放棄,如今它正頑強地尋求可行的商業模式,並在系統單晶片方法內樹立了越來越主流設計的地位。
此次會議由美國EETimes半導體編輯Ron Wilson主持,與會者包括:Denali Software首席驗證架構師Sean Smith、Rambus工程設計總監Kevin Jones、思科系統(Cisco Systems)硬體工程設計經理Shyam Pullela、Sun Microsystems前端技術總監Shrenik Mehta和LSI Logic的CoreWare IP行銷總監Harmel Sangha。
會中談討了三家供應商和兩家用戶就準備、驗證和其它持續挑戰IP模式的問題。主持人Ron Wilson指出最新「產業挑戰(Industry Challenge)」調查中「IP選擇」的研究顯示,許多回覆者已決定在設計中以近乎現成的方式使用IP。
而與會者也認為那是很常見的,但通常大家都容易過於輕率而不夠謹慎。思科系統公司硬體工程設計經理Shyam Pullela表示,許多特定的行動來自於最後一分鐘的決策。「你尋找IP是因為你總是匆匆忙忙,由於你總是匆忙行事,因此也就沒有把如何將IP整合在你的流程內進行必要的審慎評斷」,他補充道。「你最好從一開始就花點時間(用於研究IP及其內涵),不要拿了就用。」
Rambus公司DFT和建模驗證工程設計總監Kevin Jones也強調「買家應謹慎」的看法,尤其是當在系統條件下驗證IP時。他表示:「大家應該考慮它是如何建構的?如何被測試的?IP這一水域可是深淺不一。」
Denali首席驗證官Sean Smith也指出,太多的用戶趨向於認定IP已是拍案決定的事,所以他們無需擔憂一切。以片PCI Express核心為例,它就是一個複雜的邏輯區塊。「對於(PCI Express)這一類IP供應商而言,要能執行並保證100%規格的可能性是不存在的,」他指出。「我誠心的建議身為用戶的你,應該要了解的更詳細些。」
(Brian Fuller)
上網時間 : 2005年10月21日
知識產權(IP)買家在決定購買IP核心之前,需要被提醒,以便預做心理準備。這是日前參加Denali Memcon活動的業界專家所提出的觀點。IP產業幾年前曾遭業界放棄,如今它正頑強地尋求可行的商業模式,並在系統單晶片方法內樹立了越來越主流設計的地位。
此次會議由美國EETimes半導體編輯Ron Wilson主持,與會者包括:Denali Software首席驗證架構師Sean Smith、Rambus工程設計總監Kevin Jones、思科系統(Cisco Systems)硬體工程設計經理Shyam Pullela、Sun Microsystems前端技術總監Shrenik Mehta和LSI Logic的CoreWare IP行銷總監Harmel Sangha。
會中談討了三家供應商和兩家用戶就準備、驗證和其它持續挑戰IP模式的問題。主持人Ron Wilson指出最新「產業挑戰(Industry Challenge)」調查中「IP選擇」的研究顯示,許多回覆者已決定在設計中以近乎現成的方式使用IP。
而與會者也認為那是很常見的,但通常大家都容易過於輕率而不夠謹慎。思科系統公司硬體工程設計經理Shyam Pullela表示,許多特定的行動來自於最後一分鐘的決策。「你尋找IP是因為你總是匆匆忙忙,由於你總是匆忙行事,因此也就沒有把如何將IP整合在你的流程內進行必要的審慎評斷」,他補充道。「你最好從一開始就花點時間(用於研究IP及其內涵),不要拿了就用。」
Rambus公司DFT和建模驗證工程設計總監Kevin Jones也強調「買家應謹慎」的看法,尤其是當在系統條件下驗證IP時。他表示:「大家應該考慮它是如何建構的?如何被測試的?IP這一水域可是深淺不一。」
Denali首席驗證官Sean Smith也指出,太多的用戶趨向於認定IP已是拍案決定的事,所以他們無需擔憂一切。以片PCI Express核心為例,它就是一個複雜的邏輯區塊。「對於(PCI Express)這一類IP供應商而言,要能執行並保證100%規格的可能性是不存在的,」他指出。「我誠心的建議身為用戶的你,應該要了解的更詳細些。」
(Brian Fuller)
星期二, 10月 18, 2005
IC設計過程中 軟體與驗證應優先考慮
IC設計過程中 軟體與驗證應優先考慮
上網時間 : 2005年10月18日
Denali Software公司技術長Mark Gogolewski日前在某場活動上發表專題演講時表示,一個新設計案中應有90%以上的精力是耗費在軟體內容和驗證策略上,而且必須在設計的最初階段就要詳加考慮。
Gogolewski表示,設計成本不斷飛升,大多數歸因於消耗於結構和驗證的時間和精力增加。另一個挑戰是保護知識產權,並且令其可互用,而這也是損害EDA產業及半導體產業之間關係的因素。Gogolewski引用飛利浦半導體的資料指出,系統單晶片(SoC)的軟體內容每十年成長 10倍。設計啟動計畫趨向縮水,因為設計成本上升。他指出,新的晶片設計需要1億美元的市場商機,而這幾乎是微乎其微。
此外Gogolewski根據一些圖表指出,軟體開發成本已超過了硬體開發費用。這一問題的部份原因是產業花費了太多精力用於組合IP模組,然後再驗證互通作業性。Gogolewski呼籲業界圍繞匯流排和介面標準展開更緊密的合作。他指出,PCI Express是一個突出例子,英特爾公司早期就考慮該規格,推動了產業更多支援和開發。(原文連結處:Denali CTO says software, verification first)
(Dylan McGrath)
上網時間 : 2005年10月18日
Denali Software公司技術長Mark Gogolewski日前在某場活動上發表專題演講時表示,一個新設計案中應有90%以上的精力是耗費在軟體內容和驗證策略上,而且必須在設計的最初階段就要詳加考慮。
Gogolewski表示,設計成本不斷飛升,大多數歸因於消耗於結構和驗證的時間和精力增加。另一個挑戰是保護知識產權,並且令其可互用,而這也是損害EDA產業及半導體產業之間關係的因素。Gogolewski引用飛利浦半導體的資料指出,系統單晶片(SoC)的軟體內容每十年成長 10倍。設計啟動計畫趨向縮水,因為設計成本上升。他指出,新的晶片設計需要1億美元的市場商機,而這幾乎是微乎其微。
此外Gogolewski根據一些圖表指出,軟體開發成本已超過了硬體開發費用。這一問題的部份原因是產業花費了太多精力用於組合IP模組,然後再驗證互通作業性。Gogolewski呼籲業界圍繞匯流排和介面標準展開更緊密的合作。他指出,PCI Express是一個突出例子,英特爾公司早期就考慮該規格,推動了產業更多支援和開發。(原文連結處:Denali CTO says software, verification first)
(Dylan McGrath)
訂閱:
文章 (Atom)