行政院國家科學委員會專題研究計畫 成果報告
高模組化的觸控螢幕控制器的研製
計畫類別: 個別型計畫 計畫編號: NSC93-2622-E-110-005-CC3 執行期間: 93 年 05 月 01 日至 94 年 04 月 30 日 執行單位: 國立中山大學電機工程學系(所) 計畫主持人: 邱日清 計畫參與人員: 林增奎、黃子哲 報告類型: 精簡報告 處理方式: 本計畫為提升產業技術及人才培育研究計畫,不提供公開查詢中 華 民 國 94 年 6 月 23 日
行政院國家科學委員會補助專題研究計畫
□ 成 果 報 告 □期中進度報告LCD 觸控式面板控制系統
計畫類別:■ 個別型計畫 □ 整合型計畫
計畫編號:
執行期間:
民國__93__年 5 月__1___日起至__94__年__4__月_31__
日
計畫主持人:
邱日清
計畫參與人員:
林增奎、黃子哲
成果報告類型(依經費核定清單規定繳交):
□精簡報告 ■完整報告
本成果報告包括以下應繳交之附件:
□赴國外出差或研習心得報告一份
□赴大陸地區出差或研習心得報告一份
□出席國際學術會議心得報告及發表之論文各一份
□國際合作研究計畫國外研究報告書一份
處理方式:除產學合作研究計畫、提升產業技術及人才培育研究
計畫、列管計畫及下列情形者外,得立即公開查詢
■涉及專利或其他智慧財產權,□一年□二年後可公
開查詢
執行單位:
國立中山大學電機工程學系(所)
中 華 民 國 九 十 四 年 七 月 一 日
目錄
簡介……….……….……….….……..3 I2C 通訊協定……….………….4 I2C 電路實作……….………….9 LCD 控制信號……….……..13 Frame 內部處理設計……….………...….…….19 Buffer to SRAM……….…….19 SRAM to Flash………...……….22 Flash to SRAM………...……….27 Touch Screen………29 結論、未來目標.……….32 附錄一(SRAM)...33 附錄二(FLASH)...35 參考文獻…...39簡介
Fig.1 The LCD Controller Circuit
Fig.1 圖示為整個設計的架構,我們以 FPGA 為設計的主體,外加一個 4Mbytes 的 Flash Memory,所要控制的是 PVI 所稱產的 5” TFT-LCD。對外我們 是使用I2C Bus 通訊協定來溝通的。
I2C 通訊協定
I2C 是一種 IC 對 IC 的通訊協定,他的優點是所佔的 wire 線數目少﹝只有三 條,SDA , SCL and GND﹞,而且又可以控制多個週邊裝置元件 IC,他的速度也 很快,在standard mode 為 100 Kbit/s,fast mode 為 400 Kbit/s,high speed mode 為 3.4 Mbit/s,所以我們選用 I2C 來傳送 LCD Frame 的資料。下面我們將要解說 I2C 的通訊協定。
(圖片取自 THE I2C-BUS SPECIFICATION - Philips Semiconductors)
Fig.2 圖示範了 I2C 的配置,I2C 是由兩條 Wire 所組成的 Bus,在 Bus 上可以 放很多個 device,device 可以分為 master 和 slave 這兩種,在通信協定上除了 slave device 可以放很多個之外,master device 也可以放一個以上,但是一般來說我們 為了方便設計以及省掉許多的考量,所以都用一個 master device 以及多個 slave devices。
(圖片取自 THE I2C-BUS SPECIFICATION - Philips Semiconductors)
Fig.3 圖示範有兩個 slave devices 連接到 I2C Bus 上,連接方式是使用 wired-AND 連接的,並且使用 pull-up 提升電阻來預設為 high 電位,要達到這樣 的效果slave 端點是使用 open drain 或者是 open collector 來達到,所以一般 slave free 的狀態之下,bus 上的電位為 High。
(圖片取自 THE I2C-BUS SPECIFICATION - Philips Semiconductors)
Fig.4 圖示為資料有效的週期,當 SCL 為高電位時候,SDA 的資料會被讀取, 所以這時候SDA 的狀態電位必須為穩定,當 SCL 為低電位時候,SDA 才可以更 改他的狀態,在此我們的設計為SCL 正緣時候讀取 SDA 的電位數值,SCL 負緣 時候SDA 的狀態才可以改變。
(圖片取自 THE I2C-BUS SPECIFICATION - Philips Semiconductors)
Fig.5 圖示為 master 執行的開始(Start)以及結束(Stop)狀態,當 SDA 為負緣且 SCL 為高電位的時候,這是開始的信號並且 bus 為 busy 狀態,當 slave 接到 busy 信號時候就要開始準備接收第一筆slave ID byte,當 SDA 為正緣且 SCL 為高電 位,這是結束信號並且bus 為 free 的狀態,當 slave 收到 free 信號時候就要結束 所有的工作並且不再控制SDA 和 SCL wire 線。使得 bus 上的電位自動被提升電 阻拉為高電位。
當介紹完了I2C 的組成以及狀態定義,我們現在來介紹他的通信協定,Fig.10 圖示一個完整的通訊串流,首先master 釋放出 Start Condition,後面跟著一個 7 bit slave address,第八個 bit 表示為 R/W,HIGH 為 READ 模式,LOW 為 WRITE 模式,第九個bit 為 ACK bit,凡是有回 ACK 的 device 都有權利拉下 SCL 來做 資料的內部處理,這種方式可以同步device 之間不同步的問題,高速裝置必須 要等待低速裝置,直到他把擷取進來的byte 做內部資訊處理,當處理完成之後 才會放開SCL 線,一旦放開來 master 才會繼續的傳送下一筆資料。最後 master 會送Stop Condition 來終止傳送以及接收。
(圖片取自 THE I2C-BUS SPECIFICATION - Philips Semiconductors)
Fig.11 圖示為一個完整的 transmit mode,這個是 master 把資料傳送給 slave 來接收,master 先送 slave 的 ID address,slave 看到是在呼叫自己並且回應 ACK, 接下來master 看到 bus 上有人回應 ACK 所以會把下一個 byte 放在 bus 上並用 SCL 來傳送,直到master 不想再繼續寫或者 slave 送出 NACK 信號,這時候 master 必須要送出Stop Condition 的信號來終止傳送。
(圖片取自 THE I2C-BUS SPECIFICATION - Philips Semiconductors)
Fig.12 圖示為一個完整的 receive mode,這是 slave 傳送資料給 master 來接 收,master 先送 slave 的 ID address ,slave 看到是在呼叫自己並回應 ACK,接 下來master 會轉變為接收端以及 slave 會變為送出端,slave 會把資料放在 SDA 上面並由master 來控制 SCL 的傳送速度,當一個 byte 接收完畢之後,master 會 回ACK 並且有權利把 SCL 拉下一段時間。當最後 master 不想要繼續收資料時 候,master 必須在最後一個 byte 回應 NACK,使得 slave 結束繼續傳送資料的動 作並且把SDA 放開,以便 master 執行 Stop Condition。
I2C 電路實作
為了更加了解I2C 以及在我們的 LCD 觸控式面板控制系統上實現,我們使 用了Altera EP1K 的 FPGA 板來實現 slave 端電路,下圖示為實體電路的設計規 劃,I2C Controller 和 Buffer Handler 則是置入 FPGA 裡面,FPGA 對外只有 4 條線,即wSDA 、wSCL 、rSDA 、rSCL,並且放入 74HC244 來做訊號的緩衝 器,這是怕外來的信號會燒壞FPGA 的 pin 腳,另外在 SDA 和 SCL 線上必須放 入提升電阻,在此我們放入 1.5K 歐姆的提升電阻並接到 5V 電源。在 FPGA 內部有兩個Blocks,即是 I2C Controller 以及 Buffer Handler,I2C Controller 把所 收集到的資料轉換為 parallel byte 並傳給 Buffer Handler,或是 Buffer Handler 把 parallel byte 傳給 I2C Controller,而 I2C Controller 會以 serial 傳送給外部的 device,所以為了要達到這樣的目的,兩個 Blocks 之間有一些控制信號線以及資 料匯流排來控制。
Fig.21 Master call the 0x54 slave address
Fig.21 圖示為 master 呼叫 0x54 的 slave address,D8 channel 為 SDA 且 D9 channel 為 SCL,我們沒有接任何的 slave device,所以就沒有任何 device 回應 ACK,結果 master 就自己產生 Stop Condition,使得 bus 呈現 free 的狀態。
Fig.22 圖示 8 個信號線,茲列如下: D8 channel : rSDA D9 channel : rSCL D10 channel : wSDA D11 channel : wSCL D12 channel : BF D13 channel : BC D14 channel : FirstByte D15 channel : rPulse
Fig.22 圖示為 master 呼叫 0x54 的 slave address,slave 回應 ACK 後 master 就連續傳送6 個 byte 的 clock information 給外部的 device 接收,所以在此圖顯示 有7 個 byte 的資料,第一個是 slave ID address,之後 6 個 byte 分別為 low second, high second, low minute, high minute, low hour, high hour,最後 master 送出 Stop Condition 來結束資料的傳送。
ARM Instruction Code 7.94us
ARM H/W 3.42us
Fig.23 Master transmit with maximum speed
Fig.23 圖示為 master 使用最大的傳輸速度來傳送資料,我們的 master 是使 用WISCORE 出品的 NET-START!,CPU 是使用 SAMSUNG S320B 的 ARM, 這個板子上是使用 50 MHz 的 clock,在 I2C 的傳輸速度是依據 I2C Prescaler Register 上的數值,I2C Clock = System Clock / (16*(Prescaler Value +1)+3),所以 最大數值為 50 MHz / 19 = 2.63 MHz,第一個 slave ID byte 花了 9 個 I2C clock 來 傳送,所以時間是 9 / 2.63 MHz = 3.42 us,這是 ARM 的硬體所花的時間,之後 ARM 會發出中斷信號來處理下一筆資料,這個部分為 ARM 的軟體所做的工作, 它需要花費7.94us 將近 8us 的時間。所以要完整傳送一比 Byte 資料必須要 3.42 + 7.94 = 11.36 us,也就是說一秒鐘可以傳送 88 Kbytes 的資料。
LCD 控制信號
Fig.24 PVI 5” LCD Controller
Fig.24 圖示這一個板子是市面上一個控制 PVI -5” LCD 的電路板,紅色指 示的為輸入訊號,藍色指示的為LCD 控制輸出訊號,我們首先把紅色輸入信號 設定好,並輸入一個由DVD Player 產生的 Component Video Signal,結果得到不 錯的效果,LCD 的畫面可以看到,所以我們就試著自己實作一個 LCD Controller 來取代這一個板子。
Fig.26 PVI 5” LCD Controller
這個PVI LCD 的畫素為 960x234 個 pixel,所以一張完整的圖片就必須要 224640 個 pixel,這個 LCD 是 8 階灰階的類比的 pixel,雖然他取樣只取 8 階, 但是我們還是必須要送給LCD 比較清晰的灰階以免產生色彩錯誤的情況,所以 我們選取256 灰階給他。
Fig.27 圖示有 5 個信號,D9 channel 為 40MHz 的 FPGA 震盪器,主要推動 整個FPGA 工作的驅動來源,D10 channel 為 CPH1 for R color,D11 channel 為 CPH2 for G color,D12 channel 為 CPH3 for B color,最後 D13 channel 為 STH, 他是把一個frame 裡面的一條 raw line 給打開的同步信號。我們觀察 DVD Player 每秒送出60 張 frames,而 Fig.26 圖示告訴我們它有 234 個 raw lines,但是一般 都會多取一些raw lines 來使 LCD 有較多的時間來處理畫面,所以會讀取 262 個 raw lines,所以 STH 的 pulse cycle 為 1 / (60 x 262) = 63.6 us,而 pulse width 為一 個CPH cycle 的寬度。
Fig.27 System clock, CPH and STH signals
STH 產生的時候 CPH1,CPH2,CPH3 接著會開始把所需要的 RGB channels 給 收入在source gates 裡面,Fig.26 圖示有 960 個 pixels,但是 CPH 會是以交錯的 方式分別取入,他們的交錯間隔分別為1/3 個 CPH cycle,所以實際上只需要 320 個CPH 週期,但是為了使 LCD 有較多的時間來處理畫面,所以會讀取 424 個 CPH Cycles,所以一個 CPH cycle 時間為 63.6 us / 424 = 150ns。
Fig.28 圖示有 3 個信號,D13 channel 為 STH,D14 channel 為 OEH,D15 channel 為 XOE。OEH 是當 raw line 也就是 source gates 把所需要的 RGB 資訊擷 取到後,也就是大於320 CPH cycle 小於 424 CPH cycle 的週期時間內產生一個 pulse,把 source gate 打開以便讓資訊電位流通到整個 column,然後 STH 產生把 這些電位數值鎖在pixel 裡面。XOE 的作用是把 gate driver 裡面的數值釋放出去, 它的負緣必須要和OEH 的負緣一起產生。
Fig.29 圖示有 8 個信號,但是主要有 3 個信號要看,D12 channel 為 XOE, D14 channel 為 CPV,D15 channel 為 DIO。CPV 信號主要是把 gate driver 的 pulse 做一個移位的動作,而這個pulse 產生自 DIO,DIO pulse cycle 為 1 / 60 = 16.67 ms,DIO pulse width 為一個 CPV cycle,而 CPV cycle 和 STH cycle 一樣都是 63.6 us,這個原因是一張 frame 取了 262 個 raw lines,也就是一個 DIO Cycle 裡面包 含了262 個 CPV Cycles,而 XOE pulse width 信號的中間必須在 CPV 的正緣產生。
Fig.30 PVI - 5” LCD and LCD Controller Board
Frame 內部處理設計
本章分為四部分,將透過I2C 協定將置於 Buffer 的資訊,利用 FPGA 發出 控制訊號,對SRAM 與 Flash 間的存取控制,並將存於 SRAM 上的 Frame 掃描 至後端同步電路。
(一)
Buffer to SRAM
此動作為,將I2C BUS 所收到置於 Buffer 上的 Data 存入 SRAM 上(附錄一), 因此我們必須藉由Frame control 來發送 control signal 與 address , Data_in 來對 SRAM 作寫入動作。
SRAM
Flash
scan
Flash control Buffer Data_in address Data_out Flash_data Word_program erase data address Data_out R Control signalFrame
control
G Y ACK設計方式:
General state
如上圖,我們以state machine 方式控制 control signal 與 SRAM 的存取位址, 一開始狀態持續維持在General state,當在 General state 時接受到 BF(buffer full) 訊號時,代表已將I2C BUS 上的資料填滿至 buffer 上,此時為狀態 01,將要寫 入SRAM 的位址送至 address bus,當 Address ready 後,則開始作寫入動作,此 時為狀態11,若要對 SRAM 作寫入,BHE,BLE,CS,WE 須為低電位,最少須維 持10ns(附錄一) ,結束寫入動作後,BHE,BLE 須為高電位(使用 BHE,BLE 作寫 入控制) ,並發出 BC 訊號通知 I2C Device 後端已完成寫入,最後回到 General state。
00
BF = 1 Write ready Address ready10
01
BC(Hi) (address counter +1) Data ready
11
Write data BHE(Lo) ,BLE(Lo)
電路設計
當BF 為 Hi 時,此時必須將 Buffer 上的資料寫入暫存器,由 Latch 去控制上 述state machine 的轉換,將 state 的輸出經由一組合電路產生 BHE,BLE,CS,WE 控制訊號送至SRAM,並產生 address counter 給計數器,由計數器輸出要存入 SRAM 的 address,之後由組合電路根據 state machine 發出 BC 訊號通知 I2C deivce 已完成寫入動作,以便I2C deivce 作下一筆資料傳送的準備。
(二)
SRAM to flash
由於一個Frame 必須存取 960*234 panel 大小,每 pix 必須以 1 byte 來輸出 RGY 的色階深淺,因此儲存一 Frame 需花費大約 220K-byte 空間來存取,因此 我們外接一容量較大,斷電後仍能保存資料的Flash 來儲存所需的 Frame。 我們使用SST39VF3201(附錄二) Flash,最多可存取 16 張 Frame。
SRAM
Flash
Control signal Buffer Rscan
Flash control Data_inFrame
control
G address Data_out Y Data_out Flash_data ACK address data erase Word_program電路設計(Flash_control)
見附錄二,由於對Flash 寫入的過程中,須判斷是否寫滿一 Block,若寫滿, 則須花費6 cycle 對 Flash 下 command 清除動作後,才可對下一 word 作寫入,若 沒寫滿,必須花費3 cycle 對 Flash 下 command 後,才可作寫入動作,由於寫入 一Frame 過程中複雜煩瑣,因此為減少 Frame control 設計的複雜度,設計出 Flash control ,使 Frame control 只須對此 Funtion 送出寫入或清除訊號,此 Funtion 即 會根據此訊號,送出該訊號的command 與 control signal 並將 data 與 address 寫入。
如圖,state machine 可根據 erase 與 word_program 兩訊號判斷並送出 command 訊號,再由Command_sel 要求多工器在適當的時機將 data 與 address 輸出。
Word_program state diagram
erase simulation diagram
上圖為flash control 完成後的 simulation diagram,當接受到 erase 訊號後,發 出6-cycle 的 command 至 Flash,之後送出 erase_ACK(erase_we)通知 Frame control 已完成清除動作。
word_program simulation diagram
當接受到BF 訊號後,發出 3-cycle 的 command 至 Flash,之後送出 BF_ACK(BF_we)通知 Frame control 已完成寫入動作。
電路設計(Frame control)
當從I2C BUS 上收到 SRAM to Flash 的命令時,則送出 start 訊號,此時 counter 輸出為 0 而驅動 erase 訊號,使 Flash control 對 Flash 作 erase 動作,並回 傳erase_ACK 表示已完成清除動作,並拉起 BF 訊號通知 Flash control 作寫入, 寫入後,送出BF_ACK 驅動 counter 發出下一筆要寫入的位址。
(三)
Flash to SRAM
此動作為,由I2C BUS 收到要將 Flash 中的其中一張 Frame 掃進 SRAM 中, 為掃描至後端同步電路作準備的命令,藉由Frame control 對 Flash 作讀取,並將 資料寫入SRAM。
同為對SRAM 作寫入,因此 state diagram 與 Buffer 寫入 SRAM 的動作一樣, 可參考Buffer to SRAM 之部分。
電路設計
在作Flash to SRAM 的動作,先將 counter 初始化,在進入 state machine,同 buffer to SRAM 一樣,在狀態 01 時,便將位址與資料備妥,跳至狀態 11,對 SRAM 發出作寫入的控制訊號,最後在狀態10 時,則表示已完成寫入,此時送出 address counter 驅動 Flash,把下一筆資料備妥,將送出 BF 告知 state machine 可跳至狀 態01(位址與資料備妥) ,繼續下一筆資料的存取。
Touch Screen
這裡我們使用「介面光電公司」所生產的Touch Screen 產品,觸控面版的分 類大致上有四種,分別為: 電容式:藉由觸控充電面版來達到壓降計算 電阻式:觸控後,上下兩層的電阻短路來分壓計算 音波式:藉由觸控改變音波波形來計算 紅外線式:觸控後擋住紅外線來計算 而我們使用最普通的電阻式觸控式螢幕,觸控式螢幕可分為4 wire 或是 5 wire,如下兩個圖片:(圖片取自SHARP - Using the SHARP ADC with Resistive Touch Screens)
而我們所選的是4 wire Touch Screen,它的外部接線如下圖:
(圖片取自SHARP - Using the SHARP ADC with Resistive Touch Screens)
5v,把 Y-置於懸空,然後測量 Y+的數值,因為 Y+和 Y-的兩端都是無線大的電 阻,所以不會有電流產生,同樣的道理在
, ,中間的電阻會比較小,若是接觸面
不大則會有較大的電阻。
最後我們選擇 的 為 出產的 HT46R23 A/D Type 8-Bit MCU 來當作類比轉數位的元件,再把此轉出的數值傳送給FPGA,FPGA再把它用I2C 此圖中在X 軸測量上,把 X-接地,把 X+接一個參考電壓,在此我們設為 Y 軸測量上,最後在接觸時候會有接 觸電阻 因為若是兩片電阻導片接觸得很好 ADC IC HOLTEK 傳送出去給外部裝置。
結論
雖然我們做好了LCD 的信號,但是我們在做到一半的時候,把範例的 LCD Controller Board 給燒壞掉了,如圖 Fig.30 所示,所以我們原先打算用範例電路 板來替我們把LCD 背光燈給打亮的,現在卻不行,雖然我們已經把 LCD 控制信 好給做好了,但是送進去信號卻沒有辦法看到。
未來目標
1. 完成 SRAM 的掃描 2. 對此 4 種動作作整合 3. 完成前端 I2C Device 與後端同步電路的整合 4. 實作出 LCD 背光電路 5. 實作並整合 Touch Screen附錄一:
SRAM(IDT71V016SA)
Timing Waveform of Read Cycle
作寫入時,CS.OE.BHE 與 BLE 須為低電位,WE 為高電位,並送出要讀取 的位址,即可在Data bus 上取的資料。
TOH :Output Hold from Address Change(MIN:4ns)
Timing Waveform of Read Cycle
在 CS.BHE.BLE.WE 同時為低電位時,作 Write 動作,因此控制任一訊號來 啟動寫入的動作 address(在此設計使用 BHE.BLE) 。
T
BW : Byte Enable Low to End of Write(MIN:10ns)附錄二:
Flash (SST39VF3201)
Functional Block Diagram
READ CYCLE TIMING DIAGRAM
只須將CE.OE 送出高電位,WE 送出低電位,並將 address 送出,即可在 data bus 上讀取資料。
PROGRAM CYCLE TIMING DIAGRAM
由WE 的負緣對 data bus 與 address bus 作 latch,前 3-cycle 為作寫入前所要 對Flash 下的命令,由此 3cycle 告知 Flash 作讀取的動作,在第 4 個 cycle 才將要 寫入的資料與位址送至data bus 與 address bus 上。
TWP : WE Pulse Width(Min:40ns)
TWPH: WE# Pulse Width High (Min:30ns)
ERASE CYCLE TIMING DIAGRAM
由WE 的負緣對 data bus 與 address bus 作 latch,此時將 CE.OE 須為低電位, 前5-cycle 為作寫入前所要對 Flash 下的命令,由此 5-cycle 告知 Flash 作清除一 Block 的動作,在第 6 個 cycle 將要清除的起始位址送至 address bus 上,並將 data 50H 送至 data bus 上,即完成對該 address 作一 Block 的清除。
TWP : WE Pulse Width(Min:40ns)
參考文獻
1. TECHNICAL SPECIFICATION MODEL NO. : PA050XS1(PRIME VIEW INTERNATIONAL CO.,LTD.)
2. 32 Mbit (x16) Multi-Purpose Flash - SST39VF320
3. IDT71V016SA303V COMS SRAM
4. SHARP Application note : Using the Sharp ADC with Resistive Touch Screens