2012年9月12日 星期三

HDMI CEC


HDMI CEC(Consumer Electronics Control, CEC)

高畫質多媒體介面(HDMI)是一個廣為人知的數位傳輸技術,其重要性可說是視聽器材的革命。但是大部分的人都只知道它的最新1.3版本規格,傳輸速度最快可達10.2Gbit/s以支援更大的頻寬,再加上最高到48位元的色深(Deep Color)功能。

但深究其十九支接腳,卻有一個常被大家所忽略的第十三支接腳,也就是消費性電子控制(Consumer Electronics Control, CEC)功能。CEC是在1.0版本時被制定,但直到1.2a時才完全確認及提出測試規範。其基本原理和技術來自歐洲的SCART,而在HDMI採用並增強其功能。
CEC為單線雙向傳輸,使用顯示數據通道(Display Data Channel, DDC),以用來進行影音器材彼此控制和偵測,旨在減少遙控器的數量和使用者按下按鈕的次數。在HDMI從上而下連接的網路架構下,CEC可以允許裝置透過直接連接或非直接連接方式溝通,顯示裝置原則上會被認定為根(Root),而切換器(Switches)則為分支(Branches),至於其他的播放裝置則會定義為葉(Leaf)節點。

舉例來說,使用者可以進行如圖6般的混合性裝置連接,當用戶將影片放到DVD播放器之中,並按下播放鍵之後,接下來的事就由CEC來處理。CEC將會自動開啟相關連的裝置,遠端控制DVD播放器的聲音輸出到喇叭,在遠端遙控影片內容到輸出端。同樣的,隨著用戶在機上盒切換頻道,節目內容的影像與聲音也都會自動取代DVD的聲音與影像。接著,一旦用戶按下錄影鍵的同時,在整個網路中扮演Root角色的電視機,也就會自動將錄影的命令傳達給錄影機,包括頻道、時間,以及錄影的格式都同時提供,讓錄影機有詳細資訊可以遵從,並進而將正確的影像錄進錄影機中。簡單的說,CEC在HDMI的系統當中,開創了自動化的裝置搜尋和簡易One Touch操作體驗。如表1為每一個HDMI系統連接裝置所對應的邏輯位址(Logic Address)編號,從0~15一共十六種不同的裝置識別,Reserved位址則是保留給以後使用。

在實際狀況中,HDMI架構共有三條資料傳輸通道(圖7),每個資料通道傳輸10位元資料長度,在1.3版本之前,由於8位元轉換成10位元直流平衡(DC-balanced),因此每色階畫素最多可支援24位元。但在1.3版本之後,開始支援24、30、36、48色階,另外還有一條時脈通道。而CEC走的是I2C規格的DDC通道。

CEC特色多元

規格書當中描述的CEC特色歸類為幾種,第一是One Touch Play,允許只要按下一鍵就可以使裝置被播放或成為活動資源(Active Source);二是系統待命(System Standby),讓使用者可以隨意切換任一或全部的裝置,並進入待機模式;至於One Touch Record則允許使用者可以看到什麼就錄什麼;還有計時器編程(Timer Programming),允許使用者可以透過電子節目清單(EPG)或其他方式去設定錄影機的預錄功能;Deck Control則利用裝置去控制另一台裝置進行播放或是快轉;常見的裝置選單控制(Device Menu Control),意指利用顯示設備上的使用者介面去控制另一台裝置;遙控傳遞(Remote Control Pass Through)則是將遙控器的控制命令,透過HDMI連接介面傳到另外一台裝置以直接控制;系統音訊控制(System Audio Control)是利用電視遙控器去控制音訊擴大機的音量,或是一些其他的基本切換功能。

從2006年開始,支援CEC的電視和錄影機巳經慢慢在市場上普及。不過很遺憾的,雖然打著CEC的名號,但各家幾乎沒有相容性可言,並不支援其他廠牌,更連名字都不相同,消費者並不清楚哪些才是真正的CEC。

由於夏普內建的i.LINK端子已不再像以往提供雙向的功能,而是改採i.LINK In/HDMI Out的方式,因此沒有HDMI的裝置在錄完影以後就要透過類比色差端子來看,而無法像以前一樣使用數位的i.LINK來觀賞節目。此外,該產品的單鍵播放功能、Deck Control尚稱正常,但UI的Menu Control功能卻因設定困難,因此不能算是完整的CEC產品,充其量不過是利用CEC讓自家廠牌的產品具有連動功能。

至於松下就更乾脆,在新款錄影機中直接取消i.LINK接頭。不過,值得一提的是,該產品的Remote Control切換得很平順,其Remote Control Pass Through幾乎可以控制大部分重要按鍵。只可惜,在Deck和Menu部分的控制,也只支援部分錄影和播放的功能。可能是因為這部分的功能,牽連到的相容性問題很大,所以目前在業界並沒有看到業者支援。

然而,CEC理應極為重視相容性,因為在未來CEC極有可能成為器材溝通的協定,而不同產品之間能否順利溝通,對消費者來說同樣重要,因此,對廠商來說,投入心力在相容性測試,確保產品的相容度也將是刻不容緩的課題。

References:
[1] http://www.2cm.com.tw/technologyshow_content.asp?sn=0803130006
[2] http://www.2cm.com.tw/coverstory_content.asp?sn=1006020001
[3] http://weng32002.blogspot.tw/2011/11/hdmi-cecconsumer-electronics-control.html

2012年8月30日 星期四

DMA, Direct Memory Access

三種將資料在I/O間傳送的方法有
1. Polling
2. Interrupt-driven I/O
3. DMA(Direct Memory Access)

Polling:最簡單的方式讓I/O device與CPU溝通。I/O device只要將information放進status register,CPU會周期性的檢查並取得information來得知需要服務的device。
Interrupt-driven I/O:利用interrupt的機制,當一個I/O device需要服務時,會發出interrupt來通知CPU。一個I/O interrupt對於指令的執行是asynchronous,Control unit需要在執行一個新指令時檢查是否有pending I/O interrupt。I/O interrupt也會傳達更多訊息,如哪個device發出的interrupt和它的priority。

DMA(Direct Memory Access):提供一個device controller,讓I/O device能夠直接在記憶體做資料的傳輸,不需要CPU的參與。
在同等程度的處理器負擔下,DMA是一種快速的資料傳送方式。很多硬體的系統會使用DMA,包含硬碟控制器、繪圖顯示卡、網路卡和音效卡。

DMA transfer的三個步驟
1. CPU要初始化DMA controller,包括提供I/O device的名稱、執行何種運算、記憶體位置以及所要傳送的bytes數。
2. DMA開始運作。如果request需要多於一次的transfer在bus上,DMA unit會產生下一個memory address和初始下一次的transfer。
3. 一旦DMA transfer完成,DMA controller發出一個interrupt給CPU。

References:
[1] http://zh.wikipedia.org/wiki/DMA
[2] http://blog.yam.com/yuhaolin/article/725974

1080P? 1080i?

1080p: 逐行掃描 progressive scan
1080i: 間隔掃描 interlaced scan

1080i 是一種高清晰度電視信號格式,「1080」表示垂直方向有1080條水平掃描線,「i」表示採用交錯式掃描視頻顯示方式(interlaced scan)。
1080i 先掃描單數的垂直畫面,再掃描雙數的垂直畫面,故只需要1080p一半的頻寬,
但是碰到高速移動的物體時,物體周圍就有晃動現象。早期的高清析度電視都是這種規格,因為早期的頻寬較小,無法一次送出全部,故用這種方式一次送一半來減少頻寬。

1080p(Progressive scan),則是逐行掃描(progressive scan) ,是因現在頻寬較大而延伸出來的傳輸方式。

1080p是一種視頻顯示格式。字母p意為逐行掃描(progressive scan) ,有別於1080i的interlaced scan(隔行掃描)。數字1080則表示垂直方向有1080條掃描線。通常1080p的畫面解析度為1920×1080,即一般所說的高清晰度電視。

ex. 假設2台 畫格都是每秒60張,也就是畫面更新頻率為60Hz
為什麼呢? "逐行掃描"的意思是,在更新頻率為60Hz的條件下,每秒對整個螢幕做60次的掃描,簡單的說就是,每秒顯示60張1920x1080的"照片",而這60張不同的照片在人的眼中就成了電影.動畫.

而"隔行掃描"的意思是,在更新頻率為60Hz的條件下,每秒對整個做60次的掃描,跟p不同的是:他是交錯掃奇數行或偶數行(垂直),也就是說1080行裡,他每次只掃540行,但 畫面大小是不變的,所以垂直的部分被"拉大了",所以1080i的解析度 事實上在單一掃描畫面只有1920x540.
對於平板電視,實際上可以認為沒有1080i和1080P的區別,因為目前圖像處理電路技術發展非常快,運算速度非常快,處理能力非常強,均具有倍線技術。所謂倍線技術就是把隔行的1080i的圖像處理成逐行的1080P的圖像,可以把1080/50i完美處理成1080/50P,1080/60i處理成1080/60P,包括1080/24P的節目,更可非常輕鬆地處理為1080/50P或 1080/60P。而且任何一台平板電視都有這種電路,稍微高檔的平板電視處理效果都不錯。

References:
[1] http://www.speedyou.com/CVR/XR-1080/1080P1080i.htm
[2] http://inspire.twgg.org/audio-a-video/video/item/123-understanding-of-high-definition-hd-teach-you-identify-differences-between-720p-1080i-and-1080p.html

2012年8月27日 星期一

C語言 - #include<> vs. #include” ”

#INCLUDE 前置處理有兩種形式:

<1> #INCLUDE <檔名>:
指示 compiler 只到系統的INCLUDE目錄去找要含括的檔案。這種形式主要適用來函括標準函式庫的標頭檔。EX: #include < aa.h >

<2>#INCLUDE "檔名":
指示compiler 先到目前的工作目錄去找,若找不到,再到系統的INCLUDE目錄去找。
EX: #include "Userdef.h"

Reference:
http://tw.myblog.yahoo.com/josh-chang/article?mid=1406&next=1348&l=f&fid=8

2012年6月16日 星期六

C語言 - gcc: warning: no newline at end of file


C++標準規定,一個源文件,除非是空的,否則最後一行必須是空行。這不是為了語法分析,而是為了連接文件的時候方便。

解決方式:試著在程式最後一行多按一個enter,存檔即可解決


References:
[1] http://cross-script.blogspot.tw/2011/07/gcc-warning-no-newline-at-end-of-file.html
[2] http://luabear.blogspot.tw/2009/04/warningno-newline-at-end-of-file.html
[3] http://blog.xuite.net/casio515/blog/21528505

2012年6月3日 星期日

C語言 - 簡單小考題(2) - C強制轉型

What's the output in this function?

void foo(void)
{
    unsigned int a = 6;
    int b = -20;
    (a+b > 6) ? puts("> 6") : puts("<= 6");
}


The answer is "> 6"
Why?

原因是當表達式中存在有符號類型和無符號類型時所有的操作數都自動轉換為無符號類型(unsigned)。因此-20變成了一個非常大的正整數,所以該表達式計算出的結果大於6

Reference:

C語言測試 想成為嵌入式程序員應知道的0x10個基本問題

C語言測試 想成為嵌入式程序員應知道的0x10個基本問題 (某網友找到的中文翻譯)

網路上找到的,有些還不太確定= =..... 真糟糕 加油加油