想像一下,未來您每天早上醒來,您的電子郵件、語音郵件以及工作清單都已經從筆記型電腦、行動電話等資料來源下載到您的PDA個人數位助理之中。您只要隨身攜帶這個PDA,就可以隨時和四周的汽車音響、MP3播放器、數位相機、印表機等裝置互相溝通。隨著相容性配備不斷地增加,有一點可以確定的是:我們目前所使用的各種電子配備,未來將全部具備藍芽通訊功能,帶動整個PAN(個人網路)概念的實現。
新版的藍芽通訊規格於今年稍後問世,提供更高的頻寬與更廣的運作範圍,這樣的改良使得藍芽通訊產品的數量更為擴充,不但可攜式消費性電子商品、電腦週邊配備將具備藍芽通訊功能,用戶住家、辦公室甚至廠房中各種不同的電子器材亦皆能提供藍芽功能,因此現有的電子器材將出現附加藍芽介面的需求。
藍芽通訊規格所定義的裝置通訊介面,將使用者的人為操作需求降到最低,但截至目前為止,大多數標準的藍芽晶片只提供UART或USB主控介面(host controller interface;HCI)。如果要將現有的電子器材重新設計成具備UART或USB介面的版本,未免過於大費周章,較為理想的解決方式是使用系統現有的介面橋接到藍芽次系統。可編程邏輯元件(PLD)由於具備無比的彈性,非常適合用來設計這樣的橋接方案,將藍芽次系統銜接到現有的PCI、1394等通訊介面,甚至元件製造商的專屬匯流排介面。
藍芽技術背景簡介
藍芽技術是一種短距離的無線電通訊技術,用來取代固接式或可攜式電子器材的纜線。藍芽通訊器材使用不受管制的2.4 GHz工業∕科學∕醫學(ISM)專用頻帶,其基頻協定支援「線路交換」及「封包交換」兩種通訊方式,並使用跳頻分散頻譜(FHSS)技術來傳遞資料。在北美洲或歐洲大多數地區,藍芽配備使用2.402到2.480 GHz的頻率範圍,並將這個頻帶再細分為79個1MHz的子頻道。
藍芽協定支援封包交換及線路交換兩種通訊技術,每一個Piconet網路(最多包含八個藍芽配備)可支援一個非同步數據頻道、最多三個同時傳輸的同步語音頻道,以及多種不同的連線。每一個語音頻道都是每秒64 kb的同步全雙工頻道,特別稱為「同步連接導向」(SCO)線路。而非同步傳輸頻道則稱為「非同步不連接」(ACL)線路,可支援不對稱頻寬(最高723.2 kb/s傳出,57.6 kb/s回傳)或對稱式頻寬(433.9 kb/s)。
藍芽通訊規格將建構藍芽介面所需的功能,細分為三大功能區塊(見圖一),這三個功能區塊直接對應到藍芽規格的功能劃分方式。
藍芽無線電
無線電是用於建構藍芽器材的寬頻無線傳輸介面,通常是以多晶片模組的方式建構,包含一個天線開關、Baluns、擴大器、數位PLL時脈復原、調變、解調變的專用電路。
藍芽連線控制器
藍芽連線控制器基頻功能是由多個低階連結層功能所構成,這些基頻功能包括:*CVSD語音編碼
*標頭錯誤查核碼(HEC)的產生與查核
*正向錯誤更正碼(FEC)的產生與查核
*循環性重複查核碼(CRC)的產生與查核
*數據漂白(編碼)
*酬載(Payload)的加密與解密
*跳頻功能的定序
藍芽連線管理員
連線管理員區塊可執行連線管理員協定(LMP),掌管低階控制層功能,這些功能包括:
*不同裝置之間的連線設定
*密鑰的產生、交換與查核
*基頻封包大小的協商
*無線電的供電模式與工作週期
*Piconet中某個裝置的連線狀態由於這些功能相當複雜,因此需要以軟體方式建構,而且通常需要內建RISC處理器來執行。這種軟體建構方式也使處理器能用於其他用途,包括連接至主機系統的介面韌體。
藍芽主控介面
藍芽通訊規格所定義的主控介面(HCI)如下:
HCI提供一個連接到基頻控制器及連線管理員的指令介面,並讀取硬體狀態及控制暫存器,這個介面提供一個存取藍芽基頻功能的統一方式。
HCI介面包含兩個部分,一個是建構指令介面的軟體部分,另一個是用來將藍芽次系統連接到主機的實體硬體部分。HCI軟體的功能,在於使介面硬體透通化,讓系統中較高階的軟體能不受限制。
HCI軟體
藍芽通訊規格的軟體架構包含兩大元件,其中資料層元件負責透過連線傳輸資料,而控制層元件則負責連線的控制與管理。在這份報告中,我們將著重探討HCI的控制層與資料層元件。(圖二)顯示出HCI的軟體架構以及HCI與藍芽主機介面硬體之間的關係。
HCI指令與事件
系統主機可透過HCI驅動程式所提供的多種指令來控制藍芽網路介面。除了這些指令之外,藍芽規格還定義一套事件規格,這些事件由藍芽網路介面的HCI韌體所產生,可顯示介面的狀態變動。
HCI指令與事件會和ACL、SCO連線的資料匯合到HCI傳輸介面硬體上,至於這些資料如何透過該介面進行多工傳輸,則隨不同的介面而異。(圖三)為其運作方式的示意圖。
HCI硬體∕傳輸
HCI傳輸規格定義三種資料類型在藍芽網路介面與藍芽主機間的傳輸方式。HCI傳輸規格定義這些資料型態在介面硬體上的封裝與多工傳輸方式。目前藍芽通訊規格總共定義了三個HCI傳輸層。
*UART 傳輸層
*RS232 傳輸層
*USB傳輸層
另外,藍芽SIG集團的白皮報告書還另外敘述了第四種傳輸層──PC卡傳輸層。以下將簡單介紹這些傳輸層。
UART傳輸層
RS232與UART傳輸層使用UART序列通訊方式,在藍芽網路介面與藍芽主機之間傳輸資料。這兩種傳輸層的差異在於所預設的環境不同,因此通訊協定的設計也不同。
UART傳輸層適用於藍芽網路介面與主機位於相同電路板的運作環境,在這樣的環境下,線路發生錯誤的機率微乎其微。HCI指令的封裝包含一個HCI封包指示碼(以顯示該封包的內容為指令、事件或資料封包),接著是一個長度指示碼(用於檢查封包的同步化是否喪失;若失去同步化時,還可提供一個簡單的恢復機制。)由於線路的兩端都位於相同的電路板上,因此UART傳輸層並沒有明訂電子訊號的傳輸規格,但在大多數情況下,電子訊號將以TTL方式傳送。另外,由於線路兩端都位於相同的電路板,因此也沒有定義特別的鮑率協商機制。
RS232傳輸層
RS232傳輸層適用於藍芽網路介面與主機位於不同機殼中的通訊環境,也因為如此,RS232傳輸層定義了明確的電子訊號規格以及詳盡的連線協定,以便因應較長的連線距離以及較高的線路錯誤率。
USB 傳輸層
USB不同於UART、RS232傳輸規格。USB本身的端點機制,可提供簡易的連線多工傳輸方式,而且不必消耗額外的系統資源來鑑別資料類型。因此USB傳輸規格主要在描述藍芽資料類型如何對應到USB端點,其中包括如何將SCO資料流對應到USB的等時性(Isochronous)資料服務。
PC卡傳輸層
這個傳輸層並沒有定義在藍芽通訊規格中,但藍芽SIG集團1999年八月發表的第一版白皮報告書「藍芽PC卡傳輸層」一節,則對此傳輸層有所說明,其細節可至www.bluetooth.com網站查詢。
藍芽通訊規格並沒有限制PC卡傳輸層的建構細節,唯一的要求是卡片硬體必須符合PC卡與Cardbus的標準規格。為了保持裝置的相容性,製造商必須提供該介面硬體專用的傳輸驅動程式,而且該驅動程式必須能搭配HCI驅動程式在主機系統上使用。
HCI支援ASSP
除非廠商有足夠的時間與資源從頭開始設計一個全新的藍芽網路介面,否則HCI的建構策略必須仰賴現有的ASSP功能。目前ASSP共有兩大類:一類只建構連線控制器功能,另一類包含連線控制器與連線管理員兩者。這兩類元件的主要差異在於後者內建一個RISC處理器,用於建構連線管理員與HCI功能。
至於應選擇哪一類的元件,則需要權衡兩者的優劣利弊。以下以一個實際範例來說明如何使用可編程邏輯元件解決HCI介面問題。
開發實際產品方案的挑戰
要將藍芽技術以低成本方式整合到系統層級的設計中,必須面對下列的挑戰:
*不斷變遷的規格標準:雖然藍芽規格的核心協定已經成熟穩定,但高階協定與服務(例如IP通訊)的對應方式仍然在不斷變動。
*ASSP仍有不少設計錯誤:目前使用的大多數ASSP都還相當新,系統設計人員必須設法因應這些ASSP的設計缺陷。
*新興的產品應用模型:在大多數情況下,藍芽技術目前還過於昂貴,不適合原先設定的目標市場(取代現有纜線)。這個因素再加上未來「重量級應用產品」的吸引力,迫使藍芽技術進入尚待定義的應用領域。
很明顯的,目前我們最需要的是一套彈性化技術,讓系統設計人員能夠快速開發藍芽方案,並同時因應一個不斷變動的應用環境。而使用可編程邏輯元件來連接上述兩類藍芽ASSP,正可以滿足這樣的需求。
連線控制器+連線管理員ASSP
選擇已經具備連線控制器與連線管理員功能的ASSP元件,可以讓您在設計之初就享有相當完整的功能。這些元件已經包含一個RISC處理器以及一個以上預先定義好的HCI傳輸介面。此外,製造廠商還提供HCI與連線管理員韌體。使用這些元件,系統層級的整合只要將HCI傳輸介面連接到主機就可以。如果主機系統已經有現成的USB或UART連接埠,整個工程根本不需要使用額外的硬體,而且這些連接埠通常已經整合到系統的核心邏輯晶片組之中。圖四顯示一個採用這種「零接合」(Zero-glue)介面的系統。
藍芽次系統的三大元件為:
*RF-射頻元件
*BB-基頻處理器
*μC-微控制器
在許多情況下,這種設計方式可能因為下列原因而無法進行:
*主機系統沒有可連接到藍芽次系統的UART或USB連接埠。
*主機系統沒有足夠的USB或UART連接埠可供使用,這可能因為主機的連接埠數目有限,或因為該應用裝置所需的連接埠數目過高。
*主機系統缺乏能夠支援全速藍芽資料傳輸率的序列埠。為了支援最高的系統效能,藍芽ASSP已經包含資料傳輸率高達1.5 Mbps的UART。
*標準連接埠介面的ASSP沒有專門針對藍芽協定的處理而設計,因此當這些ASSP以藍芽通訊速率運作時,可能會消耗大量的處理器資源。例如,中斷向量的處理可能會耗損過多的主機處理器資源。
可編程邏輯元件可用於建構上述情況所需的介面硬體。在深層內嵌的應用裝置中,這個介面通常是位於USB、UART核心與系統內嵌處理器的區域匯流排之間。雖然可編程邏輯元件可用於建構USB或UART傳輸介面,但UART介面的傳輸協定較為簡單,因此成本較為低廉,系統效能也比較好。
建構UART介面比較節省成本,因為所需的硬體資源較少。而且UART採用單一模式運作,資料都是八位元,沒有同位元檢查Parity),採用一個停止位元Stop Bit),因此整個建構工程相當簡單,而且運作速度很快。除此之外,UART介面和USB、RS232介面不同的是:當UART傳輸層建構在FPGA之中時,不需要外接移位器Level Shifter)或收發器。
此外,可編程邏輯可以迅速針對目標應用裝置開發出最適合的介面方案,因此可發揮較佳的系統效能。(圖五)為一個UART示意圖,該UART具備DMA及HCI訊框傳輸狀態機邏輯。
這種方法可以降低收發訊號時處理中斷服務的資源消耗,提升系統效能。而且這種設計與傳統UART所不同的是:傳統UART晶片上的小型FIFO在每次滿載或清空時,都會產生一個中斷向量,但新型設計只有在傳送或接收一個完整的HCI訊框之後,才會產生中斷向量。這種功能是透過特定應用邏輯來解讀HCI標頭的訊框尺寸資訊,以適當設定DMA邏輯。此外,其邏輯電路也可以檢查並確保訊框的適當同步化。
由於主機處理中斷向量的負荷降低,因此處理器有多餘的效能可用來處理其他加值功能。目前市面上有各式各樣的標準界面與記憶體控制器IP,因此可編程邏輯元件還可用來建構其他的核心功能。
只具備連線控制器功能的ASSP
雖然使用只具備連線控制器邏輯的ASSP,必須進行額外的設計才能成為完整的產品方案,但這種設計用在深層內嵌系統時,可以達到更緊密的整合度與更低的系統成本。如果藍芽網路介面與主機位於相同的電路板,就不需要用到HCI傳輸層,因此控制基頻處理與無線電功能的介面,以及用來傳輸資料訊框的介面,都是直接連接到主機處理器。因為這些介面通常會隨著所用的ASSP而不同,因此可編程邏輯元件可以透過低廉的成本,將這些介面連接到主機處理器匯流排,或PCI之類的I/O匯流排。(圖六)顯示另一種使用可編程邏輯元件整合其他核心邏輯功能的範例。
在這樣的設計中,主機CPU必須負擔所有的協定處理功能,如此一來,系統就不需要使用原先專門處理連線管理功能的RISC處理器與非揮發性記憶體,這可以使系統成本進一步降低。透過這樣的架構,藍芽軟體堆疊將可進一步扁平化,成為(圖七)所示的組態。
應用範例:由UART轉接PCI
使用可編程邏輯元件開發高速的UART─PCI橋接介面,非常適合用來將藍芽通訊配備整合到舊式系統中,使用FPGA來進行設計,可以立即加快FIFO緩衝器的速度,而且這些緩衝器可以重新設定深度與寬度,以因應更快的資料傳輸率、更大的字寬或自訂字寬。圖八顯示一個單通道UART─PCI橋接器的功能元件組態。由於目前市面上有很多專為FPGA設計的標準界面及記憶體控制器IP,因此可以用同樣的方式開發類似的衍生設計,建構各式各樣的核心邏輯功能。(圖八)也示範一些額外功能的整合例如SDRAM控制器、自訂邏輯等等)。這種設計多樣性可以讓您的工程投資發揮持久力與競爭力,讓您快速有效地改良現有設計,搶先競爭對手將產品打入新市場區間。
可編程邏輯是整合藍芽技術至內嵌系統的理想方案,這種方式可發揮多重效益,加快產品的上市速度。首先,市面上有多種不同的IP可供選用,因此可讓您立即掌握主要的設計元件。第二點,這些可編程邏輯方案可讓系統設計師以最快的速度完成一套功能完整的硬體平台。第三點,廠商在軟體開發階段就可以迅速推出少量的產品進行實際測試及改良。
軟體開發是整合藍芽技術的過程中最大的的問題之一,但由於可編程邏輯設計能夠快速完成硬體開發,因此在這個領域具有相當的優勢。如果再將可編程邏輯的設計彈性考慮在內,則發揮的效益更大。舉例來說,通常設計人員都希望能重複利用現有的驅動程式與韌體。透過可編程邏輯元件的使用,系統設計師可以在剛開始時設計介面邏輯使用標準的驅動程式,之後再逐步更新介面邏輯以提升效能。尤其有時設計必須採用其他廠商所開發的韌體,因為設計人員對這些韌體不熟悉,或這些韌體並不完全適合目標應用環境,這時可編程邏輯元件的彈性就特別重要。
產品開發的本質並不是一種百分之百精確的科學,軟硬體設計的錯誤、不相容性與改良修正都是無法避免的事實。由於可編程邏輯元件可以重複編程,因此在這方面具有重要的優勢,正在量產中的產品可以沿用原先的硬體隨時進行錯誤修補,即使是已經安裝的系統也可進行改版。這樣的特性可以保持生產線的順暢,並大幅降低庫存零件過時的風險,同時也可避免昂貴的現場零件更換。(本文作者任職於Xilinx策略應用部門資深工程師)