2018年7月25日 星期三

MIPI RFFE Introduction and two wire communication/serial communication UART, I2C

Serial Communication and Parallel Communication

        我們要怎麼把一個8 bits的資料從A傳到B,最佳簡單的方式就是拉出8條線,每條線代表一個bit來傳輸,然後再加一條控制訊號線來控制這時候是讀入或寫出的動作,所以每一次動作都會傳送8 bits,這個我們一般稱作parallel communication. 並列埠 很早期的印表機,硬碟IDE或GPIB都是用這樣的傳輸介面。
Parallel Communication 
        另外一種傳輸技術稱為serial communication 串列埠,與parallel想比,所謂的串列與並列是指資料的排列結構,parallel是代表D7 ~ D0 並聯同時傳送,串聯是指一次傳一個bit,先傳D0然後D1....依序傳送D7,然後在接收端在整合成一個byte,資料傳送是一個接一個,串起來傳送,USB就是一種serial communication的介面。
Serial Communication
        Serial Communication與Parallel Communication的優缺點直觀上很明顯,Serial Communication的接線明顯比Parallel少,但如果傳送的clock rate一樣的話,速度Parallel Communication以上面的例子來說一次clock可以傳送8bits, 但串列傳輸只能傳一個bit,速度差了8倍。

two wire communication 

UART Tow Wire or One Wire x2 

        上面的例子是單向傳輸,所以需要一條訊號線Tx,如果要接收的話就需要另外一條線Rx. 這時候兩個設備的接線就為TX, RX 兩條線 (其實GND也算一條線,但是一般不會加進來算)。以UART Universal Asynchronous Receiver and Transmitter通用非同步收發機,因為TX and RX是分開的,所以可以達成雙向溝通,但裡面有Asynchronous非同步其實代表訊號不需要Clock來同步。
         非同步的傳輸本身就會有一個問題,那就是你怎麼知道傳送過來的訊號是1還是11或是111呢? 以下面的為例子,如果接收機是負緣取值negative edge/falling edge,接收機本身的clock速度會影響對訊號的解讀,所以UART在傳輸的時候都要設定Baud Rate. 也就是雙方要先確認彼此資料傳輸的速度才行。

Baud Rate
        這樣的架構如果Receiver是個被動讀寫的裝置(Slave),妥善安排傳輸協定,本身可以完成one wire傳輸,簡單的概念就是有一個主控端來條控這條線上面誰來傳送資料,接收端被動接收指令。
        以下面的例子,Master端先對Receiver (Slave)傳送要求讀取的指令,傳送完後Master等待Slave回傳資料,這樣就不會有一條線上同時兩端都在發送訊號的情形發生。如果用生活中的例子比方說電影看到的對講機,就是類似的道理,其中一方老鷹要先呼叫小雞一樣,

老鷹呼叫小雞
收到請回答
Over

然後放開發射鈕後等待話筒傳來小雞回覆,

小雞回覆老鷹
Over

而且每次講完的時候都會說Over來代表這句話的結束,其實Serial Communication的原理就跟這個很像,雙方要協定好如何溝通。

I2C Two Wire 

        延續one wire communication的概念,另外一種類似one wire傳輸的方式是在原本one wire上面加入了一條clock同步訊號Synchronous,有別於非同步Asynchronous的概念,發射訊號自帶Baud Rate,所以接收端不需要知道對方的速度是怎樣就可以達成。
        Clock會由Transmitter (Master)提供,因為大家會看到同一個Clock訊號,雙方可以利用Clock訊號協定通訊協定,以I2C為例因為本身idle的時候是高準位(pull-up resistor),在傳輸過程是以clock rising edge的訊號來判斷可以讀取Data上面的資料,falling edge的時候是data轉換過程。
        與UART/One Wire Communication相比,因為Clock由Transmitter決定,也就是clock rate已經被決定Receiver端不需要先設定或知道Baud Rate是多少? 而且Receiver端也可以不用內建clock generator。
        因為有兩條線Clock and Data (其實還有GND啦),所以通稱two wire communication.

        I2C當初在發明的時候是為了要連結多個周邊電路,所以如果有多個Slave元件串接再一起,Master只需要拉出兩條線Clock and Data (其實還有GND啦),所以通稱two wire communication. 
        multi device在溝通的時候,原理其實跟一推人用對講機一樣,有一個主控中心(Master),當老鷹呼叫小雞的時候,要求回覆所在位置的時候,用場的每個人都會聽到這段指令,但因為指令裡面是指定小雞回應,所以只有小雞會回答位置,在回答位置的時候,其他母雞與公雞也都能聽到這段話,但他們會注意的關鍵字是
Over
因為聽到Over後他們要在聽專注下一段話是不是老鷹在呼叫。

        底下是I2C Read Register的Protocol (from TI),第一個byte包含7bits的Slave ID,然後1bit R/W來決定這個是讀或是寫,然後後面跟著要讀取的Register Address 兩次......別問為什麼兩次這就是協定,然後就是Slave等待回應Data. 傳後完後一個Stop (Data)。


MIPI RFFE

        MIPI RFFE是MIPI聯盟下的其中一個通訊協定,MIPI Alliance主要是促進手機通訊介面一致化,這個也協助手機業後面快速發展的一個推手,最主要的目的是統一介面,某種程度上如果你手機製造商用了A家的面板,但如果想要換B家如果兩家的介面都是不一樣的,那製造商勢必要花時間來開發B廠商的驅動程式,其實可以想像IC與IC之間的USB,大家都走一樣的傳輸協定,無論是鏡頭的開發者或顯示器的開發者都可以專注在本業上面。
        MIPI RFFE 為RF Front End的縮寫,目的就是來控制這些周邊射頻元件,整個通訊協定與I2C類似,也是two wire communication的架構(Clock and Data)。
Fundamental features
  • High performance (up to 52 MHz bus speed)
  • Low power
  • Low EMI
  • Point to multi-point
https://mipi.org/specifications/rf-front-end
      會有MIPI RFFE的產生其實與智慧型手機發展有關,手機在2G雙頻,四頻到3G 4G,又要支援CA等等,當初入門的3G手機,TXM就有六個TRX Port, IDLE HBTX, LBTX 9種狀態,所以至少要四條控制線(GPIO)來控制這顆元件,但當你其他元件進來的時候所需要的GPIO就越來越多,而且因為全部都是從Modem接出去,整個PCB布局的複雜度也會隨著元件數量往上提升,但如果改用MIPI RFFE (two wire bus),每顆元件就只要三條線.....多一條是因為還要有電源Vio,在布局上面因為是串聯所以彈性也比較大。
        

GPIO vs MIPI RFFE
        那為什麼不用I2C就好了呢? 這邊有幾個比較重點的理由,
1. MIPI RFFE不用pull-up and pull-down電阻
2. 整個Protocol是為了手機量身訂做,比方說有制定Broadcast Trig協定,在時序要求精準的通訊系統可以有更精準的Timing控制。
3. 可以動態修改USID,MIPI USID為4個bits,在同一個bus上面可能會遇到相同的USID,但MIPI 有制定獨一無二的Manufacturer ID還有自訂的Product ID,所以系統可以透過特定的程序在開機的時候動態修改USID,方便在更換不同廠商pin to pin元件的管理。
4. Clock Rate up to 26MHz. (這大概是最重要的一點吧)
http://mid.mipi.org/
         底下是GMSK傳輸的時序圖,其實無論是2G, 3G, 4G,傳輸的單位都是以一個Time Slot來區分,因為移動通訊手機與基地台的位置會一直變化,傳輸的功率與內容要一直隨著環境的改變來調整,所以每一個Time Slot的傳輸過程如果以傳統的GPIO,Rising Edge訊號打開,Falling Edge訊號關閉,如果改成I2C的話最大的問題會是傳送一個command總長度是多少?
        以一個I2C寫入的指令8bits slave ID, 8bits address, 8bits data. 不含Parity Bit總共需要24bits來完成一個指令傳送,如果clock rate為 100kHz, 那一個clock tiime為10us, 送完一個command所需要的時間為240us.
24*10us  = 240us........
        這樣的速度是沒辦法應用在行動通訊上面的,如果clock rate拉高到10MHz, 那一個clock cycle時間就會縮短到0.1us. 送相同的指令就會縮短到2.4us. 這可以滿足目前行動通訊slot to slot之間的要求。
24*10.1us = 2.4us

        底下是MIPI RFFE Write Frame,另外MIPI RFFE對Register 0還會特別設計一個Frame,跟一般的指令Write相比,同樣要對Register 0寫入
特別指令Register 0要敲的bit數為:          16bits
一般指令Register Write要敲的bit數為:   24bits.
如果有對timing控制特別敏感的,指令長度還是快了一些,因為大部分device開關的logic table都會設定在register 0的位置。
        下次有時間再來聊聊MIPI RFFE的一些無聊的設定還有MIPI Alliance新制定的I3C吧
        


2018年7月8日 星期日

ZYXEL MULTY X WIFI MESH 開箱 使用心得

        隨著時代的進步,網路速度終於到真正可以支援影音串流,家中第四台剪掉一年多,發現其實生活中可以不看第四台,沒有必要拿著遙控器一直轉台轉一圈還不知道要看什麼? 就選自己要看的節目看就好了。


        老媽目前也都是看Youtube上面的節目,但電視經常被她的孫子霸佔,常常只能用手機看節目,就買了一台平板要給老媽追劇,想說家裡的WIFI AP也很久了,在用Chromecast看Youtube的時候也卡卡的,順手也刷了一台....應該說兩台ZYXEL Multy X。

        這陣子WIFI Mesh網路正夯,但普遍都是雙頻系統,如果對802.11有了解的都會知道,2.4G與5.0G的頻寬20MHz vs 80MHz是不同等級的,如果要達到Mesh網路之間不卡關,一個專屬5.0G的Channel是比較務實的,不然AP又要跟一般手機平板通訊,又要跟AP通訊,加上WIFI是TDD系統,也就是每個通訊是大家去分時間的(TDD),所以在802.11ax來臨之前,一個專屬的通道是比較務實的做法。

        另外如果是802.11ax,我覺得雙頻mesh網路可能又是另外一層光景,有機會再來打打802.11ax到底有什麼神奇的地方。




        原本家中用的是ASUS RT-N12 HP,因為AP是放在2樓,但電視是放在一樓,平常視訊人也在一樓居多,但中華電信主機是在二樓,而且平常也會在二樓的房間,方便安裝WIFI AP就放在二樓,那時候怕訊號不夠強所以買了一個看起來很嚇人的大天線版本,再加上2.4G低頻穿牆特性比較優,所以整棟樓收訊都還算可以。

        在更換前先用手機的WIFI分析儀看看每個角落收到的訊號大小(dBm),手機是我覺得難用到爆炸的SONY Xperia XZs,先比較只有一台的狀況,另外說一下WIFI Mesh應該是NetGear Orbi那台比較紅,但因為那一台軟體有主副機的差別,我買這一組也是想著如果不需要兩台我另外一台可以單獨使用。

        可以看到可能因為大天線在不同樓層之間收訊還是可以看到好處,三樓原本華碩那一台會收的比較強,但一樓客廳部分是沒有太大的差別,而且可以看到5G訊號穿牆就是一個悲劇,整個Level就是差了10dB. (10dB代表訊號強度差10倍.....10倍喔)
        當然如果裝這一台,說實在就根本不用換,接下來在一樓再放一台Multy X,現在蠻多產品都是透過Bluetooth來設定,下載對應的APP過程分常簡單,你不需要找一台電腦,然後街上網路線,設定192.168.0.1 (如果知道我在說什麼就代表你是巷子裡的)來設定。

        只要找個有電源的地方,然後透過手機APP就可以完成設定,另外現在WIFI MESH機種幾乎都支援相同SSID,你不用在特定指定那一個設備要用2.4G那一要用5.0G,手機與平板上面只會有一組SSID,如果家裡使用的WIFI設備多,其實是個非常實用的功能。

        設定完之後1F無論是2.4GHz 或 5.0GHz都是訊號滿格的狀態,但這有個問題存在,訊號滿格是你在1F放了一台AP,隨便買台便宜的AP也會有同樣的效果,說實在是這樣沒錯,而且測試軟體其實會同時看到兩台相同名稱SSID訊號,所以讀到比較強的一定是2F發出來的那一台。
        ZYXEL APP上面可以直接診斷網路之間的傳輸能力,可以看到兩個結點對外的網路能力是卡在中華電信光世代60M/20M上面,重點是兩台Multy X之間的回傳能力(Back haul),可以看到傳輸速度竟然還有在400Mbps。
        因為一開始用手機抓一下訊號強度只有-70dBm左右,雖然沒有工程模式來確認實際跑的調變訊號是什麼,但應該會落在MCS0 ~ MCS3之間 (BPSK or QPSK)。

From NI Document Introduction_to_WLAN_Testing.pdf

        這也是我為什麼強調現在Mesh要買就買三頻機種,從規格書看來ZYXEL MULTY X在5.0GHz 設定了4 TX的設定,因為兩台AP安裝後地點是相同,所以比較容易得到穩定的理論值,所以就算速度從1733狂瀉到468等級,也是足夠應付家中光世代速度。

https://en.wikipedia.org/wiki/IEEE_802.11ac
        實際使用起來,速度感覺有比之前穩定,我覺得這款產品除了價格外目前是沒有什麼好挑剔的,安裝起來也很方便,當然拉線到每個樓層是最直接的做法,但安裝上就比較受限,而且不知道這種產品有沒有支援區域網路互相溝通的功能?

熱門文章